passepartout-apple/PassepartoutLibrary/Tests/PassepartoutProvidersTests/ProviderManagerTests.swift

174 lines
5.9 KiB
Swift

//
// ProviderManagerTests.swift
// Passepartout
//
// Created by Davide De Rosa on 3/13/22.
// Copyright (c) 2023 Davide De Rosa. All rights reserved.
//
// https://github.com/passepartoutvpn
//
// This file is part of Passepartout.
//
// Passepartout is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Passepartout is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Passepartout. If not, see <http://www.gnu.org/licenses/>.
//
//import Combine
//import CoreData
//import PassepartoutCore
//import PassepartoutProviders
//@testable import PassepartoutProvidersImpl
//import XCTest
//
//@MainActor
//final class ProvidersTests: XCTestCase {
// private var persistence: ProvidersPersistence!
//
// private var manager: ProviderManager!
//
// private var cancellables: Set<AnyCancellable> = []
//
// override func setUp() {
// persistence = ProvidersPersistence(withName: "ProvidersTests", cloudKit: false, author: nil)
//
// let remoteStrategy = APIRemoteProvidersStrategy(
// appBuild: 10000,
// bundleServices: APIWebServices.bundledServices(withVersion: "v5"),
// remoteServices: APIWebServices("v5", URL(string: "https://passepartoutvpn.app/api/")!, timeout: nil),
// webServicesRepository: persistence.webServicesRepository()
// )
// manager = ProviderManager(
// localProvidersRepository: persistence.localProvidersRepository(),
// remoteProvidersStrategy: remoteStrategy
// )
//// persistence.truncate()
// }
//
// override func tearDown() {
//// persistence.truncate()
// }
//
// func testFetchLocalIndex() throws {
// let exp = expectation(description: "Local index")
//
// manager.fetchProvidersIndexPublisher(priority: .bundle)
// .sink {
// switch $0 {
// case .finished:
// exp.fulfill()
//
// case .failure(let error):
// pp_log.error("Unable to load remote provider: \(error)")
// exp.fulfill()
// }
// } receiveValue: {
// pp_log.debug("Loaded index")
// }.store(in: &cancellables)
//
// waitForExpectations(timeout: 10.0, handler: nil)
// }
//
// func testFetchRemoteIndex() throws {
// let exp = expectation(description: "Remote index")
//
// manager.fetchProvidersIndexPublisher(priority: .remote)
// .sink {
// switch $0 {
// case .finished:
// exp.fulfill()
//
// case .failure(let error):
// pp_log.error("Unable to load remote provider: \(error)")
// exp.fulfill()
// }
// } receiveValue: {
// pp_log.debug("Loaded index")
// }.store(in: &cancellables)
//
// waitForExpectations(timeout: 10.0, handler: nil)
// }
//
// func testFetchRemoteProvider() async {
// do {
// try await manager.fetchProviderPublisher(withName: .hideme, vpnProtocol: .openVPN, priority: .remote).async()
// pp_log.debug("Loaded provider")
// } catch {
// XCTFail("Unable to load remote provider: \(error)")
// }
// }
//
// func testListProviders() {
// let providers = manager.allProviders()
// providers.forEach {
// pp_log.debug("\($0.name) -> \($0.fullName)")
// }
// }
//
// func testListCategories() async {
// await fetchProvider(.surfshark)
// let categories = manager.categories(.surfshark, vpnProtocol: .openVPN)
// categories.forEach {
// pp_log.debug("Category: \($0.name)")
// $0.locations.forEach {
// pp_log.debug("\t\($0)")
// }
// }
// }
//
// func testListServers() async {
// await fetchProvider(.nordvpn)
// manager.allProviders().filter({ $0.name == .nordvpn }).forEach {
// let location = ProviderLocation(
// providerMetadata: $0,
// vpnProtocol: .openVPN,
// categoryName: "",
// countryCode: "ES",
// servers: nil
// )
//
// let servers = manager.servers(forLocation: location)
// pp_log.debug("\($0.fullName): Servers [\(location.countryCode)] (\(servers.count)): \(servers)")
// }
// }
//
// func testServerId() async {
// await fetchProvider(.nordvpn)
// guard let server = manager.server(.nordvpn, vpnProtocol: .openVPN, apiId: "es143") else {
// return
// }
// pp_log.debug(server)
// }
//
// func testDefaultServer() async {
// await fetchProvider(.protonvpn)
// guard let server = manager.anyDefaultServer(.protonvpn, vpnProtocol: .openVPN) else {
// return
// }
// pp_log.debug(server)
// }
//
// func testServerUniqueId() async {
// await fetchProvider(.nordvpn)
// guard let server = manager.server(withId: "BEA03D24A5854DD17395057DEFBE7D6BEEA981227ACF8949E487443E6B5EF9C7") else {
// return
// }
// pp_log.debug(server)
// XCTAssertEqual(server.apiId, "es143")
// }
//
// private func fetchProvider(_ name: ProviderName) async {
// try? await manager.fetchProvidersIndexPublisher(priority: .bundle).async()
// try? await manager.fetchProviderPublisher(withName: name, vpnProtocol: .openVPN, priority: .bundle).async()
// }
//}