Skip to content

Commit

Permalink
Adding authentication tests
Browse files Browse the repository at this point in the history
  • Loading branch information
mattt committed Sep 18, 2014
1 parent 06e922d commit a34db8c
Show file tree
Hide file tree
Showing 2 changed files with 102 additions and 0 deletions.
4 changes: 4 additions & 0 deletions Alamofire.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand All @@ -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 */
Expand Down Expand Up @@ -102,6 +104,7 @@
F8111E5E19A9674D0040E7D1 /* ResponseTests.swift */,
F8111E5F19A9674D0040E7D1 /* UploadTests.swift */,
F8111E5B19A9674D0040E7D1 /* DownloadTests.swift */,
F8E6024419CB46A800A3E7F1 /* AuthenticationTests.swift */,
F8111E4019A95C8B0040E7D1 /* Supporting Files */,
);
path = Tests;
Expand Down Expand Up @@ -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 */,
Expand Down
98 changes: 98 additions & 0 deletions Tests/AuthenticationTests.swift
Original file line number Diff line number Diff line change
@@ -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)")
}
}
}

0 comments on commit a34db8c

Please sign in to comment.