import { describe, expect, it } from "vitest"; import { buildGenericAIPageFingerprintFallback, genericAIPageLooksAuthenticated, } from "./generic-ai-auth"; describe("generic ai auth detection", () => { it("treats deepseek home as authenticated when credential storage exists", () => { expect(genericAIPageLooksAuthenticated("https://chat.deepseek.com/", { displayName: null, avatarUrl: null, fingerprint: "local:userToken=masked", credentialFingerprint: "local:userToken=masked", currentPath: "/", strongAuthSignalCount: 0, loginSignalCount: 0, loggedOutSignalCount: 0, challengeSignalCount: 0, })).toBe(true); }); it("does not use a non-auth fingerprint as a fallback without strong ui signals", () => { expect(buildGenericAIPageFingerprintFallback("deepseek", { displayName: null, avatarUrl: null, fingerprint: "local:user_unique_id=123", credentialFingerprint: null, currentPath: "/", strongAuthSignalCount: 0, loginSignalCount: 0, loggedOutSignalCount: 0, challengeSignalCount: 0, })).toBeNull(); }); it("builds a stable fingerprint from credential storage when cookies are absent", () => { expect(buildGenericAIPageFingerprintFallback("deepseek", { displayName: null, avatarUrl: null, fingerprint: "local:user_unique_id=123", credentialFingerprint: "local:userToken=masked", currentPath: "/", strongAuthSignalCount: 0, loginSignalCount: 0, loggedOutSignalCount: 0, challengeSignalCount: 0, })).toBe("deepseek-session:local:userToken=masked"); }); });