diff options
author | Kim Alvefur <zash@zash.se> | 2018-12-28 20:49:01 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2018-12-28 20:49:01 +0100 |
commit | 20429527b1c455e2c6784d717c48d69e80b1138b (patch) | |
tree | df9a77b8e29ec164d9b9d8b877c42d141342e529 | |
parent | 4da406588e5177c0b663f2658336888b29795d13 (diff) | |
download | prosody-20429527b1c455e2c6784d717c48d69e80b1138b.tar.gz prosody-20429527b1c455e2c6784d717c48d69e80b1138b.zip |
util.stanza: Require a type attribute for iq stanzas
-rw-r--r-- | spec/util_stanza_spec.lua | 19 | ||||
-rw-r--r-- | util/stanza.lua | 8 |
2 files changed, 22 insertions, 5 deletions
diff --git a/spec/util_stanza_spec.lua b/spec/util_stanza_spec.lua index 6fbae41a..18e39554 100644 --- a/spec/util_stanza_spec.lua +++ b/spec/util_stanza_spec.lua @@ -95,20 +95,31 @@ describe("util.stanza", function() describe("#iq()", function() it("should create an iq stanza", function() - local i = st.iq({ id = "foo" }); + local i = st.iq({ type = "get", id = "foo" }); assert.are.equal("iq", i.name); assert.are.equal("foo", i.attr.id); + assert.are.equal("get", i.attr.type); end); - it("should reject stanzas with no id", function () + it("should reject stanzas with no attributes", function () assert.has.error_match(function () st.iq(); - end, "id attribute"); + end, "attributes"); + end); + + it("should reject stanzas with no id", function () assert.has.error_match(function () - st.iq({ foo = "bar" }); + st.iq({ type = "get" }); end, "id attribute"); end); + + it("should reject stanzas with no type", function () + assert.has.error_match(function () + st.iq({ id = "foo" }); + end, "type attribute"); + + end); end); describe("#presence()", function () diff --git a/util/stanza.lua b/util/stanza.lua index a90d56b3..e9847ca6 100644 --- a/util/stanza.lua +++ b/util/stanza.lua @@ -423,9 +423,15 @@ local function message(attr, body) end end local function iq(attr) - if not (attr and attr.id) then + if not attr then + error("iq stanzas require id and type attributes"); + end + if not attr.id then error("iq stanzas require an id attribute"); end + if not attr.type then + error("iq stanzas require a type attribute"); + end return new_stanza("iq", attr); end |