Files

25 lines
1.3 KiB
JavaScript

import test from "node:test";
import assert from "node:assert/strict";
import { join } from "node:path";
import { readFile } from "node:fs/promises";
import { initPolicy } from "../lib/init.js";
import { jsonResponse, makeProject, packageDocument } from "./helpers.js";
test("init pins repository and maintainers from the exact locked version", async () => {
const directory = await makeProject();
const output = join(directory, "policy.json");
const result = await initPolicy({ path: directory, output }, { fetch: async () => jsonResponse(packageDocument()) });
assert.equal(result.policy.trustedRepositories.alpha, "https://github.com/example/alpha");
assert.deepEqual(result.policy.trustedMaintainers.alpha, ["alice"]);
assert.deepEqual(JSON.parse(await readFile(output, "utf8")), result.policy);
});
test("init does not trust a package without a GitHub repository", async () => {
const directory = await makeProject();
const output = join(directory, "policy.json");
const document = packageDocument({ version: { repository: "https://gitlab.com/example/alpha" } });
const result = await initPolicy({ path: directory, output }, { fetch: async () => jsonResponse(document) });
assert.equal(result.policy.trustedRepositories.alpha, undefined);
assert.match(result.skipped[0], /not trusted/);
});