|
@@ -80,7 +80,7 @@ final class RetryResultTestCase: BaseTestCase {
|
|
|
final class AdapterTestCase: BaseTestCase {
|
|
final class AdapterTestCase: BaseTestCase {
|
|
|
func testThatAdapterCallsAdaptHandler() {
|
|
func testThatAdapterCallsAdaptHandler() {
|
|
|
// Given
|
|
// Given
|
|
|
- let urlRequest = URLRequest(url: URL(string: "https://httpbin.org/get")!)
|
|
|
|
|
|
|
+ let urlRequest = URLRequest.makeHTTPBinRequest()
|
|
|
let session = Session()
|
|
let session = Session()
|
|
|
var adapted = false
|
|
var adapted = false
|
|
|
|
|
|
|
@@ -101,7 +101,7 @@ final class AdapterTestCase: BaseTestCase {
|
|
|
|
|
|
|
|
func testThatAdapterCallsRequestRetrierDefaultImplementationInProtocolExtension() {
|
|
func testThatAdapterCallsRequestRetrierDefaultImplementationInProtocolExtension() {
|
|
|
// Given
|
|
// Given
|
|
|
- let url = URL(string: "https://httpbin.org/get")!
|
|
|
|
|
|
|
+ let url = URL.makeHTTPBinURL()
|
|
|
let session = Session(startRequestsImmediately: false)
|
|
let session = Session(startRequestsImmediately: false)
|
|
|
let request = session.request(url)
|
|
let request = session.request(url)
|
|
|
|
|
|
|
@@ -120,7 +120,7 @@ final class AdapterTestCase: BaseTestCase {
|
|
|
|
|
|
|
|
func testThatAdapterCanBeImplementedAsynchronously() {
|
|
func testThatAdapterCanBeImplementedAsynchronously() {
|
|
|
// Given
|
|
// Given
|
|
|
- let urlRequest = URLRequest(url: URL(string: "https://httpbin.org/get")!)
|
|
|
|
|
|
|
+ let urlRequest = URLRequest.makeHTTPBinRequest()
|
|
|
let session = Session()
|
|
let session = Session()
|
|
|
var adapted = false
|
|
var adapted = false
|
|
|
|
|
|
|
@@ -154,7 +154,7 @@ final class AdapterTestCase: BaseTestCase {
|
|
|
final class RetrierTestCase: BaseTestCase {
|
|
final class RetrierTestCase: BaseTestCase {
|
|
|
func testThatRetrierCallsRetryHandler() {
|
|
func testThatRetrierCallsRetryHandler() {
|
|
|
// Given
|
|
// Given
|
|
|
- let url = URL(string: "https://httpbin.org/get")!
|
|
|
|
|
|
|
+ let url = URL.makeHTTPBinURL()
|
|
|
let session = Session(startRequestsImmediately: false)
|
|
let session = Session(startRequestsImmediately: false)
|
|
|
let request = session.request(url)
|
|
let request = session.request(url)
|
|
|
var retried = false
|
|
var retried = false
|
|
@@ -176,7 +176,7 @@ final class RetrierTestCase: BaseTestCase {
|
|
|
|
|
|
|
|
func testThatRetrierCallsRequestAdapterDefaultImplementationInProtocolExtension() {
|
|
func testThatRetrierCallsRequestAdapterDefaultImplementationInProtocolExtension() {
|
|
|
// Given
|
|
// Given
|
|
|
- let urlRequest = URLRequest(url: URL(string: "https://httpbin.org/get")!)
|
|
|
|
|
|
|
+ let urlRequest = URLRequest.makeHTTPBinRequest()
|
|
|
let session = Session()
|
|
let session = Session()
|
|
|
|
|
|
|
|
let retrier = Retrier { _, _, _, completion in
|
|
let retrier = Retrier { _, _, _, completion in
|
|
@@ -194,7 +194,7 @@ final class RetrierTestCase: BaseTestCase {
|
|
|
|
|
|
|
|
func testThatRetrierCanBeImplementedAsynchronously() {
|
|
func testThatRetrierCanBeImplementedAsynchronously() {
|
|
|
// Given
|
|
// Given
|
|
|
- let url = URL(string: "https://httpbin.org/get")!
|
|
|
|
|
|
|
+ let url = URL.makeHTTPBinURL()
|
|
|
let session = Session(startRequestsImmediately: false)
|
|
let session = Session(startRequestsImmediately: false)
|
|
|
let request = session.request(url)
|
|
let request = session.request(url)
|
|
|
var retried = false
|
|
var retried = false
|
|
@@ -226,7 +226,7 @@ final class RetrierTestCase: BaseTestCase {
|
|
|
|
|
|
|
|
// MARK: -
|
|
// MARK: -
|
|
|
|
|
|
|
|
-final class InterceptorTestCase: BaseTestCase {
|
|
|
|
|
|
|
+final class InterceptorTests: BaseTestCase {
|
|
|
func testAdaptHandlerAndRetryHandlerDefaultInitializer() {
|
|
func testAdaptHandlerAndRetryHandlerDefaultInitializer() {
|
|
|
// Given
|
|
// Given
|
|
|
let adaptHandler: AdaptHandler = { urlRequest, _, completion in completion(.success(urlRequest)) }
|
|
let adaptHandler: AdaptHandler = { urlRequest, _, completion in completion(.success(urlRequest)) }
|
|
@@ -266,9 +266,23 @@ final class InterceptorTestCase: BaseTestCase {
|
|
|
XCTAssertEqual(interceptor.retriers.count, 2)
|
|
XCTAssertEqual(interceptor.retriers.count, 2)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ func testThatInterceptorCanBeComposedOfMultipleRequestInterceptors() {
|
|
|
|
|
+ // Given
|
|
|
|
|
+ let adapter = Adapter { request, _, completion in completion(.success(request)) }
|
|
|
|
|
+ let retrier = Retrier { _, _, _, completion in completion(.doNotRetry) }
|
|
|
|
|
+ let inner = Interceptor(adapter: adapter, retrier: retrier)
|
|
|
|
|
+
|
|
|
|
|
+ // When
|
|
|
|
|
+ let interceptor = Interceptor(interceptors: [inner])
|
|
|
|
|
+
|
|
|
|
|
+ // Then
|
|
|
|
|
+ XCTAssertEqual(interceptor.adapters.count, 1)
|
|
|
|
|
+ XCTAssertEqual(interceptor.retriers.count, 1)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
func testThatInterceptorCanAdaptRequestWithNoAdapters() {
|
|
func testThatInterceptorCanAdaptRequestWithNoAdapters() {
|
|
|
// Given
|
|
// Given
|
|
|
- let urlRequest = URLRequest(url: URL(string: "https://httpbin.org/get")!)
|
|
|
|
|
|
|
+ let urlRequest = URLRequest.makeHTTPBinRequest()
|
|
|
let session = Session()
|
|
let session = Session()
|
|
|
let interceptor = Interceptor()
|
|
let interceptor = Interceptor()
|
|
|
|
|
|
|
@@ -284,7 +298,7 @@ final class InterceptorTestCase: BaseTestCase {
|
|
|
|
|
|
|
|
func testThatInterceptorCanAdaptRequestWithOneAdapter() {
|
|
func testThatInterceptorCanAdaptRequestWithOneAdapter() {
|
|
|
// Given
|
|
// Given
|
|
|
- let urlRequest = URLRequest(url: URL(string: "https://httpbin.org/get")!)
|
|
|
|
|
|
|
+ let urlRequest = URLRequest.makeHTTPBinRequest()
|
|
|
let session = Session()
|
|
let session = Session()
|
|
|
|
|
|
|
|
let adapter = Adapter { _, _, completion in completion(.failure(MockError())) }
|
|
let adapter = Adapter { _, _, completion in completion(.failure(MockError())) }
|
|
@@ -302,7 +316,7 @@ final class InterceptorTestCase: BaseTestCase {
|
|
|
|
|
|
|
|
func testThatInterceptorCanAdaptRequestWithMultipleAdapters() {
|
|
func testThatInterceptorCanAdaptRequestWithMultipleAdapters() {
|
|
|
// Given
|
|
// Given
|
|
|
- let urlRequest = URLRequest(url: URL(string: "https://httpbin.org/get")!)
|
|
|
|
|
|
|
+ let urlRequest = URLRequest.makeHTTPBinRequest()
|
|
|
let session = Session()
|
|
let session = Session()
|
|
|
|
|
|
|
|
let adapter1 = Adapter { urlRequest, _, completion in completion(.success(urlRequest)) }
|
|
let adapter1 = Adapter { urlRequest, _, completion in completion(.success(urlRequest)) }
|
|
@@ -321,7 +335,7 @@ final class InterceptorTestCase: BaseTestCase {
|
|
|
|
|
|
|
|
func testThatInterceptorCanAdaptRequestAsynchronously() {
|
|
func testThatInterceptorCanAdaptRequestAsynchronously() {
|
|
|
// Given
|
|
// Given
|
|
|
- let urlRequest = URLRequest(url: URL(string: "https://httpbin.org/get")!)
|
|
|
|
|
|
|
+ let urlRequest = URLRequest.makeHTTPBinRequest()
|
|
|
let session = Session()
|
|
let session = Session()
|
|
|
|
|
|
|
|
let adapter = Adapter { _, _, completion in
|
|
let adapter = Adapter { _, _, completion in
|
|
@@ -350,7 +364,7 @@ final class InterceptorTestCase: BaseTestCase {
|
|
|
|
|
|
|
|
func testThatInterceptorCanRetryRequestWithNoRetriers() {
|
|
func testThatInterceptorCanRetryRequestWithNoRetriers() {
|
|
|
// Given
|
|
// Given
|
|
|
- let url = URL(string: "https://httpbin.org/get")!
|
|
|
|
|
|
|
+ let url = URL.makeHTTPBinURL()
|
|
|
let session = Session(startRequestsImmediately: false)
|
|
let session = Session(startRequestsImmediately: false)
|
|
|
let request = session.request(url)
|
|
let request = session.request(url)
|
|
|
|
|
|
|
@@ -367,7 +381,7 @@ final class InterceptorTestCase: BaseTestCase {
|
|
|
|
|
|
|
|
func testThatInterceptorCanRetryRequestWithOneRetrier() {
|
|
func testThatInterceptorCanRetryRequestWithOneRetrier() {
|
|
|
// Given
|
|
// Given
|
|
|
- let url = URL(string: "https://httpbin.org/get")!
|
|
|
|
|
|
|
+ let url = URL.makeHTTPBinURL()
|
|
|
let session = Session(startRequestsImmediately: false)
|
|
let session = Session(startRequestsImmediately: false)
|
|
|
let request = session.request(url)
|
|
let request = session.request(url)
|
|
|
|
|
|
|
@@ -385,7 +399,7 @@ final class InterceptorTestCase: BaseTestCase {
|
|
|
|
|
|
|
|
func testThatInterceptorCanRetryRequestWithMultipleRetriers() {
|
|
func testThatInterceptorCanRetryRequestWithMultipleRetriers() {
|
|
|
// Given
|
|
// Given
|
|
|
- let url = URL(string: "https://httpbin.org/get")!
|
|
|
|
|
|
|
+ let url = URL.makeHTTPBinURL()
|
|
|
let session = Session(startRequestsImmediately: false)
|
|
let session = Session(startRequestsImmediately: false)
|
|
|
let request = session.request(url)
|
|
let request = session.request(url)
|
|
|
|
|
|
|
@@ -404,7 +418,7 @@ final class InterceptorTestCase: BaseTestCase {
|
|
|
|
|
|
|
|
func testThatInterceptorCanRetryRequestAsynchronously() {
|
|
func testThatInterceptorCanRetryRequestAsynchronously() {
|
|
|
// Given
|
|
// Given
|
|
|
- let url = URL(string: "https://httpbin.org/get")!
|
|
|
|
|
|
|
+ let url = URL.makeHTTPBinURL()
|
|
|
let session = Session(startRequestsImmediately: false)
|
|
let session = Session(startRequestsImmediately: false)
|
|
|
let request = session.request(url)
|
|
let request = session.request(url)
|
|
|
|
|
|
|
@@ -433,7 +447,7 @@ final class InterceptorTestCase: BaseTestCase {
|
|
|
|
|
|
|
|
func testThatInterceptorStopsIteratingThroughPendingRetriersWithRetryResult() {
|
|
func testThatInterceptorStopsIteratingThroughPendingRetriersWithRetryResult() {
|
|
|
// Given
|
|
// Given
|
|
|
- let url = URL(string: "https://httpbin.org/get")!
|
|
|
|
|
|
|
+ let url = URL.makeHTTPBinURL()
|
|
|
let session = Session(startRequestsImmediately: false)
|
|
let session = Session(startRequestsImmediately: false)
|
|
|
let request = session.request(url)
|
|
let request = session.request(url)
|
|
|
|
|
|
|
@@ -455,7 +469,7 @@ final class InterceptorTestCase: BaseTestCase {
|
|
|
|
|
|
|
|
func testThatInterceptorStopsIteratingThroughPendingRetriersWithRetryWithDelayResult() {
|
|
func testThatInterceptorStopsIteratingThroughPendingRetriersWithRetryWithDelayResult() {
|
|
|
// Given
|
|
// Given
|
|
|
- let url = URL(string: "https://httpbin.org/get")!
|
|
|
|
|
|
|
+ let url = URL.makeHTTPBinURL()
|
|
|
let session = Session(startRequestsImmediately: false)
|
|
let session = Session(startRequestsImmediately: false)
|
|
|
let request = session.request(url)
|
|
let request = session.request(url)
|
|
|
|
|
|
|
@@ -478,7 +492,7 @@ final class InterceptorTestCase: BaseTestCase {
|
|
|
|
|
|
|
|
func testThatInterceptorStopsIteratingThroughPendingRetriersWithDoNotRetryResult() {
|
|
func testThatInterceptorStopsIteratingThroughPendingRetriersWithDoNotRetryResult() {
|
|
|
// Given
|
|
// Given
|
|
|
- let url = URL(string: "https://httpbin.org/get")!
|
|
|
|
|
|
|
+ let url = URL.makeHTTPBinURL()
|
|
|
let session = Session(startRequestsImmediately: false)
|
|
let session = Session(startRequestsImmediately: false)
|
|
|
let request = session.request(url)
|
|
let request = session.request(url)
|
|
|
|
|
|