Browse Source

[Issue #732] Swapped out NSError for ErrorType in all Result types.

Christian Noon 10 years ago
parent
commit
64a004472c

+ 1 - 1
Source/Request.swift

@@ -193,7 +193,7 @@ public class Request {
         let progress: NSProgress
         let progress: NSProgress
 
 
         var data: NSData? { return nil }
         var data: NSData? { return nil }
-        var error: NSError?
+        var error: ErrorType?
 
 
         var credential: NSURLCredential?
         var credential: NSURLCredential?
 
 

+ 1 - 1
Source/ResponseSerialization.swift

@@ -77,7 +77,7 @@ extension Request {
     */
     */
     public func response(
     public func response(
         queue queue: dispatch_queue_t? = nil,
         queue queue: dispatch_queue_t? = nil,
-        completionHandler: (NSURLRequest?, NSHTTPURLResponse?, NSData?, NSError?) -> Void)
+        completionHandler: (NSURLRequest?, NSHTTPURLResponse?, NSData?, ErrorType?) -> Void)
         -> Self
         -> Self
     {
     {
         delegate.queue.addOperationWithBlock {
         delegate.queue.addOperationWithBlock {

+ 1 - 1
Source/Upload.swift

@@ -202,7 +202,7 @@ extension Manager {
     */
     */
     public enum MultipartFormDataEncodingResult {
     public enum MultipartFormDataEncodingResult {
         case Success(request: Request, streamingFromDisk: Bool, streamFileURL: NSURL?)
         case Success(request: Request, streamingFromDisk: Bool, streamFileURL: NSURL?)
-        case Failure(NSError)
+        case Failure(ErrorType)
     }
     }
 
 
     /**
     /**

+ 1 - 1
Source/Validation.swift

@@ -32,7 +32,7 @@ extension Request {
     */
     */
     public enum ValidationResult {
     public enum ValidationResult {
         case Success
         case Success
-        case Failure(NSError)
+        case Failure(ErrorType)
     }
     }
 
 
     /**
     /**

+ 12 - 6
Tests/AuthenticationTests.swift

@@ -57,7 +57,7 @@ class BasicAuthenticationTestCase: AuthenticationTestCase {
         var request: NSURLRequest?
         var request: NSURLRequest?
         var response: NSHTTPURLResponse?
         var response: NSHTTPURLResponse?
         var data: NSData?
         var data: NSData?
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         Alamofire.request(.GET, URLString)
         Alamofire.request(.GET, URLString)
@@ -78,7 +78,10 @@ class BasicAuthenticationTestCase: AuthenticationTestCase {
         XCTAssertNil(response, "response should be nil")
         XCTAssertNil(response, "response should be nil")
         XCTAssertNotNil(data, "data should not be nil")
         XCTAssertNotNil(data, "data should not be nil")
         XCTAssertNotNil(error, "error should not be nil")
         XCTAssertNotNil(error, "error should not be nil")
-        XCTAssertEqual(error?.code ?? 0, -999, "error should be NSURLErrorDomain Code -999 'cancelled'")
+
+        if let code = (error as? NSError)?.code {
+            XCTAssertEqual(code, -999, "error should be NSURLErrorDomain Code -999 'cancelled'")
+        }
     }
     }
 
 
     func testHTTPBasicAuthenticationWithValidCredentials() {
     func testHTTPBasicAuthenticationWithValidCredentials() {
@@ -88,7 +91,7 @@ class BasicAuthenticationTestCase: AuthenticationTestCase {
         var request: NSURLRequest?
         var request: NSURLRequest?
         var response: NSHTTPURLResponse?
         var response: NSHTTPURLResponse?
         var data: NSData?
         var data: NSData?
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         Alamofire.request(.GET, URLString)
         Alamofire.request(.GET, URLString)
@@ -130,7 +133,7 @@ class HTTPDigestAuthenticationTestCase: AuthenticationTestCase {
         var request: NSURLRequest?
         var request: NSURLRequest?
         var response: NSHTTPURLResponse?
         var response: NSHTTPURLResponse?
         var data: NSData?
         var data: NSData?
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         Alamofire.request(.GET, URLString)
         Alamofire.request(.GET, URLString)
@@ -151,7 +154,10 @@ class HTTPDigestAuthenticationTestCase: AuthenticationTestCase {
         XCTAssertNil(response, "response should be nil")
         XCTAssertNil(response, "response should be nil")
         XCTAssertNotNil(data, "data should not be nil")
         XCTAssertNotNil(data, "data should not be nil")
         XCTAssertNotNil(error, "error should not be nil")
         XCTAssertNotNil(error, "error should not be nil")
-        XCTAssertEqual(error?.code ?? 0, -999, "error should be NSURLErrorDomain Code -999 'cancelled'")
+
+        if let code = (error as? NSError)?.code {
+            XCTAssertEqual(code, -999, "error should be NSURLErrorDomain Code -999 'cancelled'")
+        }
     }
     }
 
 
     func testHTTPDigestAuthenticationWithValidCredentials() {
     func testHTTPDigestAuthenticationWithValidCredentials() {
@@ -161,7 +167,7 @@ class HTTPDigestAuthenticationTestCase: AuthenticationTestCase {
         var request: NSURLRequest?
         var request: NSURLRequest?
         var response: NSHTTPURLResponse?
         var response: NSHTTPURLResponse?
         var data: NSData?
         var data: NSData?
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         Alamofire.request(.GET, URLString)
         Alamofire.request(.GET, URLString)

+ 4 - 4
Tests/DownloadTests.swift

@@ -83,7 +83,7 @@ class DownloadResponseTestCase: BaseTestCase {
 
 
         var request: NSURLRequest?
         var request: NSURLRequest?
         var response: NSHTTPURLResponse?
         var response: NSHTTPURLResponse?
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         Alamofire.download(.GET, URLString, destination: destination)
         Alamofire.download(.GET, URLString, destination: destination)
@@ -165,7 +165,7 @@ class DownloadResponseTestCase: BaseTestCase {
         var responseRequest: NSURLRequest?
         var responseRequest: NSURLRequest?
         var responseResponse: NSHTTPURLResponse?
         var responseResponse: NSHTTPURLResponse?
         var responseData: NSData?
         var responseData: NSData?
-        var responseError: NSError?
+        var responseError: ErrorType?
 
 
         // When
         // When
         let download = Alamofire.download(.GET, URLString) { _, _ in
         let download = Alamofire.download(.GET, URLString) { _, _ in
@@ -262,7 +262,7 @@ class DownloadResumeDataTestCase: BaseTestCase {
         var request: NSURLRequest?
         var request: NSURLRequest?
         var response: NSHTTPURLResponse?
         var response: NSHTTPURLResponse?
         var data: AnyObject?
         var data: AnyObject?
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         let download = Alamofire.download(.GET, URLString, destination: destination)
         let download = Alamofire.download(.GET, URLString, destination: destination)
@@ -295,7 +295,7 @@ class DownloadResumeDataTestCase: BaseTestCase {
         var request: NSURLRequest?
         var request: NSURLRequest?
         var response: NSHTTPURLResponse?
         var response: NSHTTPURLResponse?
         var data: AnyObject?
         var data: AnyObject?
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         let download = Alamofire.download(.GET, URLString, destination: destination)
         let download = Alamofire.download(.GET, URLString, destination: destination)

+ 3 - 3
Tests/RequestTests.swift

@@ -87,7 +87,7 @@ class RequestResponseTestCase: BaseTestCase {
         var request: NSURLRequest?
         var request: NSURLRequest?
         var response: NSHTTPURLResponse?
         var response: NSHTTPURLResponse?
         var data: NSData?
         var data: NSData?
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         Alamofire.request(.GET, URLString, parameters: ["foo": "bar"])
         Alamofire.request(.GET, URLString, parameters: ["foo": "bar"])
@@ -121,7 +121,7 @@ class RequestResponseTestCase: BaseTestCase {
         var responseRequest: NSURLRequest?
         var responseRequest: NSURLRequest?
         var responseResponse: NSHTTPURLResponse?
         var responseResponse: NSHTTPURLResponse?
         var responseData: NSData?
         var responseData: NSData?
-        var responseError: NSError?
+        var responseError: ErrorType?
 
 
         // When
         // When
         let request = Alamofire.request(.GET, URLString)
         let request = Alamofire.request(.GET, URLString)
@@ -201,7 +201,7 @@ class RequestResponseTestCase: BaseTestCase {
         var responseRequest: NSURLRequest?
         var responseRequest: NSURLRequest?
         var responseResponse: NSHTTPURLResponse?
         var responseResponse: NSHTTPURLResponse?
         var responseData: NSData?
         var responseData: NSData?
-        var responseError: NSError?
+        var responseError: ErrorType?
 
 
         // When
         // When
         let request = Alamofire.request(.GET, URLString)
         let request = Alamofire.request(.GET, URLString)

+ 5 - 5
Tests/ResponseTests.swift

@@ -297,7 +297,7 @@ class RedirectResponseTestCase: BaseTestCase {
         var request: NSURLRequest?
         var request: NSURLRequest?
         var response: NSHTTPURLResponse?
         var response: NSHTTPURLResponse?
         var data: NSData?
         var data: NSData?
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         Alamofire.request(.GET, URLString)
         Alamofire.request(.GET, URLString)
@@ -332,7 +332,7 @@ class RedirectResponseTestCase: BaseTestCase {
         var request: NSURLRequest?
         var request: NSURLRequest?
         var response: NSHTTPURLResponse?
         var response: NSHTTPURLResponse?
         var data: NSData?
         var data: NSData?
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         Alamofire.request(.GET, URLString)
         Alamofire.request(.GET, URLString)
@@ -372,7 +372,7 @@ class RedirectResponseTestCase: BaseTestCase {
         var request: NSURLRequest?
         var request: NSURLRequest?
         var response: NSHTTPURLResponse?
         var response: NSHTTPURLResponse?
         var data: NSData?
         var data: NSData?
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         Alamofire.request(.GET, URLString)
         Alamofire.request(.GET, URLString)
@@ -412,7 +412,7 @@ class RedirectResponseTestCase: BaseTestCase {
         var request: NSURLRequest?
         var request: NSURLRequest?
         var response: NSHTTPURLResponse?
         var response: NSHTTPURLResponse?
         var data: NSData?
         var data: NSData?
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         Alamofire.request(.GET, URLString)
         Alamofire.request(.GET, URLString)
@@ -454,7 +454,7 @@ class RedirectResponseTestCase: BaseTestCase {
         var request: NSURLRequest?
         var request: NSURLRequest?
         var response: NSHTTPURLResponse?
         var response: NSHTTPURLResponse?
         var data: NSData?
         var data: NSData?
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         Alamofire.request(.GET, URLString)
         Alamofire.request(.GET, URLString)

+ 50 - 24
Tests/TLSEvaluationTests.swift

@@ -77,7 +77,7 @@ class TLSEvaluationExpiredLeafCertificateTestCase: BaseTestCase {
         // Given
         // Given
         let expectation = expectationWithDescription("\(URL)")
         let expectation = expectationWithDescription("\(URL)")
         let manager = Manager(configuration: configuration)
         let manager = Manager(configuration: configuration)
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         manager.request(.GET, URL)
         manager.request(.GET, URL)
@@ -90,11 +90,12 @@ class TLSEvaluationExpiredLeafCertificateTestCase: BaseTestCase {
 
 
         // Then
         // Then
         XCTAssertNotNil(error, "error should not be nil")
         XCTAssertNotNil(error, "error should not be nil")
-        XCTAssertEqual(
-            error?.code ?? -1,
-            NSURLErrorServerCertificateUntrusted,
-            "error should be NSURLErrorServerCertificateUntrusted"
-        )
+
+        if let code = (error as? NSError)?.code {
+            XCTAssertEqual(code, NSURLErrorServerCertificateUntrusted, "code should be untrusted server certficate")
+        } else {
+            XCTFail("error should be an NSError")
+        }
     }
     }
 
 
     // MARK: Server Trust Policy - Perform Default Tests
     // MARK: Server Trust Policy - Perform Default Tests
@@ -108,7 +109,7 @@ class TLSEvaluationExpiredLeafCertificateTestCase: BaseTestCase {
         )
         )
 
 
         let expectation = expectationWithDescription("\(URL)")
         let expectation = expectationWithDescription("\(URL)")
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         manager.request(.GET, URL)
         manager.request(.GET, URL)
@@ -121,7 +122,12 @@ class TLSEvaluationExpiredLeafCertificateTestCase: BaseTestCase {
 
 
         // Then
         // Then
         XCTAssertNotNil(error, "error should not be nil")
         XCTAssertNotNil(error, "error should not be nil")
-        XCTAssertEqual(error?.code ?? -1, NSURLErrorCancelled, "error should be NSURLErrorCancelled")
+
+        if let code = (error as? NSError)?.code {
+            XCTAssertEqual(code, NSURLErrorCancelled, "code should be cancelled")
+        } else {
+            XCTFail("error should be an NSError")
+        }
     }
     }
 
 
     // MARK: Server Trust Policy - Certificate Pinning Tests
     // MARK: Server Trust Policy - Certificate Pinning Tests
@@ -139,7 +145,7 @@ class TLSEvaluationExpiredLeafCertificateTestCase: BaseTestCase {
         )
         )
 
 
         let expectation = expectationWithDescription("\(URL)")
         let expectation = expectationWithDescription("\(URL)")
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         manager.request(.GET, URL)
         manager.request(.GET, URL)
@@ -152,7 +158,12 @@ class TLSEvaluationExpiredLeafCertificateTestCase: BaseTestCase {
 
 
         // Then
         // Then
         XCTAssertNotNil(error, "error should not be nil")
         XCTAssertNotNil(error, "error should not be nil")
-        XCTAssertEqual(error?.code ?? -1, NSURLErrorCancelled, "error should be NSURLErrorCancelled")
+
+        if let code = (error as? NSError)?.code {
+            XCTAssertEqual(code, NSURLErrorCancelled, "code should be cancelled")
+        } else {
+            XCTFail("error should be an NSError")
+        }
     }
     }
 
 
     func testThatExpiredCertificateRequestFailsWhenPinningAllCertificatesWithCertificateChainValidation() {
     func testThatExpiredCertificateRequestFailsWhenPinningAllCertificatesWithCertificateChainValidation() {
@@ -168,7 +179,7 @@ class TLSEvaluationExpiredLeafCertificateTestCase: BaseTestCase {
         )
         )
 
 
         let expectation = expectationWithDescription("\(URL)")
         let expectation = expectationWithDescription("\(URL)")
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         manager.request(.GET, URL)
         manager.request(.GET, URL)
@@ -181,7 +192,12 @@ class TLSEvaluationExpiredLeafCertificateTestCase: BaseTestCase {
 
 
         // Then
         // Then
         XCTAssertNotNil(error, "error should not be nil")
         XCTAssertNotNil(error, "error should not be nil")
-        XCTAssertEqual(error?.code ?? -1, NSURLErrorCancelled, "error should be NSURLErrorCancelled")
+
+        if let code = (error as? NSError)?.code {
+            XCTAssertEqual(code, NSURLErrorCancelled, "code should be cancelled")
+        } else {
+            XCTFail("error should be an NSError")
+        }
     }
     }
 
 
     func testThatExpiredCertificateRequestSucceedsWhenPinningLeafCertificateWithoutCertificateChainValidation() {
     func testThatExpiredCertificateRequestSucceedsWhenPinningLeafCertificateWithoutCertificateChainValidation() {
@@ -197,7 +213,7 @@ class TLSEvaluationExpiredLeafCertificateTestCase: BaseTestCase {
         )
         )
 
 
         let expectation = expectationWithDescription("\(URL)")
         let expectation = expectationWithDescription("\(URL)")
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         manager.request(.GET, URL)
         manager.request(.GET, URL)
@@ -225,7 +241,7 @@ class TLSEvaluationExpiredLeafCertificateTestCase: BaseTestCase {
         )
         )
 
 
         let expectation = expectationWithDescription("\(URL)")
         let expectation = expectationWithDescription("\(URL)")
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         manager.request(.GET, URL)
         manager.request(.GET, URL)
@@ -253,7 +269,7 @@ class TLSEvaluationExpiredLeafCertificateTestCase: BaseTestCase {
         )
         )
 
 
         let expectation = expectationWithDescription("\(URL)")
         let expectation = expectationWithDescription("\(URL)")
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         manager.request(.GET, URL)
         manager.request(.GET, URL)
@@ -283,7 +299,7 @@ class TLSEvaluationExpiredLeafCertificateTestCase: BaseTestCase {
         )
         )
 
 
         let expectation = expectationWithDescription("\(URL)")
         let expectation = expectationWithDescription("\(URL)")
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         manager.request(.GET, URL)
         manager.request(.GET, URL)
@@ -296,7 +312,12 @@ class TLSEvaluationExpiredLeafCertificateTestCase: BaseTestCase {
 
 
         // Then
         // Then
         XCTAssertNotNil(error, "error should not be nil")
         XCTAssertNotNil(error, "error should not be nil")
-        XCTAssertEqual(error?.code ?? -1, NSURLErrorCancelled, "error should be NSURLErrorCancelled")
+
+        if let code = (error as? NSError)?.code {
+            XCTAssertEqual(code, NSURLErrorCancelled, "code should be cancelled")
+        } else {
+            XCTFail("error should be an NSError")
+        }
     }
     }
 
 
     func testThatExpiredCertificateRequestSucceedsWhenPinningLeafPublicKeyWithoutCertificateChainValidation() {
     func testThatExpiredCertificateRequestSucceedsWhenPinningLeafPublicKeyWithoutCertificateChainValidation() {
@@ -312,7 +333,7 @@ class TLSEvaluationExpiredLeafCertificateTestCase: BaseTestCase {
         )
         )
 
 
         let expectation = expectationWithDescription("\(URL)")
         let expectation = expectationWithDescription("\(URL)")
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         manager.request(.GET, URL)
         manager.request(.GET, URL)
@@ -340,7 +361,7 @@ class TLSEvaluationExpiredLeafCertificateTestCase: BaseTestCase {
         )
         )
 
 
         let expectation = expectationWithDescription("\(URL)")
         let expectation = expectationWithDescription("\(URL)")
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         manager.request(.GET, URL)
         manager.request(.GET, URL)
@@ -368,7 +389,7 @@ class TLSEvaluationExpiredLeafCertificateTestCase: BaseTestCase {
         )
         )
 
 
         let expectation = expectationWithDescription("\(URL)")
         let expectation = expectationWithDescription("\(URL)")
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         manager.request(.GET, URL)
         manager.request(.GET, URL)
@@ -394,7 +415,7 @@ class TLSEvaluationExpiredLeafCertificateTestCase: BaseTestCase {
         )
         )
 
 
         let expectation = expectationWithDescription("\(URL)")
         let expectation = expectationWithDescription("\(URL)")
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         manager.request(.GET, URL)
         manager.request(.GET, URL)
@@ -426,7 +447,7 @@ class TLSEvaluationExpiredLeafCertificateTestCase: BaseTestCase {
         )
         )
 
 
         let expectation = expectationWithDescription("\(URL)")
         let expectation = expectationWithDescription("\(URL)")
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         manager.request(.GET, URL)
         manager.request(.GET, URL)
@@ -456,7 +477,7 @@ class TLSEvaluationExpiredLeafCertificateTestCase: BaseTestCase {
         )
         )
 
 
         let expectation = expectationWithDescription("\(URL)")
         let expectation = expectationWithDescription("\(URL)")
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         manager.request(.GET, URL)
         manager.request(.GET, URL)
@@ -469,6 +490,11 @@ class TLSEvaluationExpiredLeafCertificateTestCase: BaseTestCase {
 
 
         // Then
         // Then
         XCTAssertNotNil(error, "error should not be nil")
         XCTAssertNotNil(error, "error should not be nil")
-        XCTAssertEqual(error?.code ?? -1, NSURLErrorCancelled, "error should be NSURLErrorCancelled")
+
+        if let code = (error as? NSError)?.code {
+            XCTAssertEqual(code, NSURLErrorCancelled, "code should be cancelled")
+        } else {
+            XCTFail("error should be an NSError")
+        }
     }
     }
 }
 }

+ 1 - 1
Tests/URLProtocolTests.swift

@@ -138,7 +138,7 @@ class URLProtocolTestCase: BaseTestCase {
         var request: NSURLRequest?
         var request: NSURLRequest?
         var response: NSHTTPURLResponse?
         var response: NSHTTPURLResponse?
         var data: NSData?
         var data: NSData?
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         Alamofire.request(URLRequest)
         Alamofire.request(URLRequest)

+ 5 - 5
Tests/UploadTests.swift

@@ -148,7 +148,7 @@ class UploadDataTestCase: BaseTestCase {
 
 
         var request: NSURLRequest?
         var request: NSURLRequest?
         var response: NSHTTPURLResponse?
         var response: NSHTTPURLResponse?
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         Alamofire.upload(.POST, URLString, data: data)
         Alamofire.upload(.POST, URLString, data: data)
@@ -187,7 +187,7 @@ class UploadDataTestCase: BaseTestCase {
         var responseRequest: NSURLRequest?
         var responseRequest: NSURLRequest?
         var responseResponse: NSHTTPURLResponse?
         var responseResponse: NSHTTPURLResponse?
         var responseData: NSData?
         var responseData: NSData?
-        var responseError: NSError?
+        var responseError: ErrorType?
 
 
         // When
         // When
         let upload = Alamofire.upload(.POST, URLString, data: data)
         let upload = Alamofire.upload(.POST, URLString, data: data)
@@ -275,7 +275,7 @@ class UploadMultipartFormDataTestCase: BaseTestCase {
         var request: NSURLRequest?
         var request: NSURLRequest?
         var response: NSHTTPURLResponse?
         var response: NSHTTPURLResponse?
         var data: NSData?
         var data: NSData?
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         Alamofire.upload(
         Alamofire.upload(
@@ -332,7 +332,7 @@ class UploadMultipartFormDataTestCase: BaseTestCase {
         var request: NSURLRequest?
         var request: NSURLRequest?
         var response: NSHTTPURLResponse?
         var response: NSHTTPURLResponse?
         var data: NSData?
         var data: NSData?
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         Alamofire.upload(
         Alamofire.upload(
@@ -612,7 +612,7 @@ class UploadMultipartFormDataTestCase: BaseTestCase {
         var request: NSURLRequest?
         var request: NSURLRequest?
         var response: NSHTTPURLResponse?
         var response: NSHTTPURLResponse?
         var data: NSData?
         var data: NSData?
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         Alamofire.upload(
         Alamofire.upload(

+ 40 - 24
Tests/ValidationTests.swift

@@ -30,7 +30,7 @@ class StatusCodeValidationTestCase: BaseTestCase {
         let URLString = "https://httpbin.org/status/200"
         let URLString = "https://httpbin.org/status/200"
         let expectation = expectationWithDescription("request should return 200 status code")
         let expectation = expectationWithDescription("request should return 200 status code")
 
 
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         Alamofire.request(.GET, URLString)
         Alamofire.request(.GET, URLString)
@@ -51,7 +51,7 @@ class StatusCodeValidationTestCase: BaseTestCase {
         let URLString = "https://httpbin.org/status/404"
         let URLString = "https://httpbin.org/status/404"
         let expectation = expectationWithDescription("request should return 404 status code")
         let expectation = expectationWithDescription("request should return 404 status code")
 
 
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         Alamofire.request(.GET, URLString)
         Alamofire.request(.GET, URLString)
@@ -66,9 +66,11 @@ class StatusCodeValidationTestCase: BaseTestCase {
         // Then
         // Then
         XCTAssertNotNil(error, "error should not be nil")
         XCTAssertNotNil(error, "error should not be nil")
 
 
-        if let error = error {
+        if let error = error as? NSError {
             XCTAssertEqual(error.domain, Error.Domain, "domain should be Alamofire error domain")
             XCTAssertEqual(error.domain, Error.Domain, "domain should be Alamofire error domain")
             XCTAssertEqual(error.code, Error.Code.StatusCodeValidationFailed.rawValue, "code should be status code validation failure")
             XCTAssertEqual(error.code, Error.Code.StatusCodeValidationFailed.rawValue, "code should be status code validation failure")
+        } else {
+            XCTFail("error should be an NSError")
         }
         }
     }
     }
 
 
@@ -77,7 +79,7 @@ class StatusCodeValidationTestCase: BaseTestCase {
         let URLString = "https://httpbin.org/status/201"
         let URLString = "https://httpbin.org/status/201"
         let expectation = expectationWithDescription("request should return 201 status code")
         let expectation = expectationWithDescription("request should return 201 status code")
 
 
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         Alamofire.request(.GET, URLString)
         Alamofire.request(.GET, URLString)
@@ -92,9 +94,11 @@ class StatusCodeValidationTestCase: BaseTestCase {
         // Then
         // Then
         XCTAssertNotNil(error, "error should not be nil")
         XCTAssertNotNil(error, "error should not be nil")
 
 
-        if let error = error {
+        if let error = error as? NSError {
             XCTAssertEqual(error.domain, Error.Domain, "domain should be Alamofire error domain")
             XCTAssertEqual(error.domain, Error.Domain, "domain should be Alamofire error domain")
             XCTAssertEqual(error.code, Error.Code.StatusCodeValidationFailed.rawValue, "code should be status code validation failure")
             XCTAssertEqual(error.code, Error.Code.StatusCodeValidationFailed.rawValue, "code should be status code validation failure")
+        } else {
+            XCTFail("error should be an NSError")
         }
         }
     }
     }
 }
 }
@@ -107,7 +111,7 @@ class ContentTypeValidationTestCase: BaseTestCase {
         let URLString = "https://httpbin.org/ip"
         let URLString = "https://httpbin.org/ip"
         let expectation = expectationWithDescription("request should succeed and return ip")
         let expectation = expectationWithDescription("request should succeed and return ip")
 
 
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         Alamofire.request(.GET, URLString)
         Alamofire.request(.GET, URLString)
@@ -128,7 +132,7 @@ class ContentTypeValidationTestCase: BaseTestCase {
         let URLString = "https://httpbin.org/ip"
         let URLString = "https://httpbin.org/ip"
         let expectation = expectationWithDescription("request should succeed and return ip")
         let expectation = expectationWithDescription("request should succeed and return ip")
 
 
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         Alamofire.request(.GET, URLString)
         Alamofire.request(.GET, URLString)
@@ -151,7 +155,7 @@ class ContentTypeValidationTestCase: BaseTestCase {
         let URLString = "https://httpbin.org/xml"
         let URLString = "https://httpbin.org/xml"
         let expectation = expectationWithDescription("request should succeed and return xml")
         let expectation = expectationWithDescription("request should succeed and return xml")
 
 
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         Alamofire.request(.GET, URLString)
         Alamofire.request(.GET, URLString)
@@ -166,9 +170,11 @@ class ContentTypeValidationTestCase: BaseTestCase {
         // Then
         // Then
         XCTAssertNotNil(error, "error should not be nil")
         XCTAssertNotNil(error, "error should not be nil")
 
 
-        if let error = error {
+        if let error = error as? NSError {
             XCTAssertEqual(error.domain, Error.Domain, "domain should be Alamofire error domain")
             XCTAssertEqual(error.domain, Error.Domain, "domain should be Alamofire error domain")
             XCTAssertEqual(error.code, Error.Code.ContentTypeValidationFailed.rawValue, "code should be content type validation failure")
             XCTAssertEqual(error.code, Error.Code.ContentTypeValidationFailed.rawValue, "code should be content type validation failure")
+        } else {
+            XCTFail("error should be an NSError")
         }
         }
     }
     }
 
 
@@ -177,7 +183,7 @@ class ContentTypeValidationTestCase: BaseTestCase {
         let URLString = "https://httpbin.org/xml"
         let URLString = "https://httpbin.org/xml"
         let expectation = expectationWithDescription("request should succeed and return xml")
         let expectation = expectationWithDescription("request should succeed and return xml")
 
 
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         Alamofire.request(.GET, URLString)
         Alamofire.request(.GET, URLString)
@@ -192,9 +198,11 @@ class ContentTypeValidationTestCase: BaseTestCase {
         // Then
         // Then
         XCTAssertNotNil(error, "error should not be nil")
         XCTAssertNotNil(error, "error should not be nil")
 
 
-        if let error = error {
+        if let error = error as? NSError {
             XCTAssertEqual(error.domain, Error.Domain, "domain should be Alamofire error domain")
             XCTAssertEqual(error.domain, Error.Domain, "domain should be Alamofire error domain")
             XCTAssertEqual(error.code, Error.Code.ContentTypeValidationFailed.rawValue, "code should be content type validation failure")
             XCTAssertEqual(error.code, Error.Code.ContentTypeValidationFailed.rawValue, "code should be content type validation failure")
+        } else {
+            XCTFail("error should be an NSError")
         }
         }
     }
     }
 
 
@@ -250,7 +258,7 @@ class ContentTypeValidationTestCase: BaseTestCase {
 
 
         var response: NSHTTPURLResponse?
         var response: NSHTTPURLResponse?
         var data: NSData?
         var data: NSData?
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         manager.request(.DELETE, URLString)
         manager.request(.DELETE, URLString)
@@ -285,7 +293,7 @@ class MultipleValidationTestCase: BaseTestCase {
         let URLString = "https://httpbin.org/ip"
         let URLString = "https://httpbin.org/ip"
         let expectation = expectationWithDescription("request should succeed and return ip")
         let expectation = expectationWithDescription("request should succeed and return ip")
 
 
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         Alamofire.request(.GET, URLString)
         Alamofire.request(.GET, URLString)
@@ -307,7 +315,7 @@ class MultipleValidationTestCase: BaseTestCase {
         let URLString = "https://httpbin.org/xml"
         let URLString = "https://httpbin.org/xml"
         let expectation = expectationWithDescription("request should succeed and return xml")
         let expectation = expectationWithDescription("request should succeed and return xml")
 
 
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         Alamofire.request(.GET, URLString)
         Alamofire.request(.GET, URLString)
@@ -323,9 +331,11 @@ class MultipleValidationTestCase: BaseTestCase {
         // Then
         // Then
         XCTAssertNotNil(error, "error should not be nil")
         XCTAssertNotNil(error, "error should not be nil")
 
 
-        if let error = error {
+        if let error = error as? NSError {
             XCTAssertEqual(error.domain, Error.Domain, "domain should be Alamofire error domain")
             XCTAssertEqual(error.domain, Error.Domain, "domain should be Alamofire error domain")
             XCTAssertEqual(error.code, Error.Code.StatusCodeValidationFailed.rawValue, "code should be status code validation failure")
             XCTAssertEqual(error.code, Error.Code.StatusCodeValidationFailed.rawValue, "code should be status code validation failure")
+        } else {
+            XCTFail("error should be an NSError")
         }
         }
     }
     }
 
 
@@ -334,7 +344,7 @@ class MultipleValidationTestCase: BaseTestCase {
         let URLString = "https://httpbin.org/xml"
         let URLString = "https://httpbin.org/xml"
         let expectation = expectationWithDescription("request should succeed and return xml")
         let expectation = expectationWithDescription("request should succeed and return xml")
 
 
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         Alamofire.request(.GET, URLString)
         Alamofire.request(.GET, URLString)
@@ -350,9 +360,11 @@ class MultipleValidationTestCase: BaseTestCase {
         // Then
         // Then
         XCTAssertNotNil(error, "error should not be nil")
         XCTAssertNotNil(error, "error should not be nil")
 
 
-        if let error = error {
+        if let error = error as? NSError {
             XCTAssertEqual(error.domain, Error.Domain, "domain should be Alamofire error domain")
             XCTAssertEqual(error.domain, Error.Domain, "domain should be Alamofire error domain")
             XCTAssertEqual(error.code, Error.Code.ContentTypeValidationFailed.rawValue, "code should be content type validation failure")
             XCTAssertEqual(error.code, Error.Code.ContentTypeValidationFailed.rawValue, "code should be content type validation failure")
+        } else {
+            XCTFail("error should be an NSError")
         }
         }
     }
     }
 }
 }
@@ -368,7 +380,7 @@ class AutomaticValidationTestCase: BaseTestCase {
 
 
         let expectation = expectationWithDescription("request should succeed and return ip")
         let expectation = expectationWithDescription("request should succeed and return ip")
 
 
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         Alamofire.request(mutableURLRequest)
         Alamofire.request(mutableURLRequest)
@@ -389,7 +401,7 @@ class AutomaticValidationTestCase: BaseTestCase {
         let URLString = "https://httpbin.org/status/404"
         let URLString = "https://httpbin.org/status/404"
         let expectation = expectationWithDescription("request should return 404 status code")
         let expectation = expectationWithDescription("request should return 404 status code")
 
 
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         Alamofire.request(.GET, URLString)
         Alamofire.request(.GET, URLString)
@@ -404,9 +416,11 @@ class AutomaticValidationTestCase: BaseTestCase {
         // Then
         // Then
         XCTAssertNotNil(error, "error should not be nil")
         XCTAssertNotNil(error, "error should not be nil")
 
 
-        if let error = error {
+        if let error = error as? NSError {
             XCTAssertEqual(error.domain, Error.Domain, "domain should be Alamofire error domain")
             XCTAssertEqual(error.domain, Error.Domain, "domain should be Alamofire error domain")
             XCTAssertEqual(error.code, Error.Code.StatusCodeValidationFailed.rawValue, "code should be status code validation failure")
             XCTAssertEqual(error.code, Error.Code.StatusCodeValidationFailed.rawValue, "code should be status code validation failure")
+        } else {
+            XCTFail("error should be an NSError")
         }
         }
     }
     }
 
 
@@ -418,7 +432,7 @@ class AutomaticValidationTestCase: BaseTestCase {
 
 
         let expectation = expectationWithDescription("request should succeed and return ip")
         let expectation = expectationWithDescription("request should succeed and return ip")
 
 
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         Alamofire.request(mutableURLRequest)
         Alamofire.request(mutableURLRequest)
@@ -444,7 +458,7 @@ class AutomaticValidationTestCase: BaseTestCase {
 
 
         let expectation = expectationWithDescription("request should succeed and return xml")
         let expectation = expectationWithDescription("request should succeed and return xml")
 
 
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         Alamofire.request(mutableURLRequest)
         Alamofire.request(mutableURLRequest)
@@ -468,7 +482,7 @@ class AutomaticValidationTestCase: BaseTestCase {
 
 
         let expectation = expectationWithDescription("request should succeed and return xml")
         let expectation = expectationWithDescription("request should succeed and return xml")
 
 
-        var error: NSError?
+        var error: ErrorType?
 
 
         // When
         // When
         Alamofire.request(mutableURLRequest)
         Alamofire.request(mutableURLRequest)
@@ -483,9 +497,11 @@ class AutomaticValidationTestCase: BaseTestCase {
         // Then
         // Then
         XCTAssertNotNil(error, "error should not be nil")
         XCTAssertNotNil(error, "error should not be nil")
 
 
-        if let error = error {
+        if let error = error as? NSError {
             XCTAssertEqual(error.domain, Error.Domain, "domain should be Alamofire error domain")
             XCTAssertEqual(error.domain, Error.Domain, "domain should be Alamofire error domain")
             XCTAssertEqual(error.code, Error.Code.ContentTypeValidationFailed.rawValue, "code should be content type validation failure")
             XCTAssertEqual(error.code, Error.Code.ContentTypeValidationFailed.rawValue, "code should be content type validation failure")
+        } else {
+            XCTFail("error should be an NSError")
         }
         }
     }
     }
 }
 }