|
|
@@ -532,70 +532,67 @@ class UploadMultipartFormDataTestCase: BaseTestCase {
|
|
|
XCTFail("Content-Type header value should not be nil")
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ #if os(macOS)
|
|
|
+ func testThatUploadingMultipartFormDataOnBackgroundSessionWritesDataToFileToAvoidCrash() {
|
|
|
+ // Given
|
|
|
+ let manager: SessionManager = {
|
|
|
+ let identifier = "org.alamofire.uploadtests.\(UUID().uuidString)"
|
|
|
+ let configuration = URLSessionConfiguration.background(withIdentifier: identifier)
|
|
|
|
|
|
-// ⚠️ This test has been removed as a result of rdar://26870455 in Xcode 8 Seed 1
|
|
|
-// func testThatUploadingMultipartFormDataOnBackgroundSessionWritesDataToFileToAvoidCrash() {
|
|
|
-// // Given
|
|
|
-// let manager: SessionManager = {
|
|
|
-// let identifier = "org.alamofire.uploadtests.\(UUID().uuidString)"
|
|
|
-// let configuration = URLSessionConfiguration.background(withIdentifier: identifier)
|
|
|
-//
|
|
|
-// return SessionManager(configuration: configuration, serverTrustPolicyManager: nil)
|
|
|
-// }()
|
|
|
-//
|
|
|
-// let urlString = "https://httpbin.org/post"
|
|
|
-// let french = "français".data(using: .utf8, allowLossyConversion: false)!
|
|
|
-// let japanese = "日本語".data(using: .utf8, allowLossyConversion: false)!
|
|
|
-//
|
|
|
-// let expectation = self.expectation(description: "multipart form data upload should succeed")
|
|
|
-//
|
|
|
-// var request: URLRequest?
|
|
|
-// var response: HTTPURLResponse?
|
|
|
-// var data: Data?
|
|
|
-// var error: Error?
|
|
|
-// var streamingFromDisk: Bool?
|
|
|
-//
|
|
|
-// // When
|
|
|
-// manager.upload(
|
|
|
-// multipartFormData: { multipartFormData in
|
|
|
-// multipartFormData.append(french, withName: "french")
|
|
|
-// multipartFormData.append(japanese, withName: "japanese")
|
|
|
-// },
|
|
|
-// to: urlString,
|
|
|
-// withMethod: .post,
|
|
|
-// encodingCompletion: { result in
|
|
|
-// switch result {
|
|
|
-// case let .success(upload, uploadStreamingFromDisk, _):
|
|
|
-// streamingFromDisk = uploadStreamingFromDisk
|
|
|
-//
|
|
|
-// upload.response { responseRequest, responseResponse, responseData, responseError in
|
|
|
-// request = responseRequest
|
|
|
-// response = responseResponse
|
|
|
-// data = responseData
|
|
|
-// error = responseError
|
|
|
-//
|
|
|
-// expectation.fulfill()
|
|
|
-// }
|
|
|
-// case .failure:
|
|
|
-// expectation.fulfill()
|
|
|
-// }
|
|
|
-// }
|
|
|
-// )
|
|
|
-//
|
|
|
-// waitForExpectations(timeout: timeout, handler: nil)
|
|
|
-//
|
|
|
-// // Then
|
|
|
-// XCTAssertNotNil(request, "request should not be nil")
|
|
|
-// XCTAssertNotNil(response, "response should not be nil")
|
|
|
-// XCTAssertNotNil(data, "data should not be nil")
|
|
|
-// XCTAssertNil(error, "error should be nil")
|
|
|
-//
|
|
|
-// if let streamingFromDisk = streamingFromDisk {
|
|
|
-// XCTAssertTrue(streamingFromDisk, "streaming from disk should be true")
|
|
|
-// } else {
|
|
|
-// XCTFail("streaming from disk should not be nil")
|
|
|
-// }
|
|
|
-// }
|
|
|
+ return SessionManager(configuration: configuration, serverTrustPolicyManager: nil)
|
|
|
+ }()
|
|
|
+
|
|
|
+ let urlString = "https://httpbin.org/post"
|
|
|
+ let french = "français".data(using: .utf8, allowLossyConversion: false)!
|
|
|
+ let japanese = "日本語".data(using: .utf8, allowLossyConversion: false)!
|
|
|
+
|
|
|
+ let expectation = self.expectation(description: "multipart form data upload should succeed")
|
|
|
+
|
|
|
+ var request: URLRequest?
|
|
|
+ var response: HTTPURLResponse?
|
|
|
+ var data: Data?
|
|
|
+ var error: Error?
|
|
|
+ var streamingFromDisk: Bool?
|
|
|
+
|
|
|
+ // When
|
|
|
+ manager.upload(multipartFormData: { multipartFormData in
|
|
|
+ multipartFormData.append(french, withName: "french")
|
|
|
+ multipartFormData.append(japanese, withName: "japanese")
|
|
|
+ }, to: urlString,
|
|
|
+ encodingCompletion: { result in
|
|
|
+ switch result {
|
|
|
+ case let .success(upload, uploadStreamingFromDisk, _):
|
|
|
+ streamingFromDisk = uploadStreamingFromDisk
|
|
|
+
|
|
|
+ upload.response { defaultResponse in
|
|
|
+ request = defaultResponse.request
|
|
|
+ response = defaultResponse.response
|
|
|
+ data = defaultResponse.data
|
|
|
+ error = defaultResponse.error
|
|
|
+
|
|
|
+ expectation.fulfill()
|
|
|
+ }
|
|
|
+ case .failure:
|
|
|
+ expectation.fulfill()
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ waitForExpectations(timeout: timeout, handler: nil)
|
|
|
+
|
|
|
+ // Then
|
|
|
+ XCTAssertNotNil(request, "request should not be nil")
|
|
|
+ XCTAssertNotNil(response, "response should not be nil")
|
|
|
+ XCTAssertNotNil(data, "data should not be nil")
|
|
|
+ XCTAssertNil(error, "error should be nil")
|
|
|
+
|
|
|
+ if let streamingFromDisk = streamingFromDisk {
|
|
|
+ XCTAssertTrue(streamingFromDisk, "streaming from disk should be true")
|
|
|
+ } else {
|
|
|
+ XCTFail("streaming from disk should not be nil")
|
|
|
+ }
|
|
|
+ }
|
|
|
+ #endif
|
|
|
|
|
|
// MARK: Combined Test Execution
|
|
|
|