Software /
code /
prosody
Annotate
spec/util_stanza_spec.lua @ 10445:f53c03ab4357
util.stanza: Check that argument to error_reply is NOT a stanza of type error
Replying to an error is Very Bad
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Mon, 25 Nov 2019 20:52:03 +0100 |
parent | 10444:4eab1f5a4f3b |
child | 10446:5c2d1b13537c |
rev | line source |
---|---|
8236
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
1 |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
2 local st = require "util.stanza"; |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
3 |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
4 describe("util.stanza", function() |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
5 describe("#preserialize()", function() |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
6 it("should work", function() |
9673 | 7 local stanza = st.stanza("message", { type = "chat" }):text_tag("body", "Hello"); |
8236
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
8 local stanza2 = st.preserialize(stanza); |
9673 | 9 assert.is_table(stanza2, "Preserialized stanza is a table"); |
10 assert.is_nil(getmetatable(stanza2), "Preserialized stanza has no metatable"); | |
11 assert.is_string(stanza2.name, "Preserialized stanza has a name field"); | |
12 assert.equal(stanza.name, stanza2.name, "Preserialized stanza has same name as the input stanza"); | |
13 assert.same(stanza.attr, stanza2.attr, "Preserialized stanza same attr table as input stanza"); | |
8236
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
14 assert.is_nil(stanza2.tags, "Preserialized stanza has no tag list"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
15 assert.is_nil(stanza2.last_add, "Preserialized stanza has no last_add marker"); |
9673 | 16 assert.is_table(stanza2[1], "Preserialized child element preserved"); |
17 assert.equal("body", stanza2[1].name, "Preserialized child element name preserved"); | |
8236
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
18 end); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
19 end); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
20 |
9673 | 21 describe("#deserialize()", function() |
8236
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
22 it("should work", function() |
9673 | 23 local stanza = { name = "message", attr = { type = "chat" }, { name = "body", attr = { }, "Hello" } }; |
8236
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
24 local stanza2 = st.deserialize(st.preserialize(stanza)); |
9673 | 25 |
26 assert.is_table(stanza2, "Deserialized stanza is a table"); | |
27 assert.equal(st.stanza_mt, getmetatable(stanza2), "Deserialized stanza has stanza metatable"); | |
28 assert.is_string(stanza2.name, "Deserialized stanza has a name field"); | |
29 assert.equal(stanza.name, stanza2.name, "Deserialized stanza has same name as the input table"); | |
30 assert.same(stanza.attr, stanza2.attr, "Deserialized stanza same attr table as input table"); | |
31 assert.is_table(stanza2.tags, "Deserialized stanza has tag list"); | |
32 assert.is_table(stanza2[1], "Deserialized child element preserved"); | |
33 assert.equal("body", stanza2[1].name, "Deserialized child element name preserved"); | |
8236
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
34 end); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
35 end); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
36 |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
37 describe("#stanza()", function() |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
38 it("should work", function() |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
39 local s = st.stanza("foo", { xmlns = "myxmlns", a = "attr-a" }); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
40 assert.are.equal(s.name, "foo"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
41 assert.are.equal(s.attr.xmlns, "myxmlns"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
42 assert.are.equal(s.attr.a, "attr-a"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
43 |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
44 local s1 = st.stanza("s1"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
45 assert.are.equal(s1.name, "s1"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
46 assert.are.equal(s1.attr.xmlns, nil); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
47 assert.are.equal(#s1, 0); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
48 assert.are.equal(#s1.tags, 0); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
49 |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
50 s1:tag("child1"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
51 assert.are.equal(#s1.tags, 1); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
52 assert.are.equal(s1.tags[1].name, "child1"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
53 |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
54 s1:tag("grandchild1"):up(); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
55 assert.are.equal(#s1.tags, 1); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
56 assert.are.equal(s1.tags[1].name, "child1"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
57 assert.are.equal(#s1.tags[1], 1); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
58 assert.are.equal(s1.tags[1][1].name, "grandchild1"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
59 |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
60 s1:up():tag("child2"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
61 assert.are.equal(#s1.tags, 2, tostring(s1)); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
62 assert.are.equal(s1.tags[1].name, "child1"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
63 assert.are.equal(s1.tags[2].name, "child2"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
64 assert.are.equal(#s1.tags[1], 1); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
65 assert.are.equal(s1.tags[1][1].name, "grandchild1"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
66 |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
67 s1:up():text("Hello world"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
68 assert.are.equal(#s1.tags, 2); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
69 assert.are.equal(#s1, 3); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
70 assert.are.equal(s1.tags[1].name, "child1"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
71 assert.are.equal(s1.tags[2].name, "child2"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
72 assert.are.equal(#s1.tags[1], 1); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
73 assert.are.equal(s1.tags[1][1].name, "grandchild1"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
74 end); |
8598
282d544d48f4
util.stanza: Add tests ensuring support for unicode in tag/attr names
Matthew Wild <mwild1@gmail.com>
parents:
8597
diff
changeset
|
75 it("should work with unicode values", function () |
282d544d48f4
util.stanza: Add tests ensuring support for unicode in tag/attr names
Matthew Wild <mwild1@gmail.com>
parents:
8597
diff
changeset
|
76 local s = st.stanza("Объект", { xmlns = "myxmlns", ["Объект"] = "&" }); |
282d544d48f4
util.stanza: Add tests ensuring support for unicode in tag/attr names
Matthew Wild <mwild1@gmail.com>
parents:
8597
diff
changeset
|
77 assert.are.equal(s.name, "Объект"); |
282d544d48f4
util.stanza: Add tests ensuring support for unicode in tag/attr names
Matthew Wild <mwild1@gmail.com>
parents:
8597
diff
changeset
|
78 assert.are.equal(s.attr.xmlns, "myxmlns"); |
282d544d48f4
util.stanza: Add tests ensuring support for unicode in tag/attr names
Matthew Wild <mwild1@gmail.com>
parents:
8597
diff
changeset
|
79 assert.are.equal(s.attr["Объект"], "&"); |
282d544d48f4
util.stanza: Add tests ensuring support for unicode in tag/attr names
Matthew Wild <mwild1@gmail.com>
parents:
8597
diff
changeset
|
80 end); |
8641
c7734b59506f
util.stanza: tests: Add more invalid data types and update for :text(nil) and :text("")
Matthew Wild <mwild1@gmail.com>
parents:
8626
diff
changeset
|
81 it("should allow :text() with nil and empty strings", function () |
c7734b59506f
util.stanza: tests: Add more invalid data types and update for :text(nil) and :text("")
Matthew Wild <mwild1@gmail.com>
parents:
8626
diff
changeset
|
82 local s_control = st.stanza("foo"); |
c7734b59506f
util.stanza: tests: Add more invalid data types and update for :text(nil) and :text("")
Matthew Wild <mwild1@gmail.com>
parents:
8626
diff
changeset
|
83 assert.same(st.stanza("foo"):text(), s_control); |
c7734b59506f
util.stanza: tests: Add more invalid data types and update for :text(nil) and :text("")
Matthew Wild <mwild1@gmail.com>
parents:
8626
diff
changeset
|
84 assert.same(st.stanza("foo"):text(nil), s_control); |
c7734b59506f
util.stanza: tests: Add more invalid data types and update for :text(nil) and :text("")
Matthew Wild <mwild1@gmail.com>
parents:
8626
diff
changeset
|
85 assert.same(st.stanza("foo"):text(""), s_control); |
c7734b59506f
util.stanza: tests: Add more invalid data types and update for :text(nil) and :text("")
Matthew Wild <mwild1@gmail.com>
parents:
8626
diff
changeset
|
86 end); |
8236
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
87 end); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
88 |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
89 describe("#message()", function() |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
90 it("should work", function() |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
91 local m = st.message(); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
92 assert.are.equal(m.name, "message"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
93 end); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
94 end); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
95 |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
96 describe("#iq()", function() |
9307
feaef6215bb8
util.stanza: Don't automatically generate ids for iq stanzas
Matthew Wild <mwild1@gmail.com>
parents:
9302
diff
changeset
|
97 it("should create an iq stanza", function() |
9732
51583ea2b4fd
util.stanza: Require a type attribute for iq stanzas
Kim Alvefur <zash@zash.se>
parents:
9673
diff
changeset
|
98 local i = st.iq({ type = "get", id = "foo" }); |
9307
feaef6215bb8
util.stanza: Don't automatically generate ids for iq stanzas
Matthew Wild <mwild1@gmail.com>
parents:
9302
diff
changeset
|
99 assert.are.equal("iq", i.name); |
feaef6215bb8
util.stanza: Don't automatically generate ids for iq stanzas
Matthew Wild <mwild1@gmail.com>
parents:
9302
diff
changeset
|
100 assert.are.equal("foo", i.attr.id); |
9732
51583ea2b4fd
util.stanza: Require a type attribute for iq stanzas
Kim Alvefur <zash@zash.se>
parents:
9673
diff
changeset
|
101 assert.are.equal("get", i.attr.type); |
9307
feaef6215bb8
util.stanza: Don't automatically generate ids for iq stanzas
Matthew Wild <mwild1@gmail.com>
parents:
9302
diff
changeset
|
102 end); |
feaef6215bb8
util.stanza: Don't automatically generate ids for iq stanzas
Matthew Wild <mwild1@gmail.com>
parents:
9302
diff
changeset
|
103 |
9732
51583ea2b4fd
util.stanza: Require a type attribute for iq stanzas
Kim Alvefur <zash@zash.se>
parents:
9673
diff
changeset
|
104 it("should reject stanzas with no attributes", function () |
51583ea2b4fd
util.stanza: Require a type attribute for iq stanzas
Kim Alvefur <zash@zash.se>
parents:
9673
diff
changeset
|
105 assert.has.error_match(function () |
51583ea2b4fd
util.stanza: Require a type attribute for iq stanzas
Kim Alvefur <zash@zash.se>
parents:
9673
diff
changeset
|
106 st.iq(); |
51583ea2b4fd
util.stanza: Require a type attribute for iq stanzas
Kim Alvefur <zash@zash.se>
parents:
9673
diff
changeset
|
107 end, "attributes"); |
51583ea2b4fd
util.stanza: Require a type attribute for iq stanzas
Kim Alvefur <zash@zash.se>
parents:
9673
diff
changeset
|
108 end); |
51583ea2b4fd
util.stanza: Require a type attribute for iq stanzas
Kim Alvefur <zash@zash.se>
parents:
9673
diff
changeset
|
109 |
51583ea2b4fd
util.stanza: Require a type attribute for iq stanzas
Kim Alvefur <zash@zash.se>
parents:
9673
diff
changeset
|
110 |
9307
feaef6215bb8
util.stanza: Don't automatically generate ids for iq stanzas
Matthew Wild <mwild1@gmail.com>
parents:
9302
diff
changeset
|
111 it("should reject stanzas with no id", function () |
feaef6215bb8
util.stanza: Don't automatically generate ids for iq stanzas
Matthew Wild <mwild1@gmail.com>
parents:
9302
diff
changeset
|
112 assert.has.error_match(function () |
9732
51583ea2b4fd
util.stanza: Require a type attribute for iq stanzas
Kim Alvefur <zash@zash.se>
parents:
9673
diff
changeset
|
113 st.iq({ type = "get" }); |
9307
feaef6215bb8
util.stanza: Don't automatically generate ids for iq stanzas
Matthew Wild <mwild1@gmail.com>
parents:
9302
diff
changeset
|
114 end, "id attribute"); |
9732
51583ea2b4fd
util.stanza: Require a type attribute for iq stanzas
Kim Alvefur <zash@zash.se>
parents:
9673
diff
changeset
|
115 end); |
9307
feaef6215bb8
util.stanza: Don't automatically generate ids for iq stanzas
Matthew Wild <mwild1@gmail.com>
parents:
9302
diff
changeset
|
116 |
9732
51583ea2b4fd
util.stanza: Require a type attribute for iq stanzas
Kim Alvefur <zash@zash.se>
parents:
9673
diff
changeset
|
117 it("should reject stanzas with no type", function () |
9307
feaef6215bb8
util.stanza: Don't automatically generate ids for iq stanzas
Matthew Wild <mwild1@gmail.com>
parents:
9302
diff
changeset
|
118 assert.has.error_match(function () |
9732
51583ea2b4fd
util.stanza: Require a type attribute for iq stanzas
Kim Alvefur <zash@zash.se>
parents:
9673
diff
changeset
|
119 st.iq({ id = "foo" }); |
51583ea2b4fd
util.stanza: Require a type attribute for iq stanzas
Kim Alvefur <zash@zash.se>
parents:
9673
diff
changeset
|
120 end, "type attribute"); |
51583ea2b4fd
util.stanza: Require a type attribute for iq stanzas
Kim Alvefur <zash@zash.se>
parents:
9673
diff
changeset
|
121 |
8236
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
122 end); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
123 end); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
124 |
9302
57f8e41255fb
util.stanza tests: Fix test name (copy/paste error?)
Matthew Wild <mwild1@gmail.com>
parents:
9217
diff
changeset
|
125 describe("#presence()", function () |
8236
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
126 it("should work", function() |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
127 local p = st.presence(); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
128 assert.are.equal(p.name, "presence"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
129 end); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
130 end); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
131 |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
132 describe("#reply()", function() |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
133 it("should work for <s>", function() |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
134 -- Test stanza |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
135 local s = st.stanza("s", { to = "touser", from = "fromuser", id = "123" }) |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
136 :tag("child1"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
137 -- Make reply stanza |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
138 local r = st.reply(s); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
139 assert.are.equal(r.name, s.name); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
140 assert.are.equal(r.id, s.id); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
141 assert.are.equal(r.attr.to, s.attr.from); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
142 assert.are.equal(r.attr.from, s.attr.to); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
143 assert.are.equal(#r.tags, 0, "A reply should not include children of the original stanza"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
144 end); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
145 |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
146 it("should work for <iq get>", function() |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
147 -- Test stanza |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
148 local s = st.stanza("iq", { to = "touser", from = "fromuser", id = "123", type = "get" }) |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
149 :tag("child1"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
150 -- Make reply stanza |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
151 local r = st.reply(s); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
152 assert.are.equal(r.name, s.name); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
153 assert.are.equal(r.id, s.id); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
154 assert.are.equal(r.attr.to, s.attr.from); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
155 assert.are.equal(r.attr.from, s.attr.to); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
156 assert.are.equal(r.attr.type, "result"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
157 assert.are.equal(#r.tags, 0, "A reply should not include children of the original stanza"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
158 end); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
159 |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
160 it("should work for <iq set>", function() |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
161 -- Test stanza |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
162 local s = st.stanza("iq", { to = "touser", from = "fromuser", id = "123", type = "set" }) |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
163 :tag("child1"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
164 -- Make reply stanza |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
165 local r = st.reply(s); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
166 assert.are.equal(r.name, s.name); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
167 assert.are.equal(r.id, s.id); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
168 assert.are.equal(r.attr.to, s.attr.from); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
169 assert.are.equal(r.attr.from, s.attr.to); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
170 assert.are.equal(r.attr.type, "result"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
171 assert.are.equal(#r.tags, 0, "A reply should not include children of the original stanza"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
172 end); |
10442
22db763c510c
util.stanza: Check that argument to reply is a stanza
Kim Alvefur <zash@zash.se>
parents:
9924
diff
changeset
|
173 |
22db763c510c
util.stanza: Check that argument to reply is a stanza
Kim Alvefur <zash@zash.se>
parents:
9924
diff
changeset
|
174 it("should reject not-stanzas", function () |
22db763c510c
util.stanza: Check that argument to reply is a stanza
Kim Alvefur <zash@zash.se>
parents:
9924
diff
changeset
|
175 assert.has.error_match(function () |
22db763c510c
util.stanza: Check that argument to reply is a stanza
Kim Alvefur <zash@zash.se>
parents:
9924
diff
changeset
|
176 st.reply(not "a stanza"); |
22db763c510c
util.stanza: Check that argument to reply is a stanza
Kim Alvefur <zash@zash.se>
parents:
9924
diff
changeset
|
177 end, "expected stanza"); |
22db763c510c
util.stanza: Check that argument to reply is a stanza
Kim Alvefur <zash@zash.se>
parents:
9924
diff
changeset
|
178 end); |
10443
f28718f46196
util.stanza: Remove redundant check for attrs
Kim Alvefur <zash@zash.se>
parents:
10442
diff
changeset
|
179 |
f28718f46196
util.stanza: Remove redundant check for attrs
Kim Alvefur <zash@zash.se>
parents:
10442
diff
changeset
|
180 it("should reject not-stanzas", function () |
f28718f46196
util.stanza: Remove redundant check for attrs
Kim Alvefur <zash@zash.se>
parents:
10442
diff
changeset
|
181 assert.has.error_match(function () |
f28718f46196
util.stanza: Remove redundant check for attrs
Kim Alvefur <zash@zash.se>
parents:
10442
diff
changeset
|
182 st.reply({name="x"}); |
f28718f46196
util.stanza: Remove redundant check for attrs
Kim Alvefur <zash@zash.se>
parents:
10442
diff
changeset
|
183 end, "expected stanza"); |
f28718f46196
util.stanza: Remove redundant check for attrs
Kim Alvefur <zash@zash.se>
parents:
10442
diff
changeset
|
184 end); |
f28718f46196
util.stanza: Remove redundant check for attrs
Kim Alvefur <zash@zash.se>
parents:
10442
diff
changeset
|
185 |
8236
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
186 end); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
187 |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
188 describe("#error_reply()", function() |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
189 it("should work for <s>", function() |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
190 -- Test stanza |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
191 local s = st.stanza("s", { to = "touser", from = "fromuser", id = "123" }) |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
192 :tag("child1"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
193 -- Make reply stanza |
8597
6e5fbeaca0f4
util.stanza: Fix tests to call error_reply() correctly, and add tests to ensure it vaguely works
Matthew Wild <mwild1@gmail.com>
parents:
8236
diff
changeset
|
194 local r = st.error_reply(s, "cancel", "service-unavailable"); |
8236
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
195 assert.are.equal(r.name, s.name); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
196 assert.are.equal(r.id, s.id); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
197 assert.are.equal(r.attr.to, s.attr.from); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
198 assert.are.equal(r.attr.from, s.attr.to); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
199 assert.are.equal(#r.tags, 1); |
8597
6e5fbeaca0f4
util.stanza: Fix tests to call error_reply() correctly, and add tests to ensure it vaguely works
Matthew Wild <mwild1@gmail.com>
parents:
8236
diff
changeset
|
200 assert.are.equal(r.tags[1].tags[1].name, "service-unavailable"); |
8236
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
201 end); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
202 |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
203 it("should work for <iq get>", function() |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
204 -- Test stanza |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
205 local s = st.stanza("iq", { to = "touser", from = "fromuser", id = "123", type = "get" }) |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
206 :tag("child1"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
207 -- Make reply stanza |
8597
6e5fbeaca0f4
util.stanza: Fix tests to call error_reply() correctly, and add tests to ensure it vaguely works
Matthew Wild <mwild1@gmail.com>
parents:
8236
diff
changeset
|
208 local r = st.error_reply(s, "cancel", "service-unavailable"); |
8236
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
209 assert.are.equal(r.name, s.name); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
210 assert.are.equal(r.id, s.id); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
211 assert.are.equal(r.attr.to, s.attr.from); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
212 assert.are.equal(r.attr.from, s.attr.to); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
213 assert.are.equal(r.attr.type, "error"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
214 assert.are.equal(#r.tags, 1); |
8597
6e5fbeaca0f4
util.stanza: Fix tests to call error_reply() correctly, and add tests to ensure it vaguely works
Matthew Wild <mwild1@gmail.com>
parents:
8236
diff
changeset
|
215 assert.are.equal(r.tags[1].tags[1].name, "service-unavailable"); |
8236
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
216 end); |
10444
4eab1f5a4f3b
util.stanza: Check that argument to error_reply is a stanza
Kim Alvefur <zash@zash.se>
parents:
10443
diff
changeset
|
217 |
4eab1f5a4f3b
util.stanza: Check that argument to error_reply is a stanza
Kim Alvefur <zash@zash.se>
parents:
10443
diff
changeset
|
218 it("should reject not-stanzas", function () |
4eab1f5a4f3b
util.stanza: Check that argument to error_reply is a stanza
Kim Alvefur <zash@zash.se>
parents:
10443
diff
changeset
|
219 assert.has.error_match(function () |
4eab1f5a4f3b
util.stanza: Check that argument to error_reply is a stanza
Kim Alvefur <zash@zash.se>
parents:
10443
diff
changeset
|
220 st.error_reply(not "a stanza", "modify", "bad-request"); |
4eab1f5a4f3b
util.stanza: Check that argument to error_reply is a stanza
Kim Alvefur <zash@zash.se>
parents:
10443
diff
changeset
|
221 end, "expected stanza"); |
4eab1f5a4f3b
util.stanza: Check that argument to error_reply is a stanza
Kim Alvefur <zash@zash.se>
parents:
10443
diff
changeset
|
222 end); |
10445
f53c03ab4357
util.stanza: Check that argument to error_reply is NOT a stanza of type error
Kim Alvefur <zash@zash.se>
parents:
10444
diff
changeset
|
223 |
f53c03ab4357
util.stanza: Check that argument to error_reply is NOT a stanza of type error
Kim Alvefur <zash@zash.se>
parents:
10444
diff
changeset
|
224 it("should reject stanzas of type error", function () |
f53c03ab4357
util.stanza: Check that argument to error_reply is NOT a stanza of type error
Kim Alvefur <zash@zash.se>
parents:
10444
diff
changeset
|
225 assert.has.error_match(function () |
f53c03ab4357
util.stanza: Check that argument to error_reply is NOT a stanza of type error
Kim Alvefur <zash@zash.se>
parents:
10444
diff
changeset
|
226 st.error_reply(st.message({type="error"}), "cancel", "conflict"); |
f53c03ab4357
util.stanza: Check that argument to error_reply is NOT a stanza of type error
Kim Alvefur <zash@zash.se>
parents:
10444
diff
changeset
|
227 end, "got stanza of type error"); |
f53c03ab4357
util.stanza: Check that argument to error_reply is NOT a stanza of type error
Kim Alvefur <zash@zash.se>
parents:
10444
diff
changeset
|
228 assert.has.error_match(function () |
f53c03ab4357
util.stanza: Check that argument to error_reply is NOT a stanza of type error
Kim Alvefur <zash@zash.se>
parents:
10444
diff
changeset
|
229 st.error_reply(st.error_reply(st.message({type="chat"}), "modify", "forbidden"), "cancel", "service-unavailable"); |
f53c03ab4357
util.stanza: Check that argument to error_reply is NOT a stanza of type error
Kim Alvefur <zash@zash.se>
parents:
10444
diff
changeset
|
230 end, "got stanza of type error"); |
f53c03ab4357
util.stanza: Check that argument to error_reply is NOT a stanza of type error
Kim Alvefur <zash@zash.se>
parents:
10444
diff
changeset
|
231 end); |
f53c03ab4357
util.stanza: Check that argument to error_reply is NOT a stanza of type error
Kim Alvefur <zash@zash.se>
parents:
10444
diff
changeset
|
232 |
8236
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
233 end); |
8599
62bfc85a53c8
util.stanza: Add stricter validation for data passed to stanza builder API
Matthew Wild <mwild1@gmail.com>
parents:
8598
diff
changeset
|
234 |
8626
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
235 describe("should reject #invalid", function () |
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
236 local invalid_names = { |
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
237 ["empty string"] = "", ["characters"] = "<>"; |
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
238 } |
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
239 local invalid_data = { |
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
240 ["number"] = 1234, ["table"] = {}; |
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
241 ["utf8"] = string.char(0xF4, 0x90, 0x80, 0x80); |
8641
c7734b59506f
util.stanza: tests: Add more invalid data types and update for :text(nil) and :text("")
Matthew Wild <mwild1@gmail.com>
parents:
8626
diff
changeset
|
242 ["nil"] = "nil"; ["boolean"] = true; |
8626
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
243 }; |
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
244 |
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
245 for value_type, value in pairs(invalid_names) do |
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
246 it(value_type.." in tag names", function () |
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
247 assert.error_matches(function () |
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
248 st.stanza(value); |
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
249 end, value_type); |
8599
62bfc85a53c8
util.stanza: Add stricter validation for data passed to stanza builder API
Matthew Wild <mwild1@gmail.com>
parents:
8598
diff
changeset
|
250 end); |
8626
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
251 it(value_type.." in attribute names", function () |
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
252 assert.error_matches(function () |
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
253 st.stanza("valid", { [value] = "valid" }); |
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
254 end, value_type); |
8599
62bfc85a53c8
util.stanza: Add stricter validation for data passed to stanza builder API
Matthew Wild <mwild1@gmail.com>
parents:
8598
diff
changeset
|
255 end); |
8626
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
256 end |
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
257 for value_type, value in pairs(invalid_data) do |
8641
c7734b59506f
util.stanza: tests: Add more invalid data types and update for :text(nil) and :text("")
Matthew Wild <mwild1@gmail.com>
parents:
8626
diff
changeset
|
258 if value == "nil" then value = nil; end |
8626
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
259 it(value_type.." in tag names", function () |
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
260 assert.error_matches(function () |
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
261 st.stanza(value); |
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
262 end, value_type); |
8599
62bfc85a53c8
util.stanza: Add stricter validation for data passed to stanza builder API
Matthew Wild <mwild1@gmail.com>
parents:
8598
diff
changeset
|
263 end); |
8626
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
264 it(value_type.." in attribute names", function () |
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
265 assert.error_matches(function () |
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
266 st.stanza("valid", { [value] = "valid" }); |
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
267 end, value_type); |
8599
62bfc85a53c8
util.stanza: Add stricter validation for data passed to stanza builder API
Matthew Wild <mwild1@gmail.com>
parents:
8598
diff
changeset
|
268 end); |
8641
c7734b59506f
util.stanza: tests: Add more invalid data types and update for :text(nil) and :text("")
Matthew Wild <mwild1@gmail.com>
parents:
8626
diff
changeset
|
269 if value ~= nil then |
c7734b59506f
util.stanza: tests: Add more invalid data types and update for :text(nil) and :text("")
Matthew Wild <mwild1@gmail.com>
parents:
8626
diff
changeset
|
270 it(value_type.." in attribute values", function () |
c7734b59506f
util.stanza: tests: Add more invalid data types and update for :text(nil) and :text("")
Matthew Wild <mwild1@gmail.com>
parents:
8626
diff
changeset
|
271 assert.error_matches(function () |
c7734b59506f
util.stanza: tests: Add more invalid data types and update for :text(nil) and :text("")
Matthew Wild <mwild1@gmail.com>
parents:
8626
diff
changeset
|
272 st.stanza("valid", { valid = value }); |
c7734b59506f
util.stanza: tests: Add more invalid data types and update for :text(nil) and :text("")
Matthew Wild <mwild1@gmail.com>
parents:
8626
diff
changeset
|
273 end, value_type); |
c7734b59506f
util.stanza: tests: Add more invalid data types and update for :text(nil) and :text("")
Matthew Wild <mwild1@gmail.com>
parents:
8626
diff
changeset
|
274 end); |
c7734b59506f
util.stanza: tests: Add more invalid data types and update for :text(nil) and :text("")
Matthew Wild <mwild1@gmail.com>
parents:
8626
diff
changeset
|
275 it(value_type.." in text node", function () |
c7734b59506f
util.stanza: tests: Add more invalid data types and update for :text(nil) and :text("")
Matthew Wild <mwild1@gmail.com>
parents:
8626
diff
changeset
|
276 assert.error_matches(function () |
c7734b59506f
util.stanza: tests: Add more invalid data types and update for :text(nil) and :text("")
Matthew Wild <mwild1@gmail.com>
parents:
8626
diff
changeset
|
277 st.stanza("valid"):text(value); |
c7734b59506f
util.stanza: tests: Add more invalid data types and update for :text(nil) and :text("")
Matthew Wild <mwild1@gmail.com>
parents:
8626
diff
changeset
|
278 end, value_type); |
c7734b59506f
util.stanza: tests: Add more invalid data types and update for :text(nil) and :text("")
Matthew Wild <mwild1@gmail.com>
parents:
8626
diff
changeset
|
279 end); |
c7734b59506f
util.stanza: tests: Add more invalid data types and update for :text(nil) and :text("")
Matthew Wild <mwild1@gmail.com>
parents:
8626
diff
changeset
|
280 end |
8626
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
281 end |
8599
62bfc85a53c8
util.stanza: Add stricter validation for data passed to stanza builder API
Matthew Wild <mwild1@gmail.com>
parents:
8598
diff
changeset
|
282 end); |
8621
e3e9479d526e
util.stanza: Test coverage of is_stanza()
Kim Alvefur <zash@zash.se>
parents:
8599
diff
changeset
|
283 |
e3e9479d526e
util.stanza: Test coverage of is_stanza()
Kim Alvefur <zash@zash.se>
parents:
8599
diff
changeset
|
284 describe("#is_stanza", function () |
e3e9479d526e
util.stanza: Test coverage of is_stanza()
Kim Alvefur <zash@zash.se>
parents:
8599
diff
changeset
|
285 -- is_stanza(any) -> boolean |
e3e9479d526e
util.stanza: Test coverage of is_stanza()
Kim Alvefur <zash@zash.se>
parents:
8599
diff
changeset
|
286 it("identifies stanzas as stanzas", function () |
e3e9479d526e
util.stanza: Test coverage of is_stanza()
Kim Alvefur <zash@zash.se>
parents:
8599
diff
changeset
|
287 assert.truthy(st.is_stanza(st.stanza("x"))); |
e3e9479d526e
util.stanza: Test coverage of is_stanza()
Kim Alvefur <zash@zash.se>
parents:
8599
diff
changeset
|
288 end); |
e3e9479d526e
util.stanza: Test coverage of is_stanza()
Kim Alvefur <zash@zash.se>
parents:
8599
diff
changeset
|
289 it("identifies strings as not stanzas", function () |
e3e9479d526e
util.stanza: Test coverage of is_stanza()
Kim Alvefur <zash@zash.se>
parents:
8599
diff
changeset
|
290 assert.falsy(st.is_stanza("")); |
e3e9479d526e
util.stanza: Test coverage of is_stanza()
Kim Alvefur <zash@zash.se>
parents:
8599
diff
changeset
|
291 end); |
e3e9479d526e
util.stanza: Test coverage of is_stanza()
Kim Alvefur <zash@zash.se>
parents:
8599
diff
changeset
|
292 it("identifies numbers as not stanzas", function () |
e3e9479d526e
util.stanza: Test coverage of is_stanza()
Kim Alvefur <zash@zash.se>
parents:
8599
diff
changeset
|
293 assert.falsy(st.is_stanza(1)); |
e3e9479d526e
util.stanza: Test coverage of is_stanza()
Kim Alvefur <zash@zash.se>
parents:
8599
diff
changeset
|
294 end); |
e3e9479d526e
util.stanza: Test coverage of is_stanza()
Kim Alvefur <zash@zash.se>
parents:
8599
diff
changeset
|
295 it("identifies tables as not stanzas", function () |
e3e9479d526e
util.stanza: Test coverage of is_stanza()
Kim Alvefur <zash@zash.se>
parents:
8599
diff
changeset
|
296 assert.falsy(st.is_stanza({})); |
e3e9479d526e
util.stanza: Test coverage of is_stanza()
Kim Alvefur <zash@zash.se>
parents:
8599
diff
changeset
|
297 end); |
e3e9479d526e
util.stanza: Test coverage of is_stanza()
Kim Alvefur <zash@zash.se>
parents:
8599
diff
changeset
|
298 end); |
9000
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
299 |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
300 describe("#remove_children", function () |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
301 it("should work", function () |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
302 local s = st.stanza("x", {xmlns="test"}) |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
303 :tag("y", {xmlns="test"}):up() |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
304 :tag("z", {xmlns="test2"}):up() |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
305 :tag("x", {xmlns="test2"}):up() |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
306 |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
307 s:remove_children("x"); |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
308 assert.falsy(s:get_child("x")) |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
309 assert.truthy(s:get_child("z","test2")); |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
310 assert.truthy(s:get_child("x","test2")); |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
311 |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
312 s:remove_children(nil, "test2"); |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
313 assert.truthy(s:get_child("y")) |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
314 assert.falsy(s:get_child(nil,"test2")); |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
315 |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
316 s:remove_children(); |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
317 assert.falsy(s.tags[1]); |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
318 end); |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
319 end); |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
320 |
9216
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
321 describe("#maptags", function () |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
322 it("should work", function () |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
323 local s = st.stanza("test") |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
324 :tag("one"):up() |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
325 :tag("two"):up() |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
326 :tag("one"):up() |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
327 :tag("three"):up(); |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
328 |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
329 local function one_filter(tag) |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
330 if tag.name == "one" then |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
331 return nil; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
332 end |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
333 return tag; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
334 end |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
335 assert.equal(4, #s.tags); |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
336 s:maptags(one_filter); |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
337 assert.equal(2, #s.tags); |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
338 end); |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
339 |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
340 it("should work with multiple consecutive text nodes", function () |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
341 local s = st.deserialize({ |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
342 "\n"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
343 { |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
344 "away"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
345 name = "show"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
346 attr = {}; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
347 }; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
348 "\n"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
349 { |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
350 "I am away"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
351 name = "status"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
352 attr = {}; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
353 }; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
354 "\n"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
355 { |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
356 "0"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
357 name = "priority"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
358 attr = {}; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
359 }; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
360 "\n"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
361 { |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
362 name = "c"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
363 attr = { |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
364 xmlns = "http://jabber.org/protocol/caps"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
365 node = "http://psi-im.org"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
366 hash = "sha-1"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
367 }; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
368 }; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
369 "\n"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
370 "\n"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
371 name = "presence"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
372 attr = { |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
373 to = "user@example.com/jflsjfld"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
374 from = "room@chat.example.org/nick"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
375 }; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
376 }); |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
377 |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
378 assert.equal(4, #s.tags); |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
379 |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
380 s:maptags(function (tag) return tag; end); |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
381 assert.equal(4, #s.tags); |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
382 |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
383 s:maptags(function (tag) |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
384 if tag.name == "c" then |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
385 return nil; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
386 end |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
387 return tag; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
388 end); |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
389 assert.equal(3, #s.tags); |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
390 end); |
9217
7df29c5fbb9b
util.stanza + tests: Bail out of loop if we are iterating too far, fixes #981
Matthew Wild <mwild1@gmail.com>
parents:
9216
diff
changeset
|
391 it("errors on invalid data - #981", function () |
7df29c5fbb9b
util.stanza + tests: Bail out of loop if we are iterating too far, fixes #981
Matthew Wild <mwild1@gmail.com>
parents:
9216
diff
changeset
|
392 local s = st.message({}, "Hello"); |
7df29c5fbb9b
util.stanza + tests: Bail out of loop if we are iterating too far, fixes #981
Matthew Wild <mwild1@gmail.com>
parents:
9216
diff
changeset
|
393 s.tags[1] = st.clone(s.tags[1]); |
7df29c5fbb9b
util.stanza + tests: Bail out of loop if we are iterating too far, fixes #981
Matthew Wild <mwild1@gmail.com>
parents:
9216
diff
changeset
|
394 assert.has_error_match(function () |
7df29c5fbb9b
util.stanza + tests: Bail out of loop if we are iterating too far, fixes #981
Matthew Wild <mwild1@gmail.com>
parents:
9216
diff
changeset
|
395 s:maptags(function () end); |
7df29c5fbb9b
util.stanza + tests: Bail out of loop if we are iterating too far, fixes #981
Matthew Wild <mwild1@gmail.com>
parents:
9216
diff
changeset
|
396 end, "Invalid stanza"); |
7df29c5fbb9b
util.stanza + tests: Bail out of loop if we are iterating too far, fixes #981
Matthew Wild <mwild1@gmail.com>
parents:
9216
diff
changeset
|
397 end); |
9216
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
398 end); |
9630
bff66c3faceb
util.stanza: Validate input to clone() (with brief tests)
Kim Alvefur <zash@zash.se>
parents:
9308
diff
changeset
|
399 |
bff66c3faceb
util.stanza: Validate input to clone() (with brief tests)
Kim Alvefur <zash@zash.se>
parents:
9308
diff
changeset
|
400 describe("#clone", function () |
bff66c3faceb
util.stanza: Validate input to clone() (with brief tests)
Kim Alvefur <zash@zash.se>
parents:
9308
diff
changeset
|
401 it("works", function () |
bff66c3faceb
util.stanza: Validate input to clone() (with brief tests)
Kim Alvefur <zash@zash.se>
parents:
9308
diff
changeset
|
402 local s = st.message({type="chat"}, "Hello"):reset(); |
bff66c3faceb
util.stanza: Validate input to clone() (with brief tests)
Kim Alvefur <zash@zash.se>
parents:
9308
diff
changeset
|
403 local c = st.clone(s); |
bff66c3faceb
util.stanza: Validate input to clone() (with brief tests)
Kim Alvefur <zash@zash.se>
parents:
9308
diff
changeset
|
404 assert.same(s, c); |
bff66c3faceb
util.stanza: Validate input to clone() (with brief tests)
Kim Alvefur <zash@zash.se>
parents:
9308
diff
changeset
|
405 end); |
bff66c3faceb
util.stanza: Validate input to clone() (with brief tests)
Kim Alvefur <zash@zash.se>
parents:
9308
diff
changeset
|
406 |
bff66c3faceb
util.stanza: Validate input to clone() (with brief tests)
Kim Alvefur <zash@zash.se>
parents:
9308
diff
changeset
|
407 it("works", function () |
bff66c3faceb
util.stanza: Validate input to clone() (with brief tests)
Kim Alvefur <zash@zash.se>
parents:
9308
diff
changeset
|
408 assert.has_error(function () |
bff66c3faceb
util.stanza: Validate input to clone() (with brief tests)
Kim Alvefur <zash@zash.se>
parents:
9308
diff
changeset
|
409 st.clone("this is not a stanza"); |
bff66c3faceb
util.stanza: Validate input to clone() (with brief tests)
Kim Alvefur <zash@zash.se>
parents:
9308
diff
changeset
|
410 end); |
bff66c3faceb
util.stanza: Validate input to clone() (with brief tests)
Kim Alvefur <zash@zash.se>
parents:
9308
diff
changeset
|
411 end); |
bff66c3faceb
util.stanza: Validate input to clone() (with brief tests)
Kim Alvefur <zash@zash.se>
parents:
9308
diff
changeset
|
412 end); |
9924
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
413 |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
414 describe("top_tag", function () |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
415 local xml_parse = require "util.xml".parse; |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
416 it("works", function () |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
417 local s = st.message({type="chat"}, "Hello"); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
418 local top_tag = s:top_tag(); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
419 assert.is_string(top_tag); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
420 assert.not_equal("/>", top_tag:sub(-2, -1)); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
421 assert.equal(">", top_tag:sub(-1, -1)); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
422 local s2 = xml_parse(top_tag.."</message>"); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
423 assert(st.is_stanza(s2)); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
424 assert.equal("message", s2.name); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
425 assert.equal(0, #s2); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
426 assert.equal(0, #s2.tags); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
427 assert.equal("chat", s2.attr.type); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
428 end); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
429 |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
430 it("works with namespaced attributes", function () |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
431 local s = xml_parse[[<message foo:bar='true' xmlns:foo='my-awesome-ns'/>]]; |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
432 local top_tag = s:top_tag(); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
433 assert.is_string(top_tag); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
434 assert.not_equal("/>", top_tag:sub(-2, -1)); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
435 assert.equal(">", top_tag:sub(-1, -1)); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
436 local s2 = xml_parse(top_tag.."</message>"); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
437 assert(st.is_stanza(s2)); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
438 assert.equal("message", s2.name); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
439 assert.equal(0, #s2); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
440 assert.equal(0, #s2.tags); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
441 assert.equal("true", s2.attr["my-awesome-ns\1bar"]); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
442 end); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
443 end); |
8236
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
444 end); |