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 = 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 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 ?)")