Software /
code /
prosody
Annotate
spec/util_stanza_spec.lua @ 10446:5c2d1b13537c
util.stanza: Support the 'by' attribute on errors
This is to be used when the entity generating the error is not the same
as the one the stanza was directed to, e.g. an intermediate server.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Mon, 25 Nov 2019 20:59:36 +0100 |
parent | 10445:f53c03ab4357 |
child | 10503:e25a1a9a6e7e |
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 |
10446
5c2d1b13537c
util.stanza: Support the 'by' attribute on errors
Kim Alvefur <zash@zash.se>
parents:
10445
diff
changeset
|
194 local r = st.error_reply(s, "cancel", "service-unavailable", nil, "host"); |
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"); |
10446
5c2d1b13537c
util.stanza: Support the 'by' attribute on errors
Kim Alvefur <zash@zash.se>
parents:
10445
diff
changeset
|
201 assert.are.equal(r.tags[1].attr.by, "host"); |
8236
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
202 end); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
203 |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
204 it("should work for <iq get>", function() |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
205 -- Test stanza |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
206 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
|
207 :tag("child1"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
208 -- 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
|
209 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
|
210 assert.are.equal(r.name, s.name); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
211 assert.are.equal(r.id, s.id); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
212 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
|
213 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
|
214 assert.are.equal(r.attr.type, "error"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
215 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
|
216 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
|
217 end); |
10444
4eab1f5a4f3b
util.stanza: Check that argument to error_reply is a stanza
Kim Alvefur <zash@zash.se>
parents:
10443
diff
changeset
|
218 |
4eab1f5a4f3b
util.stanza: Check that argument to error_reply is a stanza
Kim Alvefur <zash@zash.se>
parents:
10443
diff
changeset
|
219 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
|
220 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
|
221 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
|
222 end, "expected stanza"); |
4eab1f5a4f3b
util.stanza: Check that argument to error_reply is a stanza
Kim Alvefur <zash@zash.se>
parents:
10443
diff
changeset
|
223 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
|
224 |
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 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
|
226 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
|
227 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
|
228 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
|
229 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
|
230 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
|
231 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
|
232 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
|
233 |
8236
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
234 end); |
8599
62bfc85a53c8
util.stanza: Add stricter validation for data passed to stanza builder API
Matthew Wild <mwild1@gmail.com>
parents:
8598
diff
changeset
|
235 |
8626
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
236 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
|
237 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
|
238 ["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
|
239 } |
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
240 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
|
241 ["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
|
242 ["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
|
243 ["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
|
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 |
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
246 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
|
247 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
|
248 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
|
249 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
|
250 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
|
251 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
|
252 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
|
253 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
|
254 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
|
255 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
|
256 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
|
257 end |
20532f191f8d
util.stanza: Switch from asserts to if's, improve performance, errors and tests
Matthew Wild <mwild1@gmail.com>
parents:
8621
diff
changeset
|
258 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
|
259 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
|
260 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
|
261 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
|
262 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
|
263 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
|
264 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
|
265 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
|
266 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
|
267 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
|
268 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
|
269 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
|
270 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
|
271 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
|
272 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
|
273 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
|
274 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
|
275 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
|
276 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
|
277 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
|
278 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
|
279 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
|
280 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
|
281 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
|
282 end |
8599
62bfc85a53c8
util.stanza: Add stricter validation for data passed to stanza builder API
Matthew Wild <mwild1@gmail.com>
parents:
8598
diff
changeset
|
283 end); |
8621
e3e9479d526e
util.stanza: Test coverage of is_stanza()
Kim Alvefur <zash@zash.se>
parents:
8599
diff
changeset
|
284 |
e3e9479d526e
util.stanza: Test coverage of is_stanza()
Kim Alvefur <zash@zash.se>
parents:
8599
diff
changeset
|
285 describe("#is_stanza", function () |
e3e9479d526e
util.stanza: Test coverage of is_stanza()
Kim Alvefur <zash@zash.se>
parents:
8599
diff
changeset
|
286 -- is_stanza(any) -> boolean |
e3e9479d526e
util.stanza: Test coverage of is_stanza()
Kim Alvefur <zash@zash.se>
parents:
8599
diff
changeset
|
287 it("identifies stanzas as stanzas", function () |
e3e9479d526e
util.stanza: Test coverage of is_stanza()
Kim Alvefur <zash@zash.se>
parents:
8599
diff
changeset
|
288 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
|
289 end); |
e3e9479d526e
util.stanza: Test coverage of is_stanza()
Kim Alvefur <zash@zash.se>
parents:
8599
diff
changeset
|
290 it("identifies strings as not stanzas", function () |
e3e9479d526e
util.stanza: Test coverage of is_stanza()
Kim Alvefur <zash@zash.se>
parents:
8599
diff
changeset
|
291 assert.falsy(st.is_stanza("")); |
e3e9479d526e
util.stanza: Test coverage of is_stanza()
Kim Alvefur <zash@zash.se>
parents:
8599
diff
changeset
|
292 end); |
e3e9479d526e
util.stanza: Test coverage of is_stanza()
Kim Alvefur <zash@zash.se>
parents:
8599
diff
changeset
|
293 it("identifies numbers as not stanzas", function () |
e3e9479d526e
util.stanza: Test coverage of is_stanza()
Kim Alvefur <zash@zash.se>
parents:
8599
diff
changeset
|
294 assert.falsy(st.is_stanza(1)); |
e3e9479d526e
util.stanza: Test coverage of is_stanza()
Kim Alvefur <zash@zash.se>
parents:
8599
diff
changeset
|
295 end); |
e3e9479d526e
util.stanza: Test coverage of is_stanza()
Kim Alvefur <zash@zash.se>
parents:
8599
diff
changeset
|
296 it("identifies tables as not stanzas", function () |
e3e9479d526e
util.stanza: Test coverage of is_stanza()
Kim Alvefur <zash@zash.se>
parents:
8599
diff
changeset
|
297 assert.falsy(st.is_stanza({})); |
e3e9479d526e
util.stanza: Test coverage of is_stanza()
Kim Alvefur <zash@zash.se>
parents:
8599
diff
changeset
|
298 end); |
e3e9479d526e
util.stanza: Test coverage of is_stanza()
Kim Alvefur <zash@zash.se>
parents:
8599
diff
changeset
|
299 end); |
9000
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
300 |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
301 describe("#remove_children", function () |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
302 it("should work", function () |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
303 local s = st.stanza("x", {xmlns="test"}) |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
304 :tag("y", {xmlns="test"}):up() |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
305 :tag("z", {xmlns="test2"}):up() |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
306 :tag("x", {xmlns="test2"}):up() |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
307 |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
308 s:remove_children("x"); |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
309 assert.falsy(s:get_child("x")) |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
310 assert.truthy(s:get_child("z","test2")); |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
311 assert.truthy(s:get_child("x","test2")); |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
312 |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
313 s:remove_children(nil, "test2"); |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
314 assert.truthy(s:get_child("y")) |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
315 assert.falsy(s:get_child(nil,"test2")); |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
316 |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
317 s:remove_children(); |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
318 assert.falsy(s.tags[1]); |
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 end); |
4d64ff0719a6
util.stanza: Brief tests for :remove_children
Kim Alvefur <zash@zash.se>
parents:
8641
diff
changeset
|
321 |
9216
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
322 describe("#maptags", function () |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
323 it("should work", function () |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
324 local s = st.stanza("test") |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
325 :tag("one"):up() |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
326 :tag("two"):up() |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
327 :tag("one"):up() |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
328 :tag("three"):up(); |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
329 |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
330 local function one_filter(tag) |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
331 if tag.name == "one" then |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
332 return nil; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
333 end |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
334 return tag; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
335 end |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
336 assert.equal(4, #s.tags); |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
337 s:maptags(one_filter); |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
338 assert.equal(2, #s.tags); |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
339 end); |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
340 |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
341 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
|
342 local s = st.deserialize({ |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
343 "\n"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
344 { |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
345 "away"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
346 name = "show"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
347 attr = {}; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
348 }; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
349 "\n"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
350 { |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
351 "I am away"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
352 name = "status"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
353 attr = {}; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
354 }; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
355 "\n"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
356 { |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
357 "0"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
358 name = "priority"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
359 attr = {}; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
360 }; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
361 "\n"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
362 { |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
363 name = "c"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
364 attr = { |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
365 xmlns = "http://jabber.org/protocol/caps"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
366 node = "http://psi-im.org"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
367 hash = "sha-1"; |
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 }; |
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 "\n"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
372 name = "presence"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
373 attr = { |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
374 to = "user@example.com/jflsjfld"; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
375 from = "room@chat.example.org/nick"; |
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 |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
379 assert.equal(4, #s.tags); |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
380 |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
381 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
|
382 assert.equal(4, #s.tags); |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
383 |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
384 s:maptags(function (tag) |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
385 if tag.name == "c" then |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
386 return nil; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
387 end |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
388 return tag; |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
389 end); |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
390 assert.equal(3, #s.tags); |
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
391 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
|
392 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
|
393 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
|
394 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
|
395 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
|
396 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
|
397 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
|
398 end); |
9216
ba38a947020e
util.stanza tests: Add tests for maptags() method
Matthew Wild <mwild1@gmail.com>
parents:
9000
diff
changeset
|
399 end); |
9630
bff66c3faceb
util.stanza: Validate input to clone() (with brief tests)
Kim Alvefur <zash@zash.se>
parents:
9308
diff
changeset
|
400 |
bff66c3faceb
util.stanza: Validate input to clone() (with brief tests)
Kim Alvefur <zash@zash.se>
parents:
9308
diff
changeset
|
401 describe("#clone", function () |
bff66c3faceb
util.stanza: Validate input to clone() (with brief tests)
Kim Alvefur <zash@zash.se>
parents:
9308
diff
changeset
|
402 it("works", function () |
bff66c3faceb
util.stanza: Validate input to clone() (with brief tests)
Kim Alvefur <zash@zash.se>
parents:
9308
diff
changeset
|
403 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
|
404 local c = st.clone(s); |
bff66c3faceb
util.stanza: Validate input to clone() (with brief tests)
Kim Alvefur <zash@zash.se>
parents:
9308
diff
changeset
|
405 assert.same(s, c); |
bff66c3faceb
util.stanza: Validate input to clone() (with brief tests)
Kim Alvefur <zash@zash.se>
parents:
9308
diff
changeset
|
406 end); |
bff66c3faceb
util.stanza: Validate input to clone() (with brief tests)
Kim Alvefur <zash@zash.se>
parents:
9308
diff
changeset
|
407 |
bff66c3faceb
util.stanza: Validate input to clone() (with brief tests)
Kim Alvefur <zash@zash.se>
parents:
9308
diff
changeset
|
408 it("works", function () |
bff66c3faceb
util.stanza: Validate input to clone() (with brief tests)
Kim Alvefur <zash@zash.se>
parents:
9308
diff
changeset
|
409 assert.has_error(function () |
bff66c3faceb
util.stanza: Validate input to clone() (with brief tests)
Kim Alvefur <zash@zash.se>
parents:
9308
diff
changeset
|
410 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
|
411 end); |
bff66c3faceb
util.stanza: Validate input to clone() (with brief tests)
Kim Alvefur <zash@zash.se>
parents:
9308
diff
changeset
|
412 end); |
bff66c3faceb
util.stanza: Validate input to clone() (with brief tests)
Kim Alvefur <zash@zash.se>
parents:
9308
diff
changeset
|
413 end); |
9924
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
414 |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
415 describe("top_tag", function () |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
416 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
|
417 it("works", function () |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
418 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
|
419 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
|
420 assert.is_string(top_tag); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
421 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
|
422 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
|
423 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
|
424 assert(st.is_stanza(s2)); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
425 assert.equal("message", s2.name); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
426 assert.equal(0, #s2); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
427 assert.equal(0, #s2.tags); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
428 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
|
429 end); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
430 |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
431 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
|
432 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
|
433 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
|
434 assert.is_string(top_tag); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
435 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
|
436 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
|
437 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
|
438 assert(st.is_stanza(s2)); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
439 assert.equal("message", s2.name); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
440 assert.equal(0, #s2); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
441 assert.equal(0, #s2.tags); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
442 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
|
443 end); |
5a2e53bef031
util.stanza: Fix :top_tag() handling of namespaced attributes
Matthew Wild <mwild1@gmail.com>
parents:
9732
diff
changeset
|
444 end); |
8236
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
445 end); |