22c60fc46a
Closes #17
38 lines
1.2 KiB
TypeScript
38 lines
1.2 KiB
TypeScript
import {beforeAll, expect, test} from 'bun:test'
|
|
import {JWTcontext, type 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"
|
|
}
|
|
|
|
for (const context of contexts.values()) {
|
|
const jwt = await context.sign(payload, true, "2 days", "pascal", "server")
|
|
|
|
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 ?)")
|