radroots_sdk_package_license.test.mjs (1853B)
1 import assert from "node:assert/strict"; 2 import { copyFileSync, mkdirSync, mkdtempSync, readFileSync, writeFileSync } from "node:fs"; 3 import { tmpdir } from "node:os"; 4 import { dirname, join } from "node:path"; 5 import { fileURLToPath } from "node:url"; 6 import test from "node:test"; 7 8 import { validateGeneratedPackageLicenses } from "./radroots_sdk_package_license_lib.mjs"; 9 10 const sourceRoot = fileURLToPath(new URL("..", import.meta.url)); 11 const revision = "be9db78e060ebc0000fa7827ac32efa3f6504f53"; 12 13 function fixture() { 14 const root = mkdtempSync(join(tmpdir(), "radroots-sdk-licenses-")); 15 const packageDirectory = join(root, "packages/example"); 16 mkdirSync(join(root, "contracts"), { recursive: true }); 17 mkdirSync(packageDirectory, { recursive: true }); 18 copyFileSync( 19 join(sourceRoot, "contracts/generated_package_licenses.v1.json"), 20 join(root, "contracts/generated_package_licenses.v1.json"), 21 ); 22 for (const name of ["LICENSE-APACHE", "LICENSE-MIT"]) { 23 copyFileSync(join(sourceRoot, "packages/core-bindings", name), join(packageDirectory, name)); 24 } 25 return { root, packageDirectory }; 26 } 27 28 test("generated package licenses bind the selected producer revision", () => { 29 const { root, packageDirectory } = fixture(); 30 assert.doesNotThrow(() => validateGeneratedPackageLicenses(root, [packageDirectory], revision)); 31 assert.throws( 32 () => validateGeneratedPackageLicenses(root, [packageDirectory], "0".repeat(40)), 33 /license authority drifted/, 34 ); 35 }); 36 37 test("generated package license drift fails closed", () => { 38 const { root, packageDirectory } = fixture(); 39 const path = join(packageDirectory, "LICENSE-MIT"); 40 writeFileSync(path, `${readFileSync(path, "utf8")}drift\n`); 41 assert.throws( 42 () => validateGeneratedPackageLicenses(root, [packageDirectory], revision), 43 /license bytes drifted/, 44 ); 45 });