spec/util_sasl_spec.lua
author Kim Alvefur <zash@zash.se>
Sun, 24 Mar 2024 21:32:00 +0100
changeset 13468 2dbc169aae6a
parent 13117 191fe4866e3e
permissions -rw-r--r--
util.startup: Abort before initialization of logging when started as root Prevents creation of log files owned by the root user which could be inaccessible once started correctly.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10506
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);
13117
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10506
diff changeset
    42
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10506
diff changeset
    43
	describe("oauthbearer profile", function()
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10506
diff changeset
    44
		local profile = {
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10506
diff changeset
    45
			oauthbearer = function(_, token, _realm, _authzid)
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10506
diff changeset
    46
				if token == "example-bearer-token" then
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10506
diff changeset
    47
					return "user", true, {};
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10506
diff changeset
    48
				else
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10506
diff changeset
    49
					return nil, nil, {}
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10506
diff changeset
    50
				end
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10506
diff changeset
    51
			end;
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10506
diff changeset
    52
		}
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10506
diff changeset
    53
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10506
diff changeset
    54
		it("works with OAUTHBEARER", function()
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10506
diff changeset
    55
			local bearer = sasl.new("sasl.test", profile);
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10506
diff changeset
    56
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10506
diff changeset
    57
			assert.truthy(bearer:select("OAUTHBEARER"));
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10506
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: 10506
diff changeset
    59
			assert.equals("user", bearer.username);
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10506
diff changeset
    60
		end)
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10506
diff changeset
    61
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10506
diff changeset
    62
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10506
diff changeset
    63
		it("returns extras with OAUTHBEARER", function()
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10506
diff changeset
    64
			local bearer = sasl.new("sasl.test", profile);
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10506
diff changeset
    65
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10506
diff changeset
    66
			assert.truthy(bearer:select("OAUTHBEARER"));
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10506
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: 10506
diff changeset
    68
			assert.equals("challenge", status);
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10506
diff changeset
    69
			assert.equals("{\"status\":\"invalid_token\"}", extra);
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10506
diff changeset
    70
			assert.equals("failure", bearer:process("\1"));
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10506
diff changeset
    71
		end)
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10506
diff changeset
    72
191fe4866e3e util.sasl: Add basic tests for OAUTHBEARER
Kim Alvefur <zash@zash.se>
parents: 10506
diff changeset
    73
	end)
10506
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