Files
libcrypto/test/jwt.test.ts
T
pascal 0347f30bd0
ci/woodpecker/push/test Pipeline failed
Add JWT
Closes #13
2024-05-15 10:36:54 +02:00

42 lines
1.3 KiB
TypeScript

import {beforeAll, expect, test} from 'bun:test'
import {JWTcontext, JWTalgorithm} from '../src/jwt'
const algs: JWTalgorithm[] = ["HS256", "HS512", "ES256", "ES512", "EdDSA"]
const contexts: Map<JWTalgorithm, JWTcontext> = new Map()
beforeAll(async () => {
for (const alg of algs) {
const key = await JWTcontext.gen_key(alg as JWTalgorithm)
expect(key).not.toBeUndefined()
const context = new JWTcontext(key, alg as JWTalgorithm)
contexts.set(alg as JWTalgorithm, context)
}
})
test('Base case', async () => {
let payload = {
yeet: "yaat",
lol: "yes"
}
// @ts-expect-error : idc bout your iterator thingy >:(
for (const context of contexts.values()) {
const jwt = await context.sign(payload, true, "2 days", "pascal", "server")
const decoded = jwt.payload
expect(decoded).toEqual(payload)
const verified = (await context.verify(jwt, "pascal", "server")).expect("Should verify the JWT")
expect(verified).toEqual(payload)
}
})
test.todo("Multiple audience can be verified")
test.todo("Multiple issuer can be verified")
test.todo("Wrong audience is rejected")
test.todo("Wrong issuer is rejected")
test.todo("Expired JWT is rejected")
test.todo("Wrong key won't decrypt")
test.todo("tampered JWT are rejected (test 3 parts) (TODO : decode ?)")