| Index: net/socket/ssl_client_socket_unittest.cc
|
| diff --git a/net/socket/ssl_client_socket_unittest.cc b/net/socket/ssl_client_socket_unittest.cc
|
| index a32d5df68bf4837744277bcf0551a046a7de2895..5064bb3139a9d2d6e26df6c6dbf3228009ed00ce 100644
|
| --- a/net/socket/ssl_client_socket_unittest.cc
|
| +++ b/net/socket/ssl_client_socket_unittest.cc
|
| @@ -66,25 +66,18 @@ TEST_F(SSLClientSocketTest, Connect) {
|
| EXPECT_EQ(net::OK, rv);
|
|
|
| scoped_ptr<net::SSLClientSocket> sock(
|
| - socket_factory_->CreateSSLClientSocket(transport,
|
| - test_server.host_port_pair().host(), kDefaultSSLConfig,
|
| - NULL /* ssl_host_info */));
|
| + socket_factory_->CreateSSLClientSocket(
|
| + transport, test_server.host_port_pair().host(), kDefaultSSLConfig,
|
| + NULL));
|
|
|
| EXPECT_FALSE(sock->IsConnected());
|
|
|
| rv = sock->Connect(&callback);
|
| EXPECT_TRUE(net::LogContainsBeginEvent(
|
| log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT));
|
| - if (rv != net::OK) {
|
| - ASSERT_EQ(net::ERR_IO_PENDING, rv);
|
| - EXPECT_FALSE(sock->IsConnected());
|
| - EXPECT_FALSE(net::LogContainsEndEvent(
|
| - log.entries(), -1, net::NetLog::TYPE_SSL_CONNECT));
|
| -
|
| + if (rv == net::ERR_IO_PENDING)
|
| rv = callback.WaitForResult();
|
| - EXPECT_EQ(net::OK, rv);
|
| - }
|
| -
|
| + EXPECT_EQ(net::OK, rv);
|
| EXPECT_TRUE(sock->IsConnected());
|
| EXPECT_TRUE(LogContainsSSLConnectEndEvent(log.entries(), -1));
|
|
|
| @@ -111,28 +104,24 @@ TEST_F(SSLClientSocketTest, ConnectExpired) {
|
| EXPECT_EQ(net::OK, rv);
|
|
|
| scoped_ptr<net::SSLClientSocket> sock(
|
| - socket_factory_->CreateSSLClientSocket(transport,
|
| - test_server.host_port_pair().host(), kDefaultSSLConfig,
|
| - NULL /* ssl_host_info */));
|
| + socket_factory_->CreateSSLClientSocket(
|
| + transport, test_server.host_port_pair().host(), kDefaultSSLConfig,
|
| + NULL));
|
|
|
| EXPECT_FALSE(sock->IsConnected());
|
|
|
| rv = sock->Connect(&callback);
|
| EXPECT_TRUE(net::LogContainsBeginEvent(
|
| log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT));
|
| - if (rv != net::OK) {
|
| - ASSERT_EQ(net::ERR_IO_PENDING, rv);
|
| - EXPECT_FALSE(sock->IsConnected());
|
| - EXPECT_FALSE(net::LogContainsEndEvent(
|
| - log.entries(), -1, net::NetLog::TYPE_SSL_CONNECT));
|
| -
|
| + if (rv == net::ERR_IO_PENDING)
|
| rv = callback.WaitForResult();
|
| - EXPECT_EQ(net::ERR_CERT_DATE_INVALID, rv);
|
| - }
|
|
|
| - // We cannot test sock->IsConnected(), as the NSS implementation disconnects
|
| - // the socket when it encounters an error, whereas other implementations
|
| - // leave it connected.
|
| + EXPECT_EQ(net::ERR_CERT_DATE_INVALID, rv);
|
| +
|
| + // Rather than testing whether or not the underlying socket is connected,
|
| + // test that the handshake has finished. This is because it may be
|
| + // desirable to disconnect the socket before showing a user prompt, since
|
| + // the user may take indefinitely long to respond.
|
| EXPECT_TRUE(LogContainsSSLConnectEndEvent(log.entries(), -1));
|
| }
|
|
|
| @@ -155,9 +144,9 @@ TEST_F(SSLClientSocketTest, ConnectMismatched) {
|
| EXPECT_EQ(net::OK, rv);
|
|
|
| scoped_ptr<net::SSLClientSocket> sock(
|
| - socket_factory_->CreateSSLClientSocket(transport,
|
| - test_server.host_port_pair().host(), kDefaultSSLConfig,
|
| - NULL /* ssl_host_info */));
|
| + socket_factory_->CreateSSLClientSocket(
|
| + transport, test_server.host_port_pair().host(), kDefaultSSLConfig,
|
| + NULL));
|
|
|
| EXPECT_FALSE(sock->IsConnected());
|
|
|
| @@ -165,19 +154,15 @@ TEST_F(SSLClientSocketTest, ConnectMismatched) {
|
|
|
| EXPECT_TRUE(net::LogContainsBeginEvent(
|
| log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT));
|
| - if (rv != net::ERR_CERT_COMMON_NAME_INVALID) {
|
| - ASSERT_EQ(net::ERR_IO_PENDING, rv);
|
| - EXPECT_FALSE(sock->IsConnected());
|
| - EXPECT_FALSE(net::LogContainsEndEvent(
|
| - log.entries(), -1, net::NetLog::TYPE_SSL_CONNECT));
|
| -
|
| + if (rv == net::ERR_IO_PENDING)
|
| rv = callback.WaitForResult();
|
| - EXPECT_EQ(net::ERR_CERT_COMMON_NAME_INVALID, rv);
|
| - }
|
|
|
| - // We cannot test sock->IsConnected(), as the NSS implementation disconnects
|
| - // the socket when it encounters an error, whereas other implementations
|
| - // leave it connected.
|
| + EXPECT_EQ(net::ERR_CERT_COMMON_NAME_INVALID, rv);
|
| +
|
| + // Rather than testing whether or not the underlying socket is connected,
|
| + // test that the handshake has finished. This is because it may be
|
| + // desirable to disconnect the socket before showing a user prompt, since
|
| + // the user may take indefinitely long to respond.
|
| EXPECT_TRUE(LogContainsSSLConnectEndEvent(log.entries(), -1));
|
| }
|
|
|
| @@ -203,29 +188,20 @@ TEST_F(SSLClientSocketTest, FLAKY_ConnectClientAuthCertRequested) {
|
| EXPECT_EQ(net::OK, rv);
|
|
|
| scoped_ptr<net::SSLClientSocket> sock(
|
| - socket_factory_->CreateSSLClientSocket(transport,
|
| - test_server.host_port_pair().host(), kDefaultSSLConfig,
|
| - NULL /* ssl_host_info */));
|
| + socket_factory_->CreateSSLClientSocket(
|
| + transport, test_server.host_port_pair().host(), kDefaultSSLConfig,
|
| + NULL));
|
|
|
| EXPECT_FALSE(sock->IsConnected());
|
|
|
| rv = sock->Connect(&callback);
|
| EXPECT_TRUE(net::LogContainsBeginEvent(
|
| log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT));
|
| - if (rv != net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED) {
|
| - ASSERT_EQ(net::ERR_IO_PENDING, rv);
|
| - EXPECT_FALSE(sock->IsConnected());
|
| - EXPECT_FALSE(net::LogContainsEndEvent(
|
| - log.entries(), -1, net::NetLog::TYPE_SSL_CONNECT));
|
| -
|
| + if (rv == net::ERR_IO_PENDING)
|
| rv = callback.WaitForResult();
|
| - EXPECT_EQ(net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED, rv);
|
| - }
|
|
|
| - // We cannot test sock->IsConnected(), as the NSS implementation disconnects
|
| - // the socket when it encounters an error, whereas other implementations
|
| - // leave it connected.
|
| - EXPECT_TRUE(LogContainsSSLConnectEndEvent(log.entries(), -1));
|
| + EXPECT_EQ(net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED, rv);
|
| + EXPECT_FALSE(sock->IsConnected());
|
| }
|
|
|
| // Connect to a server requesting optional client authentication. Send it a
|
| @@ -255,9 +231,9 @@ TEST_F(SSLClientSocketTest, ConnectClientAuthSendNullCert) {
|
| ssl_config.client_cert = NULL;
|
|
|
| scoped_ptr<net::SSLClientSocket> sock(
|
| - socket_factory_->CreateSSLClientSocket(transport,
|
| - test_server.host_port_pair().host(), ssl_config,
|
| - NULL /* ssl_host_info */));
|
| + socket_factory_->CreateSSLClientSocket(
|
| + transport, test_server.host_port_pair().host(), ssl_config,
|
| + NULL));
|
|
|
| EXPECT_FALSE(sock->IsConnected());
|
|
|
| @@ -266,16 +242,10 @@ TEST_F(SSLClientSocketTest, ConnectClientAuthSendNullCert) {
|
| rv = sock->Connect(&callback);
|
| EXPECT_TRUE(net::LogContainsBeginEvent(
|
| log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT));
|
| - if (rv != net::OK) {
|
| - ASSERT_EQ(net::ERR_IO_PENDING, rv);
|
| - EXPECT_FALSE(sock->IsConnected());
|
| - EXPECT_FALSE(net::LogContainsEndEvent(
|
| - log.entries(), -1, net::NetLog::TYPE_SSL_CONNECT));
|
| -
|
| + if (rv == net::ERR_IO_PENDING)
|
| rv = callback.WaitForResult();
|
| - EXPECT_EQ(net::OK, rv);
|
| - }
|
|
|
| + EXPECT_EQ(net::OK, rv);
|
| EXPECT_TRUE(sock->IsConnected());
|
| EXPECT_TRUE(LogContainsSSLConnectEndEvent(log.entries(), -1));
|
|
|
| @@ -305,18 +275,13 @@ TEST_F(SSLClientSocketTest, Read) {
|
|
|
| scoped_ptr<net::SSLClientSocket> sock(
|
| socket_factory_->CreateSSLClientSocket(
|
| - transport,
|
| - test_server.host_port_pair().host(),
|
| - kDefaultSSLConfig,
|
| - NULL /* ssl_host_info */));
|
| + transport, test_server.host_port_pair().host(), kDefaultSSLConfig,
|
| + NULL));
|
|
|
| rv = sock->Connect(&callback);
|
| - if (rv != net::OK) {
|
| - ASSERT_EQ(net::ERR_IO_PENDING, rv);
|
| -
|
| + if (rv == net::ERR_IO_PENDING)
|
| rv = callback.WaitForResult();
|
| - EXPECT_EQ(net::OK, rv);
|
| - }
|
| + EXPECT_EQ(net::OK, rv);
|
| EXPECT_TRUE(sock->IsConnected());
|
|
|
| const char request_text[] = "GET / HTTP/1.0\r\n\r\n";
|
| @@ -366,18 +331,13 @@ TEST_F(SSLClientSocketTest, Read_FullDuplex) {
|
|
|
| scoped_ptr<net::SSLClientSocket> sock(
|
| socket_factory_->CreateSSLClientSocket(
|
| - transport,
|
| - test_server.host_port_pair().host(),
|
| - kDefaultSSLConfig,
|
| - NULL /* ssl_host_info */));
|
| + transport, test_server.host_port_pair().host(), kDefaultSSLConfig,
|
| + NULL));
|
|
|
| rv = sock->Connect(&callback);
|
| - if (rv != net::OK) {
|
| - ASSERT_EQ(net::ERR_IO_PENDING, rv);
|
| -
|
| + if (rv == net::ERR_IO_PENDING)
|
| rv = callback.WaitForResult();
|
| - EXPECT_EQ(net::OK, rv);
|
| - }
|
| + EXPECT_EQ(net::OK, rv);
|
| EXPECT_TRUE(sock->IsConnected());
|
|
|
| // Issue a "hanging" Read first.
|
| @@ -425,17 +385,14 @@ TEST_F(SSLClientSocketTest, Read_SmallChunks) {
|
| EXPECT_EQ(net::OK, rv);
|
|
|
| scoped_ptr<net::SSLClientSocket> sock(
|
| - socket_factory_->CreateSSLClientSocket(transport,
|
| - test_server.host_port_pair().host(), kDefaultSSLConfig,
|
| - NULL /* ssl_host_info */));
|
| + socket_factory_->CreateSSLClientSocket(
|
| + transport, test_server.host_port_pair().host(), kDefaultSSLConfig,
|
| + NULL));
|
|
|
| rv = sock->Connect(&callback);
|
| - if (rv != net::OK) {
|
| - ASSERT_EQ(net::ERR_IO_PENDING, rv);
|
| -
|
| + if (rv == net::ERR_IO_PENDING)
|
| rv = callback.WaitForResult();
|
| - EXPECT_EQ(net::OK, rv);
|
| - }
|
| + EXPECT_EQ(net::OK, rv);
|
|
|
| const char request_text[] = "GET / HTTP/1.0\r\n\r\n";
|
| scoped_refptr<net::IOBuffer> request_buffer(
|
| @@ -479,17 +436,14 @@ TEST_F(SSLClientSocketTest, Read_Interrupted) {
|
| EXPECT_EQ(net::OK, rv);
|
|
|
| scoped_ptr<net::SSLClientSocket> sock(
|
| - socket_factory_->CreateSSLClientSocket(transport,
|
| - test_server.host_port_pair().host(), kDefaultSSLConfig,
|
| - NULL /* ssl_host_info */));
|
| + socket_factory_->CreateSSLClientSocket(
|
| + transport, test_server.host_port_pair().host(), kDefaultSSLConfig,
|
| + NULL));
|
|
|
| rv = sock->Connect(&callback);
|
| - if (rv != net::OK) {
|
| - ASSERT_EQ(net::ERR_IO_PENDING, rv);
|
| -
|
| + if (rv == net::ERR_IO_PENDING)
|
| rv = callback.WaitForResult();
|
| - EXPECT_EQ(net::OK, rv);
|
| - }
|
| + EXPECT_EQ(net::OK, rv);
|
|
|
| const char request_text[] = "GET / HTTP/1.0\r\n\r\n";
|
| scoped_refptr<net::IOBuffer> request_buffer(
|
| @@ -555,7 +509,7 @@ TEST_F(SSLClientSocketTest, PrematureApplicationData) {
|
| scoped_ptr<net::SSLClientSocket> sock(
|
| socket_factory_->CreateSSLClientSocket(
|
| transport, test_server.host_port_pair().host(), kDefaultSSLConfig,
|
| - NULL /* ssl_host_info */));
|
| + NULL));
|
|
|
| rv = sock->Connect(&callback);
|
| EXPECT_EQ(net::ERR_SSL_PROTOCOL_ERROR, rv);
|
|
|