Refresh stale device capability timestamps
This commit is contained in:
@@ -240,3 +240,56 @@ test("device heartbeat does not overwrite the preferred execution mode chosen in
|
||||
assert.ok(device);
|
||||
assert.equal(device.preferredExecutionMode, "gui");
|
||||
});
|
||||
|
||||
test("device heartbeat without capability payload refreshes stale gui cli lastSeenAt", async () => {
|
||||
await setup();
|
||||
|
||||
const staleCapabilityTime = "2026-03-25T11:52:00+08:00";
|
||||
const staleState = await readState();
|
||||
await writeState({
|
||||
...staleState,
|
||||
devices: staleState.devices.map((device) =>
|
||||
device.id === "mac-studio"
|
||||
? {
|
||||
...device,
|
||||
lastSeenAt: staleCapabilityTime,
|
||||
capabilities: {
|
||||
gui: {
|
||||
...device.capabilities?.gui,
|
||||
connected: true,
|
||||
lastSeenAt: staleCapabilityTime,
|
||||
lastActiveProjectId: "master-agent",
|
||||
},
|
||||
cli: {
|
||||
...device.capabilities?.cli,
|
||||
connected: true,
|
||||
lastSeenAt: staleCapabilityTime,
|
||||
lastActiveProjectId: "master-agent",
|
||||
},
|
||||
},
|
||||
}
|
||||
: device,
|
||||
),
|
||||
});
|
||||
|
||||
await upsertDeviceHeartbeat({
|
||||
deviceId: "mac-studio",
|
||||
name: "Mac Studio",
|
||||
avatar: "M",
|
||||
account: "17600003315",
|
||||
status: "online",
|
||||
quota5h: 72,
|
||||
quota7d: 86,
|
||||
preferredExecutionMode: "cli",
|
||||
projects: ["硬件审计协作"],
|
||||
endpoint: "mac://kris.local",
|
||||
});
|
||||
|
||||
const state = await readState();
|
||||
const device = state.devices.find((item) => item.id === "mac-studio");
|
||||
|
||||
assert.ok(device);
|
||||
assert.notEqual(device.lastSeenAt, staleCapabilityTime);
|
||||
assert.equal(device.capabilities?.gui.lastSeenAt, device.lastSeenAt);
|
||||
assert.equal(device.capabilities?.cli.lastSeenAt, device.lastSeenAt);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user