fix(macos): harden presence decode
This commit is contained in:
36
apps/macos/Tests/ClawdisIPCTests/InstancesStoreTests.swift
Normal file
36
apps/macos/Tests/ClawdisIPCTests/InstancesStoreTests.swift
Normal file
@@ -0,0 +1,36 @@
|
||||
import Testing
|
||||
@testable import Clawdis
|
||||
import ClawdisProtocol
|
||||
|
||||
@Suite struct InstancesStoreTests {
|
||||
@Test
|
||||
@MainActor
|
||||
func presenceEventPayloadDecodesViaJSONEncoder() {
|
||||
// Build a payload that mirrors the gateway's presence event shape:
|
||||
// { "presence": [ PresenceEntry ] }
|
||||
let entry: [String: ClawdisProtocol.AnyCodable] = [
|
||||
"host": .init("gw"),
|
||||
"ip": .init("10.0.0.1"),
|
||||
"version": .init("2.0.0"),
|
||||
"mode": .init("gateway"),
|
||||
"lastInputSeconds": .init(5),
|
||||
"reason": .init("test"),
|
||||
"text": .init("Gateway node"),
|
||||
"ts": .init(1_730_000_000),
|
||||
]
|
||||
let payloadMap: [String: ClawdisProtocol.AnyCodable] = [
|
||||
"presence": .init([ClawdisProtocol.AnyCodable(entry)]),
|
||||
]
|
||||
let payload = ClawdisProtocol.AnyCodable(payloadMap)
|
||||
|
||||
let store = InstancesStore(isPreview: true)
|
||||
store.handlePresenceEventPayload(payload)
|
||||
|
||||
#expect(store.instances.count == 1)
|
||||
let instance = store.instances.first
|
||||
#expect(instance?.host == "gw")
|
||||
#expect(instance?.ip == "10.0.0.1")
|
||||
#expect(instance?.mode == "gateway")
|
||||
#expect(instance?.reason == "test")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user