summaryrefslogtreecommitdiffstats
path: root/net/socket/ssl_client_socket_unittest.cc
diff options
context:
space:
mode:
authorrsleevi@chromium.org <rsleevi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-19 02:45:33 +0000
committerrsleevi@chromium.org <rsleevi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-19 02:45:33 +0000
commit1d872d38c8ea8055dd4bf3b5546cf7dda8f1bc69 (patch)
treea8b03078ce274183d8a5c61767055a8ba7f4d899 /net/socket/ssl_client_socket_unittest.cc
parent4066907a4e24989a7b05ba95df75245709b6f30d (diff)
downloadchromium_src-1d872d38c8ea8055dd4bf3b5546cf7dda8f1bc69.zip
chromium_src-1d872d38c8ea8055dd4bf3b5546cf7dda8f1bc69.tar.gz
chromium_src-1d872d38c8ea8055dd4bf3b5546cf7dda8f1bc69.tar.bz2
Include SSL plaintext traffic in addition to the ciphertext when logging raw bytes to a NetLog
R=eroman,mmenke BUG=82562 TEST=net_unittests SSLClientSocketTest.Read_FullLogging Review URL: http://codereview.chromium.org/7017007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@85866 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/socket/ssl_client_socket_unittest.cc')
-rw-r--r--net/socket/ssl_client_socket_unittest.cc66
1 files changed, 65 insertions, 1 deletions
diff --git a/net/socket/ssl_client_socket_unittest.cc b/net/socket/ssl_client_socket_unittest.cc
index f436512..49c9191 100644
--- a/net/socket/ssl_client_socket_unittest.cc
+++ b/net/socket/ssl_client_socket_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -511,6 +511,70 @@ TEST_F(SSLClientSocketTest, Read_Interrupted) {
EXPECT_GT(rv, 0);
}
+TEST_F(SSLClientSocketTest, Read_FullLogging) {
+ net::TestServer test_server(net::TestServer::TYPE_HTTPS, FilePath());
+ ASSERT_TRUE(test_server.Start());
+
+ net::AddressList addr;
+ ASSERT_TRUE(test_server.GetAddressList(&addr));
+
+ TestCompletionCallback callback;
+ net::CapturingNetLog log(net::CapturingNetLog::kUnbounded);
+ log.SetLogLevel(net::NetLog::LOG_ALL);
+ net::StreamSocket* transport = new net::TCPClientSocket(
+ addr, &log, net::NetLog::Source());
+ int rv = transport->Connect(&callback);
+ if (rv == net::ERR_IO_PENDING)
+ rv = callback.WaitForResult();
+ EXPECT_EQ(net::OK, rv);
+
+ scoped_ptr<net::SSLClientSocket> sock(
+ CreateSSLClientSocket(transport, test_server.host_port_pair(),
+ kDefaultSSLConfig));
+
+ rv = sock->Connect(&callback);
+ if (rv == net::ERR_IO_PENDING)
+ rv = callback.WaitForResult();
+ EXPECT_EQ(net::OK, rv);
+ EXPECT_TRUE(sock->IsConnected());
+
+ const char request_text[] = "GET / HTTP/1.0\r\n\r\n";
+ scoped_refptr<net::IOBuffer> request_buffer(
+ new net::IOBuffer(arraysize(request_text) - 1));
+ memcpy(request_buffer->data(), request_text, arraysize(request_text) - 1);
+
+ rv = sock->Write(request_buffer, arraysize(request_text) - 1, &callback);
+ EXPECT_TRUE(rv >= 0 || rv == net::ERR_IO_PENDING);
+
+ if (rv == net::ERR_IO_PENDING)
+ rv = callback.WaitForResult();
+ EXPECT_EQ(static_cast<int>(arraysize(request_text) - 1), rv);
+
+ net::CapturingNetLog::EntryList entries;
+ log.GetEntries(&entries);
+ size_t last_index = net::ExpectLogContainsSomewhereAfter(
+ entries, 5, net::NetLog::TYPE_SSL_SOCKET_BYTES_SENT,
+ net::NetLog::PHASE_NONE);
+
+ scoped_refptr<net::IOBuffer> buf(new net::IOBuffer(4096));
+ for (;;) {
+ rv = sock->Read(buf, 4096, &callback);
+ EXPECT_TRUE(rv >= 0 || rv == net::ERR_IO_PENDING);
+
+ if (rv == net::ERR_IO_PENDING)
+ rv = callback.WaitForResult();
+
+ EXPECT_GE(rv, 0);
+ if (rv <= 0)
+ break;
+
+ log.GetEntries(&entries);
+ last_index = net::ExpectLogContainsSomewhereAfter(
+ entries, last_index + 1, net::NetLog::TYPE_SSL_SOCKET_BYTES_RECEIVED,
+ net::NetLog::PHASE_NONE);
+ }
+}
+
// Regression test for http://crbug.com/42538
TEST_F(SSLClientSocketTest, PrematureApplicationData) {
net::TestServer test_server(net::TestServer::TYPE_HTTPS, FilePath());