Implement platform management features

This commit is contained in:
npc0-hue
2026-08-17 08:48:45 +08:00
parent 65353cf269
commit 302f1f64b7
38 changed files with 2185 additions and 110 deletions
+11 -2
View File
@@ -1,8 +1,8 @@
import { describe, expect, it } from "vitest";
import type { GamePluginResponse } from "../api/types";
import type { GamePluginResponse, ServerInstanceResponse } from "../api/types";
import { defaultServerCreateForm, runtimeBindingFields } from "../contracts/serverManagement";
import { minimalServerCreateRequestFromForm, serverCreateRequestFromForm, serverInstanceIdFromName } from "./serverManagement";
import { minimalServerCreateRequestFromForm, serverCreateRequestFromForm, serverInstanceIdFromName, serverLifecycleCommandRequest } from "./serverManagement";
const plugin: GamePluginResponse = {
id: "game.runtime",
@@ -109,6 +109,15 @@ describe("runtime profile server creation contracts", () => {
expect(serverInstanceIdFromName("测试服", 18)).toBe("server-18");
});
it("matches the platform lifecycle command DTO exactly", () => {
const instance = { id: "server-1", configVersion: 7, configChecksum: "sha256:unused" } as ServerInstanceResponse;
expect(serverLifecycleCommandRequest(instance, "start", 20)).toEqual({
expectedConfigVersion: 7,
idempotencyKey: "web:start:server-1:20"
});
});
it("keeps complete paths and commands in a write-only deployment payload", () => {
const form = defaultServerCreateForm([plugin], []);
const request = serverCreateRequestFromForm({ ...form, name: "Venv Server", deploymentMode: "custom-command", serverRoot: "/srv/venv-server", workingDirectory: "/srv/venv-server", startCommand: "/srv/venv-server/.venv/bin/python server.py", shell: "" }, 19);