import XCTest @testable import MultiSimAdmin final class ConnectionProbeTests: XCTestCase { func testProbeMapsUpstreamResults() async { let unauthorized = ConnectionProbe(client: MockClient(status: 401)) let online = ConnectionProbe(client: MockClient(status: 200)) let unavailable = ConnectionProbe(client: MockClient(status: 0)) let instance = Self.instance() let auth = try? await unauthorized.test(instance) let reachable = try? await online.test(instance) let offline = try? await unavailable.test(instance) XCTAssertEqual(auth?.status, .authRequired) XCTAssertEqual(reachable?.status, .online) XCTAssertEqual(offline?.status, .offline) } private static func instance() -> Instance { Instance( id: UUID(), name: "Probe", origin: URL(string: "http://192.168.1.20:3000")!, tags: [], credentialConfigured: false, configRevision: 1, createdAt: Date(), updatedAt: Date() ) } private struct MockClient: SimAdminClientProtocol { let status: Int func send(_: UpstreamRoute, baseURL: URL, cookie: String?) async throws -> UpstreamResponse { if status == 0 { throw UpstreamError.timeout } return UpstreamResponse(status: status, data: Data("{}".utf8)) } } }