From 569c862eab1601dd674efc96c56525184ff83320 Mon Sep 17 00:00:00 2001 From: Dariusz Rybicki <dariusz@elixxir.io> Date: Fri, 16 Sep 2022 18:09:11 +0200 Subject: [PATCH] Add SearchUD.Params struct --- Sources/XXClient/Functions/SearchUD.swift | 40 +++++++++++++------ .../Functions/MessengerSearchContacts.swift | 12 +++--- .../Functions/MessengerVerifyContact.swift | 12 +++--- .../MessengerSearchContactsTests.swift | 22 +++------- .../MessengerVerifyContactTests.swift | 31 ++++---------- 5 files changed, 53 insertions(+), 64 deletions(-) diff --git a/Sources/XXClient/Functions/SearchUD.swift b/Sources/XXClient/Functions/SearchUD.swift index 9f82808d..aa7c8b81 100644 --- a/Sources/XXClient/Functions/SearchUD.swift +++ b/Sources/XXClient/Functions/SearchUD.swift @@ -2,30 +2,44 @@ import Bindings import XCTestDynamicOverlay public struct SearchUD { - public var run: (Int, Contact, [Fact], Data, UdSearchCallback) throws -> SingleUseSendReport + public struct Params: Equatable { + public init( + e2eId: Int, + udContact: Contact, + facts: [Fact], + singleRequestParamsJSON: Data = GetSingleUseParams.liveDefault() + ) { + self.e2eId = e2eId + self.udContact = udContact + self.facts = facts + self.singleRequestParamsJSON = singleRequestParamsJSON + } + + public var e2eId: Int + public var udContact: Contact + public var facts: [Fact] + public var singleRequestParamsJSON: Data + } + + public var run: (Params, UdSearchCallback) throws -> SingleUseSendReport public func callAsFunction( - e2eId: Int, - udContact: Contact, - facts: [Fact], - singleRequestParamsJSON: Data = GetSingleUseParams.liveDefault(), + params: Params, callback: UdSearchCallback ) throws -> SingleUseSendReport { - try run(e2eId, udContact, facts, singleRequestParamsJSON, callback) + try run(params, callback) } } extension SearchUD { - public static let live = SearchUD { - e2eId, udContact, facts, singleRequestParamsJSON, callback in - + public static let live = SearchUD { params, callback in var error: NSError? let reportData = BindingsSearchUD( - e2eId, - udContact.data, + params.e2eId, + params.udContact.data, callback.makeBindingsUdSearchCallback(), - try facts.encode(), - singleRequestParamsJSON, + try params.facts.encode(), + params.singleRequestParamsJSON, &error ) if let error = error { diff --git a/Sources/XXMessengerClient/Messenger/Functions/MessengerSearchContacts.swift b/Sources/XXMessengerClient/Messenger/Functions/MessengerSearchContacts.swift index 94f55c27..46b2007c 100644 --- a/Sources/XXMessengerClient/Messenger/Functions/MessengerSearchContacts.swift +++ b/Sources/XXMessengerClient/Messenger/Functions/MessengerSearchContacts.swift @@ -43,11 +43,13 @@ extension MessengerSearchContacts { var result: Result<[Contact], Swift.Error>! let semaphore = DispatchSemaphore(value: 0) _ = try env.searchUD( - e2eId: e2e.getId(), - udContact: try ud.getContact(), - facts: query.facts, - singleRequestParamsJSON: env.getSingleUseParams(), - callback: .init { searchResult in + params: SearchUD.Params( + e2eId: e2e.getId(), + udContact: try ud.getContact(), + facts: query.facts, + singleRequestParamsJSON: env.getSingleUseParams() + ), + callback: UdSearchCallback { searchResult in switch searchResult { case .success(let contacts): result = .success(contacts) diff --git a/Sources/XXMessengerClient/Messenger/Functions/MessengerVerifyContact.swift b/Sources/XXMessengerClient/Messenger/Functions/MessengerVerifyContact.swift index 2a8d176b..afb13e7c 100644 --- a/Sources/XXMessengerClient/Messenger/Functions/MessengerVerifyContact.swift +++ b/Sources/XXMessengerClient/Messenger/Functions/MessengerVerifyContact.swift @@ -47,11 +47,13 @@ extension MessengerVerifyContact { var searchResult: Result<[Contact], NSError>! let semaphore = DispatchSemaphore(value: 0) _ = try env.searchUD( - e2eId: e2e.getId(), - udContact: try ud.getContact(), - facts: facts, - singleRequestParamsJSON: env.getSingleUseParams(), - callback: .init { result in + params: SearchUD.Params( + e2eId: e2e.getId(), + udContact: try ud.getContact(), + facts: facts, + singleRequestParamsJSON: env.getSingleUseParams() + ), + callback: UdSearchCallback { result in searchResult = result semaphore.signal() } diff --git a/Tests/XXMessengerClientTests/Messenger/Functions/MessengerSearchContactsTests.swift b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerSearchContactsTests.swift index f3ab082c..2b44f19e 100644 --- a/Tests/XXMessengerClientTests/Messenger/Functions/MessengerSearchContactsTests.swift +++ b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerSearchContactsTests.swift @@ -5,14 +5,7 @@ import XXClient final class MessengerSearchContactsTests: XCTestCase { func testSearch() throws { - struct SearchUdParams: Equatable { - var e2eId: Int - var udContact: Contact - var facts: [Fact] - var singleRequestParamsJSON: Data - } - - var didSearchUdWithParams: [SearchUdParams] = [] + var didSearchUdWithParams: [SearchUD.Params] = [] var env: MessengerEnvironment = .unimplemented env.e2e.get = { @@ -26,13 +19,8 @@ final class MessengerSearchContactsTests: XCTestCase { return ud } env.getSingleUseParams.run = { "single-use-params".data(using: .utf8)! } - env.searchUD.run = { e2eId, udContact, facts, singleRequestParamsJSON, callback in - didSearchUdWithParams.append(.init( - e2eId: e2eId, - udContact: udContact, - facts: facts, - singleRequestParamsJSON: singleRequestParamsJSON - )) + env.searchUD.run = { params, callback in + didSearchUdWithParams.append(params) callback.handle(.success([ .unimplemented("contact-1".data(using: .utf8)!), .unimplemented("contact-2".data(using: .utf8)!), @@ -101,7 +89,7 @@ final class MessengerSearchContactsTests: XCTestCase { return ud } env.getSingleUseParams.run = { Data() } - env.searchUD.run = { _, _, _, _, _ in throw error } + env.searchUD.run = { _, _ in throw error } let search: MessengerSearchContacts = .live(env) @@ -126,7 +114,7 @@ final class MessengerSearchContactsTests: XCTestCase { return ud } env.getSingleUseParams.run = { Data() } - env.searchUD.run = { _, _, _, _, callback in + env.searchUD.run = { _, callback in callback.handle(.failure(error as NSError)) return SingleUseSendReport(rounds: [], roundURL: "", ephId: 0, receptionId: Data()) } diff --git a/Tests/XXMessengerClientTests/Messenger/Functions/MessengerVerifyContactTests.swift b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerVerifyContactTests.swift index 2f4e8a84..92e4142a 100644 --- a/Tests/XXMessengerClientTests/Messenger/Functions/MessengerVerifyContactTests.swift +++ b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerVerifyContactTests.swift @@ -28,12 +28,6 @@ final class MessengerVerifyContactTests: XCTestCase { } func testVerifyContactWithoutFacts() throws { - struct LookupUDParams: Equatable { - var e2eId: Int - var udContact: Contact - var lookupId: Data - var singleRequestParamsJSON: Data - } struct VerifyOwnershipParams: Equatable { var received: Contact var verified: Contact @@ -124,18 +118,12 @@ final class MessengerVerifyContactTests: XCTestCase { } func testVerifyContactWithFacts() throws { - struct SearchUDParams: Equatable { - var e2eId: Int - var udContact: Contact - var facts: [Fact] - var singleRequestParamsJSON: Data - } struct VerifyOwnershipParams: Equatable { var received: Contact var verified: Contact var e2eId: Int } - var didSearchUDWithParams: [SearchUDParams] = [] + var didSearchUDWithParams: [SearchUD.Params] = [] var didVerifyOwnershipWithParams: [VerifyOwnershipParams] = [] var contact = Contact.unimplemented("contact-data".data(using: .utf8)!) @@ -169,13 +157,8 @@ final class MessengerVerifyContactTests: XCTestCase { return ud } env.getSingleUseParams.run = { "single-use-params".data(using: .utf8)! } - env.searchUD.run = { e2eId, udContact, facts, singleRequestParamsJSON, callback in - didSearchUDWithParams.append(.init( - e2eId: e2eId, - udContact: udContact, - facts: facts, - singleRequestParamsJSON: singleRequestParamsJSON - )) + env.searchUD.run = { params, callback in + didSearchUDWithParams.append(params) callback.handle(.success([foundContact])) return SingleUseSendReport(rounds: [], roundURL: "", ephId: 0, receptionId: Data()) } @@ -221,7 +204,7 @@ final class MessengerVerifyContactTests: XCTestCase { return ud } env.getSingleUseParams.run = { "single-use-params".data(using: .utf8)! } - env.searchUD.run = { e2eId, udContact, facts, singleRequestParamsJSON, callback in + env.searchUD.run = { _, callback in callback.handle(.success([])) return SingleUseSendReport(rounds: [], roundURL: "", ephId: 0, receptionId: Data()) } @@ -257,7 +240,7 @@ final class MessengerVerifyContactTests: XCTestCase { return ud } env.getSingleUseParams.run = { "single-use-params".data(using: .utf8)! } - env.searchUD.run = { _, _, _, _, callback in + env.searchUD.run = { _, callback in callback.handle(.failure(searchFailure)) return SingleUseSendReport(rounds: [], roundURL: "", ephId: 0, receptionId: Data()) } @@ -291,7 +274,7 @@ final class MessengerVerifyContactTests: XCTestCase { return ud } env.getSingleUseParams.run = { "single-use-params".data(using: .utf8)! } - env.searchUD.run = { _, _, _, _, callback in + env.searchUD.run = { _, callback in callback.handle(.success([.unimplemented("found-contact-data".data(using: .utf8)!)])) return SingleUseSendReport(rounds: [], roundURL: "", ephId: 0, receptionId: Data()) } @@ -330,7 +313,7 @@ final class MessengerVerifyContactTests: XCTestCase { return ud } env.getSingleUseParams.run = { "single-use-params".data(using: .utf8)! } - env.searchUD.run = { _, _, _, _, callback in + env.searchUD.run = { _, callback in callback.handle(.success([.unimplemented("found-contact-data".data(using: .utf8)!)])) return SingleUseSendReport(rounds: [], roundURL: "", ephId: 0, receptionId: Data()) } -- GitLab