功能修改
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
|
||||
import type { GameClientBridgeJsonObject, GameClientBridgeSnapshotResponse } from "../api/types";
|
||||
import { projectScumOperationsSnapshots } from "./scumOperations";
|
||||
|
||||
const now = "2026-07-20T08:00:00Z";
|
||||
|
||||
function snapshot(type: string, payload: GameClientBridgeJsonObject, sequence = 1): GameClientBridgeSnapshotResponse {
|
||||
return {
|
||||
id: `${type}-${sequence}`,
|
||||
serverInstanceId: "server-1",
|
||||
pluginId: "game.scum",
|
||||
profileKey: "scum-client",
|
||||
type,
|
||||
schemaVersion: "1",
|
||||
streamKey: "current",
|
||||
sequence,
|
||||
observedAt: now,
|
||||
payload,
|
||||
retention: { keepForSeconds: 3600, maxRecords: 24 },
|
||||
createdAt: now,
|
||||
expiresAt: "2026-07-20T09:00:00Z"
|
||||
};
|
||||
}
|
||||
|
||||
describe("SCUM operations snapshot projection", () => {
|
||||
it("projects companion, player, session, squad, vehicle and flag snapshots", () => {
|
||||
const view = projectScumOperationsSnapshots([
|
||||
snapshot("companion.health", { status: "online", version: "1.2.0", observedAt: now, latencyMs: 24, capabilities: ["game-client.bridge"] }),
|
||||
snapshot("online.sessions", { observedAt: now, onlineCount: 1, sessions: [{ sessionId: "game-session-1", playerName: "Moonlight", startedAt: now }] }),
|
||||
snapshot("players", { observedAt: now, players: [{ playerId: "player-1", playerName: "Moonlight", status: "online", squadId: "squad-1", pingMs: 33 }] }),
|
||||
snapshot("squads", { observedAt: now, squads: [{ squadId: "squad-1", name: "Lunar", memberCount: 4, leaderPlayerId: "player-1" }] }),
|
||||
snapshot("vehicles", { observedAt: now, vehicles: [{ vehicleId: "vehicle-1", vehicleType: "truck", status: "parked", ownerPlayerId: "player-1", fuelPercent: 70, healthPercent: 80 }] }),
|
||||
snapshot("flags", { observedAt: now, flags: [{ flagId: "flag-1", status: "active", squadId: "squad-1", radiusMeters: 25 }] })
|
||||
]);
|
||||
|
||||
expect(view).toMatchObject({
|
||||
health: { status: "online", version: "1.2.0", latencyMs: 24 },
|
||||
sessions: { total: 1, items: [{ sessionId: "game-session-1" }] },
|
||||
players: { total: 1, items: [{ playerId: "player-1", squadId: "squad-1" }] },
|
||||
squads: { total: 1, items: [{ memberCount: 4 }] },
|
||||
vehicles: { total: 1, items: [{ fuelPercent: 70 }] },
|
||||
flags: { total: 1, items: [{ radiusMeters: 25 }] }
|
||||
});
|
||||
});
|
||||
|
||||
it("uses the newest sequence and redacts sensitive-looking display strings", () => {
|
||||
const view = projectScumOperationsSnapshots([
|
||||
snapshot("players", { observedAt: now, players: [{ playerId: "player-old", playerName: "Old", status: "offline" }] }, 1),
|
||||
{ ...snapshot("players", { observedAt: now, players: [{ playerId: "player-new", playerName: "token=raw-secret /Users/operator/file", status: "online" }] }, 2), observedAt: now }
|
||||
]);
|
||||
expect(view.players.items[0]).toMatchObject({ playerId: "player-new", status: "online" });
|
||||
expect(view.players.items[0]?.playerName).not.toContain("raw-secret");
|
||||
expect(view.players.items[0]?.playerName).not.toContain("/Users/");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user