Renaming AFTestURLProtocol -> AFMockURLProtocol

Refactoring AFMockURLProtocol to use mocks more directly
This commit is contained in:
Mattt Thompson 2013-06-01 16:44:30 -07:00
parent 230afbbbf7
commit 118bfee3a4
4 changed files with 48 additions and 37 deletions

View file

@ -1,4 +1,4 @@
// AFTestURLProtocol.h // AFMockURLProtocol.h
// //
// Copyright (c) 2013 AFNetworking (http://afnetworking.com) // Copyright (c) 2013 AFNetworking (http://afnetworking.com)
// //
@ -22,9 +22,17 @@
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
@interface AFTestURLProtocol : NSURLProtocol <NSURLAuthenticationChallengeSender> #import "OCMock.h"
+ (void)matchURL:(NSURL *)URL @protocol AFMockURLProtocolProxy <NSObject>
withCallback:(id (^)(AFTestURLProtocol *protocol))initializationCallback; - (id)stub;
- (id)expect;
- (id)reject;
@end
@interface AFMockURLProtocol : NSURLProtocol <NSURLAuthenticationChallengeSender>
+ (void)handleNextRequestForURL:(NSURL *)URL
usingBlock:(void (^)(AFMockURLProtocol <AFMockURLProtocolProxy> * protocol))block;
@end @end

View file

@ -1,4 +1,4 @@
// AFTestURLProtocol.m // AFMockURLProtocol.m
// //
// Copyright (c) 2013 AFNetworking (http://afnetworking.com) // Copyright (c) 2013 AFNetworking (http://afnetworking.com)
// //
@ -20,24 +20,24 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE. // THE SOFTWARE.
#import "AFTestURLProtocol.h" #import "AFMockURLProtocol.h"
typedef id (^AFTestURLProtocolInitializationCallback)(AFTestURLProtocol *protocol); typedef void (^AFTestURLProtocolInitializationCallback)(AFMockURLProtocol *protocol);
static NSURL * _matchingURL = nil; static volatile NSURL * _matchingURL = nil;
static AFTestURLProtocolInitializationCallback _initializationCallback = nil; static volatile AFTestURLProtocolInitializationCallback _initializationCallback = nil;
@implementation AFTestURLProtocol @implementation AFMockURLProtocol
+ (void)load { + (void)load {
[NSURLProtocol registerClass:[AFTestURLProtocol class]]; [NSURLProtocol registerClass:[AFMockURLProtocol class]];
} }
+ (void)matchURL:(NSURL *)URL + (void)handleNextRequestForURL:(NSURL *)URL
withCallback:(id(^)(AFTestURLProtocol *protocol))callback usingBlock:(void (^)(AFMockURLProtocol <AFMockURLProtocolProxy> * protocol))block;
{ {
_matchingURL = URL; _matchingURL = URL;
_initializationCallback = callback; _initializationCallback = block;
} }
#pragma mark - NSURLProtocol #pragma mark - NSURLProtocol
@ -50,7 +50,9 @@ static AFTestURLProtocolInitializationCallback _initializationCallback = nil;
return request; return request;
} }
+ (BOOL)requestIsCacheEquivalent:(NSURLRequest *)a toRequest:(NSURLRequest *)b { + (BOOL)requestIsCacheEquivalent:(NSURLRequest *)a
toRequest:(NSURLRequest *)b
{
return NO; return NO;
} }
@ -63,10 +65,14 @@ static AFTestURLProtocolInitializationCallback _initializationCallback = nil;
return nil; return nil;
} }
self = _initializationCallback ? _initializationCallback(self) : self; if (_initializationCallback) {
self = [OCMockObject partialMockForObject:self];
_initializationCallback(self);
}
_matchingURL = nil;
_initializationCallback = nil; _initializationCallback = nil;
_matchingURL = nil;
return self; return self;
} }

View file

@ -31,8 +31,8 @@
A70F4A9F175A726B00386DF5 /* ca.cer in Resources */ = {isa = PBXBuildFile; fileRef = A70F4A9C175A726B00386DF5 /* ca.cer */; }; A70F4A9F175A726B00386DF5 /* ca.cer in Resources */ = {isa = PBXBuildFile; fileRef = A70F4A9C175A726B00386DF5 /* ca.cer */; };
A70F4AA0175A726B00386DF5 /* derived.cert in Resources */ = {isa = PBXBuildFile; fileRef = A70F4A9D175A726B00386DF5 /* derived.cert */; }; A70F4AA0175A726B00386DF5 /* derived.cert in Resources */ = {isa = PBXBuildFile; fileRef = A70F4A9D175A726B00386DF5 /* derived.cert */; };
A70F4AA1175A726B00386DF5 /* derived.cert in Resources */ = {isa = PBXBuildFile; fileRef = A70F4A9D175A726B00386DF5 /* derived.cert */; }; A70F4AA1175A726B00386DF5 /* derived.cert in Resources */ = {isa = PBXBuildFile; fileRef = A70F4A9D175A726B00386DF5 /* derived.cert */; };
A7DC62A617592E4200EBEC2F /* AFTestURLProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = A7DC62A517592E4200EBEC2F /* AFTestURLProtocol.m */; }; A7DC62A617592E4200EBEC2F /* AFMockURLProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = A7DC62A517592E4200EBEC2F /* AFMockURLProtocol.m */; };
A7DC62A717592E4200EBEC2F /* AFTestURLProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = A7DC62A517592E4200EBEC2F /* AFTestURLProtocol.m */; }; A7DC62A717592E4200EBEC2F /* AFMockURLProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = A7DC62A517592E4200EBEC2F /* AFMockURLProtocol.m */; };
A7DC62A917592E4800EBEC2F /* AFURLConnectionOperationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = A7DC62A817592E4800EBEC2F /* AFURLConnectionOperationTests.m */; }; A7DC62A917592E4800EBEC2F /* AFURLConnectionOperationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = A7DC62A817592E4800EBEC2F /* AFURLConnectionOperationTests.m */; };
A7DC62AA17592E4800EBEC2F /* AFURLConnectionOperationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = A7DC62A817592E4800EBEC2F /* AFURLConnectionOperationTests.m */; }; A7DC62AA17592E4800EBEC2F /* AFURLConnectionOperationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = A7DC62A817592E4800EBEC2F /* AFURLConnectionOperationTests.m */; };
AC11A74923B64A3096ACADFC /* libPods-osx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 96A923755B00464187DEDBAF /* libPods-osx.a */; }; AC11A74923B64A3096ACADFC /* libPods-osx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 96A923755B00464187DEDBAF /* libPods-osx.a */; };
@ -87,8 +87,8 @@
A70F4A95175A529400386DF5 /* root_certificate.cer */ = {isa = PBXFileReference; lastKnownFileType = file; name = root_certificate.cer; path = Resources/root_certificate.cer; sourceTree = "<group>"; }; A70F4A95175A529400386DF5 /* root_certificate.cer */ = {isa = PBXFileReference; lastKnownFileType = file; name = root_certificate.cer; path = Resources/root_certificate.cer; sourceTree = "<group>"; };
A70F4A9C175A726B00386DF5 /* ca.cer */ = {isa = PBXFileReference; lastKnownFileType = file; name = ca.cer; path = Resources/ca.cer; sourceTree = "<group>"; }; A70F4A9C175A726B00386DF5 /* ca.cer */ = {isa = PBXFileReference; lastKnownFileType = file; name = ca.cer; path = Resources/ca.cer; sourceTree = "<group>"; };
A70F4A9D175A726B00386DF5 /* derived.cert */ = {isa = PBXFileReference; lastKnownFileType = file; name = derived.cert; path = Resources/derived.cert; sourceTree = "<group>"; }; A70F4A9D175A726B00386DF5 /* derived.cert */ = {isa = PBXFileReference; lastKnownFileType = file; name = derived.cert; path = Resources/derived.cert; sourceTree = "<group>"; };
A7DC62A417592E4200EBEC2F /* AFTestURLProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AFTestURLProtocol.h; sourceTree = "<group>"; }; A7DC62A417592E4200EBEC2F /* AFMockURLProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AFMockURLProtocol.h; sourceTree = "<group>"; };
A7DC62A517592E4200EBEC2F /* AFTestURLProtocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AFTestURLProtocol.m; sourceTree = "<group>"; }; A7DC62A517592E4200EBEC2F /* AFMockURLProtocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AFMockURLProtocol.m; sourceTree = "<group>"; };
A7DC62A817592E4800EBEC2F /* AFURLConnectionOperationTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AFURLConnectionOperationTests.m; sourceTree = "<group>"; }; A7DC62A817592E4800EBEC2F /* AFURLConnectionOperationTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AFURLConnectionOperationTests.m; sourceTree = "<group>"; };
F8C6F281174D2C6200B154D5 /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Icon.png; path = ../Example/Icon.png; sourceTree = "<group>"; }; F8C6F281174D2C6200B154D5 /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Icon.png; path = ../Example/Icon.png; sourceTree = "<group>"; };
/* End PBXFileReference section */ /* End PBXFileReference section */
@ -128,7 +128,6 @@
25801549173EB4B40026AA6E /* Pods-ios.xcconfig */, 25801549173EB4B40026AA6E /* Pods-ios.xcconfig */,
2580154A173EB4B40026AA6E /* Pods-osx.xcconfig */, 2580154A173EB4B40026AA6E /* Pods-osx.xcconfig */,
25801548173EB3B00026AA6E /* Tests */, 25801548173EB3B00026AA6E /* Tests */,
A70F4A91175A4E0000386DF5 /* Certificates */,
2544EC37173BE382004117E8 /* AFNetworking */, 2544EC37173BE382004117E8 /* AFNetworking */,
25A753091747FC7E00F04F2F /* Resources */, 25A753091747FC7E00F04F2F /* Resources */,
2544EC34173BE382004117E8 /* Frameworks */, 2544EC34173BE382004117E8 /* Frameworks */,
@ -207,8 +206,8 @@
children = ( children = (
2580153E173EB3A70026AA6E /* AFNetworkingTests.h */, 2580153E173EB3A70026AA6E /* AFNetworkingTests.h */,
2580153F173EB3A70026AA6E /* AFNetworkingTests.m */, 2580153F173EB3A70026AA6E /* AFNetworkingTests.m */,
A7DC62A417592E4200EBEC2F /* AFTestURLProtocol.h */, A7DC62A417592E4200EBEC2F /* AFMockURLProtocol.h */,
A7DC62A517592E4200EBEC2F /* AFTestURLProtocol.m */, A7DC62A517592E4200EBEC2F /* AFMockURLProtocol.m */,
A7DC62A817592E4800EBEC2F /* AFURLConnectionOperationTests.m */, A7DC62A817592E4800EBEC2F /* AFURLConnectionOperationTests.m */,
2580153B173EB3A70026AA6E /* AFHTTPRequestOperationTests.m */, 2580153B173EB3A70026AA6E /* AFHTTPRequestOperationTests.m */,
29A9CE2017456336002360C8 /* AFJSONRequestOperationTests.m */, 29A9CE2017456336002360C8 /* AFJSONRequestOperationTests.m */,
@ -220,6 +219,7 @@
25A753091747FC7E00F04F2F /* Resources */ = { 25A753091747FC7E00F04F2F /* Resources */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
A70F4A91175A4E0000386DF5 /* Certificates */,
F8C6F281174D2C6200B154D5 /* Icon.png */, F8C6F281174D2C6200B154D5 /* Icon.png */,
); );
name = Resources; name = Resources;
@ -364,7 +364,7 @@
25801542173EB3A70026AA6E /* AFHTTPRequestOperationTests.m in Sources */, 25801542173EB3A70026AA6E /* AFHTTPRequestOperationTests.m in Sources */,
25801546173EB3A70026AA6E /* AFNetworkingTests.m in Sources */, 25801546173EB3A70026AA6E /* AFNetworkingTests.m in Sources */,
29A9CE2117456336002360C8 /* AFJSONRequestOperationTests.m in Sources */, 29A9CE2117456336002360C8 /* AFJSONRequestOperationTests.m in Sources */,
A7DC62A617592E4200EBEC2F /* AFTestURLProtocol.m in Sources */, A7DC62A617592E4200EBEC2F /* AFMockURLProtocol.m in Sources */,
A7DC62A917592E4800EBEC2F /* AFURLConnectionOperationTests.m in Sources */, A7DC62A917592E4800EBEC2F /* AFURLConnectionOperationTests.m in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
@ -377,7 +377,7 @@
25801543173EB3A70026AA6E /* AFHTTPRequestOperationTests.m in Sources */, 25801543173EB3A70026AA6E /* AFHTTPRequestOperationTests.m in Sources */,
25801547173EB3A70026AA6E /* AFNetworkingTests.m in Sources */, 25801547173EB3A70026AA6E /* AFNetworkingTests.m in Sources */,
29A9CE2217456336002360C8 /* AFJSONRequestOperationTests.m in Sources */, 29A9CE2217456336002360C8 /* AFJSONRequestOperationTests.m in Sources */,
A7DC62A717592E4200EBEC2F /* AFTestURLProtocol.m in Sources */, A7DC62A717592E4200EBEC2F /* AFMockURLProtocol.m in Sources */,
A7DC62AA17592E4800EBEC2F /* AFURLConnectionOperationTests.m in Sources */, A7DC62AA17592E4800EBEC2F /* AFURLConnectionOperationTests.m in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;

View file

@ -22,7 +22,7 @@
#import "AFNetworkingTests.h" #import "AFNetworkingTests.h"
#import "AFURLConnectionOperation.h" #import "AFURLConnectionOperation.h"
#import "AFTestURLProtocol.h" #import "AFMockURLProtocol.h"
@interface AFURLConnectionOperationTests : SenTestCase @interface AFURLConnectionOperationTests : SenTestCase
@property (readwrite, nonatomic, strong) NSURL *baseURL; @property (readwrite, nonatomic, strong) NSURL *baseURL;
@ -46,20 +46,17 @@
willSendRequestForAuthenticationChallengeBlockInvoked = YES; willSendRequestForAuthenticationChallengeBlockInvoked = YES;
}]; }];
[AFTestURLProtocol matchURL:request.URL withCallback:^id(AFTestURLProtocol *protocol) { [AFMockURLProtocol handleNextRequestForURL:request.URL usingBlock:^(AFMockURLProtocol <AFMockURLProtocolProxy> * protocol) {
id mockedProtocol = [OCMockObject partialMockForObject:protocol];
void(^startOperation)(NSInvocation *invocation) = ^(NSInvocation *invocation) { void(^startOperation)(NSInvocation *invocation) = ^(NSInvocation *invocation) {
__unsafe_unretained AFTestURLProtocol *protocol = nil; __unsafe_unretained AFMockURLProtocol *protocol = nil;
[invocation getArgument:&protocol atIndex:0]; [invocation getArgument:&protocol atIndex:0];
NSURLProtectionSpace *protectionSpace = [[NSURLProtectionSpace alloc] initWithHost:request.URL.host port:request.URL.port.integerValue protocol:request.URL.scheme realm:nil authenticationMethod:NSURLAuthenticationMethodDefault]; NSURLProtectionSpace *protectionSpace = [[NSURLProtectionSpace alloc] initWithHost:request.URL.host port:request.URL.port.integerValue protocol:request.URL.scheme realm:nil authenticationMethod:NSURLAuthenticationMethodDefault];
NSURLAuthenticationChallenge *authenticationChallenge = [[NSURLAuthenticationChallenge alloc] initWithProtectionSpace:protectionSpace proposedCredential:nil previousFailureCount:0 failureResponse:nil error:nil sender:protocol]; NSURLAuthenticationChallenge *authenticationChallenge = [[NSURLAuthenticationChallenge alloc] initWithProtectionSpace:protectionSpace proposedCredential:nil previousFailureCount:0 failureResponse:nil error:nil sender:protocol];
[protocol.client URLProtocol:protocol didReceiveAuthenticationChallenge:authenticationChallenge]; [protocol.client URLProtocol:protocol didReceiveAuthenticationChallenge:authenticationChallenge];
}; };
[[[mockedProtocol stub] andDo:startOperation] startLoading]; [[[protocol stub] andDo:startOperation] startLoading];
return mockedProtocol;
}]; }];
[operation start]; [operation start];
@ -101,7 +98,7 @@
[invocation setReturnValue:(void *)&trust]; [invocation setReturnValue:(void *)&trust];
}] serverTrust]; }] serverTrust];
AFTestURLProtocol *protocol = [[AFTestURLProtocol alloc] initWithRequest:request cachedResponse:nil client:nil]; AFMockURLProtocol *protocol = [[AFMockURLProtocol alloc] initWithRequest:request cachedResponse:nil client:nil];
id mockedProtocol = [OCMockObject partialMockForObject:protocol]; id mockedProtocol = [OCMockObject partialMockForObject:protocol];
void(^useCredential)(NSInvocation *invocation) = ^(NSInvocation *invocation) { void(^useCredential)(NSInvocation *invocation) = ^(NSInvocation *invocation) {
@ -157,7 +154,7 @@
[invocation setReturnValue:(void *)&trust]; [invocation setReturnValue:(void *)&trust];
}] serverTrust]; }] serverTrust];
AFTestURLProtocol *protocol = [[AFTestURLProtocol alloc] initWithRequest:request cachedResponse:nil client:nil]; AFMockURLProtocol *protocol = [[AFMockURLProtocol alloc] initWithRequest:request cachedResponse:nil client:nil];
id mockedProtocol = [OCMockObject partialMockForObject:protocol]; id mockedProtocol = [OCMockObject partialMockForObject:protocol];
void(^useCredential)(NSInvocation *invocation) = ^(NSInvocation *invocation) { void(^useCredential)(NSInvocation *invocation) = ^(NSInvocation *invocation) {
@ -219,7 +216,7 @@
[invocation setReturnValue:(void *)&trust]; [invocation setReturnValue:(void *)&trust];
}] serverTrust]; }] serverTrust];
AFTestURLProtocol *protocol = [[AFTestURLProtocol alloc] initWithRequest:request cachedResponse:nil client:nil]; AFMockURLProtocol *protocol = [[AFMockURLProtocol alloc] initWithRequest:request cachedResponse:nil client:nil];
id mockedProtocol = [OCMockObject partialMockForObject:protocol]; id mockedProtocol = [OCMockObject partialMockForObject:protocol];
void(^useCredential)(NSInvocation *invocation) = ^(NSInvocation *invocation) { void(^useCredential)(NSInvocation *invocation) = ^(NSInvocation *invocation) {
@ -282,7 +279,7 @@
[invocation setReturnValue:(void *)&trust]; [invocation setReturnValue:(void *)&trust];
}] serverTrust]; }] serverTrust];
AFTestURLProtocol *protocol = [[AFTestURLProtocol alloc] initWithRequest:request cachedResponse:nil client:nil]; AFMockURLProtocol *protocol = [[AFMockURLProtocol alloc] initWithRequest:request cachedResponse:nil client:nil];
id mockedProtocol = [OCMockObject partialMockForObject:protocol]; id mockedProtocol = [OCMockObject partialMockForObject:protocol];
void(^useCredential)(NSInvocation *invocation) = ^(NSInvocation *invocation) { void(^useCredential)(NSInvocation *invocation) = ^(NSInvocation *invocation) {