aboutsummaryrefslogtreecommitdiffstats
path: root/spec/util_error_spec.lua
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2019-11-16 16:52:31 +0100
committerKim Alvefur <zash@zash.se>2019-11-16 16:52:31 +0100
commit908f5b61c55e4cba39e61ac415b0fca384a1095d (patch)
tree6e391ff6608608f181e42c92ee6dfd7c534da255 /spec/util_error_spec.lua
parentc4c38d2f01d5f2711b527c7c2412250ed6c58738 (diff)
parentfd9ccf20d5b652dbad1f37cecd540661f4642ee6 (diff)
downloadprosody-908f5b61c55e4cba39e61ac415b0fca384a1095d.tar.gz
prosody-908f5b61c55e4cba39e61ac415b0fca384a1095d.zip
Merge 0.11->trunk
Diffstat (limited to 'spec/util_error_spec.lua')
-rw-r--r--spec/util_error_spec.lua70
1 files changed, 70 insertions, 0 deletions
diff --git a/spec/util_error_spec.lua b/spec/util_error_spec.lua
new file mode 100644
index 00000000..ca053285
--- /dev/null
+++ b/spec/util_error_spec.lua
@@ -0,0 +1,70 @@
+local errors = require "util.error"
+
+describe("util.error", function ()
+ describe("new()", function ()
+ it("works", function ()
+ local err = errors.new("bork", "bork bork");
+ assert.not_nil(err);
+ assert.equal("cancel", err.type);
+ assert.equal("undefined-condition", err.condition);
+ assert.same("bork bork", err.context);
+ end);
+
+ describe("templates", function ()
+ it("works", function ()
+ local templates = {
+ ["fail"] = {
+ type = "wait",
+ condition = "internal-server-error",
+ code = 555;
+ };
+ };
+ local err = errors.new("fail", { traceback = "in some file, somewhere" }, templates);
+ assert.equal("wait", err.type);
+ assert.equal("internal-server-error", err.condition);
+ assert.equal(555, err.code);
+ assert.same({ traceback = "in some file, somewhere" }, err.context);
+ end);
+ end);
+
+ end);
+
+ describe("is_err()", function ()
+ it("works", function ()
+ assert.truthy(errors.is_err(errors.new()));
+ assert.falsy(errors.is_err("not an error"));
+ end);
+ end);
+
+ describe("coerce", function ()
+ it("works", function ()
+ local ok, err = errors.coerce(nil, "it dun goofed");
+ assert.is_nil(ok);
+ assert.truthy(errors.is_err(err))
+ end);
+ end);
+
+ describe("from_stanza", function ()
+ it("works", function ()
+ local st = require "util.stanza";
+ local m = st.message({ type = "chat" });
+ local e = st.error_reply(m, "modify", "bad-request");
+ local err = errors.from_stanza(e);
+ assert.truthy(errors.is_err(err));
+ assert.equal("modify", err.type);
+ assert.equal("bad-request", err.condition);
+ assert.equal(e, err.context.stanza);
+ end);
+ end);
+
+ describe("__tostring", function ()
+ it("doesn't throw", function ()
+ assert.has_no.errors(function ()
+ -- See 6f317e51544d
+ tostring(errors.new());
+ end);
+ end);
+ end);
+
+end);
+