Repository navigation
Expand file tree
/
Copy pathMocks.swift
More file actions
128 lines (102 loc) · 4.47 KB
/
Copy pathMocks.swift
File metadata and controls
128 lines (102 loc) · 4.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
//
// Mocks.swift
// QuickHatchHTTP
//
// Created by Daniel Koster on 8/14/25.
//
import QuickHatchHTTP
import Foundation
import Combine
public class PinningStrategyMock: PinningStrategy, @unchecked Sendable {
public var invokedValidate = false
public var invokedValidateCount = 0
public var invokedValidateParameters: (serverTrust: SecTrust, Void)?
public var invokedValidateParametersList = [(serverTrust: SecTrust, Void)]()
public var stubbedValidateResult: Bool! = false
public init() {
}
public func validate(serverTrust: SecTrust) -> Bool {
invokedValidate = true
invokedValidateCount += 1
invokedValidateParameters = (serverTrust, ())
invokedValidateParametersList.append((serverTrust, ()))
return stubbedValidateResult
}
}
public class CertificatePinnerMock: CertificatePinner, @unchecked Sendable {
public init() {
}
public var isServerTrustedResult = true
public func isServerTrusted(challenge: URLAuthenticationChallenge) -> Bool {
return isServerTrustedResult
}
}
public final class MockAuthenticationChallengeSender: NSObject, URLAuthenticationChallengeSender {
public func use(_ credential: URLCredential, for challenge: URLAuthenticationChallenge) {
}
public func continueWithoutCredential(for challenge: URLAuthenticationChallenge) {
}
public func cancel(_ challenge: URLAuthenticationChallenge) {
}
}
public final class MockURLProtectionSpace: URLProtectionSpace, @unchecked Sendable {
private let trust: SecTrust?
public init(serverTrust: SecTrust?,host: String, port: Int, authenticationMethod: String? = nil) {
self.trust = serverTrust
super.init(host: host, port: port, protocol: nil, realm: nil, authenticationMethod: authenticationMethod)
}
public required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
public override var serverTrust: SecTrust? {
return trust
}
}
public final class NetworkRequestFactoryMock: NetworkRequestFactory, @unchecked Sendable {
public var invokedDataRequest = false
public var invokedDataRequestCount = 0
public var invokedDataRequestParameters: (request: URLRequest, dispatchQueue: DispatchQueue)?
public var invokedDataRequestParametersList = [(request: URLRequest, dispatchQueue: DispatchQueue)]()
public var stubbedDataRequestCompletionResult: (Result<HTTPResponse, Error>, Void)?
public var stubbedDataRequestResult: DataTask!
public func data(request: URLRequest,
dispatchQueue: DispatchQueue,
completionHandler completion: @Sendable @escaping (Result<HTTPResponse, Error>) -> Void) -> DataTask {
invokedDataRequest = true
invokedDataRequestCount += 1
invokedDataRequestParameters = (request, dispatchQueue)
invokedDataRequestParametersList.append((request, dispatchQueue))
if let result = stubbedDataRequestCompletionResult {
completion(result.0)
}
return stubbedDataRequestResult
}
public var invokedDataPublisher = false
public var invokedDataPublisherCount = 0
public var invokedDataPublisherParameters: (request: URLRequest, Void)?
public var invokedDataPublisherParametersList = [(request: URLRequest, Void)]()
public var subject = PassthroughSubject<HTTPResponse, Error>()
public func dataPublisher(request: URLRequest) -> AnyPublisher<HTTPResponse,Error> {
invokedDataPublisher = true
invokedDataPublisherCount += 1
invokedDataPublisherParameters = (request, ())
invokedDataPublisherParametersList.append((request, ()))
return subject.eraseToAnyPublisher()
}
public var invokedAsyncData = false
public var invokedAsyncDataCount = 0
public var invokedAsyncDataParameters: (request: URLRequest, Void)?
public var invokedAsyncDataParametersList = [(request: URLRequest, Void)]()
public var asyncDataResponseResult: HTTPResponse!
public var asyncDataErrorThrown: Error?
public func data(request: URLRequest) async throws -> HTTPResponse {
invokedAsyncData = true
invokedAsyncDataCount += 1
invokedAsyncDataParameters = (request, ())
invokedAsyncDataParametersList.append((request, ()))
if let asyncDataErrorThrown = asyncDataErrorThrown {
throw asyncDataErrorThrown
}
return asyncDataResponseResult
}
}