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);
|
||||
|
||||
@@ -59,7 +59,6 @@ export function serverInstanceIdFromName(name: string, sequence = Date.now()): s
|
||||
export function serverLifecycleCommandRequest(instance: ServerInstanceResponse, action: "deploy" | "start" | "stop" | "status", sequence = Date.now()): ServerLifecycleCommandRequest {
|
||||
return {
|
||||
expectedConfigVersion: instance.configVersion,
|
||||
expectedChecksum: instance.configChecksum,
|
||||
idempotencyKey: lifecycleIdempotencyKey(action, instance.id, sequence)
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user