Skip to content
Snippets Groups Projects
Commit ada8d82a authored by Dariusz Rybicki's avatar Dariusz Rybicki
Browse files

Update MessengerContext

parent 68af8800
Branches
Tags
2 merge requests!102Release 1.0.0,!33XXMessengerClient
This commit is part of merge request !33. Comments created here will be created in the context of that merge request.
Showing
with 276 additions and 164 deletions
...@@ -16,14 +16,14 @@ public struct MessengerConnect { ...@@ -16,14 +16,14 @@ public struct MessengerConnect {
extension MessengerConnect { extension MessengerConnect {
public static func live(_ env: MessengerEnvironment) -> MessengerConnect { public static func live(_ env: MessengerEnvironment) -> MessengerConnect {
MessengerConnect { MessengerConnect {
guard let cMix = env.ctx.cMix else { guard let cMix = env.ctx.getCMix() else {
throw Error.notLoaded throw Error.notLoaded
} }
env.ctx.e2e = try env.login( env.ctx.setE2E(try env.login(
cMixId: cMix.getId(), cMixId: cMix.getId(),
identity: try cMix.makeLegacyReceptionIdentity(), identity: try cMix.makeLegacyReceptionIdentity(),
e2eParamsJSON: env.getE2EParams() e2eParamsJSON: env.getE2EParams()
) ))
} }
} }
} }
......
...@@ -12,7 +12,7 @@ public struct MessengerIsConnected { ...@@ -12,7 +12,7 @@ public struct MessengerIsConnected {
extension MessengerIsConnected { extension MessengerIsConnected {
public static func live(_ env: MessengerEnvironment) -> MessengerIsConnected { public static func live(_ env: MessengerEnvironment) -> MessengerIsConnected {
MessengerIsConnected { MessengerIsConnected {
env.ctx.e2e != nil env.ctx.getE2E() != nil
} }
} }
} }
......
...@@ -12,7 +12,7 @@ public struct MessengerIsLoaded { ...@@ -12,7 +12,7 @@ public struct MessengerIsLoaded {
extension MessengerIsLoaded { extension MessengerIsLoaded {
public static func live(_ env: MessengerEnvironment) -> MessengerIsLoaded { public static func live(_ env: MessengerEnvironment) -> MessengerIsLoaded {
MessengerIsLoaded { MessengerIsLoaded {
env.ctx.cMix != nil env.ctx.getCMix() != nil
} }
} }
} }
......
...@@ -12,7 +12,7 @@ public struct MessengerIsLoggedIn { ...@@ -12,7 +12,7 @@ public struct MessengerIsLoggedIn {
extension MessengerIsLoggedIn { extension MessengerIsLoggedIn {
public static func live(_ env: MessengerEnvironment) -> MessengerIsLoggedIn { public static func live(_ env: MessengerEnvironment) -> MessengerIsLoggedIn {
MessengerIsLoggedIn { MessengerIsLoggedIn {
env.ctx.ud != nil env.ctx.getUD() != nil
} }
} }
} }
......
...@@ -16,7 +16,7 @@ public struct MessengerIsRegistered { ...@@ -16,7 +16,7 @@ public struct MessengerIsRegistered {
extension MessengerIsRegistered { extension MessengerIsRegistered {
public static func live(_ env: MessengerEnvironment) -> MessengerIsRegistered { public static func live(_ env: MessengerEnvironment) -> MessengerIsRegistered {
MessengerIsRegistered { MessengerIsRegistered {
guard let e2e = env.ctx.e2e else { guard let e2e = env.ctx.getE2E() else {
throw Error.notConnected throw Error.notConnected
} }
return try env.isRegisteredWithUD(e2eId: e2e.getId()) return try env.isRegisteredWithUD(e2eId: e2e.getId())
......
...@@ -12,11 +12,11 @@ public struct MessengerLoad { ...@@ -12,11 +12,11 @@ public struct MessengerLoad {
extension MessengerLoad { extension MessengerLoad {
public static func live(_ env: MessengerEnvironment) -> MessengerLoad { public static func live(_ env: MessengerEnvironment) -> MessengerLoad {
MessengerLoad { MessengerLoad {
env.ctx.cMix = try env.loadCMix( env.ctx.setCMix(try env.loadCMix(
storageDir: env.storageDir, storageDir: env.storageDir,
password: try env.passwordStorage.load(), password: try env.passwordStorage.load(),
cMixParamsJSON: env.getCMixParams() cMixParamsJSON: env.getCMixParams()
) ))
} }
} }
} }
......
...@@ -17,16 +17,16 @@ public struct MessengerLogIn { ...@@ -17,16 +17,16 @@ public struct MessengerLogIn {
extension MessengerLogIn { extension MessengerLogIn {
public static func live(_ env: MessengerEnvironment) -> MessengerLogIn { public static func live(_ env: MessengerEnvironment) -> MessengerLogIn {
MessengerLogIn { MessengerLogIn {
guard let cMix = env.ctx.cMix else { guard let cMix = env.ctx.getCMix() else {
throw Error.notLoaded throw Error.notLoaded
} }
guard let e2e = env.ctx.e2e else { guard let e2e = env.ctx.getE2E() else {
throw Error.notConnected throw Error.notConnected
} }
if cMix.networkFollowerStatus() != .running { if cMix.networkFollowerStatus() != .running {
try cMix.startNetworkFollower(timeoutMS: 30_000) try cMix.startNetworkFollower(timeoutMS: 30_000)
} }
env.ctx.ud = try env.newOrLoadUd( env.ctx.setUD(try env.newOrLoadUd(
params: .init( params: .init(
e2eId: e2e.getId(), e2eId: e2e.getId(),
username: nil, username: nil,
...@@ -38,7 +38,7 @@ extension MessengerLogIn { ...@@ -38,7 +38,7 @@ extension MessengerLogIn {
follower: .init { follower: .init {
cMix.networkFollowerStatus().rawValue cMix.networkFollowerStatus().rawValue
} }
) ))
} }
} }
} }
......
...@@ -19,16 +19,16 @@ public struct MessengerRegister { ...@@ -19,16 +19,16 @@ public struct MessengerRegister {
extension MessengerRegister { extension MessengerRegister {
public static func live(_ env: MessengerEnvironment) -> MessengerRegister { public static func live(_ env: MessengerEnvironment) -> MessengerRegister {
MessengerRegister { username in MessengerRegister { username in
guard let cMix = env.ctx.cMix else { guard let cMix = env.ctx.getCMix() else {
throw Error.notLoaded throw Error.notLoaded
} }
guard let e2e = env.ctx.e2e else { guard let e2e = env.ctx.getE2E() else {
throw Error.notConnected throw Error.notConnected
} }
if cMix.networkFollowerStatus() != .running { if cMix.networkFollowerStatus() != .running {
try cMix.startNetworkFollower(timeoutMS: 30_000) try cMix.startNetworkFollower(timeoutMS: 30_000)
} }
env.ctx.ud = try env.newOrLoadUd( env.ctx.setUD(try env.newOrLoadUd(
params: .init( params: .init(
e2eId: e2e.getId(), e2eId: e2e.getId(),
username: username, username: username,
...@@ -40,7 +40,7 @@ extension MessengerRegister { ...@@ -40,7 +40,7 @@ extension MessengerRegister {
follower: .init { follower: .init {
cMix.networkFollowerStatus().rawValue cMix.networkFollowerStatus().rawValue
} }
) ))
} }
} }
} }
......
import XXClient import XXClient
import XCTestDynamicOverlay
public class MessengerContext { public struct MessengerContext {
public init( public var getCMix: () -> CMix?
cMix: CMix? = nil, public var setCMix: (CMix?) -> Void
e2e: E2E? = nil, public var getE2E: () -> E2E?
ud: UserDiscovery? = nil public var setE2E: (E2E?) -> Void
) { public var getUD: () -> UserDiscovery?
self.cMix = cMix public var setUD: (UserDiscovery?) -> Void
self.e2e = e2e
self.ud = ud
} }
public var cMix: CMix? extension MessengerContext {
public var e2e: E2E? public static func live() -> MessengerContext {
public var ud: UserDiscovery? class Container {
var cMix: CMix?
var e2e: E2E?
var ud: UserDiscovery?
}
let container = Container()
return MessengerContext(
getCMix: { container.cMix },
setCMix: { container.cMix = $0 },
getE2E: { container.e2e },
setE2E: { container.e2e = $0 },
getUD: { container.ud },
setUD: { container.ud = $0 }
)
}
}
extension MessengerContext {
public static let unimplemented = MessengerContext(
getCMix: XCTUnimplemented("\(Self.self).getCMix"),
setCMix: XCTUnimplemented("\(Self.self).setCMix"),
getE2E: XCTUnimplemented("\(Self.self).getE2E"),
setE2E: XCTUnimplemented("\(Self.self).setE2E"),
getUD: XCTUnimplemented("\(Self.self).getUD"),
setUD: XCTUnimplemented("\(Self.self).setUD")
)
} }
...@@ -29,8 +29,9 @@ extension MessengerEnvironment { ...@@ -29,8 +29,9 @@ extension MessengerEnvironment {
.appendingPathComponent("xx.network.client") .appendingPathComponent("xx.network.client")
.path .path
public static let live = MessengerEnvironment( public static func live() -> MessengerEnvironment {
ctx: .init(), MessengerEnvironment(
ctx: .live(),
downloadNDF: .live, downloadNDF: .live,
fileManager: .live(), fileManager: .live(),
generateSecret: .live, generateSecret: .live,
...@@ -49,10 +50,11 @@ extension MessengerEnvironment { ...@@ -49,10 +50,11 @@ extension MessengerEnvironment {
udContact: nil udContact: nil
) )
} }
}
extension MessengerEnvironment { extension MessengerEnvironment {
public static let unimplemented = MessengerEnvironment( public static let unimplemented = MessengerEnvironment(
ctx: .init(), ctx: .unimplemented,
downloadNDF: .unimplemented, downloadNDF: .unimplemented,
fileManager: .unimplemented, fileManager: .unimplemented,
generateSecret: .unimplemented, generateSecret: .unimplemented,
......
...@@ -12,16 +12,22 @@ final class MessengerConnectTests: XCTestCase { ...@@ -12,16 +12,22 @@ final class MessengerConnectTests: XCTestCase {
var identity: ReceptionIdentity var identity: ReceptionIdentity
var e2eParamsJSON: Data var e2eParamsJSON: Data
} }
var didLogIn: [DidLogIn] = [] var didLogIn: [DidLogIn] = []
var didSetE2E: [E2E?] = []
let cMixId = 1234 let cMixId = 1234
let receptionId = ReceptionIdentity.stub let receptionId = ReceptionIdentity.stub
let e2eParams = "e2e-params".data(using: .utf8)! let e2eParams = "e2e-params".data(using: .utf8)!
var env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.ctx.cMix = .unimplemented env.ctx.getCMix = {
env.ctx.cMix!.getId.run = { cMixId } var cMix: CMix = .unimplemented
env.ctx.cMix!.makeLegacyReceptionIdentity.run = { receptionId } cMix.getId.run = { cMixId }
cMix.makeLegacyReceptionIdentity.run = { receptionId }
return cMix
}
env.ctx.setE2E = { didSetE2E.append($0) }
env.getE2EParams.run = { e2eParams } env.getE2EParams.run = { e2eParams }
env.login.run = { ephemeral, cMixId, authCallbacks, identity, e2eParamsJSON in env.login.run = { ephemeral, cMixId, authCallbacks, identity, e2eParamsJSON in
didLogIn.append(.init( didLogIn.append(.init(
...@@ -46,13 +52,12 @@ final class MessengerConnectTests: XCTestCase { ...@@ -46,13 +52,12 @@ final class MessengerConnectTests: XCTestCase {
e2eParamsJSON: e2eParams e2eParamsJSON: e2eParams
) )
]) ])
XCTAssertEqual(didSetE2E.compactMap { $0 }.count, 1)
XCTAssertNotNil(env.ctx.e2e)
} }
func testConnectWithoutCMix() { func testConnectWithoutCMix() {
let env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.ctx.cMix = nil env.ctx.getCMix = { nil }
let connect: MessengerConnect = .live(env) let connect: MessengerConnect = .live(env)
XCTAssertThrowsError(try connect()) { error in XCTAssertThrowsError(try connect()) { error in
...@@ -67,10 +72,13 @@ final class MessengerConnectTests: XCTestCase { ...@@ -67,10 +72,13 @@ final class MessengerConnectTests: XCTestCase {
struct Error: Swift.Error, Equatable {} struct Error: Swift.Error, Equatable {}
let error = Error() let error = Error()
let env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.ctx.cMix = .unimplemented env.ctx.getCMix = {
env.ctx.cMix!.getId.run = { 1234 } var cMix: CMix = .unimplemented
env.ctx.cMix!.makeLegacyReceptionIdentity.run = { throw error } cMix.getId.run = { 1234 }
cMix.makeLegacyReceptionIdentity.run = { throw error }
return cMix
}
let connect: MessengerConnect = .live(env) let connect: MessengerConnect = .live(env)
XCTAssertThrowsError(try connect()) { err in XCTAssertThrowsError(try connect()) { err in
...@@ -83,9 +91,12 @@ final class MessengerConnectTests: XCTestCase { ...@@ -83,9 +91,12 @@ final class MessengerConnectTests: XCTestCase {
let error = Error() let error = Error()
var env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.ctx.cMix = .unimplemented env.ctx.getCMix = {
env.ctx.cMix!.getId.run = { 1234 } var cMix: CMix = .unimplemented
env.ctx.cMix!.makeLegacyReceptionIdentity.run = { .stub } cMix.getId.run = { 1234 }
cMix.makeLegacyReceptionIdentity.run = { .stub }
return cMix
}
env.getE2EParams.run = { "e2e-params".data(using: .utf8)! } env.getE2EParams.run = { "e2e-params".data(using: .utf8)! }
env.login.run = { _, _, _, _, _ in throw error } env.login.run = { _, _, _, _, _ in throw error }
let connect: MessengerConnect = .live(env) let connect: MessengerConnect = .live(env)
......
...@@ -3,16 +3,16 @@ import XCTest ...@@ -3,16 +3,16 @@ import XCTest
final class MessengerIsConnectedTests: XCTestCase { final class MessengerIsConnectedTests: XCTestCase {
func testWithE2E() { func testWithE2E() {
let env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.ctx.e2e = .unimplemented env.ctx.getE2E = { .unimplemented }
let isConnected: MessengerIsConnected = .live(env) let isConnected: MessengerIsConnected = .live(env)
XCTAssertTrue(isConnected()) XCTAssertTrue(isConnected())
} }
func testWithoutE2E() { func testWithoutE2E() {
let env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.ctx.e2e = nil env.ctx.getE2E = { nil }
let isConnected: MessengerIsConnected = .live(env) let isConnected: MessengerIsConnected = .live(env)
XCTAssertFalse(isConnected()) XCTAssertFalse(isConnected())
......
...@@ -3,16 +3,16 @@ import XCTest ...@@ -3,16 +3,16 @@ import XCTest
final class MessengerIsLoadedTests: XCTestCase { final class MessengerIsLoadedTests: XCTestCase {
func testWithCMix() { func testWithCMix() {
let env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.ctx.cMix = .unimplemented env.ctx.getCMix = { .unimplemented }
let isLoaded: MessengerIsLoaded = .live(env) let isLoaded: MessengerIsLoaded = .live(env)
XCTAssertTrue(isLoaded()) XCTAssertTrue(isLoaded())
} }
func testWithoutCMix() { func testWithoutCMix() {
let env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.ctx.cMix = nil env.ctx.getCMix = { nil }
let isLoaded: MessengerIsLoaded = .live(env) let isLoaded: MessengerIsLoaded = .live(env)
XCTAssertFalse(isLoaded()) XCTAssertFalse(isLoaded())
......
...@@ -3,16 +3,16 @@ import XCTest ...@@ -3,16 +3,16 @@ import XCTest
final class MessengerIsLoggedInTests: XCTestCase { final class MessengerIsLoggedInTests: XCTestCase {
func testWithUD() { func testWithUD() {
let env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.ctx.ud = .unimplemented env.ctx.getUD = { .unimplemented }
let isLoggedIn: MessengerIsLoggedIn = .live(env) let isLoggedIn: MessengerIsLoggedIn = .live(env)
XCTAssertTrue(isLoggedIn()) XCTAssertTrue(isLoggedIn())
} }
func testWithoutUD() { func testWithoutUD() {
let env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.ctx.ud = nil env.ctx.getUD = { nil }
let isLoggedIn: MessengerIsLoggedIn = .live(env) let isLoggedIn: MessengerIsLoggedIn = .live(env)
XCTAssertFalse(isLoggedIn()) XCTAssertFalse(isLoggedIn())
......
import XCTest import XCTest
import XXClient
@testable import XXMessengerClient @testable import XXMessengerClient
final class MessengerIsRegisteredTests: XCTestCase { final class MessengerIsRegisteredTests: XCTestCase {
...@@ -6,8 +7,11 @@ final class MessengerIsRegisteredTests: XCTestCase { ...@@ -6,8 +7,11 @@ final class MessengerIsRegisteredTests: XCTestCase {
var didIsRegisteredWithUD: [Int] = [] var didIsRegisteredWithUD: [Int] = []
var env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.ctx.e2e = .unimplemented env.ctx.getE2E = {
env.ctx.e2e!.getId.run = { 1234 } var e2e: E2E = .unimplemented
e2e.getId.run = { 1234 }
return e2e
}
env.isRegisteredWithUD.run = { e2eId in env.isRegisteredWithUD.run = { e2eId in
didIsRegisteredWithUD.append(e2eId) didIsRegisteredWithUD.append(e2eId)
return true return true
...@@ -20,8 +24,11 @@ final class MessengerIsRegisteredTests: XCTestCase { ...@@ -20,8 +24,11 @@ final class MessengerIsRegisteredTests: XCTestCase {
func testNotRegistered() throws { func testNotRegistered() throws {
var env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.ctx.e2e = .unimplemented env.ctx.getE2E = {
env.ctx.e2e!.getId.run = { 1234 } var e2e: E2E = .unimplemented
e2e.getId.run = { 1234 }
return e2e
}
env.isRegisteredWithUD.run = { _ in false } env.isRegisteredWithUD.run = { _ in false }
let isRegistered: MessengerIsRegistered = .live(env) let isRegistered: MessengerIsRegistered = .live(env)
...@@ -29,8 +36,8 @@ final class MessengerIsRegisteredTests: XCTestCase { ...@@ -29,8 +36,8 @@ final class MessengerIsRegisteredTests: XCTestCase {
} }
func testWithoutE2E() { func testWithoutE2E() {
let env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.ctx.e2e = nil env.ctx.getE2E = { nil }
let isRegistered: MessengerIsRegistered = .live(env) let isRegistered: MessengerIsRegistered = .live(env)
XCTAssertThrowsError(try isRegistered()) { err in XCTAssertThrowsError(try isRegistered()) { err in
...@@ -46,8 +53,11 @@ final class MessengerIsRegisteredTests: XCTestCase { ...@@ -46,8 +53,11 @@ final class MessengerIsRegisteredTests: XCTestCase {
let error = Error() let error = Error()
var env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.ctx.e2e = .unimplemented env.ctx.getE2E = {
env.ctx.e2e!.getId.run = { 1234 } var e2e: E2E = .unimplemented
e2e.getId.run = { 1234 }
return e2e
}
env.isRegisteredWithUD.run = { _ in throw error } env.isRegisteredWithUD.run = { _ in throw error }
let isRegistered: MessengerIsRegistered = .live(env) let isRegistered: MessengerIsRegistered = .live(env)
......
...@@ -11,13 +11,14 @@ final class MessengerLoadTests: XCTestCase { ...@@ -11,13 +11,14 @@ final class MessengerLoadTests: XCTestCase {
var cMixParamsJSON: Data var cMixParamsJSON: Data
} }
var didLoadCMix: [DidLoadCMix] = [] var didLoadCMix: [DidLoadCMix] = []
var didSetCMix: [CMix?] = []
let storageDir = "test-storage-dir" let storageDir = "test-storage-dir"
let password = "password".data(using: .utf8)! let password = "password".data(using: .utf8)!
let cMixParams = "cmix-params".data(using: .utf8)! let cMixParams = "cmix-params".data(using: .utf8)!
var env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.ctx.cMix = nil env.ctx.setCMix = { didSetCMix.append($0) }
env.storageDir = storageDir env.storageDir = storageDir
env.passwordStorage.load = { password } env.passwordStorage.load = { password }
env.getCMixParams.run = { cMixParams } env.getCMixParams.run = { cMixParams }
...@@ -40,12 +41,11 @@ final class MessengerLoadTests: XCTestCase { ...@@ -40,12 +41,11 @@ final class MessengerLoadTests: XCTestCase {
cMixParamsJSON: cMixParams cMixParamsJSON: cMixParams
) )
]) ])
XCTAssertNotNil(env.ctx.cMix) XCTAssertEqual(didSetCMix.compactMap{ $0 }.count, 1)
} }
func testMissingPassword() { func testMissingPassword() {
var env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.ctx.cMix = nil
env.storageDir = "storage-dir" env.storageDir = "storage-dir"
env.passwordStorage.load = { throw PasswordStorage.MissingPasswordError() } env.passwordStorage.load = { throw PasswordStorage.MissingPasswordError() }
let load: MessengerLoad = .live(env) let load: MessengerLoad = .live(env)
...@@ -63,7 +63,6 @@ final class MessengerLoadTests: XCTestCase { ...@@ -63,7 +63,6 @@ final class MessengerLoadTests: XCTestCase {
let error = Error() let error = Error()
var env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.ctx.cMix = nil
env.storageDir = "storage-dir" env.storageDir = "storage-dir"
env.passwordStorage.load = { "password".data(using: .utf8)! } env.passwordStorage.load = { "password".data(using: .utf8)! }
env.getCMixParams.run = { "cmix-params".data(using: .utf8)! } env.getCMixParams.run = { "cmix-params".data(using: .utf8)! }
......
...@@ -8,6 +8,7 @@ final class MessengerLogInTests: XCTestCase { ...@@ -8,6 +8,7 @@ final class MessengerLogInTests: XCTestCase {
var didStartNetworkFollower: [Int] = [] var didStartNetworkFollower: [Int] = []
var didNewOrLoadUDWithParams: [NewOrLoadUd.Params] = [] var didNewOrLoadUDWithParams: [NewOrLoadUd.Params] = []
var didNewOrLoadUDWithFollower: [UdNetworkStatus] = [] var didNewOrLoadUDWithFollower: [UdNetworkStatus] = []
var didSetUD: [UserDiscovery?] = []
let e2eId = 1234 let e2eId = 1234
let networkFollowerStatus: NetworkFollowerStatus = .stopped let networkFollowerStatus: NetworkFollowerStatus = .stopped
...@@ -16,19 +17,26 @@ final class MessengerLogInTests: XCTestCase { ...@@ -16,19 +17,26 @@ final class MessengerLogInTests: XCTestCase {
let udAddressFromNDF = "ndf-ud-address" let udAddressFromNDF = "ndf-ud-address"
var env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.ctx.cMix = .unimplemented env.ctx.getCMix = {
env.ctx.cMix!.networkFollowerStatus.run = { networkFollowerStatus } var cMix: CMix = .unimplemented
env.ctx.cMix!.startNetworkFollower.run = { timeout in cMix.networkFollowerStatus.run = { networkFollowerStatus }
cMix.startNetworkFollower.run = { timeout in
didStartNetworkFollower.append(timeout) didStartNetworkFollower.append(timeout)
} }
env.ctx.e2e = .unimplemented return cMix
env.ctx.e2e!.getId.run = { e2eId } }
env.ctx.getE2E = {
var e2e: E2E = .unimplemented
e2e.getId.run = { e2eId }
e2e.getUdCertFromNdf.run = { udCertFromNDF }
e2e.getUdContactFromNdf.run = { udContactFromNDF }
e2e.getUdAddressFromNdf.run = { udAddressFromNDF }
return e2e
}
env.ctx.setUD = { didSetUD.append($0) }
env.udCert = nil env.udCert = nil
env.udContact = nil env.udContact = nil
env.udAddress = nil env.udAddress = nil
env.ctx.e2e!.getUdCertFromNdf.run = { udCertFromNDF }
env.ctx.e2e!.getUdContactFromNdf.run = { udContactFromNDF }
env.ctx.e2e!.getUdAddressFromNdf.run = { udAddressFromNDF }
env.newOrLoadUd.run = { params, follower in env.newOrLoadUd.run = { params, follower in
didNewOrLoadUDWithParams.append(params) didNewOrLoadUDWithParams.append(params)
didNewOrLoadUDWithFollower.append(follower) didNewOrLoadUDWithFollower.append(follower)
...@@ -51,21 +59,30 @@ final class MessengerLogInTests: XCTestCase { ...@@ -51,21 +59,30 @@ final class MessengerLogInTests: XCTestCase {
didNewOrLoadUDWithFollower.first?.handle(), didNewOrLoadUDWithFollower.first?.handle(),
networkFollowerStatus.rawValue networkFollowerStatus.rawValue
) )
XCTAssertNotNil(env.ctx.ud) XCTAssertEqual(didSetUD.compactMap { $0 }.count, 1)
} }
func testLoginWithAlternativeUD() throws { func testLoginWithAlternativeUD() throws {
var didNewOrLoadUDWithParams: [NewOrLoadUd.Params] = [] var didNewOrLoadUDWithParams: [NewOrLoadUd.Params] = []
var didSetUD: [UserDiscovery?] = []
let e2eId = 1234 let e2eId = 1234
let altUdCert = "alt-ud-cert".data(using: .utf8)! let altUdCert = "alt-ud-cert".data(using: .utf8)!
let altUdContact = "alt-ud-contact".data(using: .utf8)! let altUdContact = "alt-ud-contact".data(using: .utf8)!
let altUdAddress = "alt-ud-address" let altUdAddress = "alt-ud-address"
var env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.ctx.cMix = .unimplemented env.ctx.getCMix = {
env.ctx.cMix!.networkFollowerStatus.run = { .running } var cMix: CMix = .unimplemented
env.ctx.e2e = .unimplemented cMix.networkFollowerStatus.run = { .running }
env.ctx.e2e!.getId.run = { e2eId } return cMix
}
env.ctx.getE2E = {
var e2e: E2E = .unimplemented
e2e.getId.run = { e2eId }
return e2e
}
env.ctx.setUD = { didSetUD.append($0) }
env.udCert = altUdCert env.udCert = altUdCert
env.udContact = altUdContact env.udContact = altUdContact
env.udAddress = altUdAddress env.udAddress = altUdAddress
...@@ -84,12 +101,12 @@ final class MessengerLogInTests: XCTestCase { ...@@ -84,12 +101,12 @@ final class MessengerLogInTests: XCTestCase {
contactFile: altUdContact, contactFile: altUdContact,
address: altUdAddress address: altUdAddress
)]) )])
XCTAssertNotNil(env.ctx.ud) XCTAssertEqual(didSetUD.compactMap { $0 }.count, 1)
} }
func testLoginWithoutCMix() { func testLoginWithoutCMix() {
let env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.ctx.cMix = nil env.ctx.getCMix = { nil }
let logIn: MessengerLogIn = .live(env) let logIn: MessengerLogIn = .live(env)
XCTAssertThrowsError(try logIn()) { error in XCTAssertThrowsError(try logIn()) { error in
...@@ -101,9 +118,9 @@ final class MessengerLogInTests: XCTestCase { ...@@ -101,9 +118,9 @@ final class MessengerLogInTests: XCTestCase {
} }
func testLoginWithoutE2E() { func testLoginWithoutE2E() {
let env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.ctx.cMix = .unimplemented env.ctx.getCMix = { .unimplemented }
env.ctx.e2e = nil env.ctx.getE2E = { nil }
let logIn: MessengerLogIn = .live(env) let logIn: MessengerLogIn = .live(env)
XCTAssertThrowsError(try logIn()) { error in XCTAssertThrowsError(try logIn()) { error in
...@@ -118,10 +135,14 @@ final class MessengerLogInTests: XCTestCase { ...@@ -118,10 +135,14 @@ final class MessengerLogInTests: XCTestCase {
struct Error: Swift.Error, Equatable {} struct Error: Swift.Error, Equatable {}
let error = Error() let error = Error()
let env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.ctx.cMix = .unimplemented env.ctx.getCMix = {
env.ctx.cMix!.networkFollowerStatus.run = { .stopped } var cMix: CMix = .unimplemented
env.ctx.cMix!.startNetworkFollower.run = { _ in throw error } cMix.networkFollowerStatus.run = { .stopped }
cMix.startNetworkFollower.run = { _ in throw error }
return cMix
}
env.ctx.getE2E = { .unimplemented }
let logIn: MessengerLogIn = .live(env) let logIn: MessengerLogIn = .live(env)
XCTAssertThrowsError(try logIn()) { err in XCTAssertThrowsError(try logIn()) { err in
...@@ -134,14 +155,20 @@ final class MessengerLogInTests: XCTestCase { ...@@ -134,14 +155,20 @@ final class MessengerLogInTests: XCTestCase {
let error = Error() let error = Error()
var env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.ctx.cMix = .unimplemented env.ctx.getCMix = {
env.ctx.cMix!.networkFollowerStatus.run = { .running } var cMix: CMix = .unimplemented
env.ctx.e2e = .unimplemented cMix.networkFollowerStatus.run = { .running }
env.ctx.e2e!.getId.run = { 1234 } return cMix
}
env.ctx.getE2E = {
var e2e: E2E = .unimplemented
e2e.getId.run = { 1234 }
e2e.getUdCertFromNdf.run = { "ndf-ud-cert".data(using: .utf8)! }
e2e.getUdContactFromNdf.run = { throw error }
return e2e
}
env.udCert = nil env.udCert = nil
env.udContact = nil env.udContact = nil
env.ctx.e2e!.getUdCertFromNdf.run = { "ndf-ud-cert".data(using: .utf8)! }
env.ctx.e2e!.getUdContactFromNdf.run = { throw error }
let logIn: MessengerLogIn = .live(env) let logIn: MessengerLogIn = .live(env)
XCTAssertThrowsError(try logIn()) { err in XCTAssertThrowsError(try logIn()) { err in
...@@ -154,10 +181,16 @@ final class MessengerLogInTests: XCTestCase { ...@@ -154,10 +181,16 @@ final class MessengerLogInTests: XCTestCase {
let error = Error() let error = Error()
var env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.ctx.cMix = .unimplemented env.ctx.getCMix = {
env.ctx.cMix!.networkFollowerStatus.run = { .running } var cMix: CMix = .unimplemented
env.ctx.e2e = .unimplemented cMix.networkFollowerStatus.run = { .running }
env.ctx.e2e!.getId.run = { 1234 } return cMix
}
env.ctx.getE2E = {
var e2e: E2E = .unimplemented
e2e.getId.run = { 1234 }
return e2e
}
env.udCert = "ud-cert".data(using: .utf8)! env.udCert = "ud-cert".data(using: .utf8)!
env.udContact = "ud-contact".data(using: .utf8)! env.udContact = "ud-contact".data(using: .utf8)!
env.udAddress = "ud-address" env.udAddress = "ud-address"
......
...@@ -8,6 +8,7 @@ final class MessengerRegisterTests: XCTestCase { ...@@ -8,6 +8,7 @@ final class MessengerRegisterTests: XCTestCase {
var didStartNetworkFollower: [Int] = [] var didStartNetworkFollower: [Int] = []
var didNewOrLoadUDWithParams: [NewOrLoadUd.Params] = [] var didNewOrLoadUDWithParams: [NewOrLoadUd.Params] = []
var didNewOrLoadUDWithFollower: [UdNetworkStatus] = [] var didNewOrLoadUDWithFollower: [UdNetworkStatus] = []
var didSetUD: [UserDiscovery?] = []
let e2eId = 1234 let e2eId = 1234
let networkFollowerStatus: NetworkFollowerStatus = .stopped let networkFollowerStatus: NetworkFollowerStatus = .stopped
...@@ -18,22 +19,29 @@ final class MessengerRegisterTests: XCTestCase { ...@@ -18,22 +19,29 @@ final class MessengerRegisterTests: XCTestCase {
let username = "new-user-name" let username = "new-user-name"
var env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.ctx.cMix = .unimplemented env.ctx.getCMix = {
env.ctx.cMix!.networkFollowerStatus.run = { networkFollowerStatus } var cMix: CMix = .unimplemented
env.ctx.cMix!.startNetworkFollower.run = { timeout in cMix.networkFollowerStatus.run = { networkFollowerStatus }
cMix.startNetworkFollower.run = { timeout in
didStartNetworkFollower.append(timeout) didStartNetworkFollower.append(timeout)
} }
env.ctx.cMix!.getReceptionRegistrationValidationSignature.run = { cMix.getReceptionRegistrationValidationSignature.run = {
registrationSignature registrationSignature
} }
env.ctx.e2e = .unimplemented return cMix
env.ctx.e2e!.getId.run = { e2eId } }
env.ctx.getE2E = {
var e2e: E2E = .unimplemented
e2e.getId.run = { e2eId }
e2e.getUdCertFromNdf.run = { udCertFromNDF }
e2e.getUdContactFromNdf.run = { udContactFromNDF }
e2e.getUdAddressFromNdf.run = { udAddressFromNDF }
return e2e
}
env.ctx.setUD = { didSetUD.append($0) }
env.udCert = nil env.udCert = nil
env.udContact = nil env.udContact = nil
env.udAddress = nil env.udAddress = nil
env.ctx.e2e!.getUdCertFromNdf.run = { udCertFromNDF }
env.ctx.e2e!.getUdContactFromNdf.run = { udContactFromNDF }
env.ctx.e2e!.getUdAddressFromNdf.run = { udAddressFromNDF }
env.newOrLoadUd.run = { params, follower in env.newOrLoadUd.run = { params, follower in
didNewOrLoadUDWithParams.append(params) didNewOrLoadUDWithParams.append(params)
didNewOrLoadUDWithFollower.append(follower) didNewOrLoadUDWithFollower.append(follower)
...@@ -56,11 +64,13 @@ final class MessengerRegisterTests: XCTestCase { ...@@ -56,11 +64,13 @@ final class MessengerRegisterTests: XCTestCase {
didNewOrLoadUDWithFollower.first?.handle(), didNewOrLoadUDWithFollower.first?.handle(),
networkFollowerStatus.rawValue networkFollowerStatus.rawValue
) )
XCTAssertNotNil(env.ctx.ud) XCTAssertEqual(didSetUD.compactMap { $0 }.count, 1)
} }
func testRegisterWithAlternativeUD() throws { func testRegisterWithAlternativeUD() throws {
var didNewOrLoadUDWithParams: [NewOrLoadUd.Params] = [] var didNewOrLoadUDWithParams: [NewOrLoadUd.Params] = []
var didSetUD: [UserDiscovery?] = []
let e2eId = 1234 let e2eId = 1234
let registrationSignature = "registration-signature".data(using: .utf8)! let registrationSignature = "registration-signature".data(using: .utf8)!
let altUdCert = "alt-ud-cert".data(using: .utf8)! let altUdCert = "alt-ud-cert".data(using: .utf8)!
...@@ -69,13 +79,20 @@ final class MessengerRegisterTests: XCTestCase { ...@@ -69,13 +79,20 @@ final class MessengerRegisterTests: XCTestCase {
let username = "new-user-name" let username = "new-user-name"
var env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.ctx.cMix = .unimplemented env.ctx.getCMix = {
env.ctx.cMix!.networkFollowerStatus.run = { .running } var cMix: CMix = .unimplemented
env.ctx.cMix!.getReceptionRegistrationValidationSignature.run = { cMix.networkFollowerStatus.run = { .running }
cMix.getReceptionRegistrationValidationSignature.run = {
registrationSignature registrationSignature
} }
env.ctx.e2e = .unimplemented return cMix
env.ctx.e2e!.getId.run = { e2eId } }
env.ctx.getE2E = {
var e2e: E2E = .unimplemented
e2e.getId.run = { e2eId }
return e2e
}
env.ctx.setUD = { didSetUD.append($0) }
env.udCert = altUdCert env.udCert = altUdCert
env.udContact = altUdContact env.udContact = altUdContact
env.udAddress = altUdAddress env.udAddress = altUdAddress
...@@ -94,12 +111,12 @@ final class MessengerRegisterTests: XCTestCase { ...@@ -94,12 +111,12 @@ final class MessengerRegisterTests: XCTestCase {
contactFile: altUdContact, contactFile: altUdContact,
address: altUdAddress address: altUdAddress
)]) )])
XCTAssertNotNil(env.ctx.ud) XCTAssertEqual(didSetUD.compactMap { $0 }.count, 1)
} }
func testRegisterWithoutCMix() { func testRegisterWithoutCMix() {
let env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.ctx.cMix = nil env.ctx.getCMix = { nil }
let register: MessengerRegister = .live(env) let register: MessengerRegister = .live(env)
XCTAssertThrowsError(try register(username: "new-user-name")) { error in XCTAssertThrowsError(try register(username: "new-user-name")) { error in
...@@ -111,9 +128,9 @@ final class MessengerRegisterTests: XCTestCase { ...@@ -111,9 +128,9 @@ final class MessengerRegisterTests: XCTestCase {
} }
func testRegisterWithoutE2E() { func testRegisterWithoutE2E() {
let env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.ctx.cMix = .unimplemented env.ctx.getCMix = { .unimplemented }
env.ctx.e2e = nil env.ctx.getE2E = { nil }
let register: MessengerRegister = .live(env) let register: MessengerRegister = .live(env)
XCTAssertThrowsError(try register(username: "new-user-name")) { error in XCTAssertThrowsError(try register(username: "new-user-name")) { error in
...@@ -128,11 +145,14 @@ final class MessengerRegisterTests: XCTestCase { ...@@ -128,11 +145,14 @@ final class MessengerRegisterTests: XCTestCase {
struct Error: Swift.Error, Equatable {} struct Error: Swift.Error, Equatable {}
let error = Error() let error = Error()
let env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.ctx.cMix = .unimplemented env.ctx.getCMix = {
env.ctx.cMix!.networkFollowerStatus.run = { .stopped } var cMix: CMix = .unimplemented
env.ctx.cMix!.startNetworkFollower.run = { _ in throw error } cMix.networkFollowerStatus.run = { .stopped }
env.ctx.e2e = .unimplemented cMix.startNetworkFollower.run = { _ in throw error }
return cMix
}
env.ctx.getE2E = { .unimplemented }
let register: MessengerRegister = .live(env) let register: MessengerRegister = .live(env)
XCTAssertThrowsError(try register(username: "new-user-name")) { err in XCTAssertThrowsError(try register(username: "new-user-name")) { err in
...@@ -145,17 +165,23 @@ final class MessengerRegisterTests: XCTestCase { ...@@ -145,17 +165,23 @@ final class MessengerRegisterTests: XCTestCase {
let error = Error() let error = Error()
var env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.ctx.cMix = .unimplemented env.ctx.getCMix = {
env.ctx.cMix!.networkFollowerStatus.run = { .running } var cMix: CMix = .unimplemented
env.ctx.cMix!.getReceptionRegistrationValidationSignature.run = { cMix.networkFollowerStatus.run = { .running }
cMix.getReceptionRegistrationValidationSignature.run = {
"registration-signature".data(using: .utf8)! "registration-signature".data(using: .utf8)!
} }
env.ctx.e2e = .unimplemented return cMix
env.ctx.e2e!.getId.run = { 1234 } }
env.ctx.getE2E = {
var e2e: E2E = .unimplemented
e2e.getId.run = { 1234 }
e2e.getUdCertFromNdf.run = { "ndf-ud-cert".data(using: .utf8)! }
e2e.getUdContactFromNdf.run = { throw error }
return e2e
}
env.udCert = nil env.udCert = nil
env.udContact = nil env.udContact = nil
env.ctx.e2e!.getUdCertFromNdf.run = { "ndf-ud-cert".data(using: .utf8)! }
env.ctx.e2e!.getUdContactFromNdf.run = { throw error }
let register: MessengerRegister = .live(env) let register: MessengerRegister = .live(env)
XCTAssertThrowsError(try register(username: "new-user-name")) { err in XCTAssertThrowsError(try register(username: "new-user-name")) { err in
...@@ -168,13 +194,19 @@ final class MessengerRegisterTests: XCTestCase { ...@@ -168,13 +194,19 @@ final class MessengerRegisterTests: XCTestCase {
let error = Error() let error = Error()
var env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.ctx.cMix = .unimplemented env.ctx.getCMix = {
env.ctx.cMix!.networkFollowerStatus.run = { .running } var cMix: CMix = .unimplemented
env.ctx.cMix!.getReceptionRegistrationValidationSignature.run = { cMix.networkFollowerStatus.run = { .running }
cMix.getReceptionRegistrationValidationSignature.run = {
"registration-signature".data(using: .utf8)! "registration-signature".data(using: .utf8)!
} }
env.ctx.e2e = .unimplemented return cMix
env.ctx.e2e!.getId.run = { 1234 } }
env.ctx.getE2E = {
var e2e: E2E = .unimplemented
e2e.getId.run = { 1234 }
return e2e
}
env.udCert = "ud-cert".data(using: .utf8)! env.udCert = "ud-cert".data(using: .utf8)!
env.udContact = "ud-contact".data(using: .utf8)! env.udContact = "ud-contact".data(using: .utf8)!
env.udAddress = "ud-address" env.udAddress = "ud-address"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment