Files
2026-06-18 10:27:16 +02:00

61 lines
2.0 KiB
JavaScript

import assert from "node:assert/strict";
import { mkdtemp, rm } from "node:fs/promises";
import { tmpdir } from "node:os";
import { join } from "node:path";
import test from "node:test";
import { createMapServer } from "./server.mjs";
test("server stores and returns the editable map JSON", async () => {
const dataDir = await mkdtemp(join(tmpdir(), "star-map-"));
const server = createMapServer({ dataDir });
await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve));
const { port } = server.address();
const baseUrl = `http://127.0.0.1:${port}`;
try {
const payload = {
background: "#101010",
systems: [{ id: "alpha", name: "Alpha", x: 10, y: 20, note: "saved" }],
connections: []
};
const saveResponse = await fetch(`${baseUrl}/api/map`, {
method: "PUT",
headers: { "content-type": "application/json" },
body: JSON.stringify(payload)
});
assert.equal(saveResponse.status, 200);
assert.deepEqual(await saveResponse.json(), { ok: true });
const loadResponse = await fetch(`${baseUrl}/api/map`);
assert.equal(loadResponse.status, 200);
assert.deepEqual(await loadResponse.json(), payload);
} finally {
await new Promise((resolve) => server.close(resolve));
await rm(dataDir, { recursive: true, force: true });
}
});
test("server rejects invalid map payloads", async () => {
const dataDir = await mkdtemp(join(tmpdir(), "star-map-"));
const server = createMapServer({ dataDir });
await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve));
const { port } = server.address();
try {
const response = await fetch(`http://127.0.0.1:${port}/api/map`, {
method: "PUT",
headers: { "content-type": "application/json" },
body: JSON.stringify({ systems: "bad", connections: [] })
});
assert.equal(response.status, 400);
} finally {
await new Promise((resolve) => server.close(resolve));
await rm(dataDir, { recursive: true, force: true });
}
});