Annotate

spec/util_sasl_spec.lua @ 13264:9b720c38fee8

mod_cron: Revert bbd3ac65640d Maybe it is better to run daily and weekly tasks 'now' on the theory that people set these things up during times that are appropriate for maintenance already, so the same time next day or next week might be fine for periodic cleanup.
author Kim Alvefur <zash@zash.se>
date Sun, 30 Jul 2023 13:03:40 +0200
parent 13113:191fe4866e3e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10502
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1 local sasl = require "util.sasl";
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
2
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3 -- profile * mechanism
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4 -- callbacks could use spies instead
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6 describe("util.sasl", function ()
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7 describe("plain_test profile", function ()
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
8 local profile = {
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9 plain_test = function (_, username, password, realm)
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10 assert.equals("user", username)
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11 assert.equals("pencil", password)
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
12 assert.equals("sasl.test", realm)
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13 return true, true;
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14 end;
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
15 };
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
16 it("works with PLAIN", function ()
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
17 local plain = sasl.new("sasl.test", profile);
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
18 assert.truthy(plain:select("PLAIN"));
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
19 assert.truthy(plain:process("\000user\000pencil"));
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
20 assert.equals("user", plain.username);
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
21 end);
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
22 end);
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
23
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
24 describe("plain profile", function ()
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
25 local profile = {
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
26 plain = function (_, username, realm)
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
27 assert.equals("user", username)
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
28 assert.equals("sasl.test", realm)
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
29 return "pencil", true;
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
30 end;
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
31 };
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
32
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
33 it("works with PLAIN", function ()
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
34 local plain = sasl.new("sasl.test", profile);
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
35 assert.truthy(plain:select("PLAIN"));
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
36 assert.truthy(plain:process("\000user\000pencil"));
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
37 assert.equals("user", plain.username);
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
38 end);
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
39
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
40 -- TODO SCRAM
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
41 end);
13113
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10502
diff changeset
42
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10502
diff changeset
43 describe("oauthbearer profile", function()
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10502
diff changeset
44 local profile = {
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10502
diff changeset
45 oauthbearer = function(_, token, _realm, _authzid)
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10502
diff changeset
46 if token == "example-bearer-token" then
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10502
diff changeset
47 return "user", true, {};
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10502
diff changeset
48 else
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10502
diff changeset
49 return nil, nil, {}
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10502
diff changeset
50 end
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10502
diff changeset
51 end;
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10502
diff changeset
52 }
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10502
diff changeset
53
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10502
diff changeset
54 it("works with OAUTHBEARER", function()
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10502
diff changeset
55 local bearer = sasl.new("sasl.test", profile);
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10502
diff changeset
56
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10502
diff changeset
57 assert.truthy(bearer:select("OAUTHBEARER"));
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10502
diff changeset
58 assert.equals("success", bearer:process("n,,\1auth=Bearer example-bearer-token\1\1"));
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10502
diff changeset
59 assert.equals("user", bearer.username);
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10502
diff changeset
60 end)
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10502
diff changeset
61
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10502
diff changeset
62
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10502
diff changeset
63 it("returns extras with OAUTHBEARER", function()
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10502
diff changeset
64 local bearer = sasl.new("sasl.test", profile);
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10502
diff changeset
65
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10502
diff changeset
66 assert.truthy(bearer:select("OAUTHBEARER"));
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10502
diff changeset
67 local status, extra = bearer:process("n,,\1auth=Bearer unknown\1\1");
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10502
diff changeset
68 assert.equals("challenge", status);
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10502
diff changeset
69 assert.equals("{\"status\":\"invalid_token\"}", extra);
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10502
diff changeset
70 assert.equals("failure", bearer:process("\1"));
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10502
diff changeset
71 end)
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10502
diff changeset
72
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10502
diff changeset
73 end)
10502
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
74 end);
f1c0aa521dd5 util.sasl: Add stub tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
75