Index: net/spdy/spdy_proxy_client_socket_unittest.cc |
=================================================================== |
--- net/spdy/spdy_proxy_client_socket_unittest.cc (revision 117986) |
+++ net/spdy/spdy_proxy_client_socket_unittest.cc (working copy) |
@@ -199,8 +199,12 @@ |
sock_.reset( |
new SpdyProxyClientSocket(spdy_stream_, user_agent_, |
endpoint_host_port_pair_, url_, |
- proxy_host_port_, session_->http_auth_cache(), |
- session_->http_auth_handler_factory())); |
+ proxy_host_port_, |
+ new HttpAuthController( |
+ HttpAuth::AUTH_PROXY, |
+ GURL(kProxyUrl), |
+ session_->http_auth_cache(), |
+ session_->http_auth_handler_factory()))); |
} |
scoped_refptr<IOBufferWithSize> SpdyProxyClientSocketTest::CreateBuffer( |
@@ -450,7 +454,7 @@ |
Initialize(reads, arraysize(reads), writes, arraysize(writes)); |
- AssertConnectFails(ERR_TUNNEL_CONNECTION_FAILED); |
+ AssertConnectFails(ERR_PROXY_AUTH_REQUESTED); |
const HttpResponseInfo* response = sock_->GetConnectResponseInfo(); |
ASSERT_TRUE(response != NULL); |
@@ -479,6 +483,38 @@ |
AssertConnectionEstablished(); |
} |
+TEST_F(SpdyProxyClientSocketTest, ConnectWithAuthRestart) { |
+ scoped_ptr<spdy::SpdyFrame> conn(ConstructConnectRequestFrame()); |
+ scoped_ptr<spdy::SpdyFrame> auth(ConstructConnectAuthRequestFrame()); |
+ MockWrite writes[] = { |
+ CreateMockWrite(*conn, 0, false), |
+ }; |
+ |
+ scoped_ptr<spdy::SpdyFrame> resp(ConstructConnectAuthReplyFrame()); |
+ scoped_ptr<spdy::SpdyFrame> auth_resp(ConstructConnectReplyFrame()); |
+ MockRead reads[] = { |
+ CreateMockRead(*resp, 1, true), |
+ MockRead(true, 0, 3), // EOF |
+ }; |
+ |
+ Initialize(reads, arraysize(reads), writes, arraysize(writes)); |
+ |
+ AssertConnectFails(ERR_PROXY_AUTH_REQUESTED); |
+ |
+ const HttpResponseInfo* response = sock_->GetConnectResponseInfo(); |
+ ASSERT_TRUE(response != NULL); |
+ ASSERT_EQ(407, response->headers->response_code()); |
+ ASSERT_EQ("Proxy Authentication Required", |
+ response->headers->GetStatusText()); |
+ |
+ AddAuthToCache(); |
+ |
+ ASSERT_EQ(OK, sock_->RestartWithAuth(read_callback_.callback())); |
+ // A SpdyProxyClientSocket sits on a single SPDY stream which can |
+ // only be used for a single request/response. |
+ ASSERT_FALSE(sock_->IsConnectedAndIdle()); |
+} |
+ |
TEST_F(SpdyProxyClientSocketTest, ConnectFails) { |
scoped_ptr<spdy::SpdyFrame> conn(ConstructConnectRequestFrame()); |
MockWrite writes[] = { |
@@ -831,7 +867,7 @@ |
Initialize(reads, arraysize(reads), writes, arraysize(writes)); |
- AssertConnectFails(ERR_TUNNEL_CONNECTION_FAILED); |
+ AssertConnectFails(ERR_PROXY_AUTH_REQUESTED); |
Run(2); // SpdySession consumes the next two reads and sends then to |
// sock_ to be buffered. |