Phase 8
This commit is contained in:
82 files changed
+4903
-287
No files matched your search
@@ -0,0 +1,37 @@
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { createOAuthState, verifyOAuthState } from "../oauth-state";
|
||||
|
||||
describe("oauth-state", () => {
|
||||
beforeEach(() => {
|
||||
process.env.AUTH_SECRET = "test-auth-secret-not-for-production";
|
||||
});
|
||||
|
||||
it("verifies a state token for the staff member it was issued to", () => {
|
||||
const state = createOAuthState("staff-123");
|
||||
expect(verifyOAuthState(state, "staff-123")).toBe(true);
|
||||
});
|
||||
|
||||
it("rejects a state token issued to a different staff member", () => {
|
||||
const state = createOAuthState("staff-123");
|
||||
expect(verifyOAuthState(state, "staff-999")).toBe(false);
|
||||
});
|
||||
|
||||
it("rejects a tampered token", () => {
|
||||
const state = createOAuthState("staff-123");
|
||||
const tampered = `${state.slice(0, -2)}xx`;
|
||||
expect(verifyOAuthState(tampered, "staff-123")).toBe(false);
|
||||
});
|
||||
|
||||
it("rejects a malformed token", () => {
|
||||
expect(verifyOAuthState("not-a-real-token", "staff-123")).toBe(false);
|
||||
expect(verifyOAuthState("", "staff-123")).toBe(false);
|
||||
});
|
||||
|
||||
it("rejects an expired token", () => {
|
||||
vi.useFakeTimers();
|
||||
const state = createOAuthState("staff-123");
|
||||
vi.advanceTimersByTime(11 * 60 * 1000); // past the 10-minute max age
|
||||
expect(verifyOAuthState(state, "staff-123")).toBe(false);
|
||||
vi.useRealTimers();
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user