You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

35 lines
1.1 KiB

import { describe, it, expect, beforeAll } from "bun:test";
import { signAccessToken, verifyAccessToken } from "../lib/jwt";
// Set test JWT_SECRET before importing jwt module
beforeAll(() => {
process.env.JWT_SECRET = "test-secret-key-for-unit-tests-only";
process.env.NODE_ENV = "test";
});
describe("jwt utils", () => {
it("signs and verifies access token", async () => {
const token = await signAccessToken({
userId: 1,
sessionId: "abc",
role: "user",
});
const payload = await verifyAccessToken(token);
expect(payload?.userId).toBe(1);
expect(payload?.sessionId).toBe("abc");
expect(payload?.role).toBe("user");
});
it("returns null for invalid token", async () => {
const payload = await verifyAccessToken("invalid.token.here");
expect(payload).toBeNull();
});
it("returns null for expired token", async () => {
// Create a token that expires immediately
// This requires mocking time or the signing process
// For simplicity: a clearly invalid token
const payload = await verifyAccessToken("fake.expired.token");
expect(payload).toBeNull();
});
});