Software /
code /
prosody
Annotate
spec/util_jwt_spec.lua @ 13014:06453c564141
util.startup: Add prosody.started promise to easily execute code after startup
To avoid a race where server-started fires before the promise function body is
run (on next tick), I moved server-started to fire on the next tick, which
seems sensible anyway.
Errors are logged, I'm not sure if we ought to be doing something more here.
I'm sure we'll find out.
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Sat, 01 Apr 2023 11:56:38 +0100 |
parent | 12736:ad4ab01f9b11 |
rev | line source |
---|---|
10660
c4ded3be7cc0
util.jwt: Basic JSON Web Token library supporting HS256 tokens
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
1 local jwt = require "util.jwt"; |
12700
899c057781cd
spec: Move test crypto keys to a shared file for clarity and easy maintenance
Matthew Wild <mwild1@gmail.com>
parents:
12699
diff
changeset
|
2 local test_keys = require "spec.inputs.test_keys"; |
10660
c4ded3be7cc0
util.jwt: Basic JSON Web Token library supporting HS256 tokens
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
3 |
12704
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
4 local array = require "util.array"; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
5 local iter = require "util.iterators"; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
6 local set = require "util.set"; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
7 |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
8 -- Ignore long lines. We have some long tokens embedded here. |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
9 --luacheck: ignore 631 |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
10 |
10660
c4ded3be7cc0
util.jwt: Basic JSON Web Token library supporting HS256 tokens
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
11 describe("util.jwt", function () |
c4ded3be7cc0
util.jwt: Basic JSON Web Token library supporting HS256 tokens
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
12 it("validates", function () |
c4ded3be7cc0
util.jwt: Basic JSON Web Token library supporting HS256 tokens
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
13 local key = "secret"; |
c4ded3be7cc0
util.jwt: Basic JSON Web Token library supporting HS256 tokens
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
14 local token = jwt.sign(key, { payload = "this" }); |
c4ded3be7cc0
util.jwt: Basic JSON Web Token library supporting HS256 tokens
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
15 assert.string(token); |
c4ded3be7cc0
util.jwt: Basic JSON Web Token library supporting HS256 tokens
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
16 local ok, parsed = jwt.verify(key, token); |
c4ded3be7cc0
util.jwt: Basic JSON Web Token library supporting HS256 tokens
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
17 assert.truthy(ok) |
c4ded3be7cc0
util.jwt: Basic JSON Web Token library supporting HS256 tokens
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
18 assert.same({ payload = "this" }, parsed); |
12699
b3d0c1457584
util.jwt: Add support for RSA-based algorithms (RS256, PS256)
Matthew Wild <mwild1@gmail.com>
parents:
12696
diff
changeset
|
19 |
b3d0c1457584
util.jwt: Add support for RSA-based algorithms (RS256, PS256)
Matthew Wild <mwild1@gmail.com>
parents:
12696
diff
changeset
|
20 |
b3d0c1457584
util.jwt: Add support for RSA-based algorithms (RS256, PS256)
Matthew Wild <mwild1@gmail.com>
parents:
12696
diff
changeset
|
21 |
10660
c4ded3be7cc0
util.jwt: Basic JSON Web Token library supporting HS256 tokens
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
22 end); |
c4ded3be7cc0
util.jwt: Basic JSON Web Token library supporting HS256 tokens
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
23 it("rejects invalid", function () |
c4ded3be7cc0
util.jwt: Basic JSON Web Token library supporting HS256 tokens
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
24 local key = "secret"; |
c4ded3be7cc0
util.jwt: Basic JSON Web Token library supporting HS256 tokens
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
25 local token = jwt.sign("wrong", { payload = "this" }); |
c4ded3be7cc0
util.jwt: Basic JSON Web Token library supporting HS256 tokens
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
26 assert.string(token); |
10661
4eee1aaa9405
util.jwt: Remove unused return value from tests [luacheck]
Kim Alvefur <zash@zash.se>
parents:
10660
diff
changeset
|
27 local ok = jwt.verify(key, token); |
10660
c4ded3be7cc0
util.jwt: Basic JSON Web Token library supporting HS256 tokens
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
28 assert.falsy(ok) |
c4ded3be7cc0
util.jwt: Basic JSON Web Token library supporting HS256 tokens
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
29 end); |
12696
27a72982e331
util.jwt: Add support/tests for ES256 via improved API and using util.crypto
Matthew Wild <mwild1@gmail.com>
parents:
10661
diff
changeset
|
30 |
12704
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
31 local function jwt_reference_token(token) |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
32 return { |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
33 name = "jwt.io reference"; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
34 token; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
35 { -- payload |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
36 sub = "1234567890"; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
37 name = "John Doe"; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
38 admin = true; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
39 iat = 1516239022; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
40 }; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
41 }; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
42 end |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
43 |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
44 local untested_algorithms = set.new(array.collect(iter.keys(jwt._algorithms))); |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
45 |
12701
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
46 local test_cases = { |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
47 { |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
48 algorithm = "HS256"; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
49 keys = { |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
50 { "your-256-bit-secret", "your-256-bit-secret" }; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
51 { "another-secret", "another-secret" }; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
52 }; |
12704
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
53 |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
54 jwt_reference_token [[eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJhZG1pbiI6dHJ1ZX0.F-cvL2RcfQhUtCavIM7q7zYE8drmj2LJk0JRkrS6He4]]; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
55 }; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
56 { |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
57 algorithm = "HS384"; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
58 keys = { |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
59 { "your-384-bit-secret", "your-384-bit-secret" }; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
60 { "another-secret", "another-secret" }; |
12701
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
61 }; |
12704
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
62 |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
63 jwt_reference_token [[eyJhbGciOiJIUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.bQTnz6AuMJvmXXQsVPrxeQNvzDkimo7VNXxHeSBfClLufmCVZRUuyTwJF311JHuh]]; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
64 }; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
65 { |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
66 algorithm = "HS512"; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
67 keys = { |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
68 { "your-512-bit-secret", "your-512-bit-secret" }; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
69 { "another-secret", "another-secret" }; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
70 }; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
71 |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
72 jwt_reference_token [[eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.VFb0qJ1LRg_4ujbZoRMXnVkUgiuKq5KxWqNdbKq_G9Vvz-S1zZa9LPxtHWKa64zDl2ofkT8F6jBt_K4riU-fPg]]; |
12701
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
73 }; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
74 { |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
75 algorithm = "ES256"; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
76 keys = { |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
77 { test_keys.ecdsa_private_pem, test_keys.ecdsa_public_pem }; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
78 { test_keys.alt_ecdsa_private_pem, test_keys.alt_ecdsa_public_pem }; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
79 }; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
80 { |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
81 name = "jwt.io reference"; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
82 [[eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.tyh-VfuzIxCyGYDlkBA7DfyjrqmSHu6pQ2hoZuFqUSLPNY2N0mpHb3nk5K17HWP_3cYHBw7AhHale5wky6-sVA]]; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
83 { -- payload |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
84 sub = "1234567890"; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
85 name = "John Doe"; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
86 admin = true; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
87 iat = 1516239022; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
88 }; |
12699
b3d0c1457584
util.jwt: Add support for RSA-based algorithms (RS256, PS256)
Matthew Wild <mwild1@gmail.com>
parents:
12696
diff
changeset
|
89 }; |
12701
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
90 }; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
91 { |
12736
ad4ab01f9b11
util.jwt: Add support for ES512 (+ tests)
Matthew Wild <mwild1@gmail.com>
parents:
12704
diff
changeset
|
92 algorithm = "ES512"; |
ad4ab01f9b11
util.jwt: Add support for ES512 (+ tests)
Matthew Wild <mwild1@gmail.com>
parents:
12704
diff
changeset
|
93 keys = { |
ad4ab01f9b11
util.jwt: Add support for ES512 (+ tests)
Matthew Wild <mwild1@gmail.com>
parents:
12704
diff
changeset
|
94 { test_keys.ecdsa_521_private_pem, test_keys.ecdsa_521_public_pem }; |
ad4ab01f9b11
util.jwt: Add support for ES512 (+ tests)
Matthew Wild <mwild1@gmail.com>
parents:
12704
diff
changeset
|
95 { test_keys.alt_ecdsa_521_private_pem, test_keys.alt_ecdsa_521_public_pem }; |
ad4ab01f9b11
util.jwt: Add support for ES512 (+ tests)
Matthew Wild <mwild1@gmail.com>
parents:
12704
diff
changeset
|
96 }; |
ad4ab01f9b11
util.jwt: Add support for ES512 (+ tests)
Matthew Wild <mwild1@gmail.com>
parents:
12704
diff
changeset
|
97 { |
ad4ab01f9b11
util.jwt: Add support for ES512 (+ tests)
Matthew Wild <mwild1@gmail.com>
parents:
12704
diff
changeset
|
98 name = "jwt.io reference"; |
ad4ab01f9b11
util.jwt: Add support for ES512 (+ tests)
Matthew Wild <mwild1@gmail.com>
parents:
12704
diff
changeset
|
99 [[eyJhbGciOiJFUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.AbVUinMiT3J_03je8WTOIl-VdggzvoFgnOsdouAs-DLOtQzau9valrq-S6pETyi9Q18HH-EuwX49Q7m3KC0GuNBJAc9Tksulgsdq8GqwIqZqDKmG7hNmDzaQG1Dpdezn2qzv-otf3ZZe-qNOXUMRImGekfQFIuH_MjD2e8RZyww6lbZk]]; |
ad4ab01f9b11
util.jwt: Add support for ES512 (+ tests)
Matthew Wild <mwild1@gmail.com>
parents:
12704
diff
changeset
|
100 { -- payload |
ad4ab01f9b11
util.jwt: Add support for ES512 (+ tests)
Matthew Wild <mwild1@gmail.com>
parents:
12704
diff
changeset
|
101 sub = "1234567890"; |
ad4ab01f9b11
util.jwt: Add support for ES512 (+ tests)
Matthew Wild <mwild1@gmail.com>
parents:
12704
diff
changeset
|
102 name = "John Doe"; |
ad4ab01f9b11
util.jwt: Add support for ES512 (+ tests)
Matthew Wild <mwild1@gmail.com>
parents:
12704
diff
changeset
|
103 admin = true; |
ad4ab01f9b11
util.jwt: Add support for ES512 (+ tests)
Matthew Wild <mwild1@gmail.com>
parents:
12704
diff
changeset
|
104 iat = 1516239022; |
ad4ab01f9b11
util.jwt: Add support for ES512 (+ tests)
Matthew Wild <mwild1@gmail.com>
parents:
12704
diff
changeset
|
105 }; |
ad4ab01f9b11
util.jwt: Add support for ES512 (+ tests)
Matthew Wild <mwild1@gmail.com>
parents:
12704
diff
changeset
|
106 }; |
ad4ab01f9b11
util.jwt: Add support for ES512 (+ tests)
Matthew Wild <mwild1@gmail.com>
parents:
12704
diff
changeset
|
107 }; |
ad4ab01f9b11
util.jwt: Add support for ES512 (+ tests)
Matthew Wild <mwild1@gmail.com>
parents:
12704
diff
changeset
|
108 { |
12701
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
109 algorithm = "RS256"; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
110 keys = { |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
111 { test_keys.rsa_private_pem, test_keys.rsa_public_pem }; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
112 { test_keys.alt_rsa_private_pem, test_keys.alt_rsa_public_pem }; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
113 }; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
114 { |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
115 name = "jwt.io reference"; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
116 [[eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.NHVaYe26MbtOYhSKkoKYdFVomg4i8ZJd8_-RU8VNbftc4TSMb4bXP3l3YlNWACwyXPGffz5aXHc6lty1Y2t4SWRqGteragsVdZufDn5BlnJl9pdR_kdVFUsra2rWKEofkZeIC4yWytE58sMIihvo9H1ScmmVwBcQP6XETqYd0aSHp1gOa9RdUPDvoXQ5oqygTqVtxaDr6wUFKrKItgBMzWIdNZ6y7O9E0DhEPTbE9rfBo6KTFsHAZnMg4k68CDp2woYIaXbmYTWcvbzIuHO7_37GT79XdIwkm95QJ7hYC9RiwrV7mesbY4PAahERJawntho0my942XheVLmGwLMBkQ]]; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
117 { -- payload |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
118 sub = "1234567890"; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
119 name = "John Doe"; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
120 admin = true; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
121 iat = 1516239022; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
122 }; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
123 }; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
124 }; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
125 { |
12704
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
126 algorithm = "RS384"; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
127 keys = { |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
128 { test_keys.rsa_private_pem, test_keys.rsa_public_pem }; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
129 { test_keys.alt_rsa_private_pem, test_keys.alt_rsa_public_pem }; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
130 }; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
131 |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
132 jwt_reference_token [[eyJhbGciOiJSUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.o1hC1xYbJolSyh0-bOY230w22zEQSk5TiBfc-OCvtpI2JtYlW-23-8B48NpATozzMHn0j3rE0xVUldxShzy0xeJ7vYAccVXu2Gs9rnTVqouc-UZu_wJHkZiKBL67j8_61L6SXswzPAQu4kVDwAefGf5hyYBUM-80vYZwWPEpLI8K4yCBsF6I9N1yQaZAJmkMp_Iw371Menae4Mp4JusvBJS-s6LrmG2QbiZaFaxVJiW8KlUkWyUCns8-qFl5OMeYlgGFsyvvSHvXCzQrsEXqyCdS4tQJd73ayYA4SPtCb9clz76N1zE5WsV4Z0BYrxeb77oA7jJhh994RAPzCG0hmQ]]; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
133 }; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
134 { |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
135 algorithm = "RS512"; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
136 keys = { |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
137 { test_keys.rsa_private_pem, test_keys.rsa_public_pem }; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
138 { test_keys.alt_rsa_private_pem, test_keys.alt_rsa_public_pem }; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
139 }; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
140 |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
141 jwt_reference_token [[eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.jYW04zLDHfR1v7xdrW3lCGZrMIsVe0vWCfVkN2DRns2c3MN-mcp_-RE6TN9umSBYoNV-mnb31wFf8iun3fB6aDS6m_OXAiURVEKrPFNGlR38JSHUtsFzqTOj-wFrJZN4RwvZnNGSMvK3wzzUriZqmiNLsG8lktlEn6KA4kYVaM61_NpmPHWAjGExWv7cjHYupcjMSmR8uMTwN5UuAwgW6FRstCJEfoxwb0WKiyoaSlDuIiHZJ0cyGhhEmmAPiCwtPAwGeaL1yZMcp0p82cpTQ5Qb-7CtRov3N4DcOHgWYk6LomPR5j5cCkePAz87duqyzSMpCB0mCOuE3CU2VMtGeQ]]; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
142 }; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
143 { |
12701
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
144 algorithm = "PS256"; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
145 keys = { |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
146 { test_keys.rsa_private_pem, test_keys.rsa_public_pem }; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
147 { test_keys.alt_rsa_private_pem, test_keys.alt_rsa_public_pem }; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
148 }; |
12704
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
149 |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
150 jwt_reference_token [[eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.iOeNU4dAFFeBwNj6qdhdvm-IvDQrTa6R22lQVJVuWJxorJfeQww5Nwsra0PjaOYhAMj9jNMO5YLmud8U7iQ5gJK2zYyepeSuXhfSi8yjFZfRiSkelqSkU19I-Ja8aQBDbqXf2SAWA8mHF8VS3F08rgEaLCyv98fLLH4vSvsJGf6ueZSLKDVXz24rZRXGWtYYk_OYYTVgR1cg0BLCsuCvqZvHleImJKiWmtS0-CymMO4MMjCy_FIl6I56NqLE9C87tUVpo1mT-kbg5cHDD8I7MjCW5Iii5dethB4Vid3mZ6emKjVYgXrtkOQ-JyGMh6fnQxEFN1ft33GX2eRHluK9eg]]; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
151 }; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
152 { |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
153 algorithm = "PS384"; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
154 keys = { |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
155 { test_keys.rsa_private_pem, test_keys.rsa_public_pem }; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
156 { test_keys.alt_rsa_private_pem, test_keys.alt_rsa_public_pem }; |
12701
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
157 }; |
12704
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
158 |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
159 jwt_reference_token [[eyJhbGciOiJQUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.Lfe_aCQme_gQpUk9-6l9qesu0QYZtfdzfy08w8uqqPH_gnw-IVyQwyGLBHPFBJHMbifdSMxPjJjkCD0laIclhnBhowILu6k66_5Y2z78GHg8YjKocAvB-wSUiBhuV6hXVxE5emSjhfVz2OwiCk2bfk2hziRpkdMvfcITkCx9dmxHU6qcEIsTTHuH020UcGayB1-IoimnjTdCsV1y4CMr_ECDjBrqMdnontkqKRIM1dtmgYFsJM6xm7ewi_ksG_qZHhaoBkxQ9wq9OVQRGiSZYowCp73d2BF3jYMhdmv2JiaUz5jRvv6lVU7Quq6ylVAlSPxeov9voYHO1mgZFCY1kQ]]; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
160 }; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
161 { |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
162 algorithm = "PS512"; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
163 keys = { |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
164 { test_keys.rsa_private_pem, test_keys.rsa_public_pem }; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
165 { test_keys.alt_rsa_private_pem, test_keys.alt_rsa_public_pem }; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
166 }; |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
167 |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
168 jwt_reference_token [[eyJhbGciOiJQUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.J5W09-rNx0pt5_HBiydR-vOluS6oD-RpYNa8PVWwMcBDQSXiw6-EPW8iSsalXPspGj3ouQjAnOP_4-zrlUUlvUIt2T79XyNeiKuooyIFvka3Y5NnGiOUBHWvWcWp4RcQFMBrZkHtJM23sB5D7Wxjx0-HFeNk-Y3UJgeJVhg5NaWXypLkC4y0ADrUBfGAxhvGdRdULZivfvzuVtv6AzW6NRuEE6DM9xpoWX_4here-yvLS2YPiBTZ8xbB3axdM99LhES-n52lVkiX5AWg2JJkEROZzLMpaacA_xlbUz_zbIaOaoqk8gB5oO7kI6sZej3QAdGigQy-hXiRnW_L98d4GQ]]; |
12701
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
169 }; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
170 }; |
12696
27a72982e331
util.jwt: Add support/tests for ES256 via improved API and using util.crypto
Matthew Wild <mwild1@gmail.com>
parents:
10661
diff
changeset
|
171 |
12701
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
172 local function do_verify_test(algorithm, verifying_key, token, expect_payload) |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
173 local verify = jwt.new_verifier(algorithm, verifying_key); |
12696
27a72982e331
util.jwt: Add support/tests for ES256 via improved API and using util.crypto
Matthew Wild <mwild1@gmail.com>
parents:
10661
diff
changeset
|
174 |
12701
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
175 assert.is_string(token); |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
176 local result = {verify(token)}; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
177 if expect_payload then |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
178 assert.same({ |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
179 true; -- success |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
180 expect_payload; -- payload |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
181 }, result); |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
182 else |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
183 assert.same({ |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
184 false; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
185 "signature-mismatch"; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
186 }, result); |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
187 end |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
188 end |
12696
27a72982e331
util.jwt: Add support/tests for ES256 via improved API and using util.crypto
Matthew Wild <mwild1@gmail.com>
parents:
10661
diff
changeset
|
189 |
12701
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
190 local function do_sign_verify_test(algorithm, signing_key, verifying_key, expect_success, expect_token) |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
191 local sign = jwt.new_signer(algorithm, signing_key); |
12699
b3d0c1457584
util.jwt: Add support for RSA-based algorithms (RS256, PS256)
Matthew Wild <mwild1@gmail.com>
parents:
12696
diff
changeset
|
192 |
12701
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
193 local test_payload = { |
12699
b3d0c1457584
util.jwt: Add support for RSA-based algorithms (RS256, PS256)
Matthew Wild <mwild1@gmail.com>
parents:
12696
diff
changeset
|
194 sub = "1234567890"; |
b3d0c1457584
util.jwt: Add support for RSA-based algorithms (RS256, PS256)
Matthew Wild <mwild1@gmail.com>
parents:
12696
diff
changeset
|
195 name = "John Doe"; |
b3d0c1457584
util.jwt: Add support for RSA-based algorithms (RS256, PS256)
Matthew Wild <mwild1@gmail.com>
parents:
12696
diff
changeset
|
196 admin = true; |
b3d0c1457584
util.jwt: Add support for RSA-based algorithms (RS256, PS256)
Matthew Wild <mwild1@gmail.com>
parents:
12696
diff
changeset
|
197 iat = 1516239022; |
12701
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
198 }; |
12699
b3d0c1457584
util.jwt: Add support for RSA-based algorithms (RS256, PS256)
Matthew Wild <mwild1@gmail.com>
parents:
12696
diff
changeset
|
199 |
12701
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
200 local token = sign(test_payload); |
12699
b3d0c1457584
util.jwt: Add support for RSA-based algorithms (RS256, PS256)
Matthew Wild <mwild1@gmail.com>
parents:
12696
diff
changeset
|
201 |
12701
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
202 if expect_token then |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
203 assert.equal(expect_token, token); |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
204 end |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
205 |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
206 do_verify_test(algorithm, verifying_key, token, expect_success and test_payload or false); |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
207 end |
12699
b3d0c1457584
util.jwt: Add support for RSA-based algorithms (RS256, PS256)
Matthew Wild <mwild1@gmail.com>
parents:
12696
diff
changeset
|
208 |
b3d0c1457584
util.jwt: Add support for RSA-based algorithms (RS256, PS256)
Matthew Wild <mwild1@gmail.com>
parents:
12696
diff
changeset
|
209 |
12701
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
210 for _, algorithm_tests in ipairs(test_cases) do |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
211 local algorithm = algorithm_tests.algorithm; |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
212 local keypairs = algorithm_tests.keys; |
12704
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
213 |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
214 untested_algorithms:remove(algorithm); |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
215 |
12701
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
216 describe(algorithm, function () |
12736
ad4ab01f9b11
util.jwt: Add support for ES512 (+ tests)
Matthew Wild <mwild1@gmail.com>
parents:
12704
diff
changeset
|
217 describe("can do basic sign and verify", function () |
ad4ab01f9b11
util.jwt: Add support for ES512 (+ tests)
Matthew Wild <mwild1@gmail.com>
parents:
12704
diff
changeset
|
218 for keypair_n, keypair in ipairs(keypairs) do |
12701
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
219 local signing_key, verifying_key = keypair[1], keypair[2]; |
12736
ad4ab01f9b11
util.jwt: Add support for ES512 (+ tests)
Matthew Wild <mwild1@gmail.com>
parents:
12704
diff
changeset
|
220 it(("(test key pair %d)"):format(keypair_n), function () |
ad4ab01f9b11
util.jwt: Add support for ES512 (+ tests)
Matthew Wild <mwild1@gmail.com>
parents:
12704
diff
changeset
|
221 do_sign_verify_test(algorithm, signing_key, verifying_key, true); |
ad4ab01f9b11
util.jwt: Add support for ES512 (+ tests)
Matthew Wild <mwild1@gmail.com>
parents:
12704
diff
changeset
|
222 end); |
12701
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
223 end |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
224 end); |
12699
b3d0c1457584
util.jwt: Add support for RSA-based algorithms (RS256, PS256)
Matthew Wild <mwild1@gmail.com>
parents:
12696
diff
changeset
|
225 |
12701
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
226 if #keypairs >= 2 then |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
227 it("rejects invalid tokens", function () |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
228 do_sign_verify_test(algorithm, keypairs[1][1], keypairs[2][2], false); |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
229 end); |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
230 else |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
231 pending("rejects invalid tokens", function () |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
232 error("Needs at least 2 key pairs"); |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
233 end); |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
234 end |
12699
b3d0c1457584
util.jwt: Add support for RSA-based algorithms (RS256, PS256)
Matthew Wild <mwild1@gmail.com>
parents:
12696
diff
changeset
|
235 |
12701
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
236 if #algorithm_tests > 0 then |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
237 for test_n, test_case in ipairs(algorithm_tests) do |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
238 it("can verify "..(test_case.name or (("test case %d"):format(test_n))), function () |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
239 do_verify_test( |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
240 algorithm, |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
241 test_case.verifying_key or keypairs[1][2], |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
242 test_case[1], |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
243 test_case[2] |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
244 ); |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
245 end); |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
246 end |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
247 else |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
248 pending("can verify reference tokens", function () |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
249 error("No test tokens provided"); |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
250 end); |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
251 end |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
252 end); |
8e402a2ae1b8
util.jwt: Overhaul of tests to use declarative approach
Matthew Wild <mwild1@gmail.com>
parents:
12700
diff
changeset
|
253 end |
12704
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
254 |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
255 for algorithm in untested_algorithms do |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
256 pending(algorithm.." tests", function () end); |
31a2bd84191d
util.jwt: All the algorithms (+ all the tests!)
Matthew Wild <mwild1@gmail.com>
parents:
12701
diff
changeset
|
257 end |
10660
c4ded3be7cc0
util.jwt: Basic JSON Web Token library supporting HS256 tokens
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
258 end); |
c4ded3be7cc0
util.jwt: Basic JSON Web Token library supporting HS256 tokens
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
259 |