diff options
Diffstat (limited to 'platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/NSURLSessionTests.m')
m--------- | platform/ios/uitest/OHHTTPStubs | 0 | ||||
-rw-r--r-- | platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/NSURLSessionTests.m | 227 |
2 files changed, 0 insertions, 227 deletions
diff --git a/platform/ios/uitest/OHHTTPStubs b/platform/ios/uitest/OHHTTPStubs new file mode 160000 +Subproject deed01a1592210a4c37f3f5c5f2b32fe0e41c60 diff --git a/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/NSURLSessionTests.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/NSURLSessionTests.m deleted file mode 100644 index 2e829ca432..0000000000 --- a/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/NSURLSessionTests.m +++ /dev/null @@ -1,227 +0,0 @@ -/*********************************************************************************** - * - * Copyright (c) 2012 Olivier Halligon - * - * 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. - * - ***********************************************************************************/ - - -// Compile this only if SDK version (…MAX_ALLOWED) is iOS7+/10.9+ because NSURLSession is a class only known starting these SDKs -// (this code won't compile if we use an eariler SDKs, like when building with Xcode4) -#if (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000) \ - || (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1090) - -#import <XCTest/XCTest.h> -#import <OHHTTPStubs/OHHTTPStubs.h> - -@interface NSURLSessionTests : XCTestCase <NSURLSessionDataDelegate> @end - -@implementation NSURLSessionTests -{ - NSMutableData* _receivedData; - XCTestExpectation* _taskDidCompleteExpectation; -} - -- (void)setUp -{ - [super setUp]; - [OHHTTPStubs removeAllStubs]; - _receivedData = nil; -} - -- (void)_test_NSURLSession:(NSURLSession*)session - jsonForStub:(id)json - completion:(void(^)(NSError* errorResponse,id jsonResponse))completion -{ - if ([NSURLSession class]) - { - static const NSTimeInterval kRequestTime = 0.0; - static const NSTimeInterval kResponseTime = 0.2; - - [OHHTTPStubs stubRequestsPassingTest:^BOOL(NSURLRequest *request) { - return YES; - } withStubResponse:^OHHTTPStubsResponse *(NSURLRequest *request) { - return [[OHHTTPStubsResponse responseWithJSONObject:json statusCode:200 headers:nil] - requestTime:kRequestTime responseTime:kResponseTime]; - }]; - - XCTestExpectation* expectation = [self expectationWithDescription:@"NSURLSessionDataTask completed"]; - - __block __strong id dataResponse = nil; - __block __strong NSError* errorResponse = nil; - NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"foo://unknownhost:666"]]; - request.HTTPMethod = @"GET"; - [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; - [request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; - - NSURLSessionDataTask *task = [session dataTaskWithRequest:request - completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) - { - errorResponse = error; - if (!error) - { - NSError *jsonError = nil; - NSDictionary *jsonObject = [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonError]; - XCTAssertNil(jsonError, @"Unexpected error deserializing JSON response"); - dataResponse = jsonObject; - } - [expectation fulfill]; - }]; - - [task resume]; - - [self waitForExpectationsWithTimeout:kRequestTime+kResponseTime+0.5 handler:nil]; - - completion(errorResponse, dataResponse); - } -} - -// The shared session use the same mechanism as NSURLConnection -// (based on protocols registered via +[NSURLProtocol registerClass:] and all) -// and no NSURLSessionConfiguration -- (void)test_SharedNSURLSession -{ - if ([NSURLSession class]) - { - NSURLSession *session = [NSURLSession sharedSession]; - - NSDictionary* json = @{@"Success": @"Yes"}; - [self _test_NSURLSession:session jsonForStub:json completion:^(NSError *errorResponse, id jsonResponse) { - XCTAssertNil(errorResponse, @"Unexpected error"); - XCTAssertEqualObjects(jsonResponse, json, @"Unexpected data received"); - }]; - } - else - { - NSLog(@"/!\\ Test skipped because the NSURLSession class is not available on this OS version. Run the tests a target with a more recent OS.\n"); - } -} - -- (void)test_NSURLSessionDefaultConfig -{ - if ([NSURLSessionConfiguration class] && [NSURLSession class]) - { - NSURLSessionConfiguration* config = [NSURLSessionConfiguration defaultSessionConfiguration]; - NSURLSession *session = [NSURLSession sessionWithConfiguration:config]; - - NSDictionary* json = @{@"Success": @"Yes"}; - [self _test_NSURLSession:session jsonForStub:json completion:^(NSError *errorResponse, id jsonResponse) { - XCTAssertNil(errorResponse, @"Unexpected error"); - XCTAssertEqualObjects(jsonResponse, json, @"Unexpected data received"); - }]; - } - else - { - NSLog(@"/!\\ Test skipped because the NSURLSession class is not available on this OS version. Run the tests a target with a more recent OS.\n"); - } -} - -- (void)test_NSURLSessionEphemeralConfig -{ - if ([NSURLSessionConfiguration class] && [NSURLSession class]) - { - NSURLSessionConfiguration* config = [NSURLSessionConfiguration ephemeralSessionConfiguration]; - NSURLSession *session = [NSURLSession sessionWithConfiguration:config]; - - NSDictionary* json = @{@"Success": @"Yes"}; - [self _test_NSURLSession:session jsonForStub:json completion:^(NSError *errorResponse, id jsonResponse) { - XCTAssertNil(errorResponse, @"Unexpected error"); - XCTAssertEqualObjects(jsonResponse, json, @"Unexpected data received"); - }]; - } - else - { - NSLog(@"/!\\ Test skipped because the NSURLSession class is not available on this OS version. Run the tests a target with a more recent OS.\n"); - } -} - -- (void)test_NSURLSessionDefaultConfig_Disabled -{ - if ([NSURLSessionConfiguration class] && [NSURLSession class]) - { - NSURLSessionConfiguration* config = [NSURLSessionConfiguration ephemeralSessionConfiguration]; - [OHHTTPStubs setEnabled:NO forSessionConfiguration:config]; // Disable stubs for this session - NSURLSession *session = [NSURLSession sessionWithConfiguration:config]; - - NSDictionary* json = @{@"Success": @"Yes"}; - [self _test_NSURLSession:session jsonForStub:json completion:^(NSError *errorResponse, id jsonResponse) { - // Stubs were disable for this session, so we should get an error instead of the stubs data - XCTAssertNotNil(errorResponse, @"Expected error but none found"); - XCTAssertNil(jsonResponse, @"Data should not have been received as stubs should be disabled"); - }]; - } - else - { - NSLog(@"/!\\ Test skipped because the NSURLSession class is not available on this OS version. Run the tests a target with a more recent OS.\n"); - } -} - -- (void)test_NSURLSession_DataTask_DelegateMethods -{ - if ([NSURLSessionConfiguration class] && [NSURLSession class]) - { - NSData* expectedResponse = [NSStringFromSelector(_cmd) dataUsingEncoding:NSUTF8StringEncoding]; - [OHHTTPStubs stubRequestsPassingTest:^BOOL(NSURLRequest *request) { - return [request.URL.scheme isEqualToString:@"stub"]; - } withStubResponse:^OHHTTPStubsResponse *(NSURLRequest *request) { - return [[OHHTTPStubsResponse responseWithData:expectedResponse statusCode:200 headers:nil] - responseTime:0.5]; - }]; - - _taskDidCompleteExpectation = [self expectationWithDescription:@"NSURLSessionDataTask completion delegate method called"]; - - NSURLSessionConfiguration* config = [NSURLSessionConfiguration defaultSessionConfiguration]; - NSURLSession* session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:nil]; - - [[session dataTaskWithURL:[NSURL URLWithString:@"stub://foo"]] resume]; - - [self waitForExpectationsWithTimeout:5 handler:nil]; - - XCTAssertEqualObjects(_receivedData, expectedResponse, @"Unexpected response"); - } - else - { - NSLog(@"/!\\ Test skipped because the NSURLSession class is not available on this OS version. Run the tests a target with a more recent OS.\n"); - } -} - -//--------------------------------------------------------------- -#pragma mark - Delegate Methods - -- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition))completionHandler -{ - _receivedData = [NSMutableData new]; - completionHandler(NSURLSessionResponseAllow); -} -- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data -{ - [_receivedData appendData:data]; -} -- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error -{ - [_taskDidCompleteExpectation fulfill]; -} - -@end - -#else -#warning Unit Tests using NSURLSession were not compiled nor executed, because NSURLSession is only available since iOS7/OSX10.9 SDK. \ --------- Compile using iOS7 or OSX10.9 SDK then launch the tests on the iOS7 simulator or an OSX10.9 target for them to be executed. -#endif |