Newer
Older
import CustomDump
import XCTest
import XXClient
@testable import XXMessengerClient
final class MessengerDestroyTests: XCTestCase {
func testDestroy() throws {
let storageDir = "test-storage-dir"
var hasRunningProcesses: [Bool] = [true, true, false]
var didStopNetworkFollower = 0
var didSleep: [TimeInterval] = []
var didSetFileTransfer: [FileTransfer?] = []
var didSetBackup: [Backup?] = []
var didSetUD: [UserDiscovery?] = []
var didSetE2E: [E2E?] = []
var didSetCMix: [CMix?] = []
var didSetIsListeningForMessages: [Bool] = []
var didSetServiceList: [MessageServiceList?] = []
var env: MessengerEnvironment = .unimplemented
env.cMix.get = {
var cMix: CMix = .unimplemented
cMix.networkFollowerStatus.run = { .running }
cMix.stopNetworkFollower.run = { didStopNetworkFollower += 1 }
cMix.hasRunningProcesses.run = { hasRunningProcesses.removeFirst() }
return cMix
}
env.sleep = { didSleep.append($0) }
env.fileTransfer.set = { didSetFileTransfer.append($0) }
env.backup.set = { didSetBackup.append($0) }
env.ud.set = { didSetUD.append($0) }
env.e2e.set = { didSetE2E.append($0) }
env.cMix.set = { didSetCMix.append($0) }
env.isListeningForMessages.set = { didSetIsListeningForMessages.append($0) }
env.serviceList.set = { didSetServiceList.append($0) }
env.passwordStorage.remove = { didRemovePassword += 1 }
let destroy: MessengerDestroy = .live(env)
try destroy()
XCTAssertNoDifference(didStopNetworkFollower, 1)
XCTAssertNoDifference(didSleep, [1, 1])
XCTAssertNoDifference(didSetFileTransfer.map { $0 == nil }, [true])
XCTAssertNoDifference(didSetBackup.map { $0 == nil }, [true])
XCTAssertNoDifference(didSetUD.map { $0 == nil }, [true])
XCTAssertNoDifference(didSetE2E.map { $0 == nil }, [true])
XCTAssertNoDifference(didSetCMix.map { $0 == nil }, [true])
XCTAssertNoDifference(didSetIsListeningForMessages, [false])
XCTAssertNoDifference(didSetServiceList.map { $0 == nil }, [true])
XCTAssertNoDifference(didRemovePassword, 1)
func testStopNetworkFollowerFailure() {
struct Error: Swift.Error, Equatable {}
let error = Error()
var env: MessengerEnvironment = .unimplemented
env.cMix.get = {
var cMix: CMix = .unimplemented
cMix.networkFollowerStatus.run = { .running }
cMix.stopNetworkFollower.run = { throw error }
return cMix
}
let destroy: MessengerDestroy = .live(env)
XCTAssertThrowsError(try destroy()) { err in
XCTAssertEqual(err as? Error, error)
}
}
func testRemoveDirectoryFailure() {
struct Error: Swift.Error, Equatable {}
let error = Error()
var didSetFileTransfer: [FileTransfer?] = []
var didSetBackup: [Backup?] = []
var didSetUD: [UserDiscovery?] = []
var didSetE2E: [E2E?] = []
var didSetCMix: [CMix?] = []
var didSetIsListeningForMessages: [Bool] = []
var didSetServiceList: [MessageServiceList?] = []
var env: MessengerEnvironment = .unimplemented
env.fileTransfer.set = { didSetFileTransfer.append($0) }
env.backup.set = { didSetBackup.append($0) }
env.ud.set = { didSetUD.append($0) }
env.e2e.set = { didSetE2E.append($0) }
env.cMix.set = { didSetCMix.append($0) }
env.isListeningForMessages.set = { didSetIsListeningForMessages.append($0) }
env.serviceList.set = { didSetServiceList.append($0) }
let destroy: MessengerDestroy = .live(env)
XCTAssertThrowsError(try destroy()) { err in
XCTAssertEqual(err as? Error, error)
}
XCTAssertNoDifference(didSetFileTransfer.map { $0 == nil }, [true])
XCTAssertNoDifference(didSetBackup.map { $0 == nil }, [true])
XCTAssertNoDifference(didSetUD.map { $0 == nil }, [true])
XCTAssertNoDifference(didSetE2E.map { $0 == nil }, [true])
XCTAssertNoDifference(didSetCMix.map { $0 == nil }, [true])
XCTAssertNoDifference(didSetIsListeningForMessages, [false])
XCTAssertNoDifference(didSetServiceList.map { $0 == nil }, [true])
func testRemovePasswordFailure() {
struct Error: Swift.Error, Equatable {}
let error = Error()
let storageDir = "test-storage-dir"
var didSetFileTransfer: [FileTransfer?] = []
var didSetBackup: [Backup?] = []
var didSetUD: [UserDiscovery?] = []
var didSetE2E: [E2E?] = []
var didSetCMix: [CMix?] = []
var didSetIsListeningForMessages: [Bool] = []
var didSetServiceList: [MessageServiceList?] = []
var env: MessengerEnvironment = .unimplemented
env.cMix.get = { nil }
env.fileTransfer.set = { didSetFileTransfer.append($0) }
env.backup.set = { didSetBackup.append($0) }
env.ud.set = { didSetUD.append($0) }
env.e2e.set = { didSetE2E.append($0) }
env.cMix.set = { didSetCMix.append($0) }
env.isListeningForMessages.set = { didSetIsListeningForMessages.append($0) }
env.serviceList.set = { didSetServiceList.append($0) }
env.passwordStorage.remove = { throw error }
let destroy: MessengerDestroy = .live(env)
XCTAssertThrowsError(try destroy()) { err in
XCTAssertEqual(err as? Error, error)
}
XCTAssertNoDifference(didSetFileTransfer.map { $0 == nil }, [true])
XCTAssertNoDifference(didSetBackup.map { $0 == nil }, [true])
XCTAssertNoDifference(didSetUD.map { $0 == nil }, [true])
XCTAssertNoDifference(didSetE2E.map { $0 == nil }, [true])
XCTAssertNoDifference(didSetCMix.map { $0 == nil }, [true])
XCTAssertNoDifference(didSetIsListeningForMessages, [false])
XCTAssertNoDifference(didSetServiceList.map { $0 == nil }, [true])