Newer
Older
import XCTest
import XXClient
@testable import XXMessengerClient
func testLogin() throws {
var didNewOrLoadUDWithParams: [NewOrLoadUd.Params] = []
var didNewOrLoadUDWithFollower: [UdNetworkStatus] = []
let e2eId = 1234
let networkFollowerStatus: NetworkFollowerStatus = .stopped
let udEnvironmentFromNDF = UDEnvironment(
address: "ndf-ud-address",
cert: "ndf-ud-cert".data(using: .utf8)!,
contact: "ndf-ud-contact".data(using: .utf8)!
)
var cMix: CMix = .unimplemented
cMix.networkFollowerStatus.run = { networkFollowerStatus }
return cMix
var e2e: E2E = .unimplemented
e2e.getId.run = { e2eId }
e2e.getUdEnvironmentFromNdf.run = { udEnvironmentFromNDF }
env.newOrLoadUd.run = { params, follower in
didNewOrLoadUDWithParams.append(params)
didNewOrLoadUDWithFollower.append(follower)
return .unimplemented
}
try logIn()
XCTAssertNoDifference(didNewOrLoadUDWithParams, [.init(
e2eId: e2eId,
username: nil,
registrationValidationSignature: nil,
environment: udEnvironmentFromNDF
)])
XCTAssertEqual(didNewOrLoadUDWithFollower.count, 1)
XCTAssertEqual(
didNewOrLoadUDWithFollower.first?.handle(),
networkFollowerStatus
XCTAssertEqual(didSetUD.compactMap { $0 }.count, 1)
}
func testLoginWithAlternativeUD() throws {
var didNewOrLoadUDWithParams: [NewOrLoadUd.Params] = []
let udEnvironment = UDEnvironment(
address: "alt-ud-address",
cert: "alt-ud-cert".data(using: .utf8)!,
contact: "alt-ud-contact".data(using: .utf8)!
)
var cMix: CMix = .unimplemented
cMix.networkFollowerStatus.run = { .running }
return cMix
}
var e2e: E2E = .unimplemented
e2e.getId.run = { e2eId }
return e2e
}
env.udEnvironment = udEnvironment
env.newOrLoadUd.run = { params, _ in
didNewOrLoadUDWithParams.append(params)
return .unimplemented
}
try logIn()
XCTAssertNoDifference(didNewOrLoadUDWithParams, [.init(
e2eId: e2eId,
username: nil,
registrationValidationSignature: nil,
XCTAssertEqual(didSetUD.compactMap { $0 }.count, 1)
XCTAssertThrowsError(try logIn()) { error in
XCTAssertEqual(
error as? MessengerLogIn.Error,
MessengerLogIn.Error.notLoaded
)
}
}
func testLoginWithoutE2E() {
XCTAssertThrowsError(try logIn()) { error in
XCTAssertEqual(
error as? MessengerLogIn.Error,
MessengerLogIn.Error.notConnected
)
}
}
func testGetUdContactFromNdfFailure() {
struct Error: Swift.Error, Equatable {}
let error = Error()
var cMix: CMix = .unimplemented
cMix.networkFollowerStatus.run = { .running }
return cMix
}
var e2e: E2E = .unimplemented
e2e.getId.run = { 1234 }
e2e.getUdEnvironmentFromNdf.run = { throw error }
XCTAssertThrowsError(try logIn()) { err in
XCTAssertEqual(err as? Error, error)
}
}
func testNewOrLoadUdFailure() {
struct Error: Swift.Error, Equatable {}
let error = Error()
var cMix: CMix = .unimplemented
cMix.networkFollowerStatus.run = { .running }
return cMix
}
var e2e: E2E = .unimplemented
e2e.getId.run = { 1234 }
return e2e
}
env.udEnvironment = UDEnvironment(
address: "ud-address",
cert: "ud-cert".data(using: .utf8)!,
contact: "ud-contact".data(using: .utf8)!
)
env.newOrLoadUd.run = { _, _ in throw error }
XCTAssertThrowsError(try logIn()) { err in
XCTAssertEqual(err as? Error, error)
}
}
}