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

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

Issue 1397983007: relnote: remove insecure QUIC support (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@rch_insecure_quic
Patch Set: Compile fix Created 5 years, 2 months 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(Perspective::IS_CLIENT, 49 : connection_(new PacketSavingConnection(Perspective::IS_CLIENT,
50 SupportedVersions(GetParam()))), 50 SupportedVersions(GetParam()))),
51 session_(connection_, 51 crypto_config_(CryptoTestUtils::ProofVerifierForTesting()),
52 GetSocket().Pass(), 52 session_(
53 /*stream_factory=*/nullptr, 53 connection_,
54 /*crypto_client_stream_factory=*/nullptr, 54 GetSocket().Pass(),
55 &clock_, 55 /*stream_factory=*/nullptr,
56 &transport_security_state_, 56 /*crypto_client_stream_factory=*/nullptr,
57 make_scoped_ptr((QuicServerInfo*)nullptr), 57 &clock_,
58 QuicServerId(kServerHostname, 58 &transport_security_state_,
59 kServerPort, 59 make_scoped_ptr((QuicServerInfo*)nullptr),
60 /*is_secure=*/false, 60 QuicServerId(kServerHostname, kServerPort, PRIVACY_MODE_DISABLED),
61 PRIVACY_MODE_DISABLED), 61 kQuicYieldAfterPacketsRead,
62 kQuicYieldAfterPacketsRead, 62 QuicTime::Delta::FromMilliseconds(
63 QuicTime::Delta::FromMilliseconds( 63 kQuicYieldAfterDurationMilliseconds),
64 kQuicYieldAfterDurationMilliseconds), 64 /*cert_verify_flags=*/0,
65 /*cert_verify_flags=*/0, 65 DefaultQuicConfig(),
66 DefaultQuicConfig(), 66 &crypto_config_,
67 &crypto_config_, 67 "CONNECTION_UNKNOWN",
68 "CONNECTION_UNKNOWN", 68 base::TimeTicks::Now(),
69 base::TimeTicks::Now(), 69 base::ThreadTaskRunnerHandle::Get().get(),
70 base::ThreadTaskRunnerHandle::Get().get(), 70 /*socket_performance_watcher=*/nullptr,
71 /*socket_performance_watcher=*/nullptr, 71 &net_log_) {
72 &net_log_) {
73 session_.Initialize(); 72 session_.Initialize();
74 // Advance the time, because timers do not like uninitialized times. 73 // Advance the time, because timers do not like uninitialized times.
75 connection_->AdvanceTime(QuicTime::Delta::FromSeconds(1)); 74 connection_->AdvanceTime(QuicTime::Delta::FromSeconds(1));
76 } 75 }
77 76
78 void TearDown() override { 77 void TearDown() override {
79 session_.CloseSessionOnError(ERR_ABORTED, QUIC_INTERNAL_ERROR); 78 session_.CloseSessionOnError(ERR_ABORTED, QUIC_INTERNAL_ERROR);
80 } 79 }
81 80
82 scoped_ptr<DatagramClientSocket> GetSocket() { 81 scoped_ptr<DatagramClientSocket> GetSocket() {
83 socket_factory_.AddSocketDataProvider(&socket_data_); 82 socket_factory_.AddSocketDataProvider(&socket_data_);
84 return socket_factory_.CreateDatagramClientSocket( 83 return socket_factory_.CreateDatagramClientSocket(
85 DatagramSocket::DEFAULT_BIND, base::Bind(&base::RandInt), &net_log_, 84 DatagramSocket::DEFAULT_BIND, base::Bind(&base::RandInt), &net_log_,
86 NetLog::Source()); 85 NetLog::Source());
87 } 86 }
88 87
89 void CompleteCryptoHandshake() { 88 void CompleteCryptoHandshake() {
90 ASSERT_EQ(ERR_IO_PENDING, 89 ASSERT_EQ(ERR_IO_PENDING,
91 session_.CryptoConnect(false, callback_.callback())); 90 session_.CryptoConnect(false, callback_.callback()));
92 CryptoTestUtils::HandshakeWithFakeServer(connection_, 91 CryptoTestUtils::HandshakeWithFakeServer(connection_,
93 session_.GetCryptoStream()); 92 session_.GetCryptoStream());
94 ASSERT_EQ(OK, callback_.WaitForResult()); 93 ASSERT_EQ(OK, callback_.WaitForResult());
95 } 94 }
96 95
97 PacketSavingConnection* connection_; 96 PacketSavingConnection* connection_;
98 TestNetLog net_log_; 97 TestNetLog net_log_;
99 MockClientSocketFactory socket_factory_; 98 MockClientSocketFactory socket_factory_;
100 StaticSocketDataProvider socket_data_; 99 StaticSocketDataProvider socket_data_;
101 TransportSecurityState transport_security_state_; 100 TransportSecurityState transport_security_state_;
101 QuicCryptoClientConfig crypto_config_;
102 QuicChromiumClientSession session_; 102 QuicChromiumClientSession session_;
103 MockClock clock_; 103 MockClock clock_;
104 MockRandom random_; 104 MockRandom random_;
105 QuicConnectionVisitorInterface* visitor_; 105 QuicConnectionVisitorInterface* visitor_;
106 TestCompletionCallback callback_; 106 TestCompletionCallback callback_;
107 QuicCryptoClientConfig crypto_config_;
108 }; 107 };
109 108
110 INSTANTIATE_TEST_CASE_P(Tests, 109 INSTANTIATE_TEST_CASE_P(Tests,
111 QuicChromiumClientSessionTest, 110 QuicChromiumClientSessionTest,
112 ::testing::ValuesIn(QuicSupportedVersions())); 111 ::testing::ValuesIn(QuicSupportedVersions()));
113 112
114 TEST_P(QuicChromiumClientSessionTest, CryptoConnect) { 113 TEST_P(QuicChromiumClientSessionTest, CryptoConnect) {
115 CompleteCryptoHandshake(); 114 CompleteCryptoHandshake();
116 } 115 }
117 116
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 159
161 // After receiving a GoAway, I should no longer be able to create outgoing 160 // After receiving a GoAway, I should no longer be able to create outgoing
162 // streams. 161 // streams.
163 session_.connection()->OnGoAwayFrame( 162 session_.connection()->OnGoAwayFrame(
164 QuicGoAwayFrame(QUIC_PEER_GOING_AWAY, 1u, "Going away.")); 163 QuicGoAwayFrame(QUIC_PEER_GOING_AWAY, 1u, "Going away."));
165 EXPECT_EQ(nullptr, session_.CreateOutgoingDynamicStream()); 164 EXPECT_EQ(nullptr, session_.CreateOutgoingDynamicStream());
166 } 165 }
167 166
168 TEST_P(QuicChromiumClientSessionTest, CanPool) { 167 TEST_P(QuicChromiumClientSessionTest, CanPool) {
169 // Load a cert that is valid for: 168 // Load a cert that is valid for:
170 // www.example.org 169 // test.example.com
171 // mail.example.org 170 // mail.example.org
172 // www.example.com 171 // test.example.org
173 172
174 ProofVerifyDetailsChromium details; 173 ProofVerifyDetailsChromium details;
175 details.cert_verify_result.verified_cert = 174 details.cert_verify_result.verified_cert =
176 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"); 175 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem");
177 ASSERT_TRUE(details.cert_verify_result.verified_cert.get()); 176 ASSERT_TRUE(details.cert_verify_result.verified_cert.get());
178 177
179 session_.OnProofVerifyDetailsAvailable(details); 178 session_.OnProofVerifyDetailsAvailable(details);
180 CompleteCryptoHandshake(); 179 CompleteCryptoHandshake();
181 180
182 EXPECT_TRUE(session_.CanPool("www.example.org", PRIVACY_MODE_DISABLED)); 181 EXPECT_TRUE(session_.CanPool("test.example.com", PRIVACY_MODE_DISABLED));
183 EXPECT_FALSE(session_.CanPool("www.example.org", PRIVACY_MODE_ENABLED)); 182 EXPECT_FALSE(session_.CanPool("test.example.com", PRIVACY_MODE_ENABLED));
184 EXPECT_TRUE(session_.CanPool("mail.example.org", PRIVACY_MODE_DISABLED)); 183 // All URL's are secure QUIC.
185 EXPECT_TRUE(session_.CanPool("mail.example.com", PRIVACY_MODE_DISABLED)); 184 EXPECT_FALSE(session_.CanPool("mail.example.org", PRIVACY_MODE_DISABLED));
185 EXPECT_FALSE(session_.CanPool("mail.example.com", PRIVACY_MODE_DISABLED));
186 EXPECT_FALSE(session_.CanPool("mail.google.com", PRIVACY_MODE_DISABLED)); 186 EXPECT_FALSE(session_.CanPool("mail.google.com", PRIVACY_MODE_DISABLED));
187 } 187 }
188 188
189 TEST_P(QuicChromiumClientSessionTest, ConnectionPooledWithTlsChannelId) { 189 TEST_P(QuicChromiumClientSessionTest, ConnectionPooledWithTlsChannelId) {
190 // Load a cert that is valid for: 190 // Load a cert that is valid for:
191 // www.example.org 191 // test.example.com
192 // mail.example.org 192 // mail.example.org
193 // www.example.com 193 // www.example.com
194 194
195 ProofVerifyDetailsChromium details; 195 ProofVerifyDetailsChromium details;
196 details.cert_verify_result.verified_cert = 196 details.cert_verify_result.verified_cert =
197 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"); 197 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem");
198 ASSERT_TRUE(details.cert_verify_result.verified_cert.get()); 198 ASSERT_TRUE(details.cert_verify_result.verified_cert.get());
199 199
200 session_.OnProofVerifyDetailsAvailable(details); 200 session_.OnProofVerifyDetailsAvailable(details);
201 CompleteCryptoHandshake(); 201 CompleteCryptoHandshake();
202 QuicChromiumClientSessionPeer::SetChannelIDSent(&session_, true); 202 QuicChromiumClientSessionPeer::SetChannelIDSent(&session_, true);
203 203
204 EXPECT_TRUE(session_.CanPool("www.example.org", PRIVACY_MODE_DISABLED)); 204 EXPECT_TRUE(session_.CanPool("test.example.com", PRIVACY_MODE_DISABLED));
205 EXPECT_TRUE(session_.CanPool("mail.example.org", PRIVACY_MODE_DISABLED));
206 EXPECT_FALSE(session_.CanPool("mail.example.com", PRIVACY_MODE_DISABLED)); 205 EXPECT_FALSE(session_.CanPool("mail.example.com", PRIVACY_MODE_DISABLED));
206 EXPECT_FALSE(session_.CanPool("mail.example.org", PRIVACY_MODE_DISABLED));
207 EXPECT_FALSE(session_.CanPool("mail.google.com", PRIVACY_MODE_DISABLED)); 207 EXPECT_FALSE(session_.CanPool("mail.google.com", PRIVACY_MODE_DISABLED));
208 } 208 }
209 209
210 TEST_P(QuicChromiumClientSessionTest, ConnectionNotPooledWithDifferentPin) { 210 TEST_P(QuicChromiumClientSessionTest, ConnectionNotPooledWithDifferentPin) {
211 uint8 primary_pin = 1; 211 uint8 primary_pin = 1;
212 uint8 backup_pin = 2; 212 uint8 backup_pin = 2;
213 uint8 bad_pin = 3; 213 uint8 bad_pin = 3;
214 AddPin(&transport_security_state_, "mail.example.org", primary_pin, 214 AddPin(&transport_security_state_, "mail.example.org", primary_pin,
215 backup_pin); 215 backup_pin);
216 216
(...skipping 25 matching lines...) Expand all
242 details.cert_verify_result.is_issued_by_known_root = true; 242 details.cert_verify_result.is_issued_by_known_root = true;
243 details.cert_verify_result.public_key_hashes.push_back( 243 details.cert_verify_result.public_key_hashes.push_back(
244 GetTestHashValue(primary_pin)); 244 GetTestHashValue(primary_pin));
245 245
246 ASSERT_TRUE(details.cert_verify_result.verified_cert.get()); 246 ASSERT_TRUE(details.cert_verify_result.verified_cert.get());
247 247
248 session_.OnProofVerifyDetailsAvailable(details); 248 session_.OnProofVerifyDetailsAvailable(details);
249 CompleteCryptoHandshake(); 249 CompleteCryptoHandshake();
250 QuicChromiumClientSessionPeer::SetChannelIDSent(&session_, true); 250 QuicChromiumClientSessionPeer::SetChannelIDSent(&session_, true);
251 251
252 EXPECT_TRUE(session_.CanPool("mail.example.org", PRIVACY_MODE_DISABLED)); 252 EXPECT_FALSE(session_.CanPool("mail.example.org", PRIVACY_MODE_DISABLED));
253 } 253 }
254 254
255 } // namespace 255 } // namespace
256 } // namespace test 256 } // namespace test
257 } // namespace net 257 } // 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