46 lines
1.4 KiB
Swift
46 lines
1.4 KiB
Swift
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: [],
|
|
groupId: nil,
|
|
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))
|
|
}
|
|
}
|
|
}
|