Software / code / prosody
Annotate
spec/util_error_spec.lua @ 10946:84441c19750e
mod_register_ibr: Add event for successful password reset
This is in addition to the existing event for password changes. This
one includes additional details about the actor, and only triggers
when the change is due to the account owner (presumably) resetting.
As example use case is to invalidate one-time password reset tokens.
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Mon, 22 Jun 2020 11:35:24 +0100 |
| parent | 10365:744ca71a49f7 |
| child | 11081:0b68697450c5 |
| rev | line source |
|---|---|
| 10101 | 1 local errors = require "util.error" |
| 2 | |
| 3 describe("util.error", function () | |
| 4 describe("new()", function () | |
| 5 it("works", function () | |
| 6 local err = errors.new("bork", "bork bork"); | |
| 7 assert.not_nil(err); | |
| 8 assert.equal("cancel", err.type); | |
| 9 assert.equal("undefined-condition", err.condition); | |
| 10 assert.same("bork bork", err.context); | |
| 11 end); | |
| 12 | |
| 13 describe("templates", function () | |
| 14 it("works", function () | |
| 15 local templates = { | |
| 16 ["fail"] = { | |
| 17 type = "wait", | |
| 18 condition = "internal-server-error", | |
|
10365
744ca71a49f7
util.error: Add well-known field 'code' in error templates
Kim Alvefur <zash@zash.se>
parents:
10101
diff
changeset
|
19 code = 555; |
| 10101 | 20 }; |
| 21 }; | |
| 22 local err = errors.new("fail", { traceback = "in some file, somewhere" }, templates); | |
| 23 assert.equal("wait", err.type); | |
| 24 assert.equal("internal-server-error", err.condition); | |
|
10365
744ca71a49f7
util.error: Add well-known field 'code' in error templates
Kim Alvefur <zash@zash.se>
parents:
10101
diff
changeset
|
25 assert.equal(555, err.code); |
| 10101 | 26 assert.same({ traceback = "in some file, somewhere" }, err.context); |
| 27 end); | |
| 28 end); | |
| 29 | |
| 30 end); | |
| 31 | |
| 32 describe("is_err()", function () | |
| 33 it("works", function () | |
| 34 assert.truthy(errors.is_err(errors.new())); | |
| 35 assert.falsy(errors.is_err("not an error")); | |
| 36 end); | |
| 37 end); | |
| 38 | |
| 39 describe("coerce", function () | |
| 40 it("works", function () | |
| 41 local ok, err = errors.coerce(nil, "it dun goofed"); | |
| 42 assert.is_nil(ok); | |
| 43 assert.truthy(errors.is_err(err)) | |
| 44 end); | |
| 45 end); | |
| 46 | |
| 47 describe("from_stanza", function () | |
| 48 it("works", function () | |
| 49 local st = require "util.stanza"; | |
| 50 local m = st.message({ type = "chat" }); | |
| 51 local e = st.error_reply(m, "modify", "bad-request"); | |
| 52 local err = errors.from_stanza(e); | |
| 53 assert.truthy(errors.is_err(err)); | |
| 54 assert.equal("modify", err.type); | |
| 55 assert.equal("bad-request", err.condition); | |
| 56 assert.equal(e, err.context.stanza); | |
| 57 end); | |
| 58 end); | |
| 59 | |
| 60 describe("__tostring", function () | |
| 61 it("doesn't throw", function () | |
| 62 assert.has_no.errors(function () | |
| 63 -- See 6f317e51544d | |
| 64 tostring(errors.new()); | |
| 65 end); | |
| 66 end); | |
| 67 end); | |
| 68 | |
| 69 end); | |
| 70 |