Chromium Code Reviews| Index: chrome/browser/extensions/api/socket/tls_socket_unittest.cc |
| diff --git a/chrome/browser/extensions/api/socket/tcp_socket_unittest.cc b/chrome/browser/extensions/api/socket/tls_socket_unittest.cc |
| similarity index 62% |
| copy from chrome/browser/extensions/api/socket/tcp_socket_unittest.cc |
| copy to chrome/browser/extensions/api/socket/tls_socket_unittest.cc |
| index 991980587da6365c688a40ef50cff23c4ada8b81..e3253ed654efc18a3237c1ad2f6074fd8cfe2628 100644 |
| --- a/chrome/browser/extensions/api/socket/tcp_socket_unittest.cc |
| +++ b/chrome/browser/extensions/api/socket/tls_socket_unittest.cc |
| @@ -1,27 +1,68 @@ |
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| +// Copyright (c) 2013 The Chromium Authors. All rights reserved. |
|
rpaquay
2013/12/09 23:02:03
nit: no "(c)"
lally
2013/12/12 02:31:39
Done.
|
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| -#include "chrome/browser/extensions/api/socket/tcp_socket.h" |
| +#include "chrome/browser/extensions/api/socket/tls_socket.h" |
| #include "base/memory/scoped_ptr.h" |
| +#include "base/strings/string_piece.h" |
| #include "net/base/address_list.h" |
| #include "net/base/completion_callback.h" |
| #include "net/base/io_buffer.h" |
| #include "net/base/net_errors.h" |
| #include "net/base/rand_callback.h" |
| +#include "net/socket/ssl_client_socket.h" |
| #include "net/socket/tcp_client_socket.h" |
| -#include "net/socket/tcp_server_socket.h" |
| #include "testing/gmock/include/gmock/gmock.h" |
| using testing::_; |
| using testing::DoAll; |
| using testing::Return; |
| using testing::SaveArg; |
| +using base::StringPiece; |
| + |
| +namespace net { |
| +class ServerBoundCertService; |
| +} |
| namespace extensions { |
| -class MockTCPSocket : public net::TCPClientSocket { |
| +class MockSSLClientSocket : public net::SSLClientSocket { |
| + public: |
| + MockSSLClientSocket() {} |
| + MOCK_METHOD0(Disconnect, void()); |
| + MOCK_METHOD3(Read, int(net::IOBuffer* buf, int buf_len, |
| + const net::CompletionCallback& callback)); |
| + MOCK_METHOD3(Write, int(net::IOBuffer* buf, int buf_len, |
| + const net::CompletionCallback& callback)); |
| + MOCK_METHOD1(SetReceiveBufferSize, bool(int32)); |
| + MOCK_METHOD1(SetSendBufferSize, bool(int32)); |
| + MOCK_METHOD1(Connect, int(const CompletionCallback&)); |
| + MOCK_CONST_METHOD0(IsConnectedAndIdle, bool()); |
| + MOCK_CONST_METHOD1(GetPeerAddress, int(net::IPEndPoint*) ); |
| + MOCK_CONST_METHOD1(GetLocalAddress, int(net::IPEndPoint*)); |
| + MOCK_CONST_METHOD0(NetLog, const net::BoundNetLog& ()); |
| + MOCK_METHOD0(SetSubresourceSpeculation, void ()); |
| + MOCK_METHOD0(SetOmniboxSpeculation, void ()); |
| + MOCK_CONST_METHOD0(WasEverUsed, bool ()); |
| + MOCK_CONST_METHOD0(UsingTCPFastOpen, bool ()); |
| + MOCK_METHOD1(GetSSLInfo, bool (net::SSLInfo*)); |
| + MOCK_METHOD5(ExportKeyingMaterial, int( |
| + const StringPiece&, bool, const StringPiece&, unsigned char*, |
| + unsigned int)); |
| + MOCK_METHOD1(GetTLSUniqueChannelBinding, int (std::string*)); |
| + MOCK_METHOD1(GetSSLCertRequestInfo, void (net::SSLCertRequestInfo*)); |
| + MOCK_METHOD2(GetNextProto, net::SSLClientSocket::NextProtoStatus( |
| + std::string*, std::string*)); |
| + MOCK_CONST_METHOD0(GetServerBoundCertService, net::ServerBoundCertService*()); |
| + virtual bool IsConnected() const OVERRIDE { |
| + return true; |
| + } |
| + private: |
| + DISALLOW_COPY_AND_ASSIGN(MockSSLClientSocket); |
| +}; |
| + |
| +class MockTCPSocket: public net::TCPClientSocket { |
| public: |
| explicit MockTCPSocket(const net::AddressList& address_list) |
| : net::TCPClientSocket(address_list, NULL, net::NetLog::Source()) { |
| @@ -33,27 +74,14 @@ class MockTCPSocket : public net::TCPClientSocket { |
| const net::CompletionCallback& callback)); |
| MOCK_METHOD2(SetKeepAlive, bool(bool enable, int delay)); |
| MOCK_METHOD1(SetNoDelay, bool(bool no_delay)); |
| + |
| virtual bool IsConnected() const OVERRIDE { |
| return true; |
| } |
| - |
| private: |
| DISALLOW_COPY_AND_ASSIGN(MockTCPSocket); |
| }; |
| -class MockTCPServerSocket : public net::TCPServerSocket { |
| - public: |
| - explicit MockTCPServerSocket() |
| - : net::TCPServerSocket(NULL, net::NetLog::Source()) { |
| - } |
| - MOCK_METHOD2(Listen, int(const net::IPEndPoint& address, int backlog)); |
| - MOCK_METHOD2(Accept, int(scoped_ptr<net::StreamSocket>* socket, |
| - const net::CompletionCallback& callback)); |
| - |
| - private: |
| - DISALLOW_COPY_AND_ASSIGN(MockTCPServerSocket); |
| -}; |
| - |
| class CompleteHandler { |
| public: |
| CompleteHandler() {} |
| @@ -65,17 +93,18 @@ class CompleteHandler { |
| DISALLOW_COPY_AND_ASSIGN(CompleteHandler); |
| }; |
| -const std::string FAKE_ID = "abcdefghijklmnopqrst"; |
| +static const char FAKE_ID[]="faktetesttlssocketunittest"; |
| -TEST(SocketTest, TestTCPSocketRead) { |
| +TEST(SocketTest, TestTLSSocketRead) { |
| net::AddressList address_list; |
| MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list); |
| + MockSSLClientSocket *ssl_socket = new MockSSLClientSocket; |
| CompleteHandler handler; |
| - scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting( |
| - tcp_client_socket, FAKE_ID, true)); |
| + scoped_ptr<TLSSocket> socket(new TLSSocket( |
| + ssl_socket, tcp_client_socket, FAKE_ID)); |
| - EXPECT_CALL(*tcp_client_socket, Read(_, _, _)) |
| + EXPECT_CALL(*ssl_socket, Read(_, _, _)) |
| .Times(1); |
| EXPECT_CALL(handler, OnReadComplete(_, _)) |
| .Times(1); |
| @@ -85,16 +114,17 @@ TEST(SocketTest, TestTCPSocketRead) { |
| base::Unretained(&handler))); |
| } |
| -TEST(SocketTest, TestTCPSocketWrite) { |
| +TEST(SocketTest, TestTLSSocketWrite) { |
| net::AddressList address_list; |
| MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list); |
| + MockSSLClientSocket *ssl_socket = new MockSSLClientSocket; |
| CompleteHandler handler; |
| - scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting( |
| - tcp_client_socket, FAKE_ID, true)); |
| + scoped_ptr<TLSSocket> socket(new TLSSocket( |
| + ssl_socket, tcp_client_socket, FAKE_ID)); |
| net::CompletionCallback callback; |
| - EXPECT_CALL(*tcp_client_socket, Write(_, _, _)) |
| + EXPECT_CALL(*ssl_socket, Write(_, _, _)) |
| .Times(2) |
| .WillRepeatedly(testing::DoAll(SaveArg<2>(&callback), |
| Return(128))); |
| @@ -107,16 +137,17 @@ TEST(SocketTest, TestTCPSocketWrite) { |
| base::Bind(&CompleteHandler::OnComplete, base::Unretained(&handler))); |
| } |
| -TEST(SocketTest, TestTCPSocketBlockedWrite) { |
| +TEST(SocketTest, TestTLSSocketBlockedWrite) { |
| net::AddressList address_list; |
| MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list); |
| + MockSSLClientSocket *ssl_socket = new MockSSLClientSocket; |
| CompleteHandler handler; |
| - scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting( |
| - tcp_client_socket, FAKE_ID, true)); |
| + scoped_ptr<TLSSocket> socket(new TLSSocket( |
| + ssl_socket, tcp_client_socket, FAKE_ID)); |
| net::CompletionCallback callback; |
| - EXPECT_CALL(*tcp_client_socket, Write(_, _, _)) |
| + EXPECT_CALL(*ssl_socket, Write(_, _, _)) |
| .Times(2) |
| .WillRepeatedly(testing::DoAll(SaveArg<2>(&callback), |
| Return(net::ERR_IO_PENDING))); |
| @@ -132,16 +163,17 @@ TEST(SocketTest, TestTCPSocketBlockedWrite) { |
| callback.Run(2); |
| } |
| -TEST(SocketTest, TestTCPSocketBlockedWriteReentry) { |
| +TEST(SocketTest, TestTLSSocketBlockedWriteReentry) { |
| net::AddressList address_list; |
| MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list); |
| + MockSSLClientSocket *ssl_socket = new MockSSLClientSocket; |
| CompleteHandler handlers[5]; |
| - scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting( |
| - tcp_client_socket, FAKE_ID, true)); |
| + scoped_ptr<TLSSocket> socket(new TLSSocket( |
| + ssl_socket, tcp_client_socket, FAKE_ID)); |
| net::CompletionCallback callback; |
| - EXPECT_CALL(*tcp_client_socket, Write(_, _, _)) |
| + EXPECT_CALL(*ssl_socket, Write(_, _, _)) |
| .Times(5) |
| .WillRepeatedly(testing::DoAll(SaveArg<2>(&callback), |
| Return(net::ERR_IO_PENDING))); |
| @@ -164,12 +196,13 @@ TEST(SocketTest, TestTCPSocketBlockedWriteReentry) { |
| } |
| } |
| -TEST(SocketTest, TestTCPSocketSetNoDelay) { |
| +TEST(SocketTest, TestTLSSocketSetNoDelay) { |
| net::AddressList address_list; |
| MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list); |
| + MockSSLClientSocket *ssl_socket = new MockSSLClientSocket; |
| - scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting( |
| - tcp_client_socket, FAKE_ID)); |
| + scoped_ptr<TLSSocket> socket(new TLSSocket( |
| + ssl_socket, tcp_client_socket, FAKE_ID)); |
| bool no_delay = false; |
| EXPECT_CALL(*tcp_client_socket, SetNoDelay(_)) |
| @@ -186,12 +219,13 @@ TEST(SocketTest, TestTCPSocketSetNoDelay) { |
| EXPECT_FALSE(no_delay); |
| } |
| -TEST(SocketTest, TestTCPSocketSetKeepAlive) { |
| +TEST(SocketTest, TestTLSSocketSetKeepAlive) { |
| net::AddressList address_list; |
| MockTCPSocket* tcp_client_socket = new MockTCPSocket(address_list); |
| + MockSSLClientSocket *ssl_socket = new MockSSLClientSocket; |
| - scoped_ptr<TCPSocket> socket(TCPSocket::CreateSocketForTesting( |
| - tcp_client_socket, FAKE_ID)); |
| + scoped_ptr<TLSSocket> socket(new TLSSocket( |
| + ssl_socket, tcp_client_socket, FAKE_ID)); |
| bool enable = false; |
| int delay = 0; |
| @@ -214,21 +248,6 @@ TEST(SocketTest, TestTCPSocketSetKeepAlive) { |
| EXPECT_EQ(0, delay); |
| } |
| -TEST(SocketTest, TestTCPServerSocketListenAccept) { |
| - MockTCPServerSocket* tcp_server_socket = new MockTCPServerSocket(); |
| - CompleteHandler handler; |
| - scoped_ptr<TCPSocket> socket(TCPSocket::CreateServerSocketForTesting( |
| - tcp_server_socket, FAKE_ID)); |
| - |
| - EXPECT_CALL(*tcp_server_socket, Accept(_, _)).Times(1); |
| - EXPECT_CALL(*tcp_server_socket, Listen(_, _)).Times(1); |
| - EXPECT_CALL(handler, OnAccept(_, _)); |
| - |
| - std::string err_msg; |
| - EXPECT_EQ(net::OK, socket->Listen("127.0.0.1", 9999, 10, &err_msg)); |
| - socket->Accept(base::Bind(&CompleteHandler::OnAccept, |
| - base::Unretained(&handler))); |
| -} |
| } // namespace extensions |