Index: net/url_request/url_request_unittest.cc |
=================================================================== |
--- net/url_request/url_request_unittest.cc (revision 9548) |
+++ net/url_request/url_request_unittest.cc (working copy) |
@@ -55,10 +55,10 @@ |
class TestURLRequest : public URLRequest { |
public: |
- TestURLRequest(const GURL& url, Delegate* delegate) |
- : URLRequest(url, delegate) { |
- set_context(new URLRequestHttpCacheContext()); |
- } |
+ TestURLRequest(const GURL& url, Delegate* delegate) |
+ : URLRequest(url, delegate) { |
+ set_context(new URLRequestHttpCacheContext()); |
+ } |
}; |
StringPiece TestNetResourceProvider(int key) { |
@@ -82,6 +82,34 @@ |
class URLRequestTest : public PlatformTest { |
}; |
+TEST_F(URLRequestTest, ProxyTunnelRedirectTest) { |
+ // In this unit test, we're using the HTTPTestServer as a proxy server and |
+ // issue a CONNECT request with the magic host name "www.redirect.com" to |
+ // it. The HTTPTestServer will return a 302 response, which we should not |
+ // follow. |
+ scoped_refptr<HTTPTestServer> server = |
+ HTTPTestServer::CreateServer(L"", NULL); |
+ ASSERT_TRUE(NULL != server.get()); |
+ TestDelegate d; |
+ { |
+ URLRequest r(GURL("https://www.redirect.com/"), &d); |
+ std::string proxy("localhost:"); |
+ proxy.append(IntToString(kHTTPDefaultPort)); |
+ r.set_context(new TestURLRequestContext(proxy)); |
+ |
+ r.Start(); |
+ EXPECT_TRUE(r.is_pending()); |
+ |
+ MessageLoop::current()->Run(); |
+ |
+ EXPECT_EQ(1, d.response_started_count()); |
+ // We should have rewritten the 302 response code as 500. |
+ EXPECT_EQ(500, r.GetResponseCode()); |
+ // We should not have followed the redirect. |
+ EXPECT_EQ(0, d.received_redirect_count()); |
+ } |
+} |
+ |
TEST_F(URLRequestTest, GetTest_NoCache) { |
scoped_refptr<HTTPTestServer> server = |
HTTPTestServer::CreateServer(L"", NULL); |
@@ -100,7 +128,7 @@ |
EXPECT_NE(0, d.bytes_received()); |
} |
#ifndef NDEBUG |
- DCHECK_EQ(url_request_metrics.object_count,0); |
+ DCHECK_EQ(url_request_metrics.object_count, 0); |
#endif |
} |
@@ -122,15 +150,15 @@ |
EXPECT_NE(0, d.bytes_received()); |
} |
#ifndef NDEBUG |
- DCHECK_EQ(url_request_metrics.object_count,0); |
+ DCHECK_EQ(url_request_metrics.object_count, 0); |
#endif |
} |
class HTTPSRequestTest : public testing::Test { |
protected: |
- HTTPSRequestTest() : util_() {}; |
+ HTTPSRequestTest() : util_() {} |
- SSLTestUtil util_; |
+ SSLTestUtil util_; |
}; |
#if defined(OS_MACOSX) |
@@ -165,7 +193,7 @@ |
EXPECT_NE(0, d.bytes_received()); |
} |
#ifndef NDEBUG |
- DCHECK_EQ(url_request_metrics.object_count,0); |
+ DCHECK_EQ(url_request_metrics.object_count, 0); |
#endif |
} |
@@ -188,7 +216,7 @@ |
EXPECT_FALSE(d.received_data_before_response()); |
} |
#ifndef NDEBUG |
- DCHECK_EQ(url_request_metrics.object_count,0); |
+ DCHECK_EQ(url_request_metrics.object_count, 0); |
#endif |
} |
@@ -217,7 +245,7 @@ |
EXPECT_EQ(URLRequestStatus::CANCELED, r.status().status()); |
} |
#ifndef NDEBUG |
- DCHECK_EQ(url_request_metrics.object_count,0); |
+ DCHECK_EQ(url_request_metrics.object_count, 0); |
#endif |
} |
@@ -245,7 +273,7 @@ |
EXPECT_EQ(URLRequestStatus::CANCELED, r.status().status()); |
} |
#ifndef NDEBUG |
- DCHECK_EQ(url_request_metrics.object_count,0); |
+ DCHECK_EQ(url_request_metrics.object_count, 0); |
#endif |
} |
@@ -320,7 +348,7 @@ |
char *uploadBytes = new char[kMsgSize+1]; |
char *ptr = uploadBytes; |
char marker = 'a'; |
- for(int idx=0; idx<kMsgSize/10; idx++) { |
+ for (int idx = 0; idx < kMsgSize/10; idx++) { |
memcpy(ptr, "----------", 10); |
ptr += 10; |
if (idx % 100 == 0) { |
@@ -329,7 +357,6 @@ |
if (++marker > 'z') |
marker = 'a'; |
} |
- |
} |
uploadBytes[kMsgSize] = '\0'; |
@@ -354,12 +381,12 @@ |
EXPECT_FALSE(d.received_data_before_response()); |
EXPECT_EQ(uploadBytes, d.data_received()); |
- EXPECT_EQ(memcmp(uploadBytes, d.data_received().c_str(), kMsgSize),0); |
+ EXPECT_EQ(memcmp(uploadBytes, d.data_received().c_str(), kMsgSize), 0); |
EXPECT_EQ(d.data_received().compare(uploadBytes), 0); |
} |
delete[] uploadBytes; |
#ifndef NDEBUG |
- DCHECK_EQ(url_request_metrics.object_count,0); |
+ DCHECK_EQ(url_request_metrics.object_count, 0); |
#endif |
} |
@@ -384,7 +411,7 @@ |
EXPECT_TRUE(d.data_received().empty()); |
} |
#ifndef NDEBUG |
- DCHECK_EQ(url_request_metrics.object_count,0); |
+ DCHECK_EQ(url_request_metrics.object_count, 0); |
#endif |
} |
@@ -435,7 +462,7 @@ |
EXPECT_EQ(0, memcmp(d.data_received().c_str(), buf.get(), size)); |
} |
#ifndef NDEBUG |
- DCHECK_EQ(url_request_metrics.object_count,0); |
+ DCHECK_EQ(url_request_metrics.object_count, 0); |
#endif |
} |
@@ -454,7 +481,7 @@ |
EXPECT_EQ(d.bytes_received(), 0); |
} |
#ifndef NDEBUG |
- DCHECK_EQ(url_request_metrics.object_count,0); |
+ DCHECK_EQ(url_request_metrics.object_count, 0); |
#endif |
} |
@@ -481,7 +508,7 @@ |
EXPECT_EQ(d.bytes_received(), static_cast<int>(file_size)); |
} |
#ifndef NDEBUG |
- DCHECK_EQ(url_request_metrics.object_count,0); |
+ DCHECK_EQ(url_request_metrics.object_count, 0); |
#endif |
} |
@@ -497,7 +524,7 @@ |
EXPECT_TRUE(d.request_failed()); |
} |
#ifndef NDEBUG |
- DCHECK_EQ(url_request_metrics.object_count,0); |
+ DCHECK_EQ(url_request_metrics.object_count, 0); |
#endif |
} |
@@ -515,7 +542,7 @@ |
EXPECT_TRUE(d.request_failed()); |
} |
#ifndef NDEBUG |
- DCHECK_EQ(url_request_metrics.object_count,0); |
+ DCHECK_EQ(url_request_metrics.object_count, 0); |
#endif |
} |
@@ -666,7 +693,7 @@ |
CoUninitialize(); |
#ifndef NDEBUG |
- DCHECK_EQ(url_request_metrics.object_count,0); |
+ DCHECK_EQ(url_request_metrics.object_count, 0); |
#endif |
} |
#endif // defined(OS_WIN) |
@@ -713,7 +740,7 @@ |
MessageLoop::current()->Run(); |
} |
#ifndef NDEBUG |
- DCHECK_EQ(url_request_metrics.object_count,0); |
+ DCHECK_EQ(url_request_metrics.object_count, 0); |
#endif |
// Take out mock resource provider. |