import assert from "node:assert/strict";
import { mkdtemp, mkdir, writeFile } from "node:fs/promises";
import { homedir } from "node:os";
import { join } from "node:path";
import test from "node:test";
import { planDmg } from "../bin/dmgify.mjs";
test("dmgify plans a local HTML directory without mutating it", async () => {
const dir = await mkdtemp(join(homedir(), ".dmgify-test-"));
await writeFile(join(dir, "index.html"), "
Test");
await mkdir(join(dir, "media"));
await writeFile(join(dir, "media/example.jpg"), "image");
const plan = await planDmg({ source: dir, name: "Test Archive", bundleId: "computer.aesthetic.testarchive" });
assert.equal(plan.entry, "index.html");
assert.equal(plan.name, "Test Archive");
assert.equal(plan.bundleId, "computer.aesthetic.testarchive");
assert.equal(plan.payload.files, 2);
assert.ok(plan.developerId?.name.startsWith("Developer ID Application:"));
});
test("dmgify rejects entry traversal", async () => {
await assert.rejects(
() => planDmg({ source: homedir(), entry: "../outside.html", bundleId: "computer.aesthetic.bad" }),
/entry may not traverse/,
);
});