67 lines
2.2 KiB
TypeScript
67 lines
2.2 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import {
|
|
CURRENT_USER_REDACTION_TOKEN,
|
|
redactCurrentUserText,
|
|
redactCurrentUserValue,
|
|
} from "../log-redaction.js";
|
|
|
|
describe("log redaction", () => {
|
|
it("redacts the active username inside home-directory paths", () => {
|
|
const userName = "paperclipuser";
|
|
const input = [
|
|
`cwd=/Users/${userName}/paperclip`,
|
|
`home=/home/${userName}/workspace`,
|
|
`win=C:\\Users\\${userName}\\paperclip`,
|
|
].join("\n");
|
|
|
|
const result = redactCurrentUserText(input, {
|
|
userNames: [userName],
|
|
homeDirs: [`/Users/${userName}`, `/home/${userName}`, `C:\\Users\\${userName}`],
|
|
});
|
|
|
|
expect(result).toContain(`cwd=/Users/${CURRENT_USER_REDACTION_TOKEN}/paperclip`);
|
|
expect(result).toContain(`home=/home/${CURRENT_USER_REDACTION_TOKEN}/workspace`);
|
|
expect(result).toContain(`win=C:\\Users\\${CURRENT_USER_REDACTION_TOKEN}\\paperclip`);
|
|
expect(result).not.toContain(userName);
|
|
});
|
|
|
|
it("redacts standalone username mentions without mangling larger tokens", () => {
|
|
const userName = "paperclipuser";
|
|
const result = redactCurrentUserText(
|
|
`user ${userName} said ${userName}/project should stay but apaperclipuserz should not change`,
|
|
{
|
|
userNames: [userName],
|
|
homeDirs: [],
|
|
},
|
|
);
|
|
|
|
expect(result).toBe(
|
|
`user ${CURRENT_USER_REDACTION_TOKEN} said ${CURRENT_USER_REDACTION_TOKEN}/project should stay but apaperclipuserz should not change`,
|
|
);
|
|
});
|
|
|
|
it("recursively redacts nested event payloads", () => {
|
|
const userName = "paperclipuser";
|
|
const result = redactCurrentUserValue({
|
|
cwd: `/Users/${userName}/paperclip`,
|
|
prompt: `open /Users/${userName}/paperclip/ui`,
|
|
nested: {
|
|
author: userName,
|
|
},
|
|
values: [userName, `/home/${userName}/project`],
|
|
}, {
|
|
userNames: [userName],
|
|
homeDirs: [`/Users/${userName}`, `/home/${userName}`],
|
|
});
|
|
|
|
expect(result).toEqual({
|
|
cwd: `/Users/${CURRENT_USER_REDACTION_TOKEN}/paperclip`,
|
|
prompt: `open /Users/${CURRENT_USER_REDACTION_TOKEN}/paperclip/ui`,
|
|
nested: {
|
|
author: CURRENT_USER_REDACTION_TOKEN,
|
|
},
|
|
values: [CURRENT_USER_REDACTION_TOKEN, `/home/${CURRENT_USER_REDACTION_TOKEN}/project`],
|
|
});
|
|
});
|
|
});
|