Software /
code /
prosody
Annotate
spec/util_interpolation_spec.lua @ 12938:055b03d3059b
util.sasl.oauthbearer: Return username from callback instead using authzid (BC)
RFC 6120 states that
> If the initiating entity does not wish to act on behalf of another
> entity, it MUST NOT provide an authorization identity.
Thus it seems weird to require it here. We can instead expect an
username from the token data passed back from the profile.
This follows the practice of util.sasl.external where the profile
callback returns the selected username, making the authentication module
responsible for extracting the username from the token.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 16 Mar 2023 12:18:23 +0100 |
parent | 11308:5d4d90d1eabb |
rev | line source |
---|---|
9737
3d6f5b20cca6
spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
1 local template = [[ |
10350 | 2 {greet!?Hi}, {name?world}! |
9737
3d6f5b20cca6
spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
3 ]]; |
3d6f5b20cca6
spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
4 local expect1 = [[ |
3d6f5b20cca6
spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
5 Hello, WORLD! |
3d6f5b20cca6
spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
6 ]]; |
3d6f5b20cca6
spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
7 local expect2 = [[ |
3d6f5b20cca6
spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
8 Hello, world! |
3d6f5b20cca6
spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
9 ]]; |
10350 | 10 local expect3 = [[ |
11 Hi, YOU! | |
12 ]]; | |
10351
72b23c5f74fb
util.interpolation: Test array syntax
Kim Alvefur <zash@zash.se>
parents:
10350
diff
changeset
|
13 local template_array = [[ |
72b23c5f74fb
util.interpolation: Test array syntax
Kim Alvefur <zash@zash.se>
parents:
10350
diff
changeset
|
14 {foo#{idx}. {item} |
72b23c5f74fb
util.interpolation: Test array syntax
Kim Alvefur <zash@zash.se>
parents:
10350
diff
changeset
|
15 }]] |
72b23c5f74fb
util.interpolation: Test array syntax
Kim Alvefur <zash@zash.se>
parents:
10350
diff
changeset
|
16 local expect_array = [[ |
72b23c5f74fb
util.interpolation: Test array syntax
Kim Alvefur <zash@zash.se>
parents:
10350
diff
changeset
|
17 1. HELLO |
72b23c5f74fb
util.interpolation: Test array syntax
Kim Alvefur <zash@zash.se>
parents:
10350
diff
changeset
|
18 2. WORLD |
72b23c5f74fb
util.interpolation: Test array syntax
Kim Alvefur <zash@zash.se>
parents:
10350
diff
changeset
|
19 ]] |
10412
b788b5257945
util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents:
10352
diff
changeset
|
20 local template_func_pipe = [[ |
b788b5257945
util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents:
10352
diff
changeset
|
21 {foo|sort#{idx}. {item} |
b788b5257945
util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents:
10352
diff
changeset
|
22 }]] |
b788b5257945
util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents:
10352
diff
changeset
|
23 local expect_func_pipe = [[ |
b788b5257945
util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents:
10352
diff
changeset
|
24 1. A |
b788b5257945
util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents:
10352
diff
changeset
|
25 2. B |
b788b5257945
util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents:
10352
diff
changeset
|
26 3. C |
b788b5257945
util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents:
10352
diff
changeset
|
27 4. D |
b788b5257945
util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents:
10352
diff
changeset
|
28 ]] |
10352
dc1e6c2fb50a
util.interpolation: Test map syntax
Kim Alvefur <zash@zash.se>
parents:
10351
diff
changeset
|
29 local template_map = [[ |
dc1e6c2fb50a
util.interpolation: Test map syntax
Kim Alvefur <zash@zash.se>
parents:
10351
diff
changeset
|
30 {foo%{idx}: {item!} |
dc1e6c2fb50a
util.interpolation: Test map syntax
Kim Alvefur <zash@zash.se>
parents:
10351
diff
changeset
|
31 }]] |
dc1e6c2fb50a
util.interpolation: Test map syntax
Kim Alvefur <zash@zash.se>
parents:
10351
diff
changeset
|
32 local expect_map = [[ |
dc1e6c2fb50a
util.interpolation: Test map syntax
Kim Alvefur <zash@zash.se>
parents:
10351
diff
changeset
|
33 FOO: bar |
dc1e6c2fb50a
util.interpolation: Test map syntax
Kim Alvefur <zash@zash.se>
parents:
10351
diff
changeset
|
34 ]] |
11064
af1e3b7d9ea3
util.interpolation: Add '~' as the opposite of '&' (render sub-block if falsy)
Matthew Wild <mwild1@gmail.com>
parents:
10413
diff
changeset
|
35 local template_not = [[ |
11065
95eb1a981ef6
util.interpolation: Add test for ~ when value is false (not just nil)
Matthew Wild <mwild1@gmail.com>
parents:
11064
diff
changeset
|
36 {thing~Thing is falsy}{thing&Thing is truthy} |
11064
af1e3b7d9ea3
util.interpolation: Add '~' as the opposite of '&' (render sub-block if falsy)
Matthew Wild <mwild1@gmail.com>
parents:
10413
diff
changeset
|
37 ]] |
af1e3b7d9ea3
util.interpolation: Add '~' as the opposite of '&' (render sub-block if falsy)
Matthew Wild <mwild1@gmail.com>
parents:
10413
diff
changeset
|
38 local expect_not_true = [[ |
11065
95eb1a981ef6
util.interpolation: Add test for ~ when value is false (not just nil)
Matthew Wild <mwild1@gmail.com>
parents:
11064
diff
changeset
|
39 Thing is truthy |
11064
af1e3b7d9ea3
util.interpolation: Add '~' as the opposite of '&' (render sub-block if falsy)
Matthew Wild <mwild1@gmail.com>
parents:
10413
diff
changeset
|
40 ]] |
af1e3b7d9ea3
util.interpolation: Add '~' as the opposite of '&' (render sub-block if falsy)
Matthew Wild <mwild1@gmail.com>
parents:
10413
diff
changeset
|
41 local expect_not_nil = [[ |
11065
95eb1a981ef6
util.interpolation: Add test for ~ when value is false (not just nil)
Matthew Wild <mwild1@gmail.com>
parents:
11064
diff
changeset
|
42 Thing is falsy |
95eb1a981ef6
util.interpolation: Add test for ~ when value is false (not just nil)
Matthew Wild <mwild1@gmail.com>
parents:
11064
diff
changeset
|
43 ]] |
95eb1a981ef6
util.interpolation: Add test for ~ when value is false (not just nil)
Matthew Wild <mwild1@gmail.com>
parents:
11064
diff
changeset
|
44 local expect_not_false = [[ |
95eb1a981ef6
util.interpolation: Add test for ~ when value is false (not just nil)
Matthew Wild <mwild1@gmail.com>
parents:
11064
diff
changeset
|
45 Thing is falsy |
11064
af1e3b7d9ea3
util.interpolation: Add '~' as the opposite of '&' (render sub-block if falsy)
Matthew Wild <mwild1@gmail.com>
parents:
10413
diff
changeset
|
46 ]] |
9737
3d6f5b20cca6
spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
47 describe("util.interpolation", function () |
3d6f5b20cca6
spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
48 it("renders", function () |
10412
b788b5257945
util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents:
10352
diff
changeset
|
49 local render = require "util.interpolation".new("%b{}", string.upper, { sort = function (t) table.sort(t) return t end }); |
9737
3d6f5b20cca6
spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
50 assert.equal(expect1, render(template, { greet = "Hello", name = "world" })); |
3d6f5b20cca6
spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
51 assert.equal(expect2, render(template, { greet = "Hello" })); |
10350 | 52 assert.equal(expect3, render(template, { name = "you" })); |
10351
72b23c5f74fb
util.interpolation: Test array syntax
Kim Alvefur <zash@zash.se>
parents:
10350
diff
changeset
|
53 assert.equal(expect_array, render(template_array, { foo = { "Hello", "World" } })); |
10412
b788b5257945
util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents:
10352
diff
changeset
|
54 assert.equal(expect_func_pipe, render(template_func_pipe, { foo = { "c", "a", "d", "b", } })); |
10413
604096ce2f82
util.interpolation: Add commented test case for passing nil to filter
Kim Alvefur <zash@zash.se>
parents:
10412
diff
changeset
|
55 -- assert.equal("", render(template_func_pipe, { foo = nil })); -- FIXME |
10352
dc1e6c2fb50a
util.interpolation: Test map syntax
Kim Alvefur <zash@zash.se>
parents:
10351
diff
changeset
|
56 assert.equal(expect_map, render(template_map, { foo = { foo = "bar" } })); |
11064
af1e3b7d9ea3
util.interpolation: Add '~' as the opposite of '&' (render sub-block if falsy)
Matthew Wild <mwild1@gmail.com>
parents:
10413
diff
changeset
|
57 assert.equal(expect_not_true, render(template_not, { thing = true })); |
af1e3b7d9ea3
util.interpolation: Add '~' as the opposite of '&' (render sub-block if falsy)
Matthew Wild <mwild1@gmail.com>
parents:
10413
diff
changeset
|
58 assert.equal(expect_not_nil, render(template_not, { thing = nil })); |
11065
95eb1a981ef6
util.interpolation: Add test for ~ when value is false (not just nil)
Matthew Wild <mwild1@gmail.com>
parents:
11064
diff
changeset
|
59 assert.equal(expect_not_false, render(template_not, { thing = false })); |
9737
3d6f5b20cca6
spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
60 end); |
11308
5d4d90d1eabb
util.interpolation: Add test for #1623
Kim Alvefur <zash@zash.se>
parents:
11065
diff
changeset
|
61 it("fixes #1623", function () |
5d4d90d1eabb
util.interpolation: Add test for #1623
Kim Alvefur <zash@zash.se>
parents:
11065
diff
changeset
|
62 local render = require "util.interpolation".new("%b{}", string.upper, { x = string.lower }); |
5d4d90d1eabb
util.interpolation: Add test for #1623
Kim Alvefur <zash@zash.se>
parents:
11065
diff
changeset
|
63 assert.equal("", render("{foo?}", { })) |
5d4d90d1eabb
util.interpolation: Add test for #1623
Kim Alvefur <zash@zash.se>
parents:
11065
diff
changeset
|
64 assert.equal("", render("{foo|x?}", { })) |
5d4d90d1eabb
util.interpolation: Add test for #1623
Kim Alvefur <zash@zash.se>
parents:
11065
diff
changeset
|
65 end); |
9737
3d6f5b20cca6
spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
66 end); |