39 lines
1.5 KiB
TypeScript
39 lines
1.5 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { redactPublicPreview } from "../../supplier/src/reseller/evidenceStore.js";
|
|
|
|
describe("redactPublicPreview", () => {
|
|
it("removes common credentials and personal data before publication", () => {
|
|
const preview = redactPublicPreview(
|
|
[
|
|
"SUPPLIER_PRIV_KEY_HEX=" + "a".repeat(64),
|
|
"password=hunter2",
|
|
"Authorization: Bearer secret-token",
|
|
'{"password":"hunter two words"}',
|
|
"GATEWAY_API_KEY=plain-secret-value",
|
|
"Authorization: Basic dXNlcjpwYXNz",
|
|
"email test@example.com",
|
|
"https://example.com/private",
|
|
"eyJheader.payload.signature",
|
|
"ghp_1234567890abcdefghijklmnop",
|
|
].join(" "),
|
|
1000,
|
|
);
|
|
expect(preview).not.toContain("hunter2");
|
|
expect(preview).not.toContain("secret-token");
|
|
expect(preview).not.toContain("hunter two words");
|
|
expect(preview).not.toContain("plain-secret-value");
|
|
expect(preview).not.toContain("dXNlcjpwYXNz");
|
|
expect(preview).not.toContain("test@example.com");
|
|
expect(preview).not.toContain("example.com/private");
|
|
expect(preview).not.toContain("eyJheader");
|
|
expect(preview).not.toContain("ghp_");
|
|
expect(preview).not.toContain("a".repeat(64));
|
|
});
|
|
|
|
it("applies the configured public preview limit", () => {
|
|
const preview = redactPublicPreview("x".repeat(100), 20);
|
|
expect(preview).toHaveLength(20);
|
|
expect(preview.endsWith("…")).toBe(true);
|
|
});
|
|
});
|