Files
bun.sh/test/cli/install/redacted-config-logs.test.ts

103 lines
2.9 KiB
TypeScript

import { spawnSync, write } from "bun";
import { describe, expect, test } from "bun:test";
import { bunEnv, bunExe, tmpdirSync } from "harness";
import { join } from "path";
describe("redact", async () => {
const tests = [
{
title: "url password",
bunfig: `install.registry = "https://user:pass@registry.org`,
expected: `"https://user:****@registry.org`,
},
{
title: "empty url password",
bunfig: `install.registry = "https://user:@registry.org`,
expected: `"https://user:@registry.org`,
},
{
title: "small string",
bunfig: `l;token = "1"`,
expected: `"*"`,
},
{
title: "random UUID",
bunfig: 'unre;lated = "f1b0b6b4-4b1b-4b1b-8b1b-4b1b4b1b4b1b"',
expected: '"************************************"',
},
{
title: "random npm_ secret",
bunfig: 'the;secret = "npm_1234567890abcdefghijklmnopqrstuvwxyz"',
expected: '"****************************************"',
},
{
title: "random npms_ secret",
bunfig: 'the;secret = "npms_1234567890abcdefghijklmnopqrstuvwxyz"',
expected: "*****************************************",
},
{
title: "zero length unterminated string",
bunfig: '_authToken = "',
expected: "*",
},
{
title: "invalid _auth",
npmrc: "//registry.npmjs.org/:_auth = does-not-decode",
expected: "****************",
},
{
title: "unexpected _auth",
npmrc: "//registry.npmjs.org/:_auth=:secret",
expected: "*******",
},
{
title: "_auth zero length",
npmrc: "//registry.npmjs.org/:_auth=",
expected: "received an empty string",
},
{
title: "_auth one length",
npmrc: "//registry.npmjs.org/:_auth=1",
expected: "*",
},
];
for (const { title, bunfig, npmrc, expected } of tests) {
test(title + (bunfig ? " (bunfig)" : " (npmrc)"), async () => {
const testDir = tmpdirSync();
await Promise.all([
write(join(testDir, bunfig ? "bunfig.toml" : ".npmrc"), (bunfig || npmrc)!),
write(join(testDir, "package.json"), "{}"),
]);
// once without color
let proc = spawnSync({
cmd: [bunExe(), "install"],
cwd: testDir,
env: { ...bunEnv, NO_COLOR: "1" },
stdout: "pipe",
stderr: "pipe",
});
let out = proc.stdout.toString();
let err = proc.stderr.toString();
expect(proc.exitCode).toBe(+!!bunfig);
expect(err).toContain(expected || "*");
// once with color
proc = spawnSync({
cmd: [bunExe(), "install"],
cwd: testDir,
env: { ...bunEnv, NO_COLOR: undefined, FORCE_COLOR: "1" },
stdout: "pipe",
stderr: "pipe",
});
out = proc.stdout.toString();
err = proc.stderr.toString();
expect(proc.exitCode).toBe(+!!bunfig);
expect(err).toContain(expected || "*");
});
}
});