Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(319)

Side by Side Diff: net/quic/quic_chromium_client_session_test.cc

Issue 1411063004: Remove insecure QUIC support (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: enough! Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/quic/quic_chromium_client_session.cc ('k') | net/quic/quic_connection.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "net/quic/quic_chromium_client_session.h" 5 #include "net/quic/quic_chromium_client_session.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/base64.h" 9 #include "base/base64.h"
10 #include "base/files/file_path.h" 10 #include "base/files/file_path.h"
(...skipping 21 matching lines...) Expand all
32 #include "net/spdy/spdy_test_utils.h" 32 #include "net/spdy/spdy_test_utils.h"
33 #include "net/test/cert_test_util.h" 33 #include "net/test/cert_test_util.h"
34 #include "net/udp/datagram_client_socket.h" 34 #include "net/udp/datagram_client_socket.h"
35 35
36 using testing::_; 36 using testing::_;
37 37
38 namespace net { 38 namespace net {
39 namespace test { 39 namespace test {
40 namespace { 40 namespace {
41 41
42 const char kServerHostname[] = "www.example.org"; 42 const char kServerHostname[] = "test.example.com";
43 const uint16 kServerPort = 80; 43 const uint16 kServerPort = 443;
44 44
45 class QuicChromiumClientSessionTest 45 class QuicChromiumClientSessionTest
46 : public ::testing::TestWithParam<QuicVersion> { 46 : public ::testing::TestWithParam<QuicVersion> {
47 protected: 47 protected:
48 QuicChromiumClientSessionTest() 48 QuicChromiumClientSessionTest()
49 : connection_(new PacketSavingConnection(&helper_, 49 : crypto_config_(CryptoTestUtils::ProofVerifierForTesting()),
50 connection_(new PacketSavingConnection(&helper_,
50 Perspective::IS_CLIENT, 51 Perspective::IS_CLIENT,
51 SupportedVersions(GetParam()))), 52 SupportedVersions(GetParam()))),
52 session_(connection_, 53 session_(
53 GetSocket().Pass(), 54 connection_,
54 /*stream_factory=*/nullptr, 55 GetSocket().Pass(),
55 /*crypto_client_stream_factory=*/nullptr, 56 /*stream_factory=*/nullptr,
56 &clock_, 57 /*crypto_client_stream_factory=*/nullptr,
57 &transport_security_state_, 58 &clock_,
58 make_scoped_ptr((QuicServerInfo*)nullptr), 59 &transport_security_state_,
59 QuicServerId(kServerHostname, 60 make_scoped_ptr((QuicServerInfo*)nullptr),
60 kServerPort, 61 QuicServerId(kServerHostname, kServerPort, PRIVACY_MODE_DISABLED),
61 /*is_secure=*/false, 62 kQuicYieldAfterPacketsRead,
62 PRIVACY_MODE_DISABLED), 63 QuicTime::Delta::FromMilliseconds(
63 kQuicYieldAfterPacketsRead, 64 kQuicYieldAfterDurationMilliseconds),
64 QuicTime::Delta::FromMilliseconds( 65 /*cert_verify_flags=*/0,
65 kQuicYieldAfterDurationMilliseconds), 66 DefaultQuicConfig(),
66 /*cert_verify_flags=*/0, 67 &crypto_config_,
67 DefaultQuicConfig(), 68 "CONNECTION_UNKNOWN",
68 &crypto_config_, 69 base::TimeTicks::Now(),
69 "CONNECTION_UNKNOWN", 70 base::ThreadTaskRunnerHandle::Get().get(),
70 base::TimeTicks::Now(), 71 /*socket_performance_watcher=*/nullptr,
71 base::ThreadTaskRunnerHandle::Get().get(), 72 &net_log_) {
72 /*socket_performance_watcher=*/nullptr,
73 &net_log_) {
74 session_.Initialize(); 73 session_.Initialize();
75 // Advance the time, because timers do not like uninitialized times. 74 // Advance the time, because timers do not like uninitialized times.
76 connection_->AdvanceTime(QuicTime::Delta::FromSeconds(1)); 75 connection_->AdvanceTime(QuicTime::Delta::FromSeconds(1));
77 } 76 }
78 77
79 void TearDown() override { 78 void TearDown() override {
80 session_.CloseSessionOnError(ERR_ABORTED, QUIC_INTERNAL_ERROR); 79 session_.CloseSessionOnError(ERR_ABORTED, QUIC_INTERNAL_ERROR);
81 } 80 }
82 81
83 scoped_ptr<DatagramClientSocket> GetSocket() { 82 scoped_ptr<DatagramClientSocket> GetSocket() {
84 socket_factory_.AddSocketDataProvider(&socket_data_); 83 socket_factory_.AddSocketDataProvider(&socket_data_);
85 return socket_factory_.CreateDatagramClientSocket( 84 return socket_factory_.CreateDatagramClientSocket(
86 DatagramSocket::DEFAULT_BIND, base::Bind(&base::RandInt), &net_log_, 85 DatagramSocket::DEFAULT_BIND, base::Bind(&base::RandInt), &net_log_,
87 NetLog::Source()); 86 NetLog::Source());
88 } 87 }
89 88
90 void CompleteCryptoHandshake() { 89 void CompleteCryptoHandshake() {
91 ASSERT_EQ(ERR_IO_PENDING, 90 ASSERT_EQ(ERR_IO_PENDING,
92 session_.CryptoConnect(false, callback_.callback())); 91 session_.CryptoConnect(false, callback_.callback()));
93 CryptoTestUtils::HandshakeWithFakeServer(&helper_, connection_, 92 CryptoTestUtils::HandshakeWithFakeServer(&helper_, connection_,
94 session_.GetCryptoStream()); 93 session_.GetCryptoStream());
95 ASSERT_EQ(OK, callback_.WaitForResult()); 94 ASSERT_EQ(OK, callback_.WaitForResult());
96 } 95 }
97 96
98 MockHelper helper_; 97 MockHelper helper_;
98 QuicCryptoClientConfig crypto_config_;
99 PacketSavingConnection* connection_; 99 PacketSavingConnection* connection_;
100 TestNetLog net_log_; 100 TestNetLog net_log_;
101 MockClientSocketFactory socket_factory_; 101 MockClientSocketFactory socket_factory_;
102 StaticSocketDataProvider socket_data_; 102 StaticSocketDataProvider socket_data_;
103 TransportSecurityState transport_security_state_; 103 TransportSecurityState transport_security_state_;
104 QuicChromiumClientSession session_; 104 QuicChromiumClientSession session_;
105 MockClock clock_; 105 MockClock clock_;
106 MockRandom random_; 106 MockRandom random_;
107 QuicConnectionVisitorInterface* visitor_; 107 QuicConnectionVisitorInterface* visitor_;
108 TestCompletionCallback callback_; 108 TestCompletionCallback callback_;
109 QuicCryptoClientConfig crypto_config_;
110 }; 109 };
111 110
112 INSTANTIATE_TEST_CASE_P(Tests, 111 INSTANTIATE_TEST_CASE_P(Tests,
113 QuicChromiumClientSessionTest, 112 QuicChromiumClientSessionTest,
114 ::testing::ValuesIn(QuicSupportedVersions())); 113 ::testing::ValuesIn(QuicSupportedVersions()));
115 114
115 #if defined(OPENSSL)
116
116 TEST_P(QuicChromiumClientSessionTest, CryptoConnect) { 117 TEST_P(QuicChromiumClientSessionTest, CryptoConnect) {
117 CompleteCryptoHandshake(); 118 CompleteCryptoHandshake();
118 } 119 }
119 120
120 TEST_P(QuicChromiumClientSessionTest, MaxNumStreams) { 121 TEST_P(QuicChromiumClientSessionTest, MaxNumStreams) {
121 CompleteCryptoHandshake(); 122 CompleteCryptoHandshake();
122 123
123 std::vector<QuicReliableClientStream*> streams; 124 std::vector<QuicReliableClientStream*> streams;
124 for (size_t i = 0; i < kDefaultMaxStreamsPerConnection; i++) { 125 for (size_t i = 0; i < kDefaultMaxStreamsPerConnection; i++) {
125 QuicReliableClientStream* stream = session_.CreateOutgoingDynamicStream(); 126 QuicReliableClientStream* stream = session_.CreateOutgoingDynamicStream();
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 // Load a cert that is valid for: 172 // Load a cert that is valid for:
172 // www.example.org 173 // www.example.org
173 // mail.example.org 174 // mail.example.org
174 // www.example.com 175 // www.example.com
175 176
176 ProofVerifyDetailsChromium details; 177 ProofVerifyDetailsChromium details;
177 details.cert_verify_result.verified_cert = 178 details.cert_verify_result.verified_cert =
178 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"); 179 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem");
179 ASSERT_TRUE(details.cert_verify_result.verified_cert.get()); 180 ASSERT_TRUE(details.cert_verify_result.verified_cert.get());
180 181
182 CompleteCryptoHandshake();
181 session_.OnProofVerifyDetailsAvailable(details); 183 session_.OnProofVerifyDetailsAvailable(details);
182 CompleteCryptoHandshake();
183 184
184 EXPECT_TRUE(session_.CanPool("www.example.org", PRIVACY_MODE_DISABLED)); 185 EXPECT_TRUE(session_.CanPool("www.example.org", PRIVACY_MODE_DISABLED));
185 EXPECT_FALSE(session_.CanPool("www.example.org", PRIVACY_MODE_ENABLED)); 186 EXPECT_FALSE(session_.CanPool("www.example.org", PRIVACY_MODE_ENABLED));
186 EXPECT_TRUE(session_.CanPool("mail.example.org", PRIVACY_MODE_DISABLED)); 187 EXPECT_TRUE(session_.CanPool("mail.example.org", PRIVACY_MODE_DISABLED));
187 EXPECT_TRUE(session_.CanPool("mail.example.com", PRIVACY_MODE_DISABLED)); 188 EXPECT_TRUE(session_.CanPool("mail.example.com", PRIVACY_MODE_DISABLED));
188 EXPECT_FALSE(session_.CanPool("mail.google.com", PRIVACY_MODE_DISABLED)); 189 EXPECT_FALSE(session_.CanPool("mail.google.com", PRIVACY_MODE_DISABLED));
189 } 190 }
190 191
191 TEST_P(QuicChromiumClientSessionTest, ConnectionPooledWithTlsChannelId) { 192 TEST_P(QuicChromiumClientSessionTest, ConnectionPooledWithTlsChannelId) {
192 // Load a cert that is valid for: 193 // Load a cert that is valid for:
193 // www.example.org 194 // www.example.org
194 // mail.example.org 195 // mail.example.org
195 // www.example.com 196 // www.example.com
196 197
197 ProofVerifyDetailsChromium details; 198 ProofVerifyDetailsChromium details;
198 details.cert_verify_result.verified_cert = 199 details.cert_verify_result.verified_cert =
199 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"); 200 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem");
200 ASSERT_TRUE(details.cert_verify_result.verified_cert.get()); 201 ASSERT_TRUE(details.cert_verify_result.verified_cert.get());
201 202
203 CompleteCryptoHandshake();
202 session_.OnProofVerifyDetailsAvailable(details); 204 session_.OnProofVerifyDetailsAvailable(details);
203 CompleteCryptoHandshake(); 205 QuicChromiumClientSessionPeer::SetHostname(&session_, "www.example.org");
204 QuicChromiumClientSessionPeer::SetChannelIDSent(&session_, true); 206 QuicChromiumClientSessionPeer::SetChannelIDSent(&session_, true);
205 207
206 EXPECT_TRUE(session_.CanPool("www.example.org", PRIVACY_MODE_DISABLED)); 208 EXPECT_TRUE(session_.CanPool("www.example.org", PRIVACY_MODE_DISABLED));
207 EXPECT_TRUE(session_.CanPool("mail.example.org", PRIVACY_MODE_DISABLED)); 209 EXPECT_TRUE(session_.CanPool("mail.example.org", PRIVACY_MODE_DISABLED));
208 EXPECT_FALSE(session_.CanPool("mail.example.com", PRIVACY_MODE_DISABLED)); 210 EXPECT_FALSE(session_.CanPool("mail.example.com", PRIVACY_MODE_DISABLED));
209 EXPECT_FALSE(session_.CanPool("mail.google.com", PRIVACY_MODE_DISABLED)); 211 EXPECT_FALSE(session_.CanPool("mail.google.com", PRIVACY_MODE_DISABLED));
210 } 212 }
211 213
212 TEST_P(QuicChromiumClientSessionTest, ConnectionNotPooledWithDifferentPin) { 214 TEST_P(QuicChromiumClientSessionTest, ConnectionNotPooledWithDifferentPin) {
213 uint8 primary_pin = 1; 215 uint8 primary_pin = 1;
214 uint8 backup_pin = 2; 216 uint8 backup_pin = 2;
215 uint8 bad_pin = 3; 217 uint8 bad_pin = 3;
216 AddPin(&transport_security_state_, "mail.example.org", primary_pin, 218 AddPin(&transport_security_state_, "mail.example.org", primary_pin,
217 backup_pin); 219 backup_pin);
218 220
219 ProofVerifyDetailsChromium details; 221 ProofVerifyDetailsChromium details;
220 details.cert_verify_result.verified_cert = 222 details.cert_verify_result.verified_cert =
221 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"); 223 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem");
222 details.cert_verify_result.is_issued_by_known_root = true; 224 details.cert_verify_result.is_issued_by_known_root = true;
223 details.cert_verify_result.public_key_hashes.push_back( 225 details.cert_verify_result.public_key_hashes.push_back(
224 GetTestHashValue(bad_pin)); 226 GetTestHashValue(bad_pin));
225 227
226 ASSERT_TRUE(details.cert_verify_result.verified_cert.get()); 228 ASSERT_TRUE(details.cert_verify_result.verified_cert.get());
227 229
230 CompleteCryptoHandshake();
228 session_.OnProofVerifyDetailsAvailable(details); 231 session_.OnProofVerifyDetailsAvailable(details);
229 CompleteCryptoHandshake(); 232 QuicChromiumClientSessionPeer::SetHostname(&session_, "www.example.org");
230 QuicChromiumClientSessionPeer::SetChannelIDSent(&session_, true); 233 QuicChromiumClientSessionPeer::SetChannelIDSent(&session_, true);
231 234
232 EXPECT_FALSE(session_.CanPool("mail.example.org", PRIVACY_MODE_DISABLED)); 235 EXPECT_FALSE(session_.CanPool("mail.example.org", PRIVACY_MODE_DISABLED));
233 } 236 }
234 237
235 TEST_P(QuicChromiumClientSessionTest, ConnectionPooledWithMatchingPin) { 238 TEST_P(QuicChromiumClientSessionTest, ConnectionPooledWithMatchingPin) {
236 uint8 primary_pin = 1; 239 uint8 primary_pin = 1;
237 uint8 backup_pin = 2; 240 uint8 backup_pin = 2;
238 AddPin(&transport_security_state_, "mail.example.org", primary_pin, 241 AddPin(&transport_security_state_, "mail.example.org", primary_pin,
239 backup_pin); 242 backup_pin);
240 243
241 ProofVerifyDetailsChromium details; 244 ProofVerifyDetailsChromium details;
242 details.cert_verify_result.verified_cert = 245 details.cert_verify_result.verified_cert =
243 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"); 246 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem");
244 details.cert_verify_result.is_issued_by_known_root = true; 247 details.cert_verify_result.is_issued_by_known_root = true;
245 details.cert_verify_result.public_key_hashes.push_back( 248 details.cert_verify_result.public_key_hashes.push_back(
246 GetTestHashValue(primary_pin)); 249 GetTestHashValue(primary_pin));
247 250
248 ASSERT_TRUE(details.cert_verify_result.verified_cert.get()); 251 ASSERT_TRUE(details.cert_verify_result.verified_cert.get());
249 252
253 CompleteCryptoHandshake();
250 session_.OnProofVerifyDetailsAvailable(details); 254 session_.OnProofVerifyDetailsAvailable(details);
251 CompleteCryptoHandshake(); 255 QuicChromiumClientSessionPeer::SetHostname(&session_, "www.example.org");
252 QuicChromiumClientSessionPeer::SetChannelIDSent(&session_, true); 256 QuicChromiumClientSessionPeer::SetChannelIDSent(&session_, true);
253 257
254 EXPECT_TRUE(session_.CanPool("mail.example.org", PRIVACY_MODE_DISABLED)); 258 EXPECT_TRUE(session_.CanPool("mail.example.org", PRIVACY_MODE_DISABLED));
255 } 259 }
256 260
261 #endif
262
257 } // namespace 263 } // namespace
258 } // namespace test 264 } // namespace test
259 } // namespace net 265 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_chromium_client_session.cc ('k') | net/quic/quic_connection.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698