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

Refactor

parent 1aa17717
No related branches found
No related tags found
2 merge requests!102Release 1.0.0,!33XXMessengerClient
Showing
with 270 additions and 113 deletions
...@@ -8,7 +8,7 @@ Example: ...@@ -8,7 +8,7 @@ Example:
```swift ```swift
// setup environment: // setup environment:
var environment: MessengerEnvironment = .live() var environment: Environment = .live()
// change cMix NDF environment if needed: // change cMix NDF environment if needed:
environment.ndfEnvironment = ... environment.ndfEnvironment = ...
......
...@@ -2,11 +2,11 @@ import Foundation ...@@ -2,11 +2,11 @@ import Foundation
import XXClient import XXClient
import XCTestDynamicOverlay import XCTestDynamicOverlay
public struct MessengerEnvironment { public struct Environment {
public var cMix: Stored<CMix?> public var cMix: Stored<CMix?>
public var directoryManager: DirectoryManager
public var downloadNDF: DownloadAndVerifySignedNdf public var downloadNDF: DownloadAndVerifySignedNdf
public var e2e: Stored<E2E?> public var e2e: Stored<E2E?>
public var fileManager: MessengerFileManager
public var generateSecret: GenerateSecret public var generateSecret: GenerateSecret
public var getCMixParams: GetCMixParams public var getCMixParams: GetCMixParams
public var getE2EParams: GetE2EParams public var getE2EParams: GetE2EParams
...@@ -25,19 +25,19 @@ public struct MessengerEnvironment { ...@@ -25,19 +25,19 @@ public struct MessengerEnvironment {
public var udContact: Data? public var udContact: Data?
} }
extension MessengerEnvironment { extension Environment {
public static let defaultStorageDir = FileManager.default public static let defaultStorageDir = FileManager.default
.urls(for: .applicationSupportDirectory, in: .userDomainMask) .urls(for: .applicationSupportDirectory, in: .userDomainMask)
.first! .first!
.appendingPathComponent("xx.network.client") .appendingPathComponent("xx.network.client")
.path .path
public static func live() -> MessengerEnvironment { public static func live() -> Environment {
MessengerEnvironment( Environment(
cMix: .inMemory(), cMix: .inMemory(),
directoryManager: .live(),
downloadNDF: .live, downloadNDF: .live,
e2e: .inMemory(), e2e: .inMemory(),
fileManager: .live(),
generateSecret: .live, generateSecret: .live,
getCMixParams: .liveDefault, getCMixParams: .liveDefault,
getE2EParams: .liveDefault, getE2EParams: .liveDefault,
...@@ -49,7 +49,7 @@ extension MessengerEnvironment { ...@@ -49,7 +49,7 @@ extension MessengerEnvironment {
newOrLoadUd: .live, newOrLoadUd: .live,
passwordStorage: .keychain, passwordStorage: .keychain,
sleep: { Foundation.sleep(UInt32($0)) }, sleep: { Foundation.sleep(UInt32($0)) },
storageDir: MessengerEnvironment.defaultStorageDir, storageDir: Environment.defaultStorageDir,
ud: .inMemory(), ud: .inMemory(),
udAddress: nil, udAddress: nil,
udCert: nil, udCert: nil,
...@@ -58,12 +58,12 @@ extension MessengerEnvironment { ...@@ -58,12 +58,12 @@ extension MessengerEnvironment {
} }
} }
extension MessengerEnvironment { extension Environment {
public static let unimplemented = MessengerEnvironment( public static let unimplemented = Environment(
cMix: .unimplemented(), cMix: .unimplemented(),
directoryManager: .unimplemented,
downloadNDF: .unimplemented, downloadNDF: .unimplemented,
e2e: .unimplemented(), e2e: .unimplemented(),
fileManager: .unimplemented,
generateSecret: .unimplemented, generateSecret: .unimplemented,
getCMixParams: .unimplemented, getCMixParams: .unimplemented,
getE2EParams: .unimplemented, getE2EParams: .unimplemented,
......
import XXClient import XXClient
import XCTestDynamicOverlay import XCTestDynamicOverlay
public struct MessengerConnect { public struct Connect {
public enum Error: Swift.Error, Equatable { public enum Error: Swift.Error, Equatable {
case notLoaded case notLoaded
} }
...@@ -13,9 +13,9 @@ public struct MessengerConnect { ...@@ -13,9 +13,9 @@ public struct MessengerConnect {
} }
} }
extension MessengerConnect { extension Connect {
public static func live(_ env: MessengerEnvironment) -> MessengerConnect { public static func live(_ env: Environment) -> Connect {
MessengerConnect { Connect {
guard let cMix = env.cMix() else { guard let cMix = env.cMix() else {
throw Error.notLoaded throw Error.notLoaded
} }
...@@ -28,8 +28,8 @@ extension MessengerConnect { ...@@ -28,8 +28,8 @@ extension MessengerConnect {
} }
} }
extension MessengerConnect { extension Connect {
public static let unimplemented = MessengerConnect( public static let unimplemented = Connect(
run: XCTUnimplemented() run: XCTUnimplemented()
) )
} }
import XXClient import XXClient
import XCTestDynamicOverlay import XCTestDynamicOverlay
public struct MessengerCreate { public struct Create {
public var run: () throws -> Void public var run: () throws -> Void
public func callAsFunction() throws { public func callAsFunction() throws {
...@@ -9,15 +9,15 @@ public struct MessengerCreate { ...@@ -9,15 +9,15 @@ public struct MessengerCreate {
} }
} }
extension MessengerCreate { extension Create {
public static func live(_ env: MessengerEnvironment) -> MessengerCreate { public static func live(_ env: Environment) -> Create {
MessengerCreate { Create {
let ndfData = try env.downloadNDF(env.ndfEnvironment) let ndfData = try env.downloadNDF(env.ndfEnvironment)
let password = env.generateSecret() let password = env.generateSecret()
try env.passwordStorage.save(password) try env.passwordStorage.save(password)
let storageDir = env.storageDir let storageDir = env.storageDir
try env.fileManager.removeDirectory(storageDir) try env.directoryManager.remove(storageDir)
try env.fileManager.createDirectory(storageDir) try env.directoryManager.create(storageDir)
try env.newCMix( try env.newCMix(
ndfJSON: String(data: ndfData, encoding: .utf8)!, ndfJSON: String(data: ndfData, encoding: .utf8)!,
storageDir: storageDir, storageDir: storageDir,
...@@ -28,8 +28,8 @@ extension MessengerCreate { ...@@ -28,8 +28,8 @@ extension MessengerCreate {
} }
} }
extension MessengerCreate { extension Create {
public static let unimplemented = MessengerCreate( public static let unimplemented = Create(
run: XCTUnimplemented() run: XCTUnimplemented()
) )
} }
import XXClient import XXClient
import XCTestDynamicOverlay import XCTestDynamicOverlay
public struct MessengerIsConnected { public struct IsConnected {
public var run: () -> Bool public var run: () -> Bool
public func callAsFunction() -> Bool { public func callAsFunction() -> Bool {
...@@ -9,16 +9,16 @@ public struct MessengerIsConnected { ...@@ -9,16 +9,16 @@ public struct MessengerIsConnected {
} }
} }
extension MessengerIsConnected { extension IsConnected {
public static func live(_ env: MessengerEnvironment) -> MessengerIsConnected { public static func live(_ env: Environment) -> IsConnected {
MessengerIsConnected { IsConnected {
env.e2e() != nil env.e2e() != nil
} }
} }
} }
extension MessengerIsConnected { extension IsConnected {
public static let unimplemented = MessengerIsConnected( public static let unimplemented = IsConnected(
run: XCTUnimplemented() run: XCTUnimplemented()
) )
} }
......
import XXClient import XXClient
import XCTestDynamicOverlay import XCTestDynamicOverlay
public struct MessengerIsCreated { public struct IsCreated {
public var run: () -> Bool public var run: () -> Bool
public func callAsFunction() -> Bool { public func callAsFunction() -> Bool {
...@@ -9,16 +9,16 @@ public struct MessengerIsCreated { ...@@ -9,16 +9,16 @@ public struct MessengerIsCreated {
} }
} }
extension MessengerIsCreated { extension IsCreated {
public static func live(_ env: MessengerEnvironment) -> MessengerIsCreated { public static func live(_ env: Environment) -> IsCreated {
MessengerIsCreated { IsCreated {
env.fileManager.isDirectoryEmpty(env.storageDir) == false env.directoryManager.isEmpty(env.storageDir) == false
} }
} }
} }
extension MessengerIsCreated { extension IsCreated {
public static let unimplemented = MessengerIsCreated( public static let unimplemented = IsCreated(
run: XCTUnimplemented() run: XCTUnimplemented()
) )
} }
import XXClient import XXClient
import XCTestDynamicOverlay import XCTestDynamicOverlay
public struct MessengerIsLoaded { public struct IsLoaded {
public var run: () -> Bool public var run: () -> Bool
public func callAsFunction() -> Bool { public func callAsFunction() -> Bool {
...@@ -9,16 +9,16 @@ public struct MessengerIsLoaded { ...@@ -9,16 +9,16 @@ public struct MessengerIsLoaded {
} }
} }
extension MessengerIsLoaded { extension IsLoaded {
public static func live(_ env: MessengerEnvironment) -> MessengerIsLoaded { public static func live(_ env: Environment) -> IsLoaded {
MessengerIsLoaded { IsLoaded {
env.cMix() != nil env.cMix() != nil
} }
} }
} }
extension MessengerIsLoaded { extension IsLoaded {
public static let unimplemented = MessengerIsLoaded( public static let unimplemented = IsLoaded(
run: XCTUnimplemented() run: XCTUnimplemented()
) )
} }
import XXClient import XXClient
import XCTestDynamicOverlay import XCTestDynamicOverlay
public struct MessengerIsLoggedIn { public struct IsLoggedIn {
public var run: () -> Bool public var run: () -> Bool
public func callAsFunction() -> Bool { public func callAsFunction() -> Bool {
...@@ -9,16 +9,16 @@ public struct MessengerIsLoggedIn { ...@@ -9,16 +9,16 @@ public struct MessengerIsLoggedIn {
} }
} }
extension MessengerIsLoggedIn { extension IsLoggedIn {
public static func live(_ env: MessengerEnvironment) -> MessengerIsLoggedIn { public static func live(_ env: Environment) -> IsLoggedIn {
MessengerIsLoggedIn { IsLoggedIn {
env.ud() != nil env.ud() != nil
} }
} }
} }
extension MessengerIsLoggedIn { extension IsLoggedIn {
public static let unimplemented = MessengerIsLoggedIn( public static let unimplemented = IsLoggedIn(
run: XCTUnimplemented() run: XCTUnimplemented()
) )
} }
import XXClient import XXClient
import XCTestDynamicOverlay import XCTestDynamicOverlay
public struct MessengerIsRegistered { public struct IsRegistered {
public enum Error: Swift.Error, Equatable { public enum Error: Swift.Error, Equatable {
case notConnected case notConnected
} }
...@@ -13,9 +13,9 @@ public struct MessengerIsRegistered { ...@@ -13,9 +13,9 @@ public struct MessengerIsRegistered {
} }
} }
extension MessengerIsRegistered { extension IsRegistered {
public static func live(_ env: MessengerEnvironment) -> MessengerIsRegistered { public static func live(_ env: Environment) -> IsRegistered {
MessengerIsRegistered { IsRegistered {
guard let e2e = env.e2e() else { guard let e2e = env.e2e() else {
throw Error.notConnected throw Error.notConnected
} }
...@@ -24,8 +24,8 @@ extension MessengerIsRegistered { ...@@ -24,8 +24,8 @@ extension MessengerIsRegistered {
} }
} }
extension MessengerIsRegistered { extension IsRegistered {
public static let unimplemented = MessengerIsRegistered( public static let unimplemented = IsRegistered(
run: XCTUnimplemented() run: XCTUnimplemented()
) )
} }
import XXClient import XXClient
import XCTestDynamicOverlay import XCTestDynamicOverlay
public struct MessengerLoad { public struct Load {
public var run: () throws -> Void public var run: () throws -> Void
public func callAsFunction() throws { public func callAsFunction() throws {
...@@ -9,9 +9,9 @@ public struct MessengerLoad { ...@@ -9,9 +9,9 @@ public struct MessengerLoad {
} }
} }
extension MessengerLoad { extension Load {
public static func live(_ env: MessengerEnvironment) -> MessengerLoad { public static func live(_ env: Environment) -> Load {
MessengerLoad { Load {
env.cMix.set(try env.loadCMix( env.cMix.set(try env.loadCMix(
storageDir: env.storageDir, storageDir: env.storageDir,
password: try env.passwordStorage.load(), password: try env.passwordStorage.load(),
...@@ -21,8 +21,8 @@ extension MessengerLoad { ...@@ -21,8 +21,8 @@ extension MessengerLoad {
} }
} }
extension MessengerLoad { extension Load {
public static let unimplemented = MessengerLoad( public static let unimplemented = Load(
run: XCTUnimplemented() run: XCTUnimplemented()
) )
} }
import XXClient import XXClient
import XCTestDynamicOverlay import XCTestDynamicOverlay
public struct MessengerLogIn { public struct LogIn {
public enum Error: Swift.Error, Equatable { public enum Error: Swift.Error, Equatable {
case notLoaded case notLoaded
case notConnected case notConnected
...@@ -14,9 +14,9 @@ public struct MessengerLogIn { ...@@ -14,9 +14,9 @@ public struct MessengerLogIn {
} }
} }
extension MessengerLogIn { extension LogIn {
public static func live(_ env: MessengerEnvironment) -> MessengerLogIn { public static func live(_ env: Environment) -> LogIn {
MessengerLogIn { LogIn {
guard let cMix = env.cMix() else { guard let cMix = env.cMix() else {
throw Error.notLoaded throw Error.notLoaded
} }
...@@ -40,8 +40,8 @@ extension MessengerLogIn { ...@@ -40,8 +40,8 @@ extension MessengerLogIn {
} }
} }
extension MessengerLogIn { extension LogIn {
public static let unimplemented = MessengerLogIn( public static let unimplemented = LogIn(
run: XCTUnimplemented() run: XCTUnimplemented()
) )
} }
import XXClient import XXClient
import XCTestDynamicOverlay import XCTestDynamicOverlay
public struct MessengerRegister { public struct Register {
public enum Error: Swift.Error, Equatable { public enum Error: Swift.Error, Equatable {
case notLoaded case notLoaded
case notConnected case notConnected
...@@ -16,9 +16,9 @@ public struct MessengerRegister { ...@@ -16,9 +16,9 @@ public struct MessengerRegister {
} }
} }
extension MessengerRegister { extension Register {
public static func live(_ env: MessengerEnvironment) -> MessengerRegister { public static func live(_ env: Environment) -> Register {
MessengerRegister { username in Register { username in
guard let cMix = env.cMix() else { guard let cMix = env.cMix() else {
throw Error.notLoaded throw Error.notLoaded
} }
...@@ -42,8 +42,8 @@ extension MessengerRegister { ...@@ -42,8 +42,8 @@ extension MessengerRegister {
} }
} }
extension MessengerRegister { extension Register {
public static let unimplemented = MessengerRegister( public static let unimplemented = Register(
run: XCTUnimplemented() run: XCTUnimplemented()
) )
} }
import XXClient import XXClient
import XCTestDynamicOverlay import XCTestDynamicOverlay
public struct MessengerStart { public struct Start {
public enum Error: Swift.Error { public enum Error: Swift.Error {
case notLoaded case notLoaded
} }
...@@ -15,9 +15,9 @@ public struct MessengerStart { ...@@ -15,9 +15,9 @@ public struct MessengerStart {
} }
} }
extension MessengerStart { extension Start {
public static func live(_ env: MessengerEnvironment) -> MessengerStart { public static func live(_ env: Environment) -> Start {
MessengerStart { timeoutMS in Start { timeoutMS in
guard let cMix = env.cMix() else { guard let cMix = env.cMix() else {
throw Error.notLoaded throw Error.notLoaded
} }
...@@ -29,8 +29,8 @@ extension MessengerStart { ...@@ -29,8 +29,8 @@ extension MessengerStart {
} }
} }
extension MessengerStart { extension Start {
public static let unimplemented = MessengerStart( public static let unimplemented = Start(
run: XCTUnimplemented("\(Self.self)") run: XCTUnimplemented("\(Self.self)")
) )
} }
import XXClient import XXClient
import XCTestDynamicOverlay import XCTestDynamicOverlay
public struct MessengerWaitForNetwork { public struct WaitForNetwork {
public enum Error: Swift.Error { public enum Error: Swift.Error {
case notLoaded case notLoaded
case timeout case timeout
...@@ -16,9 +16,9 @@ public struct MessengerWaitForNetwork { ...@@ -16,9 +16,9 @@ public struct MessengerWaitForNetwork {
} }
} }
extension MessengerWaitForNetwork { extension WaitForNetwork {
public static func live(_ env: MessengerEnvironment) -> MessengerWaitForNetwork { public static func live(_ env: Environment) -> WaitForNetwork {
MessengerWaitForNetwork { timeoutMS in WaitForNetwork { timeoutMS in
guard let cMix = env.cMix() else { guard let cMix = env.cMix() else {
throw Error.notLoaded throw Error.notLoaded
} }
...@@ -29,8 +29,8 @@ extension MessengerWaitForNetwork { ...@@ -29,8 +29,8 @@ extension MessengerWaitForNetwork {
} }
} }
extension MessengerWaitForNetwork { extension WaitForNetwork {
public static let unimplemented = MessengerWaitForNetwork( public static let unimplemented = WaitForNetwork(
run: XCTUnimplemented("\(Self.self)") run: XCTUnimplemented("\(Self.self)")
) )
} }
import XXClient import XXClient
import XCTestDynamicOverlay import XCTestDynamicOverlay
public struct MessengerWaitForNodes { public struct WaitForNodes {
public typealias Progress = (NodeRegistrationReport) -> Void public typealias Progress = (NodeRegistrationReport) -> Void
public enum Error: Swift.Error { public enum Error: Swift.Error {
...@@ -21,9 +21,9 @@ public struct MessengerWaitForNodes { ...@@ -21,9 +21,9 @@ public struct MessengerWaitForNodes {
} }
} }
extension MessengerWaitForNodes { extension WaitForNodes {
public static func live(_ env: MessengerEnvironment) -> MessengerWaitForNodes { public static func live(_ env: Environment) -> WaitForNodes {
MessengerWaitForNodes { targetRatio, sleepMS, retries, onProgress in WaitForNodes { targetRatio, sleepMS, retries, onProgress in
guard let cMix = env.cMix() else { guard let cMix = env.cMix() else {
throw Error.notLoaded throw Error.notLoaded
} }
...@@ -46,8 +46,8 @@ extension MessengerWaitForNodes { ...@@ -46,8 +46,8 @@ extension MessengerWaitForNodes {
} }
} }
extension MessengerWaitForNodes { extension WaitForNodes {
public static let unimplemented = MessengerWaitForNodes( public static let unimplemented = WaitForNodes(
run: XCTUnimplemented("\(Self.self)") run: XCTUnimplemented("\(Self.self)")
) )
} }
...@@ -4,23 +4,23 @@ public struct Messenger { ...@@ -4,23 +4,23 @@ public struct Messenger {
public var cMix: Stored<CMix?> public var cMix: Stored<CMix?>
public var e2e: Stored<E2E?> public var e2e: Stored<E2E?>
public var ud: Stored<UserDiscovery?> public var ud: Stored<UserDiscovery?>
public var isCreated: MessengerIsCreated public var isCreated: IsCreated
public var create: MessengerCreate public var create: Create
public var isLoaded: MessengerIsLoaded public var isLoaded: IsLoaded
public var load: MessengerLoad public var load: Load
public var start: MessengerStart public var start: Start
public var isConnected: MessengerIsConnected public var isConnected: IsConnected
public var connect: MessengerConnect public var connect: Connect
public var isRegistered: MessengerIsRegistered public var isRegistered: IsRegistered
public var register: MessengerRegister public var register: Register
public var isLoggedIn: MessengerIsLoggedIn public var isLoggedIn: IsLoggedIn
public var logIn: MessengerLogIn public var logIn: LogIn
public var waitForNetwork: MessengerWaitForNetwork public var waitForNetwork: WaitForNetwork
public var waitForNodes: MessengerWaitForNodes public var waitForNodes: WaitForNodes
} }
extension Messenger { extension Messenger {
public static func live(_ env: MessengerEnvironment) -> Messenger { public static func live(_ env: Environment) -> Messenger {
Messenger( Messenger(
cMix: env.cMix, cMix: env.cMix,
e2e: env.e2e, e2e: env.e2e,
......
import Foundation import Foundation
import XCTestDynamicOverlay import XCTestDynamicOverlay
public struct MessengerFileManager { public struct DirectoryManager {
public var isDirectoryEmpty: (String) -> Bool public var isEmpty: (String) -> Bool
public var removeDirectory: (String) throws -> Void public var remove: (String) throws -> Void
public var createDirectory: (String) throws -> Void public var create: (String) throws -> Void
} }
extension MessengerFileManager { extension DirectoryManager {
public static func live( public static func live(
fileManager: FileManager = .default fileManager: FileManager = .default
) -> MessengerFileManager { ) -> DirectoryManager {
MessengerFileManager( DirectoryManager(
isDirectoryEmpty: { path in isEmpty: { path in
let contents = try? fileManager.contentsOfDirectory(atPath: path) let contents = try? fileManager.contentsOfDirectory(atPath: path)
return contents?.isEmpty ?? true return contents?.isEmpty ?? true
}, },
removeDirectory: { path in remove: { path in
if fileManager.fileExists(atPath: path) { if fileManager.fileExists(atPath: path) {
try fileManager.removeItem(atPath: path) try fileManager.removeItem(atPath: path)
} }
}, },
createDirectory: { path in create: { path in
try fileManager.createDirectory( try fileManager.createDirectory(
atPath: path, atPath: path,
withIntermediateDirectories: true withIntermediateDirectories: true
...@@ -31,10 +31,10 @@ extension MessengerFileManager { ...@@ -31,10 +31,10 @@ extension MessengerFileManager {
} }
} }
extension MessengerFileManager { extension DirectoryManager {
public static let unimplemented = MessengerFileManager( public static let unimplemented = DirectoryManager(
isDirectoryEmpty: XCTUnimplemented("\(Self.self).isDirectoryEmpty"), isEmpty: XCTUnimplemented("\(Self.self).isDirectoryEmpty"),
removeDirectory: XCTUnimplemented("\(Self.self).removeDirectory"), remove: XCTUnimplemented("\(Self.self).removeDirectory"),
createDirectory: XCTUnimplemented("\(Self.self).createDirectory") create: XCTUnimplemented("\(Self.self).createDirectory")
) )
} }
...@@ -3,7 +3,7 @@ import XXClient ...@@ -3,7 +3,7 @@ import XXClient
import XCTest import XCTest
@testable import XXMessengerClient @testable import XXMessengerClient
final class MessengerConnectTests: XCTestCase { final class ConnectTests: XCTestCase {
func testConnect() throws { func testConnect() throws {
struct DidLogIn: Equatable { struct DidLogIn: Equatable {
var ephemeral: Bool var ephemeral: Bool
...@@ -20,7 +20,7 @@ final class MessengerConnectTests: XCTestCase { ...@@ -20,7 +20,7 @@ final class MessengerConnectTests: XCTestCase {
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: Environment = .unimplemented
env.cMix.get = { env.cMix.get = {
var cMix: CMix = .unimplemented var cMix: CMix = .unimplemented
cMix.getId.run = { cMixId } cMix.getId.run = { cMixId }
...@@ -39,7 +39,7 @@ final class MessengerConnectTests: XCTestCase { ...@@ -39,7 +39,7 @@ final class MessengerConnectTests: XCTestCase {
)) ))
return .unimplemented return .unimplemented
} }
let connect: MessengerConnect = .live(env) let connect: Connect = .live(env)
try connect() try connect()
...@@ -56,14 +56,14 @@ final class MessengerConnectTests: XCTestCase { ...@@ -56,14 +56,14 @@ final class MessengerConnectTests: XCTestCase {
} }
func testConnectWithoutCMix() { func testConnectWithoutCMix() {
var env: MessengerEnvironment = .unimplemented var env: Environment = .unimplemented
env.cMix.get = { nil } env.cMix.get = { nil }
let connect: MessengerConnect = .live(env) let connect: Connect = .live(env)
XCTAssertThrowsError(try connect()) { error in XCTAssertThrowsError(try connect()) { error in
XCTAssertEqual( XCTAssertEqual(
error as? MessengerConnect.Error, error as? Connect.Error,
MessengerConnect.Error.notLoaded Connect.Error.notLoaded
) )
} }
} }
...@@ -72,14 +72,14 @@ final class MessengerConnectTests: XCTestCase { ...@@ -72,14 +72,14 @@ final class MessengerConnectTests: XCTestCase {
struct Error: Swift.Error, Equatable {} struct Error: Swift.Error, Equatable {}
let error = Error() let error = Error()
var env: MessengerEnvironment = .unimplemented var env: Environment = .unimplemented
env.cMix.get = { env.cMix.get = {
var cMix: CMix = .unimplemented var cMix: CMix = .unimplemented
cMix.getId.run = { 1234 } cMix.getId.run = { 1234 }
cMix.makeLegacyReceptionIdentity.run = { throw error } cMix.makeLegacyReceptionIdentity.run = { throw error }
return cMix return cMix
} }
let connect: MessengerConnect = .live(env) let connect: Connect = .live(env)
XCTAssertThrowsError(try connect()) { err in XCTAssertThrowsError(try connect()) { err in
XCTAssertEqual(err as? Error, error) XCTAssertEqual(err as? Error, error)
...@@ -90,7 +90,7 @@ final class MessengerConnectTests: XCTestCase { ...@@ -90,7 +90,7 @@ final class MessengerConnectTests: XCTestCase {
struct Error: Swift.Error, Equatable {} struct Error: Swift.Error, Equatable {}
let error = Error() let error = Error()
var env: MessengerEnvironment = .unimplemented var env: Environment = .unimplemented
env.cMix.get = { env.cMix.get = {
var cMix: CMix = .unimplemented var cMix: CMix = .unimplemented
cMix.getId.run = { 1234 } cMix.getId.run = { 1234 }
...@@ -99,7 +99,7 @@ final class MessengerConnectTests: XCTestCase { ...@@ -99,7 +99,7 @@ final class MessengerConnectTests: XCTestCase {
} }
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: Connect = .live(env)
XCTAssertThrowsError(try connect()) { err in XCTAssertThrowsError(try connect()) { err in
XCTAssertEqual(err as? Error, error) XCTAssertEqual(err as? Error, error)
......
...@@ -3,7 +3,7 @@ import XCTest ...@@ -3,7 +3,7 @@ import XCTest
import XXClient import XXClient
@testable import XXMessengerClient @testable import XXMessengerClient
final class MessengerCreateTests: XCTestCase { final class CreateTests: XCTestCase {
func testCreate() throws { func testCreate() throws {
struct DidNewCMix: Equatable { struct DidNewCMix: Equatable {
var ndfJSON: String var ndfJSON: String
...@@ -23,7 +23,7 @@ final class MessengerCreateTests: XCTestCase { ...@@ -23,7 +23,7 @@ final class MessengerCreateTests: XCTestCase {
let password = "password".data(using: .utf8)! let password = "password".data(using: .utf8)!
let storageDir = "storage-dir" let storageDir = "storage-dir"
var env: MessengerEnvironment = .unimplemented var env: Environment = .unimplemented
env.ndfEnvironment = .unimplemented env.ndfEnvironment = .unimplemented
env.downloadNDF.run = { ndfEnvironment in env.downloadNDF.run = { ndfEnvironment in
didDownloadNDF.append(ndfEnvironment) didDownloadNDF.append(ndfEnvironment)
...@@ -37,10 +37,10 @@ final class MessengerCreateTests: XCTestCase { ...@@ -37,10 +37,10 @@ final class MessengerCreateTests: XCTestCase {
didSavePassword.append(password) didSavePassword.append(password)
} }
env.storageDir = storageDir env.storageDir = storageDir
env.fileManager.removeDirectory = { path in env.directoryManager.remove = { path in
didRemoveDirectory.append(path) didRemoveDirectory.append(path)
} }
env.fileManager.createDirectory = { path in env.directoryManager.create = { path in
didCreateDirectory.append(path) didCreateDirectory.append(path)
} }
env.newCMix.run = { ndfJSON, storageDir, password, registrationCode in env.newCMix.run = { ndfJSON, storageDir, password, registrationCode in
...@@ -51,7 +51,7 @@ final class MessengerCreateTests: XCTestCase { ...@@ -51,7 +51,7 @@ final class MessengerCreateTests: XCTestCase {
registrationCode: registrationCode registrationCode: registrationCode
)) ))
} }
let create: MessengerCreate = .live(env) let create: Create = .live(env)
try create() try create()
...@@ -72,10 +72,10 @@ final class MessengerCreateTests: XCTestCase { ...@@ -72,10 +72,10 @@ final class MessengerCreateTests: XCTestCase {
struct Error: Swift.Error, Equatable {} struct Error: Swift.Error, Equatable {}
let error = Error() let error = Error()
var env: MessengerEnvironment = .unimplemented var env: Environment = .unimplemented
env.ndfEnvironment = .unimplemented env.ndfEnvironment = .unimplemented
env.downloadNDF.run = { _ in throw error } env.downloadNDF.run = { _ in throw error }
let create: MessengerCreate = .live(env) let create: Create = .live(env)
XCTAssertThrowsError(try create()) { err in XCTAssertThrowsError(try create()) { err in
XCTAssertEqual(err as? Error, error) XCTAssertEqual(err as? Error, error)
...@@ -86,12 +86,12 @@ final class MessengerCreateTests: XCTestCase { ...@@ -86,12 +86,12 @@ final class MessengerCreateTests: XCTestCase {
struct Error: Swift.Error, Equatable {} struct Error: Swift.Error, Equatable {}
let error = Error() let error = Error()
var env: MessengerEnvironment = .unimplemented var env: Environment = .unimplemented
env.ndfEnvironment = .unimplemented env.ndfEnvironment = .unimplemented
env.downloadNDF.run = { _ in "ndf".data(using: .utf8)! } env.downloadNDF.run = { _ in "ndf".data(using: .utf8)! }
env.generateSecret.run = { _ in "password".data(using: .utf8)! } env.generateSecret.run = { _ in "password".data(using: .utf8)! }
env.passwordStorage.save = { _ in throw error } env.passwordStorage.save = { _ in throw error }
let create: MessengerCreate = .live(env) let create: Create = .live(env)
XCTAssertThrowsError(try create()) { err in XCTAssertThrowsError(try create()) { err in
XCTAssertEqual(err as? Error, error) XCTAssertEqual(err as? Error, error)
...@@ -102,14 +102,14 @@ final class MessengerCreateTests: XCTestCase { ...@@ -102,14 +102,14 @@ final class MessengerCreateTests: XCTestCase {
struct Error: Swift.Error, Equatable {} struct Error: Swift.Error, Equatable {}
let error = Error() let error = Error()
var env: MessengerEnvironment = .unimplemented var env: Environment = .unimplemented
env.ndfEnvironment = .unimplemented env.ndfEnvironment = .unimplemented
env.downloadNDF.run = { _ in "ndf".data(using: .utf8)! } env.downloadNDF.run = { _ in "ndf".data(using: .utf8)! }
env.generateSecret.run = { _ in "password".data(using: .utf8)! } env.generateSecret.run = { _ in "password".data(using: .utf8)! }
env.passwordStorage.save = { _ in } env.passwordStorage.save = { _ in }
env.storageDir = "storage-dir" env.storageDir = "storage-dir"
env.fileManager.removeDirectory = { _ in throw error } env.directoryManager.remove = { _ in throw error }
let create: MessengerCreate = .live(env) let create: Create = .live(env)
XCTAssertThrowsError(try create()) { err in XCTAssertThrowsError(try create()) { err in
XCTAssertEqual(err as? Error, error) XCTAssertEqual(err as? Error, error)
...@@ -120,15 +120,15 @@ final class MessengerCreateTests: XCTestCase { ...@@ -120,15 +120,15 @@ final class MessengerCreateTests: XCTestCase {
struct Error: Swift.Error, Equatable {} struct Error: Swift.Error, Equatable {}
let error = Error() let error = Error()
var env: MessengerEnvironment = .unimplemented var env: Environment = .unimplemented
env.ndfEnvironment = .unimplemented env.ndfEnvironment = .unimplemented
env.downloadNDF.run = { _ in "ndf".data(using: .utf8)! } env.downloadNDF.run = { _ in "ndf".data(using: .utf8)! }
env.generateSecret.run = { _ in "password".data(using: .utf8)! } env.generateSecret.run = { _ in "password".data(using: .utf8)! }
env.passwordStorage.save = { _ in } env.passwordStorage.save = { _ in }
env.storageDir = "storage-dir" env.storageDir = "storage-dir"
env.fileManager.removeDirectory = { _ in } env.directoryManager.remove = { _ in }
env.fileManager.createDirectory = { _ in throw error } env.directoryManager.create = { _ in throw error }
let create: MessengerCreate = .live(env) let create: Create = .live(env)
XCTAssertThrowsError(try create()) { err in XCTAssertThrowsError(try create()) { err in
XCTAssertEqual(err as? Error, error) XCTAssertEqual(err as? Error, error)
...@@ -139,16 +139,16 @@ final class MessengerCreateTests: XCTestCase { ...@@ -139,16 +139,16 @@ final class MessengerCreateTests: XCTestCase {
struct Error: Swift.Error, Equatable {} struct Error: Swift.Error, Equatable {}
let error = Error() let error = Error()
var env: MessengerEnvironment = .unimplemented var env: Environment = .unimplemented
env.ndfEnvironment = .unimplemented env.ndfEnvironment = .unimplemented
env.downloadNDF.run = { _ in "ndf".data(using: .utf8)! } env.downloadNDF.run = { _ in "ndf".data(using: .utf8)! }
env.generateSecret.run = { _ in "password".data(using: .utf8)! } env.generateSecret.run = { _ in "password".data(using: .utf8)! }
env.passwordStorage.save = { _ in } env.passwordStorage.save = { _ in }
env.storageDir = "storage-dir" env.storageDir = "storage-dir"
env.fileManager.removeDirectory = { _ in } env.directoryManager.remove = { _ in }
env.fileManager.createDirectory = { _ in } env.directoryManager.create = { _ in }
env.newCMix.run = { _, _, _, _ in throw error } env.newCMix.run = { _, _, _, _ in throw error }
let create: MessengerCreate = .live(env) let create: Create = .live(env)
XCTAssertThrowsError(try create()) { err in XCTAssertThrowsError(try create()) { err in
XCTAssertEqual(err as? Error, error) XCTAssertEqual(err as? Error, error)
......
import XCTest import XCTest
@testable import XXMessengerClient @testable import XXMessengerClient
final class MessengerIsConnectedTests: XCTestCase { final class IsConnectedTests: XCTestCase {
func testWithE2E() { func testWithE2E() {
var env: MessengerEnvironment = .unimplemented var env: Environment = .unimplemented
env.e2e.get = { .unimplemented } env.e2e.get = { .unimplemented }
let isConnected: MessengerIsConnected = .live(env) let isConnected: IsConnected = .live(env)
XCTAssertTrue(isConnected()) XCTAssertTrue(isConnected())
} }
func testWithoutE2E() { func testWithoutE2E() {
var env: MessengerEnvironment = .unimplemented var env: Environment = .unimplemented
env.e2e.get = { nil } env.e2e.get = { nil }
let isConnected: MessengerIsConnected = .live(env) let isConnected: IsConnected = .live(env)
XCTAssertFalse(isConnected()) XCTAssertFalse(isConnected())
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment