Files
web-terminal/ios/Packages/HostRegistry/Tests/HostRegistryTests/HostTests.swift
Yaojia Wang 95438cdc12 feat(ios): W1 leaf packages — ReconnectMachine/PingScheduler, GateState/AwayDigest, HostRegistry, APIClient+pairing probe
T-iOS-5: pure reconnect reducer (1s→30s cap, mirrors terminal-session.ts) + 25s PingScheduler, 16 tests
T-iOS-6: gate epoch tracker (rising-edge semantics, canDecide guard) + AwayDigest reducer, 25 tests
T-iOS-7: HostRegistry with SecItemShim keychain seam, 30 tests, 88.1% own-src coverage
T-iOS-8: APIClient (Origin iff-G invariant) + two-step pairing probe, 45 tests, 98.1% coverage
Contract ruling: probe returns Result<HostEndpoint,_> (Host{id,name} built by pairing VM) —
resolves frozen-contract contradiction reported via BLOCKED protocol; adds Tunables.pairingProbeTimeout(10s)
Verified: 178 tests green across 5 packages; coverage gates pass; zero Owns violations
2026-07-04 21:53:41 +02:00

29 lines
806 B
Swift

import Foundation
import Testing
import WireProtocol
import HostRegistry
@Test("Host Codable 往返:id/name/endpoint 全保真(originHeader 重派生一致)")
func hostCodableRoundTripPreservesAllFields() throws {
// Arrange
let host = Fixtures.makeHost(name: "studio", urlString: "https://mac.ts.net:8443")
// Act
let data = try JSONEncoder().encode(host)
let decoded = try JSONDecoder().decode(Host.self, from: data)
// Assert
#expect(decoded == host)
#expect(decoded.endpoint.originHeader == "https://mac.ts.net:8443")
}
@Test("Identifiable:Host.id 即协议 id")
func hostIdentifiableIdIsItsOwnId() {
// Arrange / Act
let host = Fixtures.makeHost()
// Assert
let identifiable: any Identifiable<UUID> = host
#expect(identifiable.id == host.id)
}