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

Add MessengerRegisterAuthCallbacks functor

parent d08dae56
No related branches found
No related tags found
2 merge requests!102Release 1.0.0,!41Register auth callbacks with XXMessengerClient
This commit is part of merge request !41. Comments created here will be created in the context of that merge request.
import XXClient
import XCTestDynamicOverlay
public struct MessengerRegisterAuthCallbacks {
public var run: (AuthCallbacks) -> Cancellable
public func callAsFunction(_ authCallbacks: AuthCallbacks) -> Cancellable {
run(authCallbacks)
}
}
extension MessengerRegisterAuthCallbacks {
public static func live(_ env: MessengerEnvironment) -> MessengerRegisterAuthCallbacks {
MessengerRegisterAuthCallbacks { callback in
env.authCallbacks.register(callback)
}
}
}
extension MessengerRegisterAuthCallbacks {
public static let unimplemented = MessengerRegisterAuthCallbacks(
run: XCTUnimplemented("\(Self.self)")
)
}
...@@ -8,6 +8,7 @@ public struct Messenger { ...@@ -8,6 +8,7 @@ public struct Messenger {
public var create: MessengerCreate public var create: MessengerCreate
public var isLoaded: MessengerIsLoaded public var isLoaded: MessengerIsLoaded
public var load: MessengerLoad public var load: MessengerLoad
public var registerAuthCallbacks: MessengerRegisterAuthCallbacks
public var start: MessengerStart public var start: MessengerStart
public var isConnected: MessengerIsConnected public var isConnected: MessengerIsConnected
public var connect: MessengerConnect public var connect: MessengerConnect
...@@ -29,6 +30,7 @@ extension Messenger { ...@@ -29,6 +30,7 @@ extension Messenger {
create: .live(env), create: .live(env),
isLoaded: .live(env), isLoaded: .live(env),
load: .live(env), load: .live(env),
registerAuthCallbacks: .live(env),
start: .live(env), start: .live(env),
isConnected: .live(env), isConnected: .live(env),
connect: .live(env), connect: .live(env),
...@@ -51,6 +53,7 @@ extension Messenger { ...@@ -51,6 +53,7 @@ extension Messenger {
create: .unimplemented, create: .unimplemented,
isLoaded: .unimplemented, isLoaded: .unimplemented,
load: .unimplemented, load: .unimplemented,
registerAuthCallbacks: .unimplemented,
start: .unimplemented, start: .unimplemented,
isConnected: .unimplemented, isConnected: .unimplemented,
connect: .unimplemented, connect: .unimplemented,
......
...@@ -3,6 +3,7 @@ import XXClient ...@@ -3,6 +3,7 @@ import XXClient
import XCTestDynamicOverlay import XCTestDynamicOverlay
public struct MessengerEnvironment { public struct MessengerEnvironment {
public var authCallbacks: AuthCallbacksRegistry
public var cMix: Stored<CMix?> public var cMix: Stored<CMix?>
public var downloadNDF: DownloadAndVerifySignedNdf public var downloadNDF: DownloadAndVerifySignedNdf
public var e2e: Stored<E2E?> public var e2e: Stored<E2E?>
...@@ -34,6 +35,7 @@ extension MessengerEnvironment { ...@@ -34,6 +35,7 @@ extension MessengerEnvironment {
public static func live() -> MessengerEnvironment { public static func live() -> MessengerEnvironment {
MessengerEnvironment( MessengerEnvironment(
authCallbacks: .live(),
cMix: .inMemory(), cMix: .inMemory(),
downloadNDF: .live, downloadNDF: .live,
e2e: .inMemory(), e2e: .inMemory(),
...@@ -60,6 +62,7 @@ extension MessengerEnvironment { ...@@ -60,6 +62,7 @@ extension MessengerEnvironment {
extension MessengerEnvironment { extension MessengerEnvironment {
public static let unimplemented = MessengerEnvironment( public static let unimplemented = MessengerEnvironment(
authCallbacks: .unimplemented,
cMix: .unimplemented(), cMix: .unimplemented(),
downloadNDF: .unimplemented, downloadNDF: .unimplemented,
e2e: .unimplemented(), e2e: .unimplemented(),
......
import XCTest
import XXClient
@testable import XXMessengerClient
import CustomDump
final class MessengerRegisterAuthCallbacksTests: XCTestCase {
func testRegisterAuthCallbacks() {
var registeredAuthCallbacks: [AuthCallbacks] = []
var didHandleCallbacks: [AuthCallbacks.Callback] = []
var didCancelRegisteredAuthCallbacks = 0
var env: MessengerEnvironment = .unimplemented
env.authCallbacks.register = { authCallbacks in
registeredAuthCallbacks.append(authCallbacks)
return Cancellable { didCancelRegisteredAuthCallbacks += 1 }
}
let registerAuthCallbacks: MessengerRegisterAuthCallbacks = .live(env)
let cancellable = registerAuthCallbacks(AuthCallbacks { callback in
didHandleCallbacks.append(callback)
})
XCTAssertEqual(registeredAuthCallbacks.count, 1)
registeredAuthCallbacks.forEach { authCallbacks in
[AuthCallbacks.Callback].stubs.forEach { callback in
authCallbacks.handle(callback)
}
}
XCTAssertNoDifference(didHandleCallbacks, .stubs)
cancellable.cancel()
XCTAssertEqual(didCancelRegisteredAuthCallbacks, 1)
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment