Files
agents-marketplace/tests/unit/reseller-redaction.test.ts

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);
});
});