diff --git a/.swiftpm/xcode/xcshareddata/xcschemes/elixxir-dapps-sdk-swift-Package.xcscheme b/.swiftpm/xcode/xcshareddata/xcschemes/elixxir-dapps-sdk-swift-Package.xcscheme index 7818f7363eeee23304e1aece2235ce6bbaa19fb8..4dad91ad903da2bc783bca223adbadda48954c7d 100644 --- a/.swiftpm/xcode/xcshareddata/xcschemes/elixxir-dapps-sdk-swift-Package.xcscheme +++ b/.swiftpm/xcode/xcshareddata/xcschemes/elixxir-dapps-sdk-swift-Package.xcscheme @@ -36,10 +36,10 @@ </BuildActionEntry> <BuildActionEntry buildForTesting = "YES" - buildForRunning = "YES" + buildForRunning = "NO" buildForProfiling = "NO" buildForArchiving = "NO" - buildForAnalyzing = "YES"> + buildForAnalyzing = "NO"> <BuildableReference BuildableIdentifier = "primary" BlueprintIdentifier = "XXClientTests" @@ -50,10 +50,10 @@ </BuildActionEntry> <BuildActionEntry buildForTesting = "YES" - buildForRunning = "YES" + buildForRunning = "NO" buildForProfiling = "NO" buildForArchiving = "NO" - buildForAnalyzing = "YES"> + buildForAnalyzing = "NO"> <BuildableReference BuildableIdentifier = "primary" BlueprintIdentifier = "XXMessengerClientTests" diff --git a/Sources/XXClient/E2E/E2E.swift b/Sources/XXClient/E2E/E2E.swift index 608ccc6e3703e8818fff89705d5e822fae758916..7dea50476dee3b44b1d3172c243327991b19eff6 100644 --- a/Sources/XXClient/E2E/E2E.swift +++ b/Sources/XXClient/E2E/E2E.swift @@ -10,6 +10,7 @@ public struct E2E { public var getUdAddressFromNdf: E2EGetUdAddressFromNdf public var getUdCertFromNdf: E2EGetUdCertFromNdf public var getUdContactFromNdf: E2EGetUdContactFromNdf + public var getUdEnvironmentFromNdf: E2EGetUdEnvironmentFromNdf public var payloadSize: E2EPayloadSize public var partitionSize: E2EPartitionSize public var addPartnerCallback: E2EAddPartnerCallback @@ -40,6 +41,7 @@ extension E2E { getUdAddressFromNdf: .live(bindingsE2E), getUdCertFromNdf: .live(bindingsE2E), getUdContactFromNdf: .live(bindingsE2E), + getUdEnvironmentFromNdf: .live(bindingsE2E), payloadSize: .live(bindingsE2E), partitionSize: .live(bindingsE2E), addPartnerCallback: .live(bindingsE2E), @@ -71,6 +73,7 @@ extension E2E { getUdAddressFromNdf: .unimplemented, getUdCertFromNdf: .unimplemented, getUdContactFromNdf: .unimplemented, + getUdEnvironmentFromNdf: .unimplemented, payloadSize: .unimplemented, partitionSize: .unimplemented, addPartnerCallback: .unimplemented, diff --git a/Sources/XXClient/E2E/Functions/E2EGetUdEnvironmentFromNdf.swift b/Sources/XXClient/E2E/Functions/E2EGetUdEnvironmentFromNdf.swift new file mode 100644 index 0000000000000000000000000000000000000000..547a1b632187fbb94ddf7ea0196092d6fd8f1c53 --- /dev/null +++ b/Sources/XXClient/E2E/Functions/E2EGetUdEnvironmentFromNdf.swift @@ -0,0 +1,28 @@ +import Bindings +import XCTestDynamicOverlay + +public struct E2EGetUdEnvironmentFromNdf { + public var run: () throws -> UDEnvironment + + public func callAsFunction() throws -> UDEnvironment { + try run() + } +} + +extension E2EGetUdEnvironmentFromNdf { + public static func live(_ bindingsE2E: BindingsE2e) -> E2EGetUdEnvironmentFromNdf { + E2EGetUdEnvironmentFromNdf { + UDEnvironment( + address: E2EGetUdAddressFromNdf.live(bindingsE2E)(), + cert: E2EGetUdCertFromNdf.live(bindingsE2E)(), + contact: try E2EGetUdContactFromNdf.live(bindingsE2E)() + ) + } + } +} + +extension E2EGetUdEnvironmentFromNdf { + public static let unimplemented = E2EGetUdEnvironmentFromNdf( + run: XCTUnimplemented("\(Self.self)") + ) +} diff --git a/Sources/XXClient/Functions/NewOrLoadUd.swift b/Sources/XXClient/Functions/NewOrLoadUd.swift index f0a69b0271c1253044db9cddbe8480b35ca6e3dd..35d26b68306b0f1519bc8c57dbab6414b3d5e2f8 100644 --- a/Sources/XXClient/Functions/NewOrLoadUd.swift +++ b/Sources/XXClient/Functions/NewOrLoadUd.swift @@ -3,6 +3,20 @@ import XCTestDynamicOverlay public struct NewOrLoadUd { public struct Params: Equatable { + public init( + e2eId: Int, + username: String?, + registrationValidationSignature: Data?, + environment: UDEnvironment + ) { + self.e2eId = e2eId + self.username = username + self.registrationValidationSignature = registrationValidationSignature + self.cert = environment.cert + self.contact = environment.contact + self.address = environment.address + } + public init( e2eId: Int, username: String?, diff --git a/Sources/XXClient/Functions/NewUdManagerFromBackup.swift b/Sources/XXClient/Functions/NewUdManagerFromBackup.swift index 7b68fb8a2faa41d53eaa01879e74a4442b13d3ec..3f94037abbb4c143943e76aff57f5e67f1f3c4ce 100644 --- a/Sources/XXClient/Functions/NewUdManagerFromBackup.swift +++ b/Sources/XXClient/Functions/NewUdManagerFromBackup.swift @@ -3,6 +3,16 @@ import XCTestDynamicOverlay public struct NewUdManagerFromBackup { public struct Params: Equatable { + public init( + e2eId: Int, + environment: UDEnvironment + ) { + self.e2eId = e2eId + self.cert = environment.cert + self.contact = environment.contact + self.address = environment.address + } + public init( e2eId: Int, cert: Data, diff --git a/Sources/XXClient/Models/UDEnvironment.swift b/Sources/XXClient/Models/UDEnvironment.swift new file mode 100644 index 0000000000000000000000000000000000000000..3f8a02d3ea4950caa8724a0f434e365ce61486d5 --- /dev/null +++ b/Sources/XXClient/Models/UDEnvironment.swift @@ -0,0 +1,17 @@ +import Foundation + +public struct UDEnvironment: Equatable, Codable { + public init( + address: String, + cert: Data, + contact: Data + ) { + self.address = address + self.cert = cert + self.contact = contact + } + + public var address: String + public var cert: Data + public var contact: Data +} diff --git a/Sources/XXMessengerClient/Messenger/Functions/MessengerLogIn.swift b/Sources/XXMessengerClient/Messenger/Functions/MessengerLogIn.swift index b82e808a3fc8e9bb3daf97bd07df9fbc5093efe8..70cfa3ce3483a3879b4a02bd3ee6d88983716fe5 100644 --- a/Sources/XXMessengerClient/Messenger/Functions/MessengerLogIn.swift +++ b/Sources/XXMessengerClient/Messenger/Functions/MessengerLogIn.swift @@ -28,9 +28,7 @@ extension MessengerLogIn { e2eId: e2e.getId(), username: nil, registrationValidationSignature: nil, - cert: env.udCert ?? e2e.getUdCertFromNdf(), - contact: env.udContact ?? (try e2e.getUdContactFromNdf()), - address: env.udAddress ?? e2e.getUdAddressFromNdf() + environment: env.udEnvironment ?? (try e2e.getUdEnvironmentFromNdf()) ), follower: .init { cMix.networkFollowerStatus() diff --git a/Sources/XXMessengerClient/Messenger/Functions/MessengerRegister.swift b/Sources/XXMessengerClient/Messenger/Functions/MessengerRegister.swift index 6baad0eb3875b59035e007d92394c9db9e6e589e..4ac83890bdcdef424f1f4292ad6796ff271cce12 100644 --- a/Sources/XXMessengerClient/Messenger/Functions/MessengerRegister.swift +++ b/Sources/XXMessengerClient/Messenger/Functions/MessengerRegister.swift @@ -30,9 +30,7 @@ extension MessengerRegister { e2eId: e2e.getId(), username: username, registrationValidationSignature: cMix.getReceptionRegistrationValidationSignature(), - cert: env.udCert ?? e2e.getUdCertFromNdf(), - contact: env.udContact ?? (try e2e.getUdContactFromNdf()), - address: env.udAddress ?? e2e.getUdAddressFromNdf() + environment: env.udEnvironment ?? (try e2e.getUdEnvironmentFromNdf()) ), follower: .init { cMix.networkFollowerStatus() diff --git a/Sources/XXMessengerClient/Messenger/Functions/MessengerRestoreBackup.swift b/Sources/XXMessengerClient/Messenger/Functions/MessengerRestoreBackup.swift index e1f0ec10df6df4a601153cc4ecc6e8c80cb0419c..0e5387a3add343ae79d27aed5eaecf752f9fb6fc 100644 --- a/Sources/XXMessengerClient/Messenger/Functions/MessengerRestoreBackup.swift +++ b/Sources/XXMessengerClient/Messenger/Functions/MessengerRestoreBackup.swift @@ -62,9 +62,7 @@ extension MessengerRestoreBackup { let ud = try env.newUdManagerFromBackup( params: NewUdManagerFromBackup.Params( e2eId: e2e.getId(), - cert: env.udCert ?? e2e.getUdCertFromNdf(), - contact: env.udContact ?? (try e2e.getUdContactFromNdf()), - address: env.udAddress ?? e2e.getUdAddressFromNdf() + environment: env.udEnvironment ?? (try e2e.getUdEnvironmentFromNdf()) ), follower: UdNetworkStatus { cMix.networkFollowerStatus() } ) diff --git a/Sources/XXMessengerClient/Messenger/MessengerEnvironment.swift b/Sources/XXMessengerClient/Messenger/MessengerEnvironment.swift index f37764da5aa19b611aec5322dafa5634ec8d05e3..52af520c6df5dc21e600d9086a85a36b1d640d68 100644 --- a/Sources/XXMessengerClient/Messenger/MessengerEnvironment.swift +++ b/Sources/XXMessengerClient/Messenger/MessengerEnvironment.swift @@ -37,9 +37,7 @@ public struct MessengerEnvironment { public var sleep: (TimeInterval) -> Void public var storageDir: String public var ud: Stored<UserDiscovery?> - public var udAddress: String? - public var udCert: Data? - public var udContact: Data? + public var udEnvironment: UDEnvironment? } extension MessengerEnvironment { @@ -85,9 +83,7 @@ extension MessengerEnvironment { sleep: { Thread.sleep(forTimeInterval: $0) }, storageDir: MessengerEnvironment.defaultStorageDir, ud: .inMemory(), - udAddress: nil, - udCert: nil, - udContact: nil + udEnvironment: nil ) } } @@ -128,8 +124,6 @@ extension MessengerEnvironment { sleep: XCTUnimplemented("\(Self.self).sleep"), storageDir: "unimplemented", ud: .unimplemented(), - udAddress: nil, - udCert: nil, - udContact: nil + udEnvironment: nil ) } diff --git a/Tests/XXMessengerClientTests/Messenger/Functions/MessengerLogInTests.swift b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerLogInTests.swift index db4e9742a0c6d5160c144243443d68c2babce8bc..26dd2da85798c9e0a50ecac9e05665a7c55ba780 100644 --- a/Tests/XXMessengerClientTests/Messenger/Functions/MessengerLogInTests.swift +++ b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerLogInTests.swift @@ -11,10 +11,12 @@ final class MessengerLogInTests: XCTestCase { let e2eId = 1234 let networkFollowerStatus: NetworkFollowerStatus = .stopped - let udCertFromNDF = "ndf-ud-cert".data(using: .utf8)! - let udContactFromNDF = "ndf-ud-contact".data(using: .utf8)! - let udAddressFromNDF = "ndf-ud-address" - + let udEnvironmentFromNDF = UDEnvironment( + address: "ndf-ud-address", + cert: "ndf-ud-cert".data(using: .utf8)!, + contact: "ndf-ud-contact".data(using: .utf8)! + ) + var env: MessengerEnvironment = .unimplemented env.cMix.get = { var cMix: CMix = .unimplemented @@ -24,15 +26,11 @@ final class MessengerLogInTests: XCTestCase { env.e2e.get = { var e2e: E2E = .unimplemented e2e.getId.run = { e2eId } - e2e.getUdCertFromNdf.run = { udCertFromNDF } - e2e.getUdContactFromNdf.run = { udContactFromNDF } - e2e.getUdAddressFromNdf.run = { udAddressFromNDF } + e2e.getUdEnvironmentFromNdf.run = { udEnvironmentFromNDF } return e2e } env.ud.set = { didSetUD.append($0) } - env.udCert = nil - env.udContact = nil - env.udAddress = nil + env.udEnvironment = nil env.newOrLoadUd.run = { params, follower in didNewOrLoadUDWithParams.append(params) didNewOrLoadUDWithFollower.append(follower) @@ -45,9 +43,7 @@ final class MessengerLogInTests: XCTestCase { e2eId: e2eId, username: nil, registrationValidationSignature: nil, - cert: udCertFromNDF, - contact: udContactFromNDF, - address: udAddressFromNDF + environment: udEnvironmentFromNDF )]) XCTAssertEqual(didNewOrLoadUDWithFollower.count, 1) XCTAssertEqual( @@ -62,9 +58,11 @@ final class MessengerLogInTests: XCTestCase { var didSetUD: [UserDiscovery?] = [] let e2eId = 1234 - let altUdCert = "alt-ud-cert".data(using: .utf8)! - let altUdContact = "alt-ud-contact".data(using: .utf8)! - let altUdAddress = "alt-ud-address" + let udEnvironment = UDEnvironment( + address: "alt-ud-address", + cert: "alt-ud-cert".data(using: .utf8)!, + contact: "alt-ud-contact".data(using: .utf8)! + ) var env: MessengerEnvironment = .unimplemented env.cMix.get = { @@ -78,9 +76,7 @@ final class MessengerLogInTests: XCTestCase { return e2e } env.ud.set = { didSetUD.append($0) } - env.udCert = altUdCert - env.udContact = altUdContact - env.udAddress = altUdAddress + env.udEnvironment = udEnvironment env.newOrLoadUd.run = { params, _ in didNewOrLoadUDWithParams.append(params) return .unimplemented @@ -92,9 +88,7 @@ final class MessengerLogInTests: XCTestCase { e2eId: e2eId, username: nil, registrationValidationSignature: nil, - cert: altUdCert, - contact: altUdContact, - address: altUdAddress + environment: udEnvironment )]) XCTAssertEqual(didSetUD.compactMap { $0 }.count, 1) } @@ -139,12 +133,10 @@ final class MessengerLogInTests: XCTestCase { env.e2e.get = { var e2e: E2E = .unimplemented e2e.getId.run = { 1234 } - e2e.getUdCertFromNdf.run = { "ndf-ud-cert".data(using: .utf8)! } - e2e.getUdContactFromNdf.run = { throw error } + e2e.getUdEnvironmentFromNdf.run = { throw error } return e2e } - env.udCert = nil - env.udContact = nil + env.udEnvironment = nil let logIn: MessengerLogIn = .live(env) XCTAssertThrowsError(try logIn()) { err in @@ -167,9 +159,11 @@ final class MessengerLogInTests: XCTestCase { e2e.getId.run = { 1234 } return e2e } - env.udCert = "ud-cert".data(using: .utf8)! - env.udContact = "ud-contact".data(using: .utf8)! - env.udAddress = "ud-address" + env.udEnvironment = UDEnvironment( + address: "ud-address", + cert: "ud-cert".data(using: .utf8)!, + contact: "ud-contact".data(using: .utf8)! + ) env.newOrLoadUd.run = { _, _ in throw error } let logIn: MessengerLogIn = .live(env) diff --git a/Tests/XXMessengerClientTests/Messenger/Functions/MessengerRegisterTests.swift b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerRegisterTests.swift index 35d078c2a38314245dbd1ede4517d82022ef1507..2ec30071accc8ef475a3e89134221c76e26bc4da 100644 --- a/Tests/XXMessengerClientTests/Messenger/Functions/MessengerRegisterTests.swift +++ b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerRegisterTests.swift @@ -12,9 +12,11 @@ final class MessengerRegisterTests: XCTestCase { let e2eId = 1234 let networkFollowerStatus: NetworkFollowerStatus = .stopped let registrationSignature = "registration-signature".data(using: .utf8)! - let udCertFromNDF = "ndf-ud-cert".data(using: .utf8)! - let udContactFromNDF = "ndf-ud-contact".data(using: .utf8)! - let udAddressFromNDF = "ndf-ud-address" + let udEnvironmentFromNDF = UDEnvironment( + address: "ndf-ud-address", + cert: "ndf-ud-cert".data(using: .utf8)!, + contact: "ndf-ud-contact".data(using: .utf8)! + ) let username = "new-user-name" var env: MessengerEnvironment = .unimplemented @@ -29,15 +31,11 @@ final class MessengerRegisterTests: XCTestCase { env.e2e.get = { var e2e: E2E = .unimplemented e2e.getId.run = { e2eId } - e2e.getUdCertFromNdf.run = { udCertFromNDF } - e2e.getUdContactFromNdf.run = { udContactFromNDF } - e2e.getUdAddressFromNdf.run = { udAddressFromNDF } + e2e.getUdEnvironmentFromNdf.run = { udEnvironmentFromNDF } return e2e } env.ud.set = { didSetUD.append($0) } - env.udCert = nil - env.udContact = nil - env.udAddress = nil + env.udEnvironment = nil env.newOrLoadUd.run = { params, follower in didNewOrLoadUDWithParams.append(params) didNewOrLoadUDWithFollower.append(follower) @@ -50,9 +48,7 @@ final class MessengerRegisterTests: XCTestCase { e2eId: e2eId, username: username, registrationValidationSignature: registrationSignature, - cert: udCertFromNDF, - contact: udContactFromNDF, - address: udAddressFromNDF + environment: udEnvironmentFromNDF )]) XCTAssertEqual(didNewOrLoadUDWithFollower.count, 1) XCTAssertEqual( @@ -68,9 +64,11 @@ final class MessengerRegisterTests: XCTestCase { let e2eId = 1234 let registrationSignature = "registration-signature".data(using: .utf8)! - let altUdCert = "alt-ud-cert".data(using: .utf8)! - let altUdContact = "alt-ud-contact".data(using: .utf8)! - let altUdAddress = "alt-ud-address" + let udEnvironment = UDEnvironment( + address: "alt-ud-address", + cert: "alt-ud-cert".data(using: .utf8)!, + contact: "alt-ud-contact".data(using: .utf8)! + ) let username = "new-user-name" var env: MessengerEnvironment = .unimplemented @@ -88,9 +86,7 @@ final class MessengerRegisterTests: XCTestCase { return e2e } env.ud.set = { didSetUD.append($0) } - env.udCert = altUdCert - env.udContact = altUdContact - env.udAddress = altUdAddress + env.udEnvironment = udEnvironment env.newOrLoadUd.run = { params, _ in didNewOrLoadUDWithParams.append(params) return .unimplemented @@ -102,9 +98,7 @@ final class MessengerRegisterTests: XCTestCase { e2eId: e2eId, username: username, registrationValidationSignature: registrationSignature, - cert: altUdCert, - contact: altUdContact, - address: altUdAddress + environment: udEnvironment )]) XCTAssertEqual(didSetUD.compactMap { $0 }.count, 1) } @@ -152,12 +146,10 @@ final class MessengerRegisterTests: XCTestCase { env.e2e.get = { var e2e: E2E = .unimplemented e2e.getId.run = { 1234 } - e2e.getUdCertFromNdf.run = { "ndf-ud-cert".data(using: .utf8)! } - e2e.getUdContactFromNdf.run = { throw error } + e2e.getUdEnvironmentFromNdf.run = { throw error } return e2e } - env.udCert = nil - env.udContact = nil + env.udEnvironment = nil let register: MessengerRegister = .live(env) XCTAssertThrowsError(try register(username: "new-user-name")) { err in @@ -183,9 +175,11 @@ final class MessengerRegisterTests: XCTestCase { e2e.getId.run = { 1234 } return e2e } - env.udCert = "ud-cert".data(using: .utf8)! - env.udContact = "ud-contact".data(using: .utf8)! - env.udAddress = "ud-address" + env.udEnvironment = UDEnvironment( + address: "ud-address", + cert: "ud-cert".data(using: .utf8)!, + contact: "ud-contact".data(using: .utf8)! + ) env.newOrLoadUd.run = { _, _ in throw error } let register: MessengerRegister = .live(env) diff --git a/Tests/XXMessengerClientTests/Messenger/Functions/MessengerRestoreBackupTests.swift b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerRestoreBackupTests.swift index 7e55ddc330cda16e776b36db8abc796e24b9a3d4..4f819b47393545d46caffb71097dc92ff2f08337 100644 --- a/Tests/XXMessengerClientTests/Messenger/Functions/MessengerRestoreBackupTests.swift +++ b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerRestoreBackupTests.swift @@ -26,9 +26,11 @@ final class MessengerRestoreBackupTests: XCTestCase { dhKeyPrivate: "reception-dhKeyPrivate".data(using: .utf8)!, e2eGrp: "reception-e2eGrp".data(using: .utf8)! ) - let udContactFromNdf = "ud-contact".data(using: .utf8)! - let udCertFromNdf = "ud-cert".data(using: .utf8)! - let udAddressFromNdf = "ud-address" + let udEnvironmentFromNDF = UDEnvironment( + address: "ud-address", + cert: "ud-cert".data(using: .utf8)!, + contact: "ud-contact".data(using: .utf8)! + ) var caughtActions: [CaughtAction] = [] @@ -81,9 +83,7 @@ final class MessengerRestoreBackupTests: XCTestCase { )) var e2e: E2E = .unimplemented e2e.getId.run = { e2eId } - e2e.getUdCertFromNdf.run = { udCertFromNdf } - e2e.getUdContactFromNdf.run = { udContactFromNdf } - e2e.getUdAddressFromNdf.run = { udAddressFromNdf } + e2e.getUdEnvironmentFromNdf.run = { udEnvironmentFromNDF } return e2e } env.newUdManagerFromBackup.run = { params, _ in @@ -151,9 +151,7 @@ final class MessengerRestoreBackupTests: XCTestCase { ), .didNewUdManagerFromBackup(params: .init( e2eId: e2eId, - cert: udCertFromNdf, - contact: udContactFromNdf, - address: udAddressFromNdf + environment: udEnvironmentFromNDF )), .didSetUD, ])