Newer
Older
import CustomDump
import XCTest
import XXClient
@testable import XXMessengerClient
func testLoad() throws {
struct DidLoadCMix: Equatable {
var storageDir: String
var password: Data
var cMixParamsJSON: Data
}
var didLoadCMix: [DidLoadCMix] = []
let storageDir = "test-storage-dir"
let password = "password".data(using: .utf8)!
let cMixParams = "cmix-params".data(using: .utf8)!
env.passwordStorage.load = { password }
env.getCMixParams.run = { cMixParams }
env.loadCMix.run = { storageDir, password, cMixParamsJSON in
didLoadCMix.append(.init(
storageDir: storageDir,
password: password,
cMixParamsJSON: cMixParamsJSON
))
return .unimplemented
}
try load()
XCTAssertNoDifference(didLoadCMix, [
DidLoadCMix(
storageDir: storageDir,
password: password,
cMixParamsJSON: cMixParams
)
])
XCTAssertEqual(didSetCMix.compactMap{ $0 }.count, 1)
env.passwordStorage.load = { throw PasswordStorage.MissingPasswordError() }
XCTAssertThrowsError(try load()) { err in
XCTAssertEqual(
err as? PasswordStorage.MissingPasswordError,
PasswordStorage.MissingPasswordError()
)
}
}
func testLoadCMixFailure() {
struct Error: Swift.Error, Equatable {}
let error = Error()
env.passwordStorage.load = { "password".data(using: .utf8)! }
env.getCMixParams.run = { "cmix-params".data(using: .utf8)! }
env.loadCMix.run = { _, _, _ in throw error }
XCTAssertThrowsError(try load()) { err in
XCTAssertEqual(err as? Error, error)
}
}
}