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

Merge branch 'development' into dev/update-bindings

parents 35d0b435 e72395cd
No related branches found
No related tags found
2 merge requests!102Release 1.0.0,!67Update Bindings
This commit is part of merge request !67. Comments created here will be created in the context of that merge request.
import Foundation
import XXClient
import XCTestDynamicOverlay
public struct MessengerRegisterForNotifications {
public enum Error: Swift.Error, Equatable {
case notConnected
}
public var run: (Data) throws -> Void
public func callAsFunction(token: Data) throws -> Void {
try run(token)
}
}
extension MessengerRegisterForNotifications {
public static func live(_ env: MessengerEnvironment) -> MessengerRegisterForNotifications {
MessengerRegisterForNotifications { token in
guard let e2e = env.e2e() else {
throw Error.notConnected
}
try env.registerForNotifications(
e2eId: e2e.getId(),
token: token.map { String(format: "%02hhx", $0) }.joined()
)
}
}
}
extension MessengerRegisterForNotifications {
public static let unimplemented = MessengerRegisterForNotifications(
run: XCTUnimplemented("\(Self.self)")
)
}
...@@ -20,6 +20,7 @@ public struct Messenger { ...@@ -20,6 +20,7 @@ public struct Messenger {
public var waitForNodes: MessengerWaitForNodes public var waitForNodes: MessengerWaitForNodes
public var destroy: MessengerDestroy public var destroy: MessengerDestroy
public var searchUsers: MessengerSearchUsers public var searchUsers: MessengerSearchUsers
public var registerForNotifications: MessengerRegisterForNotifications
} }
extension Messenger { extension Messenger {
...@@ -43,7 +44,8 @@ extension Messenger { ...@@ -43,7 +44,8 @@ extension Messenger {
waitForNetwork: .live(env), waitForNetwork: .live(env),
waitForNodes: .live(env), waitForNodes: .live(env),
destroy: .live(env), destroy: .live(env),
searchUsers: .live(env) searchUsers: .live(env),
registerForNotifications: .live(env)
) )
} }
} }
...@@ -68,6 +70,7 @@ extension Messenger { ...@@ -68,6 +70,7 @@ extension Messenger {
waitForNetwork: .unimplemented, waitForNetwork: .unimplemented,
waitForNodes: .unimplemented, waitForNodes: .unimplemented,
destroy: .unimplemented, destroy: .unimplemented,
searchUsers: .unimplemented searchUsers: .unimplemented,
registerForNotifications: .unimplemented
) )
} }
...@@ -19,6 +19,7 @@ public struct MessengerEnvironment { ...@@ -19,6 +19,7 @@ public struct MessengerEnvironment {
public var newCMix: NewCMix public var newCMix: NewCMix
public var newOrLoadUd: NewOrLoadUd public var newOrLoadUd: NewOrLoadUd
public var passwordStorage: PasswordStorage public var passwordStorage: PasswordStorage
public var registerForNotifications: RegisterForNotifications
public var searchUD: SearchUD public var searchUD: SearchUD
public var sleep: (TimeInterval) -> Void public var sleep: (TimeInterval) -> Void
public var storageDir: String public var storageDir: String
...@@ -53,6 +54,7 @@ extension MessengerEnvironment { ...@@ -53,6 +54,7 @@ extension MessengerEnvironment {
newCMix: .live, newCMix: .live,
newOrLoadUd: .live, newOrLoadUd: .live,
passwordStorage: .keychain, passwordStorage: .keychain,
registerForNotifications: .live,
searchUD: .live, searchUD: .live,
sleep: { Thread.sleep(forTimeInterval: $0) }, sleep: { Thread.sleep(forTimeInterval: $0) },
storageDir: MessengerEnvironment.defaultStorageDir, storageDir: MessengerEnvironment.defaultStorageDir,
...@@ -82,6 +84,7 @@ extension MessengerEnvironment { ...@@ -82,6 +84,7 @@ extension MessengerEnvironment {
newCMix: .unimplemented, newCMix: .unimplemented,
newOrLoadUd: .unimplemented, newOrLoadUd: .unimplemented,
passwordStorage: .unimplemented, passwordStorage: .unimplemented,
registerForNotifications: .unimplemented,
searchUD: .unimplemented, searchUD: .unimplemented,
sleep: XCTUnimplemented("\(Self.self).sleep"), sleep: XCTUnimplemented("\(Self.self).sleep"),
storageDir: "unimplemented", storageDir: "unimplemented",
......
import CustomDump
import XCTest
import XXClient
@testable import XXMessengerClient
final class MessengerRegisterForNotificationsTest: XCTestCase {
func testRegister() throws {
struct DidRegister: Equatable {
var e2eId: Int
var token: String
}
var didRegister: [DidRegister] = []
var env: MessengerEnvironment = .unimplemented
env.e2e.get = {
var e2e: E2E = .unimplemented
e2e.getId.run = { 1234 }
return e2e
}
env.registerForNotifications.run = { e2eId, token in
didRegister.append(.init(e2eId: e2eId, token: token))
}
let register: MessengerRegisterForNotifications = .live(env)
let token = "test-token".data(using: .utf8)!
try register(token: token)
XCTAssertNoDifference(didRegister, [.init(e2eId: 1234, token: "746573742d746f6b656e")])
}
func testRegisterWhenNotConnected() {
var env: MessengerEnvironment = .unimplemented
env.e2e.get = { nil }
let register: MessengerRegisterForNotifications = .live(env)
let token = "test-token".data(using: .utf8)!
XCTAssertThrowsError(try register(token: token)) { error in
XCTAssertEqual(error as? MessengerRegisterForNotifications.Error, .notConnected)
}
}
func testRegisterFailure() {
struct Failure: Error, Equatable {}
let failure = Failure()
var env: MessengerEnvironment = .unimplemented
env.e2e.get = {
var e2e: E2E = .unimplemented
e2e.getId.run = { 1234 }
return e2e
}
env.registerForNotifications.run = { _, _ in throw failure }
let register: MessengerRegisterForNotifications = .live(env)
let token = "test-token".data(using: .utf8)!
XCTAssertThrowsError(try register(token: token)) { error in
XCTAssertEqual(error as? Failure, failure)
}
}
}
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