Diff

spec/util_stanza_spec.lua @ 10503:e25a1a9a6e7e

util.stanza: Accept util.error object to error_reply If we're moving towards util.error as the standard error container then this makes sense. This may allow for future extensibility without needing a lot of optional arguments.
author Kim Alvefur <zash@zash.se>
date Sat, 14 Dec 2019 22:47:41 +0100
parent 10446:5c2d1b13537c
child 10717:05e4645fc9b3
line wrap: on
line diff
--- a/spec/util_stanza_spec.lua	Sat Dec 14 22:43:12 2019 +0100
+++ b/spec/util_stanza_spec.lua	Sat Dec 14 22:47:41 2019 +0100
@@ -1,5 +1,6 @@
 
 local st = require "util.stanza";
+local errors = require "util.error";
 
 describe("util.stanza", function()
 	describe("#preserialize()", function()
@@ -231,6 +232,22 @@
 			end, "got stanza of type error");
 		end);
 
+		it("should accept util.error objects", function ()
+			local s = st.message({ to = "touser", from = "fromuser", id = "123", type = "chat" }, "Hello");
+			local e = errors.new({ type = "modify", condition = "not-acceptable", text = "Bork bork bork" });
+			local r = st.error_reply(s, e);
+
+			assert.are.equal(r.name, s.name);
+			assert.are.equal(r.id, s.id);
+			assert.are.equal(r.attr.to, s.attr.from);
+			assert.are.equal(r.attr.from, s.attr.to);
+			assert.are.equal(r.attr.type, "error");
+			assert.are.equal(r.tags[1].name, "error");
+			assert.are.equal(r.tags[1].attr.type, e.type);
+			assert.are.equal(r.tags[1].tags[1].name, e.condition);
+			assert.are.equal(r.tags[1].tags[2]:get_text(), e.text);
+		end);
+
 	end);
 
 	describe("should reject #invalid", function ()