41 lines
1.6 KiB
TypeScript
41 lines
1.6 KiB
TypeScript
import { parseJwt } from "./jwt";
|
|
|
|
describe("The parseJwt function", () => {
|
|
test("parses a valid kandimat jwt", () => {
|
|
const validJwt =
|
|
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiY2FuZHltYXRfZWRpdG9yIiwicGVyc29uX3Jvd19pZCI6MSwiZXhwIjoxNjA5NDEyMTY4LCJpYXQiOjE2MDkyMzkzNjgsImF1ZCI6InBvc3RncmFwaGlsZSIsImlzcyI6InBvc3RncmFwaGlsZSJ9.6VLDBS5_HwgWIf_MKkMCuj4EVBZkbSGm87aWt5grP2M";
|
|
|
|
const jwt = parseJwt(validJwt);
|
|
|
|
expect(jwt).not.toBeNull();
|
|
expect(jwt?.person_row_id).toBe(1);
|
|
expect(jwt?.role).toBe("kandimat_editor");
|
|
});
|
|
|
|
test("returns null if role claim is invalid", () => {
|
|
const invalidRoleClaimJwt =
|
|
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiY2FuZHllZGl0b3IiLCJwZXJzb25fcm93X2lkIjoxLCJleHAiOjE2MDk0MTIxNjgsImlhdCI6MTYwOTIzOTM2OCwiYXVkIjoicG9zdGdyYXBoaWxlIiwiaXNzIjoicG9zdGdyYXBoaWxlIn0._AVFTMqMkIuyrfQGTmWE-Qi-C72KCrZ3s_uVyfuEDco";
|
|
|
|
const jwt = parseJwt(invalidRoleClaimJwt);
|
|
|
|
expect(jwt).toBeNull();
|
|
});
|
|
|
|
test("returns null if person_row_id is not a number", () => {
|
|
const invalidRowIdClaimJwt =
|
|
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiY2FuZHltYXRfZWRpdG9yIiwicGVyc29uX3Jvd19pZCI6IjEiLCJleHAiOjE2MDk0MTIxNjgsImlhdCI6MTYwOTIzOTM2OCwiYXVkIjoicG9zdGdyYXBoaWxlIiwiaXNzIjoicG9zdGdyYXBoaWxlIn0.NfXylzN44qrZA5DX0qxxU71vJ1o9gdunscnK6V193Fc";
|
|
|
|
const jwt = parseJwt(invalidRowIdClaimJwt);
|
|
|
|
expect(jwt).toBeNull();
|
|
});
|
|
|
|
test("returns null if token is rubish.", () => {
|
|
const brokenJwt =
|
|
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eysssssssssssssssssssss.6VLDBS5_HwgWIf_MKkMCuj4EVBZkbSGm87aWt5grP2M";
|
|
const jwt = parseJwt(brokenJwt);
|
|
|
|
expect(jwt).toBeNull();
|
|
});
|
|
});
|