Allow forced server deletion

This commit is contained in:
npc0-hue
2026-08-04 15:03:49 +08:00
parent 96a1939f32
commit cf9af14eaf
17 changed files with 236 additions and 24 deletions
+4 -4
View File
@@ -218,7 +218,7 @@ describe("PlatformApiClient AI providers", () => {
return jsonResponse({ ...server, name: "Example Survival Renamed" });
}
if (url.endsWith("/api/v1/server-instances/server-1") && init?.method === "DELETE") {
expect(JSON.parse(String(init.body))).toEqual({ password: "secret-password" });
expect(JSON.parse(String(init.body))).toEqual({ password: "secret-password", force: true, confirmation: "FORCE DELETE" });
return new Response(null, { status: 204 });
}
if (url.endsWith("/api/v1/metrics/platform")) {
@@ -601,7 +601,7 @@ describe("PlatformApiClient AI providers", () => {
await expect(client.listGamePlugins()).resolves.toMatchObject({ count: 1 });
await expect(client.listServerInstances()).resolves.toMatchObject({ count: 1 });
await expect(client.updateServerInstance(server.id, { name: "Example Survival Renamed" })).resolves.toMatchObject({ name: "Example Survival Renamed" });
await expect(client.deleteServerInstance(server.id, { password: "secret-password" })).resolves.toBeUndefined();
await expect(client.deleteServerInstance(server.id, { password: "secret-password", force: true, confirmation: "FORCE DELETE" })).resolves.toBeUndefined();
await expect(client.getPlatformResourceUsage()).resolves.toMatchObject({ source: "platform-derived", cpuPercent: 28 });
await expect(client.listServerMetrics()).resolves.toMatchObject({ count: 1, items: [{ serverInstanceId: server.id, online: true }] });
await expect(client.getServerConfig(server.id)).resolves.toMatchObject({ content: "server.name=Example Survival #1\n" });
@@ -815,7 +815,7 @@ describe("PlatformApiClient AI providers", () => {
code: "validation_failed",
message: "validation failed",
details: [
"running or installing server instances must be stopped before delete",
"running or installing server instances require forced-delete confirmation",
"config path /Users/operator/private/server.ini is unavailable"
]
}), { status: 400, headers: { "Content-Type": "application/json" } })));
@@ -824,7 +824,7 @@ describe("PlatformApiClient AI providers", () => {
await expect(client.deleteServerInstance("running-server", { password: "secret-password" })).rejects.toMatchObject({
status: 400,
code: "validation_failed",
message: "运行中或安装中的服务器必须先停止再删除。;config path [host-path] is unavailable"
message: "运行中或安装中的服务器需要强制删除确认。;config path [host-path] is unavailable"
});
});