Repair uploads and let the console follow any registered server

This commit is contained in:
Aryan Singh committed 2026-10-16 20:34:12 -05:00
1 parent 3e24d4a7bb
commit 683cdc4016
15 files changed
+193 -84

No files matched your search

+36
View File
@@ -0,0 +1,36 @@
import { describe, expect, it, vi } from "vitest";
vi.mock("../src/server/env", () => ({ env: { mcContainer: "mc" } }));
vi.mock("../src/server/network-config", () => ({
readNetwork: () => ({ profiles: [{ id: "horror", name: "Horror" }] }),
profileById: (config: { profiles: Array<{ id: string }> }, id: string) => {
const p = config.profiles.find(p => p.id === id);
if (!p) throw new Error("Unknown server");
return p;
},
}));
import { createDemuxer } from "../src/server/docker";
import { consoleTarget } from "../src/server/console-target";
const frame = (payload: Buffer) => {
const header = Buffer.alloc(8); header[0] = 1; header.writeUInt32BE(payload.length, 4);
return Buffer.concat([header, payload]);
};
describe("console transport", () => {
it("keeps UTF-8 characters split across Docker frames and flushes output without a newline", () => {
const lines: string[] = []; const demux = createDemuxer(s => lines.push(s));
const bytes = Buffer.from("hello 🌫️\nDone");
const data = Buffer.concat([frame(bytes.subarray(0, 8)), frame(bytes.subarray(8))]);
for (const byte of data) demux(Buffer.from([byte]));
demux.end();
expect(lines).toEqual(["hello 🌫️", "Done"]);
});
it("shows short raw TTY output", () => {
const lines: string[] = []; const demux = createDemuxer(s => lines.push(s));
demux(Buffer.from("OK")); demux.end(); expect(lines).toEqual(["OK"]);
});
it("allows only primary or registered profile IDs", () => {
expect(consoleTarget(null)).toBe("mc");
expect(consoleTarget("horror")).toBe("craftdeck-horror");
expect(() => consoleTarget("komodo-core")).toThrow();
expect(() => consoleTarget("../escape")).toThrow();
});
});
+7
View File
@@ -80,6 +80,13 @@ describe("isolated server profiles", () => {
MODRINTH_VERSION: "version123",
});
});
it("keeps modded internal servers authenticated without publishing any ports", () => {
const p = make({ loader: "FORGE", version: "1.20.1", java: "17", route: "internal" });
const c = renderProfileCompose(p, { hostDataDir: "/data/mc", network: "stack" }, "secret", "");
expect(c.services.server.ports).toEqual([]);
expect(c.services.server.environment.ONLINE_MODE).toBe("TRUE");
expect(c.services.server.environment.ENABLE_WHITELIST).toBe("TRUE");
});
it("rejects invalid numbers, types, environment newlines and URL schemes", () => {
for (const update of [
{ memory: 0 },