Software /
code /
prosody
Annotate
spec/util_iterators_spec.lua @ 12694:26a004c96ef8
util.paseto: Implementation of PASETO v4.public tokens
PASETO provides an alternative to JWT with the promise of fewer implementation
pitfalls. The v4.public algorithm allows asymmetric cryptographically-verified
token issuance and validation.
In summary, such tokens can be issued by one party and securely verified by
any other party independently using the public key of the issuer. This has a
number of potential applications in a decentralized network and ecosystem such
as XMPP. For example, such tokens could be combined with XEP-0317 to allow
hats to be verified even in the context of a third-party MUC service.
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Fri, 24 Jun 2022 17:03:28 +0100 |
parent | 9328:a9592107021b |
child | 12744:e894677359e5 |
rev | line source |
---|---|
8802
befffddf1b25
Fix wrong tests committed with 7b621a4a2e8d
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
1 local iter = require "util.iterators"; |
befffddf1b25
Fix wrong tests committed with 7b621a4a2e8d
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
2 |
befffddf1b25
Fix wrong tests committed with 7b621a4a2e8d
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
3 describe("util.iterators", function () |
befffddf1b25
Fix wrong tests committed with 7b621a4a2e8d
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
4 describe("join", function () |
befffddf1b25
Fix wrong tests committed with 7b621a4a2e8d
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
5 it("should produce a joined iterator", function () |
befffddf1b25
Fix wrong tests committed with 7b621a4a2e8d
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
6 local expect = { "a", "b", "c", 1, 2, 3 }; |
befffddf1b25
Fix wrong tests committed with 7b621a4a2e8d
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
7 local output = {}; |
befffddf1b25
Fix wrong tests committed with 7b621a4a2e8d
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
8 for x in iter.join(iter.values({"a", "b", "c"})):append(iter.values({1, 2, 3})) do |
befffddf1b25
Fix wrong tests committed with 7b621a4a2e8d
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
9 table.insert(output, x); |
befffddf1b25
Fix wrong tests committed with 7b621a4a2e8d
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
10 end |
befffddf1b25
Fix wrong tests committed with 7b621a4a2e8d
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
11 assert.same(output, expect); |
befffddf1b25
Fix wrong tests committed with 7b621a4a2e8d
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
12 end); |
befffddf1b25
Fix wrong tests committed with 7b621a4a2e8d
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
13 end); |
9327
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8805
diff
changeset
|
14 |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8805
diff
changeset
|
15 describe("sorted_pairs", function () |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8805
diff
changeset
|
16 it("should produce sorted pairs", function () |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8805
diff
changeset
|
17 local orig = { b = 1, c = 2, a = "foo", d = false }; |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8805
diff
changeset
|
18 local n, last_key = 0, nil; |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8805
diff
changeset
|
19 for k, v in iter.sorted_pairs(orig) do |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8805
diff
changeset
|
20 n = n + 1; |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8805
diff
changeset
|
21 if last_key then |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8805
diff
changeset
|
22 assert(k > last_key, "Expected "..k.." > "..last_key) |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8805
diff
changeset
|
23 end |
9328
a9592107021b
util.iterators tests: Check value matches expected [luacheck]
Matthew Wild <mwild1@gmail.com>
parents:
9327
diff
changeset
|
24 assert.equal(orig[k], v); |
9327
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8805
diff
changeset
|
25 last_key = k; |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8805
diff
changeset
|
26 end |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8805
diff
changeset
|
27 assert.equal("d", last_key); |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8805
diff
changeset
|
28 assert.equal(4, n); |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8805
diff
changeset
|
29 end); |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8805
diff
changeset
|
30 |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8805
diff
changeset
|
31 it("should allow a custom sort function", function () |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8805
diff
changeset
|
32 local orig = { b = 1, c = 2, a = "foo", d = false }; |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8805
diff
changeset
|
33 local n, last_key = 0, nil; |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8805
diff
changeset
|
34 for k, v in iter.sorted_pairs(orig, function (a, b) return a > b end) do |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8805
diff
changeset
|
35 n = n + 1; |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8805
diff
changeset
|
36 if last_key then |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8805
diff
changeset
|
37 assert(k < last_key, "Expected "..k.." > "..last_key) |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8805
diff
changeset
|
38 end |
9328
a9592107021b
util.iterators tests: Check value matches expected [luacheck]
Matthew Wild <mwild1@gmail.com>
parents:
9327
diff
changeset
|
39 assert.equal(orig[k], v); |
9327
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8805
diff
changeset
|
40 last_key = k; |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8805
diff
changeset
|
41 end |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8805
diff
changeset
|
42 assert.equal("a", last_key); |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8805
diff
changeset
|
43 assert.equal(4, n); |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8805
diff
changeset
|
44 end); |
f6f1dec164b5
util.iterators: Add sorted_pairs() method
Matthew Wild <mwild1@gmail.com>
parents:
8805
diff
changeset
|
45 end); |
8802
befffddf1b25
Fix wrong tests committed with 7b621a4a2e8d
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
46 end); |