Files
cfw-autumn/shared/utils/chatState.test.ts
2026-06-01 20:53:17 +01:00

42 lines
1.2 KiB
TypeScript

import { describe, expect, test } from "bun:test";
import { addSeconds, subMilliseconds } from "date-fns";
import { AppEnv } from "../models/genModels/genEnums";
import { createChatInstallState, verifyChatInstallState } from "./chatState";
describe("chat OAuth state", () => {
test("round-trips a signed install state", () => {
const state = createChatInstallState({
secret: "secret",
provider: "slack",
orgId: "org_123",
userId: "user_123",
env: AppEnv.Live,
expiresAt: addSeconds(Date.now(), 1).getTime(),
nonce: "nonce",
});
expect(verifyChatInstallState(state, "secret")).toMatchObject({
provider: "slack",
orgId: "org_123",
userId: "user_123",
env: AppEnv.Live,
});
});
test("rejects invalid or expired state", () => {
const expired = createChatInstallState({
secret: "secret",
provider: "discord",
orgId: "org_123",
userId: "user_123",
env: AppEnv.Sandbox,
expiresAt: subMilliseconds(Date.now(), 1).getTime(),
nonce: "nonce",
});
expect(verifyChatInstallState(expired, "secret")).toBeNull();
expect(verifyChatInstallState("not-valid", "secret")).toBeNull();
expect(verifyChatInstallState(expired, "wrong-secret")).toBeNull();
});
});