Ben Copsey

Fix problem where queue delegate would not be alerted when the request received response headers

Add test for same
@@ -23,7 +23,7 @@ @@ -23,7 +23,7 @@
23 23
24 24
25 // Automatically set on build 25 // Automatically set on build
26 -NSString *ASIHTTPRequestVersion = @"v1.6.2-4 2010-04-19"; 26 +NSString *ASIHTTPRequestVersion = @"v1.6.2-7 2010-05-01";
27 27
28 NSString* const NetworkRequestErrorDomain = @"ASIHTTPRequestErrorDomain"; 28 NSString* const NetworkRequestErrorDomain = @"ASIHTTPRequestErrorDomain";
29 29
@@ -201,7 +201,7 @@ @@ -201,7 +201,7 @@
201 } 201 }
202 } 202 }
203 203
204 -- (void)requestDidReceiveResponseHeaders:(ASIHTTPRequest *)request 204 +- (void)requestReceivedResponseHeaders:(ASIHTTPRequest *)request
205 { 205 {
206 if ([self requestDidReceiveResponseHeadersSelector]) { 206 if ([self requestDidReceiveResponseHeadersSelector]) {
207 [[self delegate] performSelector:[self requestDidReceiveResponseHeadersSelector] withObject:request]; 207 [[self delegate] performSelector:[self requestDidReceiveResponseHeadersSelector] withObject:request];
@@ -48,6 +48,7 @@ IMPORTANT @@ -48,6 +48,7 @@ IMPORTANT
48 BOOL finished; 48 BOOL finished;
49 BOOL failed; 49 BOOL failed;
50 BOOL headFailed; 50 BOOL headFailed;
  51 + BOOL receivedResponseHeaders;
51 52
52 int queueFinishedCallCount; 53 int queueFinishedCallCount;
53 } 54 }
@@ -63,6 +63,7 @@ IMPORTANT @@ -63,6 +63,7 @@ IMPORTANT
63 [networkQueue setDelegate:self]; 63 [networkQueue setDelegate:self];
64 [networkQueue setRequestDidStartSelector:@selector(delegateTestStarted:)]; 64 [networkQueue setRequestDidStartSelector:@selector(delegateTestStarted:)];
65 [networkQueue setRequestDidFinishSelector:@selector(delegateTestFinished:)]; 65 [networkQueue setRequestDidFinishSelector:@selector(delegateTestFinished:)];
  66 + [networkQueue setRequestDidReceiveResponseHeadersSelector:@selector(delegateTestResponseHeaders:)];
66 67
67 ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:@"http://allseeing-i.com"]]; 68 ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:@"http://allseeing-i.com"]];
68 [networkQueue addOperation:request]; 69 [networkQueue addOperation:request];
@@ -70,7 +71,10 @@ IMPORTANT @@ -70,7 +71,10 @@ IMPORTANT
70 71
71 [networkQueue waitUntilAllOperationsAreFinished]; 72 [networkQueue waitUntilAllOperationsAreFinished];
72 73
  74 + [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:2]];
  75 +
73 GHAssertTrue(started,@"Failed to call the delegate method when the request started"); 76 GHAssertTrue(started,@"Failed to call the delegate method when the request started");
  77 + GHAssertTrue(receivedResponseHeaders,@"Failed to call the delegate method when the request received response headers");
74 GHAssertTrue(finished,@"Failed to call the delegate method when the request finished"); 78 GHAssertTrue(finished,@"Failed to call the delegate method when the request finished");
75 79
76 networkQueue = [ASINetworkQueue queue]; 80 networkQueue = [ASINetworkQueue queue];
@@ -84,6 +88,8 @@ IMPORTANT @@ -84,6 +88,8 @@ IMPORTANT
84 88
85 [networkQueue waitUntilAllOperationsAreFinished]; 89 [networkQueue waitUntilAllOperationsAreFinished];
86 90
  91 + [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:2]];
  92 +
87 GHAssertTrue(failed,@"Failed to call the delegate method when the request failed"); 93 GHAssertTrue(failed,@"Failed to call the delegate method when the request failed");
88 94
89 } 95 }
@@ -93,6 +99,12 @@ IMPORTANT @@ -93,6 +99,12 @@ IMPORTANT
93 started = YES; 99 started = YES;
94 } 100 }
95 101
  102 +- (void)delegateTestResponseHeaders:(ASIHTTPRequest *)request
  103 +{
  104 + GHAssertNotNil([request responseHeaders],@"Called delegateTestResponseHeaders: when we have no headers");
  105 + receivedResponseHeaders = YES;
  106 +}
  107 +
96 - (void)delegateTestFinished:(ASIHTTPRequest *)request 108 - (void)delegateTestFinished:(ASIHTTPRequest *)request
97 { 109 {
98 finished = YES; 110 finished = YES;