Implement platform management features
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user