74 lines
3.3 KiB
JavaScript
74 lines
3.3 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import { mkdtempSync, mkdirSync, writeFileSync } from "node:fs";
|
|
import { tmpdir } from "node:os";
|
|
import { join } from "node:path";
|
|
import { test } from "node:test";
|
|
|
|
import { buildFinalReleaseRecord, scanReleaseFiles, validateFinalEvidence } from "../../scripts/lib/wp7-07-final-release.mjs";
|
|
|
|
function release() {
|
|
return buildFinalReleaseRecord({
|
|
appVersion: "0.0.0",
|
|
browsers: [
|
|
{ brand: "Google Chrome", fullVersion: "150.0.7871.187", supportedMajorVersions: [150, 151] },
|
|
{ brand: "Microsoft Edge", fullVersion: "151.0.4129.59" },
|
|
],
|
|
buildCommit: "a".repeat(40),
|
|
frozenFromCommit: "b".repeat(40),
|
|
recordedAt: "2026-08-04T06:00:00.000Z",
|
|
windows: { arch: "x64", build: "26200.8875", displayVersion: "25H2" },
|
|
});
|
|
}
|
|
|
|
test("TDD-WP7-REL-001 creates a browser-gate compatible first-version record", () => {
|
|
const record = release();
|
|
assert.equal(record.finalRelease, true);
|
|
assert.equal(record.fixedPort, 43121);
|
|
assert.deepEqual(record.deferredExternalTasks, ["TASK-WP7-03", "TASK-WP7-04"]);
|
|
assert.deepEqual(record.browsers.map(({ brand }) => brand).sort(), ["Google Chrome", "Microsoft Edge"]);
|
|
assert.deepEqual(record.browsers[0].supportedMajorVersions, [150, 151]);
|
|
});
|
|
|
|
test("TDD-WP7-REL-001 rejects unsafe or duplicate browser major lists", () => {
|
|
assert.throws(() => buildFinalReleaseRecord({
|
|
appVersion: "0.0.0",
|
|
browsers: [
|
|
{ brand: "Google Chrome", fullVersion: "150.0.7871.187", supportedMajorVersions: [150, 150] },
|
|
{ brand: "Microsoft Edge", fullVersion: "151.0.4129.59" },
|
|
],
|
|
buildCommit: "a".repeat(40),
|
|
frozenFromCommit: "b".repeat(40),
|
|
recordedAt: "2026-08-04T06:00:00.000Z",
|
|
windows: { arch: "x64", build: "26200.8875", displayVersion: "25H2" },
|
|
}), /Google Chrome\.supportedMajorVersions/);
|
|
assert.throws(() => buildFinalReleaseRecord({
|
|
appVersion: "0.0.0",
|
|
browsers: [
|
|
{ brand: "Google Chrome", fullVersion: "150.0.7871.187", supportedMajorVersions: [150, 151, 152, 153, 154, 155, 156, 157] },
|
|
{ brand: "Microsoft Edge", fullVersion: "151.0.4129.59" },
|
|
],
|
|
buildCommit: "a".repeat(40),
|
|
frozenFromCommit: "b".repeat(40),
|
|
recordedAt: "2026-08-04T06:00:00.000Z",
|
|
windows: { arch: "x64", build: "26200.8875", displayVersion: "25H2" },
|
|
}), /supportedMajorVersions\.total/);
|
|
});
|
|
|
|
test("TDD-WP7-SEC-001 rejects credential shapes and absolute user paths", () => {
|
|
const root = mkdtempSync(join(tmpdir(), "dada-wp7-07-scan-"));
|
|
mkdirSync(join(root, "logs"));
|
|
writeFileSync(join(root, "logs", "diagnostic.txt"), "credential=key-abcdefghijklmnop C:\\Users\\person\\private.txt\n");
|
|
const scan = scanReleaseFiles({ roots: [root] });
|
|
assert.equal(scan.status, "failed");
|
|
assert.deepEqual(new Set(scan.findings.map(({ rule }) => rule)), new Set(["absolute_user_path", "credential_shape"]));
|
|
});
|
|
|
|
test("TDD-WP7-REL-001 binds release and package hashes only after a zero-finding scan", () => {
|
|
assert.deepEqual(validateFinalEvidence({
|
|
packageManifest: { release_status: "first_version_internal", zip_sha256: "C".repeat(64) },
|
|
release: release(),
|
|
releaseSha256: "D".repeat(64),
|
|
scan: { findings: [], status: "passed" },
|
|
}), { release_sha256: "D".repeat(64), status: "passed", zip_sha256: "C".repeat(64) });
|
|
});
|