Comparison

spec/util_stanza_spec.lua @ 10061:5c71693c8345

Merge 0.11->trunk
author Kim Alvefur <zash@zash.se>
date Mon, 08 Jul 2019 02:44:32 +0200
parent 9924:5a2e53bef031
child 10442:22db763c510c
comparison
equal deleted inserted replaced
10060:7a36b7ac309b 10061:5c71693c8345
93 end); 93 end);
94 end); 94 end);
95 95
96 describe("#iq()", function() 96 describe("#iq()", function()
97 it("should create an iq stanza", function() 97 it("should create an iq stanza", function()
98 local i = st.iq({ id = "foo" }); 98 local i = st.iq({ type = "get", id = "foo" });
99 assert.are.equal("iq", i.name); 99 assert.are.equal("iq", i.name);
100 assert.are.equal("foo", i.attr.id); 100 assert.are.equal("foo", i.attr.id);
101 end); 101 assert.are.equal("get", i.attr.type);
102 end);
103
104 it("should reject stanzas with no attributes", function ()
105 assert.has.error_match(function ()
106 st.iq();
107 end, "attributes");
108 end);
109
102 110
103 it("should reject stanzas with no id", function () 111 it("should reject stanzas with no id", function ()
104 assert.has.error_match(function () 112 assert.has.error_match(function ()
105 st.iq(); 113 st.iq({ type = "get" });
106 end, "id attribute"); 114 end, "id attribute");
107 115 end);
116
117 it("should reject stanzas with no type", function ()
108 assert.has.error_match(function () 118 assert.has.error_match(function ()
109 st.iq({ foo = "bar" }); 119 st.iq({ id = "foo" });
110 end, "id attribute"); 120 end, "type attribute");
121
111 end); 122 end);
112 end); 123 end);
113 124
114 describe("#presence()", function () 125 describe("#presence()", function ()
115 it("should work", function() 126 it("should work", function()
368 assert.has_error(function () 379 assert.has_error(function ()
369 st.clone("this is not a stanza"); 380 st.clone("this is not a stanza");
370 end); 381 end);
371 end); 382 end);
372 end); 383 end);
384
385 describe("top_tag", function ()
386 local xml_parse = require "util.xml".parse;
387 it("works", function ()
388 local s = st.message({type="chat"}, "Hello");
389 local top_tag = s:top_tag();
390 assert.is_string(top_tag);
391 assert.not_equal("/>", top_tag:sub(-2, -1));
392 assert.equal(">", top_tag:sub(-1, -1));
393 local s2 = xml_parse(top_tag.."</message>");
394 assert(st.is_stanza(s2));
395 assert.equal("message", s2.name);
396 assert.equal(0, #s2);
397 assert.equal(0, #s2.tags);
398 assert.equal("chat", s2.attr.type);
399 end);
400
401 it("works with namespaced attributes", function ()
402 local s = xml_parse[[<message foo:bar='true' xmlns:foo='my-awesome-ns'/>]];
403 local top_tag = s:top_tag();
404 assert.is_string(top_tag);
405 assert.not_equal("/>", top_tag:sub(-2, -1));
406 assert.equal(">", top_tag:sub(-1, -1));
407 local s2 = xml_parse(top_tag.."</message>");
408 assert(st.is_stanza(s2));
409 assert.equal("message", s2.name);
410 assert.equal(0, #s2);
411 assert.equal(0, #s2.tags);
412 assert.equal("true", s2.attr["my-awesome-ns\1bar"]);
413 end);
414 end);
373 end); 415 end);