Browse Source

Adding authentication tests

Mattt Thompson 11 years ago
parent
commit
a34db8ca4d
2 changed files with 102 additions and 0 deletions
  1. 4 0
      Alamofire.xcodeproj/project.pbxproj
  2. 98 0
      Tests/AuthenticationTests.swift

+ 4 - 0
Alamofire.xcodeproj/project.pbxproj

@@ -14,6 +14,7 @@
 		F8858DDD19A96B4300F55F93 /* RequestTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8111E5D19A9674D0040E7D1 /* RequestTests.swift */; };
 		F8858DDE19A96B4400F55F93 /* ResponseTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8111E5E19A9674D0040E7D1 /* ResponseTests.swift */; };
 		F897FF4119AA800700AB5182 /* Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = F897FF4019AA800700AB5182 /* Alamofire.swift */; };
+		F8E6024519CB46A800A3E7F1 /* AuthenticationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8E6024419CB46A800A3E7F1 /* AuthenticationTests.swift */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXContainerItemProxy section */
@@ -38,6 +39,7 @@
 		F8111E5E19A9674D0040E7D1 /* ResponseTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResponseTests.swift; sourceTree = "<group>"; };
 		F8111E5F19A9674D0040E7D1 /* UploadTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UploadTests.swift; sourceTree = "<group>"; };
 		F897FF4019AA800700AB5182 /* Alamofire.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Alamofire.swift; sourceTree = "<group>"; };
+		F8E6024419CB46A800A3E7F1 /* AuthenticationTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AuthenticationTests.swift; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -102,6 +104,7 @@
 				F8111E5E19A9674D0040E7D1 /* ResponseTests.swift */,
 				F8111E5F19A9674D0040E7D1 /* UploadTests.swift */,
 				F8111E5B19A9674D0040E7D1 /* DownloadTests.swift */,
+				F8E6024419CB46A800A3E7F1 /* AuthenticationTests.swift */,
 				F8111E4019A95C8B0040E7D1 /* Supporting Files */,
 			);
 			path = Tests;
@@ -231,6 +234,7 @@
 			buildActionMask = 2147483647;
 			files = (
 				F8858DDD19A96B4300F55F93 /* RequestTests.swift in Sources */,
+				F8E6024519CB46A800A3E7F1 /* AuthenticationTests.swift in Sources */,
 				F8858DDE19A96B4400F55F93 /* ResponseTests.swift in Sources */,
 				F8111E6119A9674D0040E7D1 /* ParameterEncodingTests.swift in Sources */,
 				F8111E6419A9674D0040E7D1 /* UploadTests.swift in Sources */,

+ 98 - 0
Tests/AuthenticationTests.swift

@@ -0,0 +1,98 @@
+// DownloadTests.swift
+//
+// Copyright (c) 2014 Alamofire (http://alamofire.org)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+import Foundation
+import Alamofire
+import XCTest
+
+class AlamofireAuthenticationTestCase: XCTestCase {
+    func testHTTPBasicAuthentication() {
+        let user = "user"
+        let password = "password"
+        let URL = "http://httpbin.org/basic-auth/\(user)/\(password)"
+
+        let validCredentialsExpectation = expectationWithDescription("\(URL) 200")
+        let invalidCredentialsExpectation = expectationWithDescription("\(URL) 401")
+
+        Alamofire.request(.GET, URL)
+            .authenticate(user: user, password: password)
+            .response { (request, response, _, error) in
+                validCredentialsExpectation.fulfill()
+
+                XCTAssertNotNil(request, "request should not be nil")
+                XCTAssertNotNil(response, "response should not be nil")
+                XCTAssert(response?.statusCode == 200, "response status code should be 200")
+                XCTAssertNil(error, "error should be nil")
+        }
+
+        Alamofire.request(.GET, URL)
+            .authenticate(user: "invalid", password: "credentials")
+            .response { (request, response, _, error) in
+                invalidCredentialsExpectation.fulfill()
+
+                XCTAssertNotNil(request, "request should not be nil")
+                XCTAssertNotNil(response, "response should not be nil")
+                XCTAssert(response?.statusCode == 401, "response status code should be 401")
+                XCTAssertNil(error, "error should be nil")
+        }
+
+        waitForExpectationsWithTimeout(10) { (error) in
+            XCTAssertNil(error, "\(error)")
+        }
+    }
+
+    func testHTTPDigestAuthentication() {
+        let qop = "auth"
+        let user = "user"
+        let password = "password"
+        let URL = "http://httpbin.org/digest-auth/\(qop)/\(user)/\(password)"
+
+        let validCredentialsExpectation = expectationWithDescription("\(URL) 200")
+        let invalidCredentialsExpectation = expectationWithDescription("\(URL) 401")
+
+        Alamofire.request(.GET, URL)
+            .authenticate(user: user, password: password)
+            .response { (request, response, _, error) in
+                validCredentialsExpectation.fulfill()
+
+                XCTAssertNotNil(request, "request should not be nil")
+                XCTAssertNotNil(response, "response should not be nil")
+                XCTAssert(response?.statusCode == 200, "response status code should be 200")
+                XCTAssertNil(error, "error should be nil")
+        }
+
+        Alamofire.request(.GET, URL)
+            .authenticate(user: "invalid", password: "credentials")
+            .response { (request, response, _, error) in
+                invalidCredentialsExpectation.fulfill()
+
+                XCTAssertNotNil(request, "request should not be nil")
+                XCTAssertNotNil(response, "response should not be nil")
+                XCTAssert(response?.statusCode == 401, "response status code should be 401")
+                XCTAssertNil(error, "error should be nil")
+        }
+
+        waitForExpectationsWithTimeout(10) { (error) in
+            XCTAssertNil(error, "\(error)")
+        }
+    }
+}