提交 8e3990b3 编写于 作者: C Christian Noon

Rebuilt URLProtocol tests to demonstrate using NSURLProtocol with NSURLSession.

上级 3b1edd80
......@@ -58,6 +58,10 @@ class ProxyURLProtocol: NSURLProtocol {
}
override class func canonicalRequestForRequest(request: NSURLRequest) -> NSURLRequest {
if let headers = request.allHTTPHeaderFields {
return ParameterEncoding.URL.encode(request, parameters: headers).0
}
return request
}
......@@ -102,36 +106,36 @@ extension ProxyURLProtocol: NSURLSessionDelegate {
// MARK: -
class URLProtocolTestCase: BaseTestCase {
var manager: Manager!
// MARK: Setup and Teardown Methods
// MARK: Setup and Teardown
override func setUp() {
super.setUp()
let configuration = Alamofire.Manager.sharedInstance.session.configuration
configuration.protocolClasses = [ProxyURLProtocol.self]
configuration.HTTPAdditionalHeaders = ["Session-Configuration-Header": "foo"]
}
manager = {
let configuration: NSURLSessionConfiguration = {
let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
configuration.protocolClasses = [ProxyURLProtocol.self]
configuration.HTTPAdditionalHeaders = ["session-configuration-header": "foo"]
override func tearDown() {
super.tearDown()
return configuration
}()
Alamofire.Manager.sharedInstance.session.configuration.protocolClasses = []
return Manager(configuration: configuration)
}()
}
// MARK: Tests
func testThatURLProtocolReceivesRequestHeadersAndNotSessionConfigurationHeaders() {
func testThatURLProtocolReceivesRequestHeadersAndSessionConfigurationHeaders() {
// Given
let URLString = "https://httpbin.org/response-headers"
let URL = NSURL(string: URLString)!
let parameters = ["request-header": "foobar"]
let mutableURLRequest = NSMutableURLRequest(URL: URL)
mutableURLRequest.HTTPMethod = Method.GET.rawValue
let URLRequest = ParameterEncoding.URL.encode(mutableURLRequest, parameters: parameters).0
let URLRequest = NSMutableURLRequest(URL: URL)
URLRequest.HTTPMethod = Method.GET.rawValue
URLRequest.setValue("foobar", forHTTPHeaderField: "request-header")
let expectation = expectationWithDescription("GET request should succeed")
......@@ -141,7 +145,7 @@ class URLProtocolTestCase: BaseTestCase {
var error: NSError?
// When
Alamofire.request(URLRequest)
manager.request(URLRequest)
.response { responseRequest, responseResponse, responseData, responseError in
request = responseRequest
response = responseResponse
......@@ -160,8 +164,8 @@ class URLProtocolTestCase: BaseTestCase {
XCTAssertNil(error, "error should be nil")
if let headers = response?.allHeaderFields as? [String: String] {
XCTAssertEqual(headers["request-header"] ?? "", "foobar", "urlrequest-header should be foobar")
XCTAssertNil(headers["Session-Configuration-Header"], "Session-Configuration-Header should be nil")
XCTAssertEqual(headers["request-header"], "foobar")
XCTAssertEqual(headers["session-configuration-header"], "foo")
} else {
XCTFail("headers should not be nil")
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册