Просмотр исходного кода

Temporarily disable redirect tests due to HTTPBin issue (#3244)

* Disable redirect tests due to HTTPBin issue.

* Formatting.
Jon Shier 5 лет назад
Родитель
Сommit
23b239a559
4 измененных файлов с 207 добавлено и 204 удалено
  1. 1 1
      Source/RetryPolicy.swift
  2. 6 6
      Source/Validation.swift
  3. 196 195
      Tests/RedirectHandlerTests.swift
  4. 4 2
      Tests/SessionDelegateTests.swift

+ 1 - 1
Source/RetryPolicy.swift

@@ -325,7 +325,7 @@ open class RetryPolicy: RequestInterceptor {
     /// - Returns:     `Bool` determining whether or not to retry the `Request`.
     open func shouldRetry(request: Request, dueTo error: Error) -> Bool {
         guard let httpMethod = request.request?.method, retryableHTTPMethods.contains(httpMethod) else { return false }
-        
+
         if let statusCode = request.response?.statusCode, retryableHTTPStatusCodes.contains(statusCode) {
             return true
         } else {

+ 6 - 6
Source/Validation.swift

@@ -157,7 +157,7 @@ extension DataRequest {
     /// - Returns:              The instance.
     @discardableResult
     public func validate<S: Sequence>(statusCode acceptableStatusCodes: S) -> Self where S.Iterator.Element == Int {
-        return validate { [unowned self] _, response, _ in
+        validate { [unowned self] _, response, _ in
             self.validate(statusCode: acceptableStatusCodes, response: response)
         }
     }
@@ -171,7 +171,7 @@ extension DataRequest {
     /// - returns: The request.
     @discardableResult
     public func validate<S: Sequence>(contentType acceptableContentTypes: @escaping @autoclosure () -> S) -> Self where S.Iterator.Element == String {
-        return validate { [unowned self] _, response, data in
+        validate { [unowned self] _, response, data in
             self.validate(contentType: acceptableContentTypes(), response: response, data: data)
         }
     }
@@ -205,7 +205,7 @@ extension DataStreamRequest {
     /// - Returns:              The instance.
     @discardableResult
     public func validate<S: Sequence>(statusCode acceptableStatusCodes: S) -> Self where S.Iterator.Element == Int {
-        return validate { [unowned self] _, response in
+        validate { [unowned self] _, response in
             self.validate(statusCode: acceptableStatusCodes, response: response)
         }
     }
@@ -219,7 +219,7 @@ extension DataStreamRequest {
     /// - returns: The request.
     @discardableResult
     public func validate<S: Sequence>(contentType acceptableContentTypes: @escaping @autoclosure () -> S) -> Self where S.Iterator.Element == String {
-        return validate { [unowned self] _, response in
+        validate { [unowned self] _, response in
             self.validate(contentType: acceptableContentTypes(), response: response)
         }
     }
@@ -258,7 +258,7 @@ extension DownloadRequest {
     /// - Returns:              The instance.
     @discardableResult
     public func validate<S: Sequence>(statusCode acceptableStatusCodes: S) -> Self where S.Iterator.Element == Int {
-        return validate { [unowned self] _, response, _ in
+        validate { [unowned self] _, response, _ in
             self.validate(statusCode: acceptableStatusCodes, response: response)
         }
     }
@@ -272,7 +272,7 @@ extension DownloadRequest {
     /// - returns: The request.
     @discardableResult
     public func validate<S: Sequence>(contentType acceptableContentTypes: @escaping @autoclosure () -> S) -> Self where S.Iterator.Element == String {
-        return validate { [unowned self] _, response, fileURL in
+        validate { [unowned self] _, response, fileURL in
             guard let validFileURL = fileURL else {
                 return .failure(AFError.responseValidationFailed(reason: .dataFileNil))
             }

+ 196 - 195
Tests/RedirectHandlerTests.swift

@@ -26,198 +26,199 @@ import Alamofire
 import Foundation
 import XCTest
 
-final class RedirectHandlerTestCase: BaseTestCase {
-    // MARK: - Properties
-
-    private var redirectURLString: String { "https://www.apple.com/" }
-    private var urlString: String { "https://httpbin.org/redirect-to?url=\(redirectURLString)" }
-
-    // MARK: - Tests - Per Request
-
-    func testThatRequestRedirectHandlerCanFollowRedirects() {
-        // Given
-        let session = Session()
-
-        var response: DataResponse<Data?, AFError>?
-        let expectation = self.expectation(description: "Request should redirect to \(redirectURLString)")
-
-        // When
-        session.request(urlString).redirect(using: Redirector.follow).response { resp in
-            response = resp
-            expectation.fulfill()
-        }
-
-        waitForExpectations(timeout: timeout, handler: nil)
-
-        // Then
-        XCTAssertNotNil(response?.request)
-        XCTAssertNotNil(response?.response)
-        XCTAssertNotNil(response?.data)
-        XCTAssertNil(response?.error)
-
-        XCTAssertEqual(response?.response?.url?.absoluteString, redirectURLString)
-        XCTAssertEqual(response?.response?.statusCode, 200)
-    }
-
-    func testThatRequestRedirectHandlerCanNotFollowRedirects() {
-        // Given
-        let session = Session()
-
-        var response: DataResponse<Data?, AFError>?
-        let expectation = self.expectation(description: "Request should NOT redirect to \(redirectURLString)")
-
-        // When
-        session.request(urlString).redirect(using: Redirector.doNotFollow).response { resp in
-            response = resp
-            expectation.fulfill()
-        }
-
-        waitForExpectations(timeout: timeout, handler: nil)
-
-        // Then
-        XCTAssertNotNil(response?.request)
-        XCTAssertNotNil(response?.response)
-        XCTAssertNil(response?.data)
-        XCTAssertNil(response?.error)
-
-        XCTAssertEqual(response?.response?.url?.absoluteString, urlString)
-        XCTAssertEqual(response?.response?.statusCode, 302)
-    }
-
-    func testThatRequestRedirectHandlerCanModifyRedirects() {
-        // Given
-        let session = Session()
-        let redirectURLString = "https://www.nike.com"
-        let redirectURLRequest = URLRequest(url: URL(string: redirectURLString)!)
-
-        var response: DataResponse<Data?, AFError>?
-        let expectation = self.expectation(description: "Request should redirect to \(redirectURLString)")
-
-        // When
-        let redirector = Redirector(behavior: .modify { _, _, _ in redirectURLRequest })
-
-        session.request(urlString).redirect(using: redirector).response { resp in
-            response = resp
-            expectation.fulfill()
-        }
-
-        waitForExpectations(timeout: timeout, handler: nil)
-
-        // Then
-        XCTAssertNotNil(response?.request)
-        XCTAssertNotNil(response?.response)
-        XCTAssertNotNil(response?.data)
-        XCTAssertNil(response?.error)
-
-        XCTAssertEqual(response?.response?.url?.absoluteString, redirectURLString)
-        XCTAssertEqual(response?.response?.statusCode, 200)
-    }
-
-    // MARK: - Tests - Per Session
-
-    func testThatSessionRedirectHandlerCanFollowRedirects() {
-        // Given
-        let session = Session(redirectHandler: Redirector.follow)
-
-        var response: DataResponse<Data?, AFError>?
-        let expectation = self.expectation(description: "Request should redirect to \(redirectURLString)")
-
-        // When
-        session.request(urlString).response { resp in
-            response = resp
-            expectation.fulfill()
-        }
-
-        waitForExpectations(timeout: timeout, handler: nil)
-
-        // Then
-        XCTAssertNotNil(response?.request)
-        XCTAssertNotNil(response?.response)
-        XCTAssertNotNil(response?.data)
-        XCTAssertNil(response?.error)
-
-        XCTAssertEqual(response?.response?.url?.absoluteString, redirectURLString)
-        XCTAssertEqual(response?.response?.statusCode, 200)
-    }
-
-    func testThatSessionRedirectHandlerCanNotFollowRedirects() {
-        // Given
-        let session = Session(redirectHandler: Redirector.doNotFollow)
-
-        var response: DataResponse<Data?, AFError>?
-        let expectation = self.expectation(description: "Request should NOT redirect to \(redirectURLString)")
-
-        // When
-        session.request(urlString).response { resp in
-            response = resp
-            expectation.fulfill()
-        }
-
-        waitForExpectations(timeout: timeout, handler: nil)
-
-        // Then
-        XCTAssertNotNil(response?.request)
-        XCTAssertNotNil(response?.response)
-        XCTAssertNil(response?.data)
-        XCTAssertNil(response?.error)
-
-        XCTAssertEqual(response?.response?.url?.absoluteString, urlString)
-        XCTAssertEqual(response?.response?.statusCode, 302)
-    }
-
-    func testThatSessionRedirectHandlerCanModifyRedirects() {
-        // Given
-        let redirectURLString = "https://www.nike.com"
-        let redirectURLRequest = URLRequest(url: URL(string: redirectURLString)!)
-
-        let redirector = Redirector(behavior: .modify { _, _, _ in redirectURLRequest })
-        let session = Session(redirectHandler: redirector)
-
-        var response: DataResponse<Data?, AFError>?
-        let expectation = self.expectation(description: "Request should redirect to \(redirectURLString)")
-
-        // When
-        session.request(urlString).response { resp in
-            response = resp
-            expectation.fulfill()
-        }
-
-        waitForExpectations(timeout: timeout, handler: nil)
-
-        // Then
-        XCTAssertNotNil(response?.request)
-        XCTAssertNotNil(response?.response)
-        XCTAssertNotNil(response?.data)
-        XCTAssertNil(response?.error)
-
-        XCTAssertEqual(response?.response?.url?.absoluteString, redirectURLString)
-        XCTAssertEqual(response?.response?.statusCode, 200)
-    }
-
-    // MARK: - Tests - Per Request Prioritization
-
-    func testThatRequestRedirectHandlerIsPrioritizedOverSessionRedirectHandler() {
-        // Given
-        let session = Session(redirectHandler: Redirector.doNotFollow)
-
-        var response: DataResponse<Data?, AFError>?
-        let expectation = self.expectation(description: "Request should redirect to \(redirectURLString)")
-
-        // When
-        session.request(urlString).redirect(using: Redirector.follow).response { resp in
-            response = resp
-            expectation.fulfill()
-        }
-
-        waitForExpectations(timeout: timeout, handler: nil)
-
-        // Then
-        XCTAssertNotNil(response?.request)
-        XCTAssertNotNil(response?.response)
-        XCTAssertNotNil(response?.data)
-        XCTAssertNil(response?.error)
-
-        XCTAssertEqual(response?.response?.url?.absoluteString, redirectURLString)
-        XCTAssertEqual(response?.response?.statusCode, 200)
-    }
-}
+// Disabled due to HTTPBin issue: https://github.com/postmanlabs/httpbin/issues/617
+// final class RedirectHandlerTestCase: BaseTestCase {
+//    // MARK: - Properties
+//
+//    private var redirectURLString: String { "https://www.apple.com/" }
+//    private var urlString: String { "https://httpbin.org/redirect-to?url=\(redirectURLString)" }
+//
+//    // MARK: - Tests - Per Request
+//
+//    func testThatRequestRedirectHandlerCanFollowRedirects() {
+//        // Given
+//        let session = Session()
+//
+//        var response: DataResponse<Data?, AFError>?
+//        let expectation = self.expectation(description: "Request should redirect to \(redirectURLString)")
+//
+//        // When
+//        session.request(urlString).redirect(using: Redirector.follow).response { resp in
+//            response = resp
+//            expectation.fulfill()
+//        }
+//
+//        waitForExpectations(timeout: timeout, handler: nil)
+//
+//        // Then
+//        XCTAssertNotNil(response?.request)
+//        XCTAssertNotNil(response?.response)
+//        XCTAssertNotNil(response?.data)
+//        XCTAssertNil(response?.error)
+//
+//        XCTAssertEqual(response?.response?.url?.absoluteString, redirectURLString)
+//        XCTAssertEqual(response?.response?.statusCode, 200)
+//    }
+//
+//    func testThatRequestRedirectHandlerCanNotFollowRedirects() {
+//        // Given
+//        let session = Session()
+//
+//        var response: DataResponse<Data?, AFError>?
+//        let expectation = self.expectation(description: "Request should NOT redirect to \(redirectURLString)")
+//
+//        // When
+//        session.request(urlString).redirect(using: Redirector.doNotFollow).response { resp in
+//            response = resp
+//            expectation.fulfill()
+//        }
+//
+//        waitForExpectations(timeout: timeout, handler: nil)
+//
+//        // Then
+//        XCTAssertNotNil(response?.request)
+//        XCTAssertNotNil(response?.response)
+//        XCTAssertNil(response?.data)
+//        XCTAssertNil(response?.error)
+//
+//        XCTAssertEqual(response?.response?.url?.absoluteString, urlString)
+//        XCTAssertEqual(response?.response?.statusCode, 302)
+//    }
+//
+//    func testThatRequestRedirectHandlerCanModifyRedirects() {
+//        // Given
+//        let session = Session()
+//        let redirectURLString = "https://www.nike.com"
+//        let redirectURLRequest = URLRequest(url: URL(string: redirectURLString)!)
+//
+//        var response: DataResponse<Data?, AFError>?
+//        let expectation = self.expectation(description: "Request should redirect to \(redirectURLString)")
+//
+//        // When
+//        let redirector = Redirector(behavior: .modify { _, _, _ in redirectURLRequest })
+//
+//        session.request(urlString).redirect(using: redirector).response { resp in
+//            response = resp
+//            expectation.fulfill()
+//        }
+//
+//        waitForExpectations(timeout: timeout, handler: nil)
+//
+//        // Then
+//        XCTAssertNotNil(response?.request)
+//        XCTAssertNotNil(response?.response)
+//        XCTAssertNotNil(response?.data)
+//        XCTAssertNil(response?.error)
+//
+//        XCTAssertEqual(response?.response?.url?.absoluteString, redirectURLString)
+//        XCTAssertEqual(response?.response?.statusCode, 200)
+//    }
+//
+//    // MARK: - Tests - Per Session
+//
+//    func testThatSessionRedirectHandlerCanFollowRedirects() {
+//        // Given
+//        let session = Session(redirectHandler: Redirector.follow)
+//
+//        var response: DataResponse<Data?, AFError>?
+//        let expectation = self.expectation(description: "Request should redirect to \(redirectURLString)")
+//
+//        // When
+//        session.request(urlString).response { resp in
+//            response = resp
+//            expectation.fulfill()
+//        }
+//
+//        waitForExpectations(timeout: timeout, handler: nil)
+//
+//        // Then
+//        XCTAssertNotNil(response?.request)
+//        XCTAssertNotNil(response?.response)
+//        XCTAssertNotNil(response?.data)
+//        XCTAssertNil(response?.error)
+//
+//        XCTAssertEqual(response?.response?.url?.absoluteString, redirectURLString)
+//        XCTAssertEqual(response?.response?.statusCode, 200)
+//    }
+//
+//    func testThatSessionRedirectHandlerCanNotFollowRedirects() {
+//        // Given
+//        let session = Session(redirectHandler: Redirector.doNotFollow)
+//
+//        var response: DataResponse<Data?, AFError>?
+//        let expectation = self.expectation(description: "Request should NOT redirect to \(redirectURLString)")
+//
+//        // When
+//        session.request(urlString).response { resp in
+//            response = resp
+//            expectation.fulfill()
+//        }
+//
+//        waitForExpectations(timeout: timeout, handler: nil)
+//
+//        // Then
+//        XCTAssertNotNil(response?.request)
+//        XCTAssertNotNil(response?.response)
+//        XCTAssertNil(response?.data)
+//        XCTAssertNil(response?.error)
+//
+//        XCTAssertEqual(response?.response?.url?.absoluteString, urlString)
+//        XCTAssertEqual(response?.response?.statusCode, 302)
+//    }
+//
+//    func testThatSessionRedirectHandlerCanModifyRedirects() {
+//        // Given
+//        let redirectURLString = "https://www.nike.com"
+//        let redirectURLRequest = URLRequest(url: URL(string: redirectURLString)!)
+//
+//        let redirector = Redirector(behavior: .modify { _, _, _ in redirectURLRequest })
+//        let session = Session(redirectHandler: redirector)
+//
+//        var response: DataResponse<Data?, AFError>?
+//        let expectation = self.expectation(description: "Request should redirect to \(redirectURLString)")
+//
+//        // When
+//        session.request(urlString).response { resp in
+//            response = resp
+//            expectation.fulfill()
+//        }
+//
+//        waitForExpectations(timeout: timeout, handler: nil)
+//
+//        // Then
+//        XCTAssertNotNil(response?.request)
+//        XCTAssertNotNil(response?.response)
+//        XCTAssertNotNil(response?.data)
+//        XCTAssertNil(response?.error)
+//
+//        XCTAssertEqual(response?.response?.url?.absoluteString, redirectURLString)
+//        XCTAssertEqual(response?.response?.statusCode, 200)
+//    }
+//
+//    // MARK: - Tests - Per Request Prioritization
+//
+//    func testThatRequestRedirectHandlerIsPrioritizedOverSessionRedirectHandler() {
+//        // Given
+//        let session = Session(redirectHandler: Redirector.doNotFollow)
+//
+//        var response: DataResponse<Data?, AFError>?
+//        let expectation = self.expectation(description: "Request should redirect to \(redirectURLString)")
+//
+//        // When
+//        session.request(urlString).redirect(using: Redirector.follow).response { resp in
+//            response = resp
+//            expectation.fulfill()
+//        }
+//
+//        waitForExpectations(timeout: timeout, handler: nil)
+//
+//        // Then
+//        XCTAssertNotNil(response?.request)
+//        XCTAssertNotNil(response?.response)
+//        XCTAssertNotNil(response?.data)
+//        XCTAssertNil(response?.error)
+//
+//        XCTAssertEqual(response?.response?.url?.absoluteString, redirectURLString)
+//        XCTAssertEqual(response?.response?.statusCode, 200)
+//    }
+// }

+ 4 - 2
Tests/SessionDelegateTests.swift

@@ -38,7 +38,8 @@ class SessionDelegateTestCase: BaseTestCase {
 
     // MARK: - Tests - Redirects
 
-    func testThatRequestWillPerformHTTPRedirectionByDefault() {
+    // Disabled due to HTTPBin issue: https://github.com/postmanlabs/httpbin/issues/617
+    func _testThatRequestWillPerformHTTPRedirectionByDefault() {
         // Given
         let redirectURLString = "https://www.apple.com/"
         let urlString = "https://httpbin.org/redirect-to?url=\(redirectURLString)"
@@ -66,7 +67,8 @@ class SessionDelegateTestCase: BaseTestCase {
         XCTAssertEqual(response?.response?.statusCode, 200)
     }
 
-    func testThatRequestWillPerformRedirectionMultipleTimesByDefault() {
+    // Disabled due to HTTPBin issue: https://github.com/postmanlabs/httpbin/issues/617
+    func _testThatRequestWillPerformRedirectionMultipleTimesByDefault() {
         // Given
         let redirectURLString = "https://httpbin.org/get"
         let urlString = "https://httpbin.org/redirect/5"