diff options
author | Matthew Wild <mwild1@gmail.com> | 2019-03-25 14:37:43 +0000 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2019-03-25 14:37:43 +0000 |
commit | e9eca8cd5521f2bfc8f9285b606eb84de5a467e4 (patch) | |
tree | 4f73f1544d652f3eb30242c59991ebc177f7fa87 /spec/util_stanza_spec.lua | |
parent | 65f01dec0dc42ee9e1997f2dcddeb6375cdc92c8 (diff) | |
download | prosody-e9eca8cd5521f2bfc8f9285b606eb84de5a467e4.tar.gz prosody-e9eca8cd5521f2bfc8f9285b606eb84de5a467e4.zip |
util.stanza: Fix :top_tag() handling of namespaced attributes
Diffstat (limited to 'spec/util_stanza_spec.lua')
-rw-r--r-- | spec/util_stanza_spec.lua | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/spec/util_stanza_spec.lua b/spec/util_stanza_spec.lua index 18e39554..38503ab7 100644 --- a/spec/util_stanza_spec.lua +++ b/spec/util_stanza_spec.lua @@ -381,4 +381,35 @@ describe("util.stanza", function() end); end); end); + + describe("top_tag", function () + local xml_parse = require "util.xml".parse; + it("works", function () + local s = st.message({type="chat"}, "Hello"); + local top_tag = s:top_tag(); + assert.is_string(top_tag); + assert.not_equal("/>", top_tag:sub(-2, -1)); + assert.equal(">", top_tag:sub(-1, -1)); + local s2 = xml_parse(top_tag.."</message>"); + assert(st.is_stanza(s2)); + assert.equal("message", s2.name); + assert.equal(0, #s2); + assert.equal(0, #s2.tags); + assert.equal("chat", s2.attr.type); + end); + + it("works with namespaced attributes", function () + local s = xml_parse[[<message foo:bar='true' xmlns:foo='my-awesome-ns'/>]]; + local top_tag = s:top_tag(); + assert.is_string(top_tag); + assert.not_equal("/>", top_tag:sub(-2, -1)); + assert.equal(">", top_tag:sub(-1, -1)); + local s2 = xml_parse(top_tag.."</message>"); + assert(st.is_stanza(s2)); + assert.equal("message", s2.name); + assert.equal(0, #s2); + assert.equal(0, #s2.tags); + assert.equal("true", s2.attr["my-awesome-ns\1bar"]); + end); + end); end); |