util.stanza: Support getting 'by' from util.error object
authorKim Alvefur <zash@zash.se>
Sat, 26 Sep 2020 17:26:31 +0200
changeset 11087 4d12a6785531
parent 11086 c26599a78fae
child 11088 5e09a3389adb
util.stanza: Support getting 'by' from util.error object
spec/util_stanza_spec.lua
util/stanza.lua
--- a/spec/util_stanza_spec.lua	Sat Sep 26 17:18:17 2020 +0200
+++ b/spec/util_stanza_spec.lua	Sat Sep 26 17:26:31 2020 +0200
@@ -234,7 +234,7 @@
 
 		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 e = errors.new({ type = "modify", condition = "not-acceptable", text = "Bork bork bork", extra = { by = "this.test" } });
 			local r = st.error_reply(s, e);
 
 			assert.are.equal(r.name, s.name);
@@ -246,6 +246,7 @@
 			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);
+			assert.are.equal("this.test", r.tags[1].attr.by);
 		end);
 
 	end);
--- a/util/stanza.lua	Sat Sep 26 17:18:17 2020 +0200
+++ b/util/stanza.lua	Sat Sep 26 17:26:31 2020 +0200
@@ -456,6 +456,9 @@
 	local t = reply(orig);
 	t.attr.type = "error";
 	if type(error_type) == "table" then -- an util.error or similar object
+		if type(error_type.extra) == "table" then
+			if type(error_type.extra.by) == "string" then error_by = error_type.extra.by; end
+		end
 		error_type, condition, error_message = error_type.type, error_type.condition, error_type.text;
 	end
 	if t.attr.from == error_by then