Software /
code /
prosody
Annotate
spec/util_encodings_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 | 8373:af7b41a0ec9e |
rev | line source |
---|---|
8236
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
1 |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
2 local encodings = require "util.encodings"; |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
3 local utf8 = assert(encodings.utf8, "no encodings.utf8 module"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
4 |
8367
60eb22fd21b8
spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents:
8236
diff
changeset
|
5 describe("util.encodings", function () |
60eb22fd21b8
spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents:
8236
diff
changeset
|
6 describe("#encode()", function() |
60eb22fd21b8
spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents:
8236
diff
changeset
|
7 it("should work", function () |
60eb22fd21b8
spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents:
8236
diff
changeset
|
8 assert.is.equal(encodings.base64.encode(""), ""); |
8371
09a1ce618ad0
spec/util.encodings: Fix syntax
Kim Alvefur <zash@zash.se>
parents:
8370
diff
changeset
|
9 assert.is.equal(encodings.base64.encode('coucou'), "Y291Y291"); |
8367
60eb22fd21b8
spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents:
8236
diff
changeset
|
10 assert.is.equal(encodings.base64.encode("\0\0\0"), "AAAA"); |
8372
872efae6e222
spec/util.encodings: Test an UTF-8 sequence
Kim Alvefur <zash@zash.se>
parents:
8371
diff
changeset
|
11 assert.is.equal(encodings.base64.encode("\255\255\255"), "////"); |
8367
60eb22fd21b8
spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents:
8236
diff
changeset
|
12 end); |
60eb22fd21b8
spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents:
8236
diff
changeset
|
13 end); |
60eb22fd21b8
spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents:
8236
diff
changeset
|
14 describe("#decode()", function() |
60eb22fd21b8
spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents:
8236
diff
changeset
|
15 it("should work", function () |
60eb22fd21b8
spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents:
8236
diff
changeset
|
16 assert.is.equal(encodings.base64.decode(""), ""); |
8373
af7b41a0ec9e
spec/util.encodings: Test a lonly padding (can appear like this in SASL)
Kim Alvefur <zash@zash.se>
parents:
8372
diff
changeset
|
17 assert.is.equal(encodings.base64.decode("="), ""); |
8371
09a1ce618ad0
spec/util.encodings: Fix syntax
Kim Alvefur <zash@zash.se>
parents:
8370
diff
changeset
|
18 assert.is.equal(encodings.base64.decode('Y291Y291'), "coucou"); |
8367
60eb22fd21b8
spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents:
8236
diff
changeset
|
19 assert.is.equal(encodings.base64.decode("AAAA"), "\0\0\0"); |
8372
872efae6e222
spec/util.encodings: Test an UTF-8 sequence
Kim Alvefur <zash@zash.se>
parents:
8371
diff
changeset
|
20 assert.is.equal(encodings.base64.decode("////"), "\255\255\255"); |
8367
60eb22fd21b8
spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents:
8236
diff
changeset
|
21 end); |
60eb22fd21b8
spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents:
8236
diff
changeset
|
22 end); |
60eb22fd21b8
spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents:
8236
diff
changeset
|
23 end); |
8236
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
24 describe("util.encodings.utf8", function() |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
25 describe("#valid()", function() |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
26 it("should work", function() |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
27 |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
28 for line in io.lines("spec/utf8_sequences.txt") do |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
29 local data = line:match(":%s*([^#]+)"):gsub("%s+", ""):gsub("..", function (c) return string.char(tonumber(c, 16)); end) |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
30 local expect = line:match("(%S+):"); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
31 |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
32 assert(expect == "pass" or expect == "fail", "unknown expectation: "..line:match("^[^:]+")); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
33 |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
34 local valid = utf8.valid(data); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
35 assert.is.equal(valid, utf8.valid(data.." ")); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
36 assert.is.equal(valid, expect == "pass", line); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
37 end |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
38 |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
39 end); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
40 end); |
4878e4159e12
Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
41 end); |