Something went wrong. Try again.
Something went wrong. Try again.
2.0 kB · 46 lines
TypeScript
at main
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647import { afterEach, describe, expect, it } from "vitest";import { spawnSync } from "node:child_process";import { resolve } from "node:path";import { fakeGitlabToken, makeTempRepo, type TempRepo } from "../helpers/tempRepo";
const root = resolve(__dirname, "../..");const tsx = resolve(root, "node_modules/.bin/tsx");let repo: TempRepo;afterEach(() => repo?.cleanup());
const run = (cli: string, cwd: string, args: string[] = []) => spawnSync(tsx, [resolve(root, "tools", cli), ...args], { cwd, encoding: "utf8" });
describe("command line tools", () => { it("secretScanCli exits 0 on a clean repo", () => { repo = makeTempRepo(); repo.write("a.txt", "fine"); repo.track("a.txt"); const r = run("secretScanCli.ts", repo.dir); expect(r.status, `exit ${r.status}; stderr: ${r.stderr}; stdout: ${String(r.stdout).slice(0, 300)}`).toBe(0); expect(r.stdout).toContain("no secrets found"); });
it("secretScanCli exits 1 and hides the secret", () => { repo = makeTempRepo(); const token = fakeGitlabToken(); repo.write("a.env", `T=${token}`); repo.track("a.env"); const r = run("secretScanCli.ts", repo.dir); expect(r.status, `exit ${r.status}; stderr: ${r.stderr}; stdout: ${String(r.stdout).slice(0, 300)}`).toBe(1); expect(r.stdout).toContain("a.env:1"); expect(r.stdout + r.stderr).not.toContain(token); });
it("repoCheckCli passes in this repository", () => { const r = run("repoCheckCli.ts", root); expect(r.status, `exit ${r.status}; stderr: ${r.stderr}; stdout: ${String(r.stdout).slice(0, 300)}`).toBe(0); expect(r.stdout).toContain("repo files: ok"); });
it("repoCheckCli fails in an empty folder and lists why", () => { repo = makeTempRepo({ git: false }); const r = run("repoCheckCli.ts", repo.dir); expect(r.status, `exit ${r.status}; stderr: ${r.stderr}; stdout: ${String(r.stdout).slice(0, 300)}`).toBe(1); expect(r.stdout).toContain("LICENSE: missing"); });});