clawdis-mac: fetch node list via gateway
This commit is contained in:
@@ -2,95 +2,42 @@ import Testing
|
||||
@testable import Clawdis
|
||||
|
||||
@Suite struct NodeListTests {
|
||||
@Test func nodeListMergesPairedAndConnectedPreferringConnectedMetadata() async {
|
||||
let paired = PairedNode(
|
||||
nodeId: "n1",
|
||||
displayName: "Paired Name",
|
||||
platform: "iOS 1",
|
||||
version: "1.0",
|
||||
deviceFamily: "iPhone",
|
||||
modelIdentifier: "iPhone0,0",
|
||||
token: "token",
|
||||
createdAtMs: 1,
|
||||
lastSeenAtMs: nil)
|
||||
@Test func nodeListMapsGatewayPayloadIncludingHardwareAndCaps() async {
|
||||
let payload = ControlRequestHandler.GatewayNodeListPayload(
|
||||
ts: 123,
|
||||
nodes: [
|
||||
ControlRequestHandler.GatewayNodeListPayload.Node(
|
||||
nodeId: "n1",
|
||||
displayName: "Iris",
|
||||
platform: "iOS",
|
||||
version: "1.0",
|
||||
deviceFamily: "iPad",
|
||||
modelIdentifier: "iPad14,5",
|
||||
remoteIp: "192.168.0.88",
|
||||
connected: true,
|
||||
caps: ["canvas", "camera"]),
|
||||
ControlRequestHandler.GatewayNodeListPayload.Node(
|
||||
nodeId: "n2",
|
||||
displayName: "Offline",
|
||||
platform: "iOS",
|
||||
version: "1.0",
|
||||
deviceFamily: "iPhone",
|
||||
modelIdentifier: "iPhone14,2",
|
||||
remoteIp: nil,
|
||||
connected: false,
|
||||
caps: nil),
|
||||
])
|
||||
|
||||
let connected = BridgeNodeInfo(
|
||||
nodeId: "n1",
|
||||
displayName: "Live Name",
|
||||
platform: "iOS 2",
|
||||
version: "2.0",
|
||||
deviceFamily: "iPhone",
|
||||
modelIdentifier: "iPhone14,2",
|
||||
remoteAddress: "10.0.0.1",
|
||||
caps: ["canvas", "camera"])
|
||||
let res = ControlRequestHandler.buildNodeListResult(payload: payload)
|
||||
|
||||
let res = ControlRequestHandler.buildNodeListResult(paired: [paired], connected: [connected])
|
||||
|
||||
#expect(res.pairedNodeIds == ["n1"])
|
||||
#expect(res.ts == 123)
|
||||
#expect(res.pairedNodeIds.sorted() == ["n1", "n2"])
|
||||
#expect(res.connectedNodeIds == ["n1"])
|
||||
#expect(res.nodes.count == 1)
|
||||
|
||||
let node = res.nodes.first { $0.nodeId == "n1" }
|
||||
#expect(node != nil)
|
||||
#expect(node?.displayName == "Live Name")
|
||||
#expect(node?.platform == "iOS 2")
|
||||
#expect(node?.version == "2.0")
|
||||
#expect(node?.deviceFamily == "iPhone")
|
||||
#expect(node?.modelIdentifier == "iPhone14,2")
|
||||
#expect(node?.remoteAddress == "10.0.0.1")
|
||||
#expect(node?.connected == true)
|
||||
#expect(node?.capabilities?.sorted() == ["camera", "canvas"])
|
||||
}
|
||||
|
||||
@Test func nodeListIncludesConnectedOnlyNodes() async {
|
||||
let connected = BridgeNodeInfo(
|
||||
nodeId: "n2",
|
||||
displayName: "Android Node",
|
||||
platform: "Android",
|
||||
version: "dev",
|
||||
deviceFamily: "Android",
|
||||
modelIdentifier: "Pixel",
|
||||
remoteAddress: "192.168.0.10",
|
||||
caps: ["canvas"])
|
||||
|
||||
let res = ControlRequestHandler.buildNodeListResult(paired: [], connected: [connected])
|
||||
|
||||
#expect(res.pairedNodeIds == [])
|
||||
#expect(res.connectedNodeIds == ["n2"])
|
||||
#expect(res.nodes.count == 1)
|
||||
|
||||
let node = res.nodes.first { $0.nodeId == "n2" }
|
||||
#expect(node != nil)
|
||||
#expect(node?.connected == true)
|
||||
#expect(node?.capabilities == ["canvas"])
|
||||
#expect(node?.deviceFamily == "Android")
|
||||
#expect(node?.modelIdentifier == "Pixel")
|
||||
}
|
||||
|
||||
@Test func nodeListIncludesPairedDisconnectedNodesWithoutCapabilities() async {
|
||||
let paired = PairedNode(
|
||||
nodeId: "n3",
|
||||
displayName: "Offline Node",
|
||||
platform: "iOS",
|
||||
version: "1.2.3",
|
||||
deviceFamily: "iPad",
|
||||
modelIdentifier: "iPad1,1",
|
||||
token: "token",
|
||||
createdAtMs: 1,
|
||||
lastSeenAtMs: nil)
|
||||
|
||||
let res = ControlRequestHandler.buildNodeListResult(paired: [paired], connected: [])
|
||||
|
||||
#expect(res.pairedNodeIds == ["n3"])
|
||||
#expect(res.connectedNodeIds == [])
|
||||
#expect(res.nodes.count == 1)
|
||||
|
||||
let node = res.nodes.first { $0.nodeId == "n3" }
|
||||
#expect(node != nil)
|
||||
#expect(node?.connected == false)
|
||||
#expect(node?.capabilities == nil)
|
||||
#expect(node?.remoteAddress == nil)
|
||||
#expect(node?.deviceFamily == "iPad")
|
||||
#expect(node?.modelIdentifier == "iPad1,1")
|
||||
let iris = res.nodes.first { $0.nodeId == "n1" }
|
||||
#expect(iris?.remoteAddress == "192.168.0.88")
|
||||
#expect(iris?.deviceFamily == "iPad")
|
||||
#expect(iris?.modelIdentifier == "iPad14,5")
|
||||
#expect(iris?.capabilities?.sorted() == ["camera", "canvas"])
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user