| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "jingle/notifier/base/fake_ssl_client_socket.h" | 5 #include "jingle/notifier/base/fake_ssl_client_socket.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| (...skipping 29 matching lines...) Expand all Loading... |
| 40 // An error representing a server hello that has been corrupted in | 40 // An error representing a server hello that has been corrupted in |
| 41 // transit. | 41 // transit. |
| 42 ERR_MALFORMED_SERVER_HELLO = -15000, | 42 ERR_MALFORMED_SERVER_HELLO = -15000, |
| 43 }; | 43 }; |
| 44 | 44 |
| 45 // Used by PassThroughMethods test. | 45 // Used by PassThroughMethods test. |
| 46 class MockClientSocket : public net::StreamSocket { | 46 class MockClientSocket : public net::StreamSocket { |
| 47 public: | 47 public: |
| 48 virtual ~MockClientSocket() {} | 48 virtual ~MockClientSocket() {} |
| 49 | 49 |
| 50 MOCK_METHOD3(Read, int(net::IOBuffer*, int, net::OldCompletionCallback*)); | |
| 51 MOCK_METHOD3(Read, int(net::IOBuffer*, int, | 50 MOCK_METHOD3(Read, int(net::IOBuffer*, int, |
| 52 const net::CompletionCallback&)); | 51 const net::CompletionCallback&)); |
| 53 MOCK_METHOD3(Write, int(net::IOBuffer*, int, net::OldCompletionCallback*)); | 52 MOCK_METHOD3(Write, int(net::IOBuffer*, int, |
| 53 const net::CompletionCallback&)); |
| 54 MOCK_METHOD1(SetReceiveBufferSize, bool(int32)); | 54 MOCK_METHOD1(SetReceiveBufferSize, bool(int32)); |
| 55 MOCK_METHOD1(SetSendBufferSize, bool(int32)); | 55 MOCK_METHOD1(SetSendBufferSize, bool(int32)); |
| 56 MOCK_METHOD1(Connect, int(net::OldCompletionCallback*)); | |
| 57 MOCK_METHOD1(Connect, int(const net::CompletionCallback&)); | 56 MOCK_METHOD1(Connect, int(const net::CompletionCallback&)); |
| 58 MOCK_METHOD0(Disconnect, void()); | 57 MOCK_METHOD0(Disconnect, void()); |
| 59 MOCK_CONST_METHOD0(IsConnected, bool()); | 58 MOCK_CONST_METHOD0(IsConnected, bool()); |
| 60 MOCK_CONST_METHOD0(IsConnectedAndIdle, bool()); | 59 MOCK_CONST_METHOD0(IsConnectedAndIdle, bool()); |
| 61 MOCK_CONST_METHOD1(GetPeerAddress, int(net::AddressList*)); | 60 MOCK_CONST_METHOD1(GetPeerAddress, int(net::AddressList*)); |
| 62 MOCK_CONST_METHOD1(GetLocalAddress, int(net::IPEndPoint*)); | 61 MOCK_CONST_METHOD1(GetLocalAddress, int(net::IPEndPoint*)); |
| 63 MOCK_CONST_METHOD0(NetLog, const net::BoundNetLog&()); | 62 MOCK_CONST_METHOD0(NetLog, const net::BoundNetLog&()); |
| 64 MOCK_METHOD0(SetSubresourceSpeculation, void()); | 63 MOCK_METHOD0(SetSubresourceSpeculation, void()); |
| 65 MOCK_METHOD0(SetOmniboxSpeculation, void()); | 64 MOCK_METHOD0(SetOmniboxSpeculation, void()); |
| 66 MOCK_CONST_METHOD0(WasEverUsed, bool()); | 65 MOCK_CONST_METHOD0(WasEverUsed, bool()); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 104 new net::StaticSocketDataProvider( | 103 new net::StaticSocketDataProvider( |
| 105 reads->empty() ? NULL : &*reads->begin(), reads->size(), | 104 reads->empty() ? NULL : &*reads->begin(), reads->size(), |
| 106 writes->empty() ? NULL : &*writes->begin(), writes->size())); | 105 writes->empty() ? NULL : &*writes->begin(), writes->size())); |
| 107 static_socket_data_provider_->set_connect_data(mock_connect); | 106 static_socket_data_provider_->set_connect_data(mock_connect); |
| 108 mock_client_socket_factory_.AddSocketDataProvider( | 107 mock_client_socket_factory_.AddSocketDataProvider( |
| 109 static_socket_data_provider_.get()); | 108 static_socket_data_provider_.get()); |
| 110 } | 109 } |
| 111 | 110 |
| 112 void ExpectStatus( | 111 void ExpectStatus( |
| 113 bool async, int expected_status, int immediate_status, | 112 bool async, int expected_status, int immediate_status, |
| 114 TestOldCompletionCallback* test_completion_callback) { | 113 net::TestCompletionCallback* test_completion_callback) { |
| 115 if (async) { | 114 if (async) { |
| 116 EXPECT_EQ(net::ERR_IO_PENDING, immediate_status); | 115 EXPECT_EQ(net::ERR_IO_PENDING, immediate_status); |
| 117 int status = test_completion_callback->WaitForResult(); | 116 int status = test_completion_callback->WaitForResult(); |
| 118 EXPECT_EQ(expected_status, status); | 117 EXPECT_EQ(expected_status, status); |
| 119 } else { | 118 } else { |
| 120 EXPECT_EQ(expected_status, immediate_status); | 119 EXPECT_EQ(expected_status, immediate_status); |
| 121 } | 120 } |
| 122 } | 121 } |
| 123 | 122 |
| 124 // Sets up the mock socket to generate a successful handshake | 123 // Sets up the mock socket to generate a successful handshake |
| (...skipping 20 matching lines...) Expand all Loading... |
| 145 net::MockRead(async, kReadTestData, arraysize(kReadTestData))); | 144 net::MockRead(async, kReadTestData, arraysize(kReadTestData))); |
| 146 writes.push_back( | 145 writes.push_back( |
| 147 net::MockWrite(async, kWriteTestData, arraysize(kWriteTestData))); | 146 net::MockWrite(async, kWriteTestData, arraysize(kWriteTestData))); |
| 148 } | 147 } |
| 149 SetData(mock_connect, &reads, &writes); | 148 SetData(mock_connect, &reads, &writes); |
| 150 | 149 |
| 151 FakeSSLClientSocket fake_ssl_client_socket(MakeClientSocket()); | 150 FakeSSLClientSocket fake_ssl_client_socket(MakeClientSocket()); |
| 152 | 151 |
| 153 for (int i = 0; i < num_resets + 1; ++i) { | 152 for (int i = 0; i < num_resets + 1; ++i) { |
| 154 SCOPED_TRACE(i); | 153 SCOPED_TRACE(i); |
| 155 TestOldCompletionCallback test_completion_callback; | 154 net::TestCompletionCallback test_completion_callback; |
| 156 int status = fake_ssl_client_socket.Connect(&test_completion_callback); | 155 int status = fake_ssl_client_socket.Connect( |
| 156 test_completion_callback.callback()); |
| 157 if (async) { | 157 if (async) { |
| 158 EXPECT_FALSE(fake_ssl_client_socket.IsConnected()); | 158 EXPECT_FALSE(fake_ssl_client_socket.IsConnected()); |
| 159 } | 159 } |
| 160 ExpectStatus(async, net::OK, status, &test_completion_callback); | 160 ExpectStatus(async, net::OK, status, &test_completion_callback); |
| 161 if (fake_ssl_client_socket.IsConnected()) { | 161 if (fake_ssl_client_socket.IsConnected()) { |
| 162 int read_len = arraysize(kReadTestData); | 162 int read_len = arraysize(kReadTestData); |
| 163 int read_buf_len = 2 * read_len; | 163 int read_buf_len = 2 * read_len; |
| 164 scoped_refptr<net::IOBuffer> read_buf( | 164 scoped_refptr<net::IOBuffer> read_buf( |
| 165 new net::IOBuffer(read_buf_len)); | 165 new net::IOBuffer(read_buf_len)); |
| 166 int read_status = fake_ssl_client_socket.Read( | 166 int read_status = fake_ssl_client_socket.Read( |
| 167 read_buf, read_buf_len, &test_completion_callback); | 167 read_buf, read_buf_len, test_completion_callback.callback()); |
| 168 ExpectStatus(async, read_len, read_status, &test_completion_callback); | 168 ExpectStatus(async, read_len, read_status, &test_completion_callback); |
| 169 | 169 |
| 170 scoped_refptr<net::IOBuffer> write_buf( | 170 scoped_refptr<net::IOBuffer> write_buf( |
| 171 new net::StringIOBuffer(kWriteTestData)); | 171 new net::StringIOBuffer(kWriteTestData)); |
| 172 int write_status = fake_ssl_client_socket.Write( | 172 int write_status = fake_ssl_client_socket.Write( |
| 173 write_buf, arraysize(kWriteTestData), &test_completion_callback); | 173 write_buf, arraysize(kWriteTestData), |
| 174 test_completion_callback.callback()); |
| 174 ExpectStatus(async, arraysize(kWriteTestData), write_status, | 175 ExpectStatus(async, arraysize(kWriteTestData), write_status, |
| 175 &test_completion_callback); | 176 &test_completion_callback); |
| 176 } else { | 177 } else { |
| 177 ADD_FAILURE(); | 178 ADD_FAILURE(); |
| 178 } | 179 } |
| 179 fake_ssl_client_socket.Disconnect(); | 180 fake_ssl_client_socket.Disconnect(); |
| 180 EXPECT_FALSE(fake_ssl_client_socket.IsConnected()); | 181 EXPECT_FALSE(fake_ssl_client_socket.IsConnected()); |
| 181 } | 182 } |
| 182 } | 183 } |
| 183 | 184 |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 238 | 239 |
| 239 FakeSSLClientSocket fake_ssl_client_socket(MakeClientSocket()); | 240 FakeSSLClientSocket fake_ssl_client_socket(MakeClientSocket()); |
| 240 | 241 |
| 241 // The two errors below are interpreted by FakeSSLClientSocket as | 242 // The two errors below are interpreted by FakeSSLClientSocket as |
| 242 // an unexpected event. | 243 // an unexpected event. |
| 243 int expected_status = | 244 int expected_status = |
| 244 ((error == net::ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ) || | 245 ((error == net::ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ) || |
| 245 (error == ERR_MALFORMED_SERVER_HELLO)) ? | 246 (error == ERR_MALFORMED_SERVER_HELLO)) ? |
| 246 net::ERR_UNEXPECTED : error; | 247 net::ERR_UNEXPECTED : error; |
| 247 | 248 |
| 248 TestOldCompletionCallback test_completion_callback; | 249 net::TestCompletionCallback test_completion_callback; |
| 249 int status = fake_ssl_client_socket.Connect(&test_completion_callback); | 250 int status = fake_ssl_client_socket.Connect( |
| 251 test_completion_callback.callback()); |
| 250 EXPECT_FALSE(fake_ssl_client_socket.IsConnected()); | 252 EXPECT_FALSE(fake_ssl_client_socket.IsConnected()); |
| 251 ExpectStatus(async, expected_status, status, &test_completion_callback); | 253 ExpectStatus(async, expected_status, status, &test_completion_callback); |
| 252 EXPECT_FALSE(fake_ssl_client_socket.IsConnected()); | 254 EXPECT_FALSE(fake_ssl_client_socket.IsConnected()); |
| 253 } | 255 } |
| 254 | 256 |
| 255 void RunUnsuccessfulHandshakeTest( | 257 void RunUnsuccessfulHandshakeTest( |
| 256 int error, HandshakeErrorLocation location) { | 258 int error, HandshakeErrorLocation location) { |
| 257 RunUnsuccessfulHandshakeTestHelper(false, error, location); | 259 RunUnsuccessfulHandshakeTestHelper(false, error, location); |
| 258 RunUnsuccessfulHandshakeTestHelper(true, error, location); | 260 RunUnsuccessfulHandshakeTestHelper(true, error, location); |
| 259 } | 261 } |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 337 } | 339 } |
| 338 | 340 |
| 339 TEST_F(FakeSSLClientSocketTest, MalformedServerHello) { | 341 TEST_F(FakeSSLClientSocketTest, MalformedServerHello) { |
| 340 RunUnsuccessfulHandshakeTest(ERR_MALFORMED_SERVER_HELLO, | 342 RunUnsuccessfulHandshakeTest(ERR_MALFORMED_SERVER_HELLO, |
| 341 VERIFY_SERVER_HELLO_ERROR); | 343 VERIFY_SERVER_HELLO_ERROR); |
| 342 } | 344 } |
| 343 | 345 |
| 344 } // namespace | 346 } // namespace |
| 345 | 347 |
| 346 } // namespace notifier | 348 } // namespace notifier |
| OLD | NEW |