diff --git a/SessionMessagingKit/Open Groups/OpenGroupManager.swift b/SessionMessagingKit/Open Groups/OpenGroupManager.swift index ec77fe746..d67ea5e61 100644 --- a/SessionMessagingKit/Open Groups/OpenGroupManager.swift +++ b/SessionMessagingKit/Open Groups/OpenGroupManager.swift @@ -1169,8 +1169,11 @@ public final class OpenGroupManager { .eraseToAnyPublisher() case .none: - return LibSession - .downloadFile(from: destination) + return dependencies.network + .send( + .downloadFile(from: destination), + using: dependencies + ) .map { _, imageData in imageData } .eraseToAnyPublisher() } diff --git a/SessionMessagingKitTests/Open Groups/OpenGroupManagerSpec.swift b/SessionMessagingKitTests/Open Groups/OpenGroupManagerSpec.swift index 3a0cff5ce..c801cfaa6 100644 --- a/SessionMessagingKitTests/Open Groups/OpenGroupManagerSpec.swift +++ b/SessionMessagingKitTests/Open Groups/OpenGroupManagerSpec.swift @@ -3148,16 +3148,22 @@ class OpenGroupManagerSpec: QuickSpec { mockNetwork .when { $0.send( - .onionRequest( - URLRequest(url: URL(string: "https://open.getsession.org/room/test2/file/12")!), - to: OpenGroupAPI.defaultServer, - with: OpenGroupAPI.defaultServerPublicKey, - timeout: Network.fileDownloadTimeout + .downloadFile( + from: .server( + url: URL(string: "https://open.getsession.org/room/test2/file/12")!, + method: .get, + headers: nil, + x25519PublicKey: TestConstants.publicKey + ) ), using: dependencies ) } - .thenReturn(MockNetwork.response(data: Data([1, 2, 3]))) + .thenReturn( + Just((MockResponseInfo.mockValue, Data([1, 2, 3]))) + .setFailureType(to: Error.self) + .eraseToAnyPublisher() + ) let testDate: Date = Date(timeIntervalSince1970: 1234567890) dependencies.dateNow = testDate @@ -3189,8 +3195,12 @@ class OpenGroupManagerSpec: QuickSpec { context("when getting a room image") { beforeEach { mockNetwork - .when { $0.send(.onionRequest(any(), to: any(), with: any()), using: dependencies) } - .thenReturn(MockNetwork.response(data: Data([1, 2, 3]))) + .when { $0.send(.downloadFile(from: any()), using: dependencies) } + .thenReturn( + Just((MockResponseInfo.mockValue, Data([1, 2, 3]))) + .setFailureType(to: Error.self) + .eraseToAnyPublisher() + ) mockUserDefaults .when { (defaults: inout any UserDefaultsType) -> Any? in defaults.object(forKey: any()) } diff --git a/SessionSnodeKit/LibSession/LibSession+Networking.swift b/SessionSnodeKit/LibSession/LibSession+Networking.swift index 52b3d1faa..f14be2849 100644 --- a/SessionSnodeKit/LibSession/LibSession+Networking.swift +++ b/SessionSnodeKit/LibSession/LibSession+Networking.swift @@ -7,6 +7,21 @@ import Combine import SessionUtil import SessionUtilitiesKit +public extension Network.RequestType { + // FIXME: Clean up the network/libSession injection interface + static func downloadFile( + from destination: Network.Destination + ) -> Network.RequestType { + return Network.RequestType( + id: "downloadFile", + url: "\(destination)", + args: [destination] + ) { _ in + LibSession.downloadFile(from: destination).eraseToAnyPublisher() + } + } +} + // MARK: - LibSession public extension LibSession { diff --git a/_SharedTestUtilities/CommonMockedExtensions.swift b/_SharedTestUtilities/CommonMockedExtensions.swift index 37d1cf149..2d146d50c 100644 --- a/_SharedTestUtilities/CommonMockedExtensions.swift +++ b/_SharedTestUtilities/CommonMockedExtensions.swift @@ -6,6 +6,7 @@ import GRDB import Sodium import Curve25519Kit import SessionUtilitiesKit +import SessionSnodeKit extension KeyPair: Mocked { static var mockValue: KeyPair = KeyPair( @@ -47,6 +48,15 @@ extension Network.RequestType: MockedGeneric { } } +extension Network.Destination: Mocked { + static var mockValue: Network.Destination = Network.Destination.server( + url: URL(string: "https://oxen.io")!, + method: .get, + headers: nil, + x25519PublicKey: "" + ) +} + extension AnyPublisher: MockedGeneric where Failure == Error { typealias Generic = Output