Comparison

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
comparison
equal deleted inserted replaced
10502:f1c0aa521dd5 10503:e25a1a9a6e7e
1 1
2 local st = require "util.stanza"; 2 local st = require "util.stanza";
3 local errors = require "util.error";
3 4
4 describe("util.stanza", function() 5 describe("util.stanza", function()
5 describe("#preserialize()", function() 6 describe("#preserialize()", function()
6 it("should work", function() 7 it("should work", function()
7 local stanza = st.stanza("message", { type = "chat" }):text_tag("body", "Hello"); 8 local stanza = st.stanza("message", { type = "chat" }):text_tag("body", "Hello");
229 assert.has.error_match(function () 230 assert.has.error_match(function ()
230 st.error_reply(st.error_reply(st.message({type="chat"}), "modify", "forbidden"), "cancel", "service-unavailable"); 231 st.error_reply(st.error_reply(st.message({type="chat"}), "modify", "forbidden"), "cancel", "service-unavailable");
231 end, "got stanza of type error"); 232 end, "got stanza of type error");
232 end); 233 end);
233 234
235 it("should accept util.error objects", function ()
236 local s = st.message({ to = "touser", from = "fromuser", id = "123", type = "chat" }, "Hello");
237 local e = errors.new({ type = "modify", condition = "not-acceptable", text = "Bork bork bork" });
238 local r = st.error_reply(s, e);
239
240 assert.are.equal(r.name, s.name);
241 assert.are.equal(r.id, s.id);
242 assert.are.equal(r.attr.to, s.attr.from);
243 assert.are.equal(r.attr.from, s.attr.to);
244 assert.are.equal(r.attr.type, "error");
245 assert.are.equal(r.tags[1].name, "error");
246 assert.are.equal(r.tags[1].attr.type, e.type);
247 assert.are.equal(r.tags[1].tags[1].name, e.condition);
248 assert.are.equal(r.tags[1].tags[2]:get_text(), e.text);
249 end);
250
234 end); 251 end);
235 252
236 describe("should reject #invalid", function () 253 describe("should reject #invalid", function ()
237 local invalid_names = { 254 local invalid_names = {
238 ["empty string"] = "", ["characters"] = "<>"; 255 ["empty string"] = "", ["characters"] = "<>";