import { describe, expect, test } from "bun:test"; import { scanText } from "./detectors"; const KEY = `sk-proj-${"a".repeat(40)}T3BlbkFJ${"b".repeat(40)}`; describe("secret detectors (INT-A9)", () => { test("still finds OpenAI keys", () => { const findings = scanText(`const key = "${KEY}";\n`); expect(findings.map((finding) => finding.detector)).toContain("openai_api_key"); expect(findings[0].secret).toBe(KEY); }); test("decoy runs of sk- prefixes scan in linear time", () => { const decoy = "sk-".repeat(350_000) + "T3BlbkFJ"; const started = performance.now(); scanText(decoy); expect(performance.now() - started).toBeLessThan(2000); }); test("skips the detector entirely when its anchor is absent", () => { const started = performance.now(); expect(scanText("sk-".repeat(350_000))).toEqual([]); expect(performance.now() - started).toBeLessThan(500); }); test("reports correct line numbers for many findings", () => { const lines = Array.from({ length: 30 }, (_, index) => `line ${index} ghp_${"x".repeat(36)}`); const findings = scanText(lines.join("\n")); expect(findings.map((finding) => finding.line)).toEqual(lines.map((_, index) => index + 1)); }); });