Annotate

spec/util_sasl_spec.lua @ 13113:191fe4866e3e

util.sasl: Add basic tests for OAUTHBEARER
author Kim Alvefur <zash@zash.se>
date Fri, 26 May 2023 20:45:10 +0200
parent 10502:f1c0aa521dd5
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