diff --git a/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionFileDownloadTaskDelegate.m b/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionFileDownloadTaskDelegate.m index 799e67980..d77026747 100644 --- a/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionFileDownloadTaskDelegate.m +++ b/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionFileDownloadTaskDelegate.m @@ -82,6 +82,7 @@ - (void)_taskDidFinish { errorDictionary[@"code"] = @(kPFErrorConnectionFailed); errorDictionary[@"error"] = [self.error localizedDescription]; errorDictionary[@"originalError"] = self.error; + errorDictionary[NSUnderlyingErrorKey] = self.error; errorDictionary[@"temporary"] = @(self.response.statusCode >= 500 || self.response.statusCode < 400); self.error = [PFErrorUtilities errorFromResult:errorDictionary]; } diff --git a/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionJSONDataTaskDelegate.m b/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionJSONDataTaskDelegate.m index 4fbc9d574..4d6d5d642 100644 --- a/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionJSONDataTaskDelegate.m +++ b/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionJSONDataTaskDelegate.m @@ -54,6 +54,7 @@ - (void)_taskDidFinish { errorDictionary[@"code"] = @(kPFErrorConnectionFailed); errorDictionary[@"error"] = [self.error localizedDescription]; errorDictionary[@"originalError"] = self.error; + errorDictionary[NSUnderlyingErrorKey] = self.error; errorDictionary[@"temporary"] = @(self.response.statusCode >= 500 || self.response.statusCode < 400); self.error = [PFErrorUtilities errorFromResult:errorDictionary]; [super _taskDidFinish]; diff --git a/Tests/Unit/URLSessionDataTaskDelegateTests.m b/Tests/Unit/URLSessionDataTaskDelegateTests.m index 2c1580b3c..1df09b8e6 100644 --- a/Tests/Unit/URLSessionDataTaskDelegateTests.m +++ b/Tests/Unit/URLSessionDataTaskDelegateTests.m @@ -130,6 +130,7 @@ - (void)testUnknownError { [delegate URLSession:mockedSession task:mockedTask didCompleteWithError:expectedError]; XCTAssertEqualObjects(delegate.resultTask.error.userInfo[@"originalError"], expectedError); + XCTAssertEqualObjects(delegate.resultTask.error.userInfo[NSUnderlyingErrorKey], expectedError); } - (void)testJSONError { diff --git a/Tests/Unit/URLSessionTests.m b/Tests/Unit/URLSessionTests.m index 9fd3b645e..a9e445e82 100644 --- a/Tests/Unit/URLSessionTests.m +++ b/Tests/Unit/URLSessionTests.m @@ -244,6 +244,7 @@ - (void)testPerformDataRequestError { [[session performDataURLRequestAsync:mockedURLRequest forCommand:mockedCommand cancellationToken:nil] continueWithBlock:^id(BFTask *task) { XCTAssertEqualObjects(expectedError, task.error.userInfo[@"originalError"]); + XCTAssertEqualObjects(expectedError, task.error.userInfo[NSUnderlyingErrorKey]); [expectation fulfill]; return nil; }]; diff --git a/Tests/Unit/URLSessionUploadTaskDelegateTests.m b/Tests/Unit/URLSessionUploadTaskDelegateTests.m index c3b46b109..a30f3ca53 100644 --- a/Tests/Unit/URLSessionUploadTaskDelegateTests.m +++ b/Tests/Unit/URLSessionUploadTaskDelegateTests.m @@ -205,6 +205,7 @@ - (void)testUnknownError { [delegate URLSession:mockedSession task:mockedTask didCompleteWithError:expectedError]; XCTAssertEqualObjects(delegate.resultTask.error.userInfo[@"originalError"], expectedError); + XCTAssertEqualObjects(delegate.resultTask.error.userInfo[NSUnderlyingErrorKey], expectedError); } - (void)testJSONError {