From d6587027e7d94b46f9e40af5e3833449087476f0 Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Sat, 18 May 2013 14:44:20 -0400 Subject: [PATCH 1/2] Add support for logging request & responses during test execution via the `AFTestsLoggingEnabled` environment variable --- README.md | 4 ++ .../project.pbxproj | 50 ++++++------------- Tests/AFNetworkingTests.m | 13 +++++ Tests/Podfile | 6 ++- Tests/Podfile.lock | 15 +++++- 5 files changed, 48 insertions(+), 40 deletions(-) diff --git a/README.md b/README.md index 04f397f..ccc73f7 100644 --- a/README.md +++ b/README.md @@ -172,6 +172,10 @@ AFNetworking includes a suite of unit tests within the Tests subdirectory. In or Once CocoaPods has finished the installation, you can execute the test suite via the 'iOS Tests' and 'OS X Tests' schemes within Xcode. +### Test Logging + +By default, the unit tests do not emit any output during execution. For debugging purposes, it can be useful to enable logging of the requests and responses. Logging support is provided by the [AFHTTPRequestOperationLogger](https://github.com/AFNetworking/AFHTTPRequestOperationLogger) extension, which is installed via CocoaPods into the test targets. To enable logging, edit the test Scheme and add an environment variable named `AFTestsLoggingEnabled` with a value of `YES`. + ### Using xctool If you wish to execute the tests from the command line or within a continuous integration environment, you will need to install [xctool](https://github.com/facebook/xctool). The recommended installation method is [Homebrew](http://mxcl.github.io/homebrew/). diff --git a/Tests/AFNetworking Tests.xcodeproj/project.pbxproj b/Tests/AFNetworking Tests.xcodeproj/project.pbxproj index 6c6d57a..9b0325e 100644 --- a/Tests/AFNetworking Tests.xcodeproj/project.pbxproj +++ b/Tests/AFNetworking Tests.xcodeproj/project.pbxproj @@ -21,26 +21,10 @@ 25801547173EB3A70026AA6E /* AFNetworkingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 2580153F173EB3A70026AA6E /* AFNetworkingTests.m */; }; 2580154B173EB62E0026AA6E /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 25C4EC2A173D7DB30083E116 /* SystemConfiguration.framework */; }; 2580154C173EB6340026AA6E /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 25C4EC2C173D7DBA0083E116 /* CoreServices.framework */; }; + 25A7530B1747FCA000F04F2F /* abide.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 25A7530A1747FCA000F04F2F /* abide.jpg */; }; + 25A7530C1747FCA000F04F2F /* abide.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 25A7530A1747FCA000F04F2F /* abide.jpg */; }; 25C4EC41173D86AE0083E116 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 25C4EC32173D7DD20083E116 /* SystemConfiguration.framework */; }; 25C4EC42173D86B60083E116 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 25C4EC30173D7DCA0083E116 /* MobileCoreServices.framework */; }; - 25DE600E173EB13C00422571 /* AFHTTPClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 25DE5FFC173EB13C00422571 /* AFHTTPClient.m */; }; - 25DE600F173EB13C00422571 /* AFHTTPClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 25DE5FFC173EB13C00422571 /* AFHTTPClient.m */; }; - 25DE6010173EB13C00422571 /* AFHTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 25DE5FFE173EB13C00422571 /* AFHTTPRequestOperation.m */; }; - 25DE6011173EB13C00422571 /* AFHTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 25DE5FFE173EB13C00422571 /* AFHTTPRequestOperation.m */; }; - 25DE6012173EB13C00422571 /* AFImageRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 25DE6000173EB13C00422571 /* AFImageRequestOperation.m */; }; - 25DE6013173EB13C00422571 /* AFImageRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 25DE6000173EB13C00422571 /* AFImageRequestOperation.m */; }; - 25DE6014173EB13C00422571 /* AFJSONRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 25DE6002173EB13C00422571 /* AFJSONRequestOperation.m */; }; - 25DE6015173EB13C00422571 /* AFJSONRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 25DE6002173EB13C00422571 /* AFJSONRequestOperation.m */; }; - 25DE6016173EB13C00422571 /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 25DE6004173EB13C00422571 /* AFNetworkActivityIndicatorManager.m */; }; - 25DE6017173EB13C00422571 /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 25DE6004173EB13C00422571 /* AFNetworkActivityIndicatorManager.m */; }; - 25DE6018173EB13C00422571 /* AFPropertyListRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 25DE6007173EB13C00422571 /* AFPropertyListRequestOperation.m */; }; - 25DE6019173EB13C00422571 /* AFPropertyListRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 25DE6007173EB13C00422571 /* AFPropertyListRequestOperation.m */; }; - 25DE601A173EB13C00422571 /* AFURLConnectionOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 25DE6009173EB13C00422571 /* AFURLConnectionOperation.m */; }; - 25DE601B173EB13C00422571 /* AFURLConnectionOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 25DE6009173EB13C00422571 /* AFURLConnectionOperation.m */; }; - 25DE601C173EB13C00422571 /* AFXMLRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 25DE600B173EB13C00422571 /* AFXMLRequestOperation.m */; }; - 25DE601D173EB13C00422571 /* AFXMLRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 25DE600B173EB13C00422571 /* AFXMLRequestOperation.m */; }; - 25DE601E173EB13C00422571 /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 25DE600D173EB13C00422571 /* UIImageView+AFNetworking.m */; }; - 25DE601F173EB13C00422571 /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 25DE600D173EB13C00422571 /* UIImageView+AFNetworking.m */; }; 29A9CE2117456336002360C8 /* AFJSONRequestOperationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 29A9CE2017456336002360C8 /* AFJSONRequestOperationTests.m */; }; 29A9CE2217456336002360C8 /* AFJSONRequestOperationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 29A9CE2017456336002360C8 /* AFJSONRequestOperationTests.m */; }; AC11A74923B64A3096ACADFC /* libPods-osx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 96A923755B00464187DEDBAF /* libPods-osx.a */; }; @@ -62,6 +46,7 @@ 2580153F173EB3A70026AA6E /* AFNetworkingTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AFNetworkingTests.m; sourceTree = ""; }; 25801549173EB4B40026AA6E /* Pods-ios.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Pods-ios.xcconfig"; path = "Pods/Pods-ios.xcconfig"; sourceTree = ""; }; 2580154A173EB4B40026AA6E /* Pods-osx.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Pods-osx.xcconfig"; path = "Pods/Pods-osx.xcconfig"; sourceTree = ""; }; + 25A7530A1747FCA000F04F2F /* abide.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = abide.jpg; sourceTree = ""; }; 25C4EC2A173D7DB30083E116 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/System/Library/Frameworks/SystemConfiguration.framework; sourceTree = DEVELOPER_DIR; }; 25C4EC2C173D7DBA0083E116 /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/System/Library/Frameworks/CoreServices.framework; sourceTree = DEVELOPER_DIR; }; 25C4EC2E173D7DC40083E116 /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; }; @@ -128,6 +113,7 @@ 2580154A173EB4B40026AA6E /* Pods-osx.xcconfig */, 25801548173EB3B00026AA6E /* Tests */, 2544EC37173BE382004117E8 /* AFNetworking */, + 25A753091747FC7E00F04F2F /* Resources */, 2544EC34173BE382004117E8 /* Frameworks */, 2544EC33173BE382004117E8 /* Products */, ); @@ -211,6 +197,14 @@ name = Tests; sourceTree = ""; }; + 25A753091747FC7E00F04F2F /* Resources */ = { + isa = PBXGroup; + children = ( + 25A7530A1747FCA000F04F2F /* abide.jpg */, + ); + name = Resources; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -282,6 +276,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 25A7530B1747FCA000F04F2F /* abide.jpg in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -289,6 +284,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 25A7530C1747FCA000F04F2F /* abide.jpg in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -328,15 +324,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 25DE600E173EB13C00422571 /* AFHTTPClient.m in Sources */, - 25DE6010173EB13C00422571 /* AFHTTPRequestOperation.m in Sources */, - 25DE6012173EB13C00422571 /* AFImageRequestOperation.m in Sources */, - 25DE6014173EB13C00422571 /* AFJSONRequestOperation.m in Sources */, - 25DE6016173EB13C00422571 /* AFNetworkActivityIndicatorManager.m in Sources */, - 25DE6018173EB13C00422571 /* AFPropertyListRequestOperation.m in Sources */, - 25DE601A173EB13C00422571 /* AFURLConnectionOperation.m in Sources */, - 25DE601C173EB13C00422571 /* AFXMLRequestOperation.m in Sources */, - 25DE601E173EB13C00422571 /* UIImageView+AFNetworking.m in Sources */, 25801540173EB3A70026AA6E /* AFHTTPClientTests.m in Sources */, 25801542173EB3A70026AA6E /* AFHTTPRequestOperationTests.m in Sources */, 25801546173EB3A70026AA6E /* AFNetworkingTests.m in Sources */, @@ -348,15 +335,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 25DE600F173EB13C00422571 /* AFHTTPClient.m in Sources */, - 25DE6011173EB13C00422571 /* AFHTTPRequestOperation.m in Sources */, - 25DE6013173EB13C00422571 /* AFImageRequestOperation.m in Sources */, - 25DE6015173EB13C00422571 /* AFJSONRequestOperation.m in Sources */, - 25DE6017173EB13C00422571 /* AFNetworkActivityIndicatorManager.m in Sources */, - 25DE6019173EB13C00422571 /* AFPropertyListRequestOperation.m in Sources */, - 25DE601B173EB13C00422571 /* AFURLConnectionOperation.m in Sources */, - 25DE601D173EB13C00422571 /* AFXMLRequestOperation.m in Sources */, - 25DE601F173EB13C00422571 /* UIImageView+AFNetworking.m in Sources */, 25801541173EB3A70026AA6E /* AFHTTPClientTests.m in Sources */, 25801543173EB3A70026AA6E /* AFHTTPRequestOperationTests.m in Sources */, 25801547173EB3A70026AA6E /* AFNetworkingTests.m in Sources */, diff --git a/Tests/AFNetworkingTests.m b/Tests/AFNetworkingTests.m index 4d51f39..f2a334e 100644 --- a/Tests/AFNetworkingTests.m +++ b/Tests/AFNetworkingTests.m @@ -20,4 +20,17 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#import "AFHTTPRequestOperationLogger.h" + NSString * const AFNetworkingTestsBaseURLString = @"http://httpbin.org/"; + +@interface AFNetworkingTests : NSObject +@end + +@implementation AFNetworkingTests ++ (void)load +{ + NSString *loggingEnabled = [[[NSProcessInfo processInfo] environment][@"AFTestsLoggingEnabled"] uppercaseString]; + if ([loggingEnabled isEqualToString:@"YES"]) [[AFHTTPRequestOperationLogger sharedLogger] startLogging]; +} +@end diff --git a/Tests/Podfile b/Tests/Podfile index 6c587cd..d107b1a 100644 --- a/Tests/Podfile +++ b/Tests/Podfile @@ -3,8 +3,10 @@ workspace '../AFNetworking' inhibit_all_warnings! def import_pods - pod 'OCMock', '2.1.1' - pod 'Expecta', '0.2.1' + pod 'OCMock', '~> 2.1.1' + pod 'Expecta', '~> 0.2.1' + pod 'AFHTTPRequestOperationLogger', '~> 0.10.0' + pod 'AFNetworking', :path => '../' end target :ios do diff --git a/Tests/Podfile.lock b/Tests/Podfile.lock index e07e86a..e98fa29 100644 --- a/Tests/Podfile.lock +++ b/Tests/Podfile.lock @@ -1,12 +1,23 @@ PODS: + - AFHTTPRequestOperationLogger (0.10.0): + - AFNetworking (>= 0.9.0) + - AFNetworking (1.2.1) - Expecta (0.2.1) - OCMock (2.1.1) DEPENDENCIES: - - Expecta (= 0.2.1) - - OCMock (= 2.1.1) + - AFHTTPRequestOperationLogger (~> 0.10.0) + - AFNetworking (from `../`) + - Expecta (~> 0.2.1) + - OCMock (~> 2.1.1) + +EXTERNAL SOURCES: + AFNetworking: + :path: ../ SPEC CHECKSUMS: + AFHTTPRequestOperationLogger: 34ba125cb9eeb77a3b67aaaca105720ba3a0798c + AFNetworking: 02a1b682b3c3fa39afd22e725ab8f4a65cb157b6 Expecta: d46fb1bd78c90a83da0158b9b1e108de106e369f OCMock: 79212e5e328378af5cfd6edb5feacfd6c49cd8a3 From f339198d146832f122f29492bd0b0c266c84baf0 Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Sat, 18 May 2013 14:45:27 -0400 Subject: [PATCH 2/2] Add test coverage and fix for "Stream XXX is sending an event before being opened" during multi-part file uploads. fixes #948 --- AFNetworking/AFHTTPClient.m | 19 +++++++++++++++---- Tests/AFHTTPClientTests.m | 12 ++++++++++++ Tests/abide.jpg | Bin 0 -> 39038 bytes 3 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 Tests/abide.jpg diff --git a/AFNetworking/AFHTTPClient.m b/AFNetworking/AFHTTPClient.m index 1cbc283..bc45b4f 100644 --- a/AFNetworking/AFHTTPClient.m +++ b/AFNetworking/AFHTTPClient.m @@ -1067,11 +1067,22 @@ static const NSUInteger AFMultipartBodyStreamProviderDefaultBufferLength = 4096; #pragma mark - NSStreamDelegate -- (void)stream:(NSStream __unused *)stream - handleEvent:(NSStreamEvent)eventCode -{ +/** + This retry works around a nasty problem in which mutli-part uploads will fail due to the stream delegate being sent a `NSStreamEventHasSpaceAvailable` event before the input stream has finished opening. This workaround simply replays the event after allowing the run-loop to cycle, providing enough time for the input stream to finish opening. It appears that this bug is in the CFNetwork layer. (See https://github.com/AFNetworking/AFNetworking/issues/948) + */ +- (void)retryWrite:(NSStream *)stream { + [self stream:stream handleEvent:NSStreamEventHasSpaceAvailable]; +} + +- (void)stream:(NSStream *)stream + handleEvent:(NSStreamEvent)eventCode { if (eventCode & NSStreamEventHasSpaceAvailable) { - [self handleOutputStreamSpaceAvailable]; + if (self.inputStream.streamStatus < NSStreamStatusOpen) { + // See comments in `retryWrite:` for details + [self performSelector:@selector(retryWrite:) withObject:stream afterDelay:0.1]; + } else { + [self handleOutputStreamSpaceAvailable]; + } } } diff --git a/Tests/AFHTTPClientTests.m b/Tests/AFHTTPClientTests.m index 0ba0032..31e65e4 100644 --- a/Tests/AFHTTPClientTests.m +++ b/Tests/AFHTTPClientTests.m @@ -199,4 +199,16 @@ expect(responseDictionary[@"form"]).to.equal(@{ @"key": @"value" }); } +- (void)testMultipartUploadDoesNotFailDueToStreamSentAnEventBeforeBeingOpenedError { + NSString *pathToImage = [[NSBundle bundleForClass:[AFHTTPClient class]] pathForResource:@"abide" ofType:@"jpg"]; + NSData *imageData = [NSData dataWithContentsOfFile:pathToImage]; + NSMutableURLRequest *request = [self.client multipartFormRequestWithMethod:@"POST" path:@"/post" parameters:@{ @"this": @"that" } constructingBodyWithBlock:^(id formData) { + [formData appendPartWithFileData:imageData name:@"item[photos_attributes][][photo]" fileName:@"item-image.png" mimeType:@"image/jpg"]; + }]; + AFHTTPRequestOperation *operation = [self.client HTTPRequestOperationWithRequest:request success:nil failure:nil]; + [self.client enqueueHTTPRequestOperation:operation]; + expect(operation.isFinished).will.beTruthy(); + expect(operation.error).notTo.equal(NSURLErrorTimedOut); +} + @end diff --git a/Tests/abide.jpg b/Tests/abide.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6358ad3b3858937058936b0643e2e939a6fa91be GIT binary patch literal 39038 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 literal 0 HcmV?d00001