import Foundation @testable import AuthenticatorBridgeKit class MockAuthenticatorKeychainService { // MARK: Properties var addAttributes: CFDictionary? var addResult: Result = .success(()) var deleteQueries = [CFDictionary]() var deleteResult: Result = .success(()) var searchQuery: CFDictionary? var searchResult: Result = .success(nil) } // MARK: KeychainService extension MockAuthenticatorKeychainService: AuthenticatorKeychainService { func add(attributes: CFDictionary) throws { addAttributes = attributes try addResult.get() } func delete(query: CFDictionary) throws { deleteQueries.append(query) try deleteResult.get() } func search(query: CFDictionary) throws -> AnyObject? { searchQuery = query return try searchResult.get() } } extension MockAuthenticatorKeychainService { func setSearchResultData(_ data: Data) { let dictionary = [kSecValueData as String: data] searchResult = .success(dictionary as AnyObject) } }