From d7b2409b4e394eda318134276e4e881f939f3a38 Mon Sep 17 00:00:00 2001 From: Artur Guseinov Date: Mon, 27 Feb 2023 18:32:57 +0500 Subject: [PATCH] Unit tests fixed --- Tests/ChatTests/RegistryServiceTests.swift | 21 ++++++++++++++++--- Tests/RelayerTests/AuthTests/JWTTests.swift | 4 ++-- .../NetworkingInteractorMock.swift | 10 ++++----- .../AppProposalServiceTests.swift | 6 +++--- .../ApproveEngineTests.swift | 4 ++-- 5 files changed, 30 insertions(+), 15 deletions(-) diff --git a/Tests/ChatTests/RegistryServiceTests.swift b/Tests/ChatTests/RegistryServiceTests.swift index 749e90742..55c146430 100644 --- a/Tests/ChatTests/RegistryServiceTests.swift +++ b/Tests/ChatTests/RegistryServiceTests.swift @@ -8,6 +8,7 @@ import WalletConnectKMS @testable import WalletConnectIdentity final class RegistryServiceTests: XCTestCase { + var resubscriptionService: ResubscriptionService! var identityClient: IdentityClient! var identityStorage: IdentityStorage! var networkService: IdentityNetwotkServiceMock! @@ -37,7 +38,18 @@ final class RegistryServiceTests: XCTestCase { iatProvader: DefaultIATProvider(), messageFormatter: SIWECacaoFormatter() ) - identityClient = IdentityClient(identityService: identitySevice, identityStorage: identityStorage, networkingInteractor: networkingInteractor, kms: kms, logger: ConsoleLoggerMock()) + identityClient = IdentityClient(identityService: identitySevice, identityStorage: identityStorage, logger: ConsoleLoggerMock()) + + let storage = RuntimeKeyValueStorage() + let accountService = AccountService(currentAccount: account) + let chatStorage = ChatStorage( + accountService: accountService, + messageStore: .init(storage: storage, identifier: ""), + receivedInviteStore: .init(storage: storage, identifier: ""), + sentInviteStore: .init(storage: storage, identifier: ""), + threadStore: .init(storage: storage, identifier: "") + ) + resubscriptionService = ResubscriptionService(networkingInteractor: networkingInteractor, kms: kms, accountService: accountService, chatStorage: chatStorage, logger: ConsoleLoggerMock()) } func testRegister() async throws { @@ -53,7 +65,8 @@ final class RegistryServiceTests: XCTestCase { XCTAssertTrue(networkingInteractor.subscriptions.isEmpty) _ = try await identityClient.register(account: account, onSign: onSign) - try await identityClient.goPublic(account: account) + let inviteKey = try await identityClient.goPublic(account: account) + try await resubscriptionService.subscribeForInvites(inviteKey: inviteKey) XCTAssertNoThrow(try identityStorage.getInviteKey(for: account)) XCTAssertTrue(networkService.callRegisterInvite) @@ -83,7 +96,9 @@ final class RegistryServiceTests: XCTestCase { let topic = invitePubKey.rawRepresentation.sha256().toHexString() try await networkingInteractor.subscribe(topic: topic) - try await identityClient.goPrivate(account: account) + let inviteKey = try await identityClient.goPrivate(account: account) + resubscriptionService.unsubscribeFromInvites(inviteKey: inviteKey) + XCTAssertThrowsError(try identityStorage.getInviteKey(for: account)) XCTAssertTrue(networkingInteractor.unsubscriptions.contains(topic)) } diff --git a/Tests/RelayerTests/AuthTests/JWTTests.swift b/Tests/RelayerTests/AuthTests/JWTTests.swift index 69c124e1d..e6fdbf0fc 100644 --- a/Tests/RelayerTests/AuthTests/JWTTests.swift +++ b/Tests/RelayerTests/AuthTests/JWTTests.swift @@ -21,12 +21,12 @@ extension AuthPayload.Claims { let iss = "did:key:z6MkodHZwneVRShtaLf8JKYkxpDGp1vGZnpGmdBpX8M2exxH" let sub = "c479fe5dc464e771e78b193d239a65b58d278cad1c34bfb0b5716e5bb514928e" let iatDate = Date(timeIntervalSince1970: 1656910097) - let iat = Int64(iatDate.timeIntervalSince1970) + let iat = UInt64(iatDate.timeIntervalSince1970) var components = DateComponents() components.setValue(1, for: .day) let aud = "wss://relay.walletconnect.com" let expDate = Calendar.current.date(byAdding: components, to: iatDate)! - let exp = Int64(expDate.timeIntervalSince1970) + let exp = UInt64(expDate.timeIntervalSince1970) return AuthPayload.Claims(iss: iss, sub: sub, aud: aud, iat: iat, exp: exp) } } diff --git a/Tests/TestingUtils/NetworkingInteractorMock.swift b/Tests/TestingUtils/NetworkingInteractorMock.swift index 05ca6a70c..18da4e159 100644 --- a/Tests/TestingUtils/NetworkingInteractorMock.swift +++ b/Tests/TestingUtils/NetworkingInteractorMock.swift @@ -31,13 +31,13 @@ public class NetworkingInteractorMock: NetworkInteracting { } public let requestPublisherSubject = PassthroughSubject<(topic: String, request: RPCRequest, publishedAt: Date), Never>() - public let responsePublisherSubject = PassthroughSubject<(topic: String, request: RPCRequest, response: RPCResponse), Never>() + public let responsePublisherSubject = PassthroughSubject<(topic: String, request: RPCRequest, response: RPCResponse, publishedAt: Date), Never>() public var requestPublisher: AnyPublisher<(topic: String, request: RPCRequest, publishedAt: Date), Never> { requestPublisherSubject.eraseToAnyPublisher() } - private var responsePublisher: AnyPublisher<(topic: String, request: RPCRequest, response: RPCResponse), Never> { + private var responsePublisher: AnyPublisher<(topic: String, request: RPCRequest, response: RPCResponse, publishedAt: Date), Never> { responsePublisherSubject.eraseToAnyPublisher() } @@ -60,12 +60,12 @@ public class NetworkingInteractorMock: NetworkInteracting { .filter { rpcRequest in return rpcRequest.request.method == request.method } - .compactMap { topic, rpcRequest, rpcResponse in + .compactMap { topic, rpcRequest, rpcResponse, publishedAt in guard let id = rpcRequest.id, let request = try? rpcRequest.params?.get(Request.self), let response = try? rpcResponse.result?.get(Response.self) else { return nil } - return ResponseSubscriptionPayload(id: id, topic: topic, request: request, response: response) + return ResponseSubscriptionPayload(id: id, topic: topic, request: request, response: response, publishedAt: publishedAt) } .eraseToAnyPublisher() } @@ -74,7 +74,7 @@ public class NetworkingInteractorMock: NetworkInteracting { public func responseErrorSubscription(on request: ProtocolMethod) -> AnyPublisher, Never> { return responsePublisher .filter { $0.request.method == request.method } - .compactMap { (topic, rpcRequest, rpcResponse) in + .compactMap { (topic, rpcRequest, rpcResponse, publishedAt) in guard let id = rpcResponse.id, let request = try? rpcRequest.params?.get(Request.self), let error = rpcResponse.error else { return nil } return ResponseSubscriptionErrorPayload(id: id, topic: topic, request: request, error: error) } diff --git a/Tests/WalletConnectSignTests/AppProposalServiceTests.swift b/Tests/WalletConnectSignTests/AppProposalServiceTests.swift index d10924417..f516ffad2 100644 --- a/Tests/WalletConnectSignTests/AppProposalServiceTests.swift +++ b/Tests/WalletConnectSignTests/AppProposalServiceTests.swift @@ -114,7 +114,7 @@ final class AppProposalServiceTests: XCTestCase { exp.fulfill() } - networkingInteractor.responsePublisherSubject.send((topicA, request, response)) + networkingInteractor.responsePublisherSubject.send((topicA, request, response, Date())) let privateKey = try! cryptoMock.getPrivateKey(for: proposal.proposer.publicKey)! let topicB = deriveTopic(publicKey: responder.publicKey, privateKey: privateKey) _ = storageMock.getPairing(forTopic: topicA)! @@ -143,7 +143,7 @@ final class AppProposalServiceTests: XCTestCase { } let response = RPCResponse.stubError(forRequest: request) - networkingInteractor.responsePublisherSubject.send((topicA, request, response)) + networkingInteractor.responsePublisherSubject.send((topicA, request, response, Date())) XCTAssert(networkingInteractor.didUnsubscribe(to: pairing.topic), "Proposer must unsubscribe if pairing is inactive.") XCTAssertFalse(storageMock.hasPairing(forTopic: pairing.topic), "Proposer must delete an inactive pairing.") @@ -171,7 +171,7 @@ final class AppProposalServiceTests: XCTestCase { storageMock.setPairing(storedPairing) let response = RPCResponse.stubError(forRequest: request) - networkingInteractor.responsePublisherSubject.send((topicA, request, response)) + networkingInteractor.responsePublisherSubject.send((topicA, request, response, Date())) XCTAssertFalse(networkingInteractor.didUnsubscribe(to: pairing.topic), "Proposer must not unsubscribe if pairing is active.") XCTAssert(storageMock.hasPairing(forTopic: pairing.topic), "Proposer must not delete an active pairing.") diff --git a/Tests/WalletConnectSignTests/ApproveEngineTests.swift b/Tests/WalletConnectSignTests/ApproveEngineTests.swift index e3810d0dc..e4fd7ec11 100644 --- a/Tests/WalletConnectSignTests/ApproveEngineTests.swift +++ b/Tests/WalletConnectSignTests/ApproveEngineTests.swift @@ -124,7 +124,7 @@ final class ApproveEngineTests: XCTestCase { let request = RPCRequest(method: SessionSettleProtocolMethod().method, params: SessionType.SettleParams.stub()) let response = RPCResponse(matchingRequest: request, result: RPCResult.response(AnyCodable(true))) - networkingInteractor.responsePublisherSubject.send((session.topic, request, response)) + networkingInteractor.responsePublisherSubject.send((session.topic, request, response, Date())) XCTAssertTrue(sessionStorageMock.getSession(forTopic: session.topic)!.acknowledged, "Responder must acknowledged session") } @@ -139,7 +139,7 @@ final class ApproveEngineTests: XCTestCase { let request = RPCRequest(method: SessionSettleProtocolMethod().method, params: SessionType.SettleParams.stub()) let response = RPCResponse.stubError(forRequest: request) - networkingInteractor.responsePublisherSubject.send((session.topic, request, response)) + networkingInteractor.responsePublisherSubject.send((session.topic, request, response, Date())) XCTAssertNil(sessionStorageMock.getSession(forTopic: session.topic), "Responder must remove session") XCTAssertTrue(networkingInteractor.didUnsubscribe(to: session.topic), "Responder must unsubscribe topic B")