sdk

Radroots SDK and bindings
git clone https://radroots.dev/git/sdk.git
Log | Files | Refs | README

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 });