diff options
Diffstat (limited to 'net/quic/quic_crypto_server_stream_test.cc')
-rw-r--r-- | net/quic/quic_crypto_server_stream_test.cc | 57 |
1 files changed, 38 insertions, 19 deletions
diff --git a/net/quic/quic_crypto_server_stream_test.cc b/net/quic/quic_crypto_server_stream_test.cc index d12597b..73469db 100644 --- a/net/quic/quic_crypto_server_stream_test.cc +++ b/net/quic/quic_crypto_server_stream_test.cc @@ -61,9 +61,10 @@ class QuicCryptoServerStreamTest : public ::testing::Test { addr_(ParseIPLiteralToNumber("192.0.2.33", &ip_) ? ip_ : IPAddressNumber(), 1), connection_(new PacketSavingConnection(guid_, addr_, true)), - session_(connection_, true), + session_(connection_, QuicConfig(), true), crypto_config_(QuicCryptoServerConfig::TESTING), - stream_(config_, crypto_config_, &session_) { + stream_(crypto_config_, &session_) { + session_.config()->SetDefaults(); session_.SetCryptoStream(&stream_); // We advance the clock initially because the default time is zero and the // strike register worries that we've just overflowed a uint32 time. @@ -72,8 +73,8 @@ class QuicCryptoServerStreamTest : public ::testing::Test { // crypto_config_.SetProofSource(CryptoTestUtils::ProofSourceForTesting()); CryptoTestUtils::SetupCryptoServerConfigForTest( - connection_->clock(), connection_->random_generator(), &config_, - &crypto_config_); + connection_->clock(), connection_->random_generator(), + session_.config(), &crypto_config_); } void ConstructHandshakeMessage() { @@ -82,7 +83,8 @@ class QuicCryptoServerStreamTest : public ::testing::Test { } int CompleteCryptoHandshake() { - return CryptoTestUtils::HandshakeWithFakeClient(connection_, &stream_); + return CryptoTestUtils::HandshakeWithFakeClient(connection_, &stream_, + client_options_); } protected: @@ -96,6 +98,7 @@ class QuicCryptoServerStreamTest : public ::testing::Test { QuicCryptoServerStream stream_; CryptoHandshakeMessage message_; scoped_ptr<QuicData> message_data_; + CryptoTestUtils::FakeClientOptions client_options_; }; TEST_F(QuicCryptoServerStreamTest, NotInitiallyConected) { @@ -144,18 +147,15 @@ TEST_F(QuicCryptoServerStreamTest, ZeroRTT) { client_conn->AdvanceTime(QuicTime::Delta::FromSeconds(100000)); server_conn->AdvanceTime(QuicTime::Delta::FromSeconds(100000)); - scoped_ptr<TestSession> client_session(new TestSession(client_conn, true)); - scoped_ptr<TestSession> server_session(new TestSession(server_conn, true)); - QuicConfig client_config; + scoped_ptr<TestSession> client_session( + new TestSession(client_conn, client_config, false)); + client_session->config()->SetDefaults(); QuicCryptoClientConfig client_crypto_config; - - client_config.SetDefaults(); client_crypto_config.SetDefaults(); scoped_ptr<QuicCryptoClientStream> client(new QuicCryptoClientStream( - "test.example.com", client_config, client_session.get(), - &client_crypto_config)); + "test.example.com", client_session.get(), &client_crypto_config)); client_session->SetCryptoStream(client.get()); // Do a first handshake in order to prime the client config with the server's @@ -163,9 +163,11 @@ TEST_F(QuicCryptoServerStreamTest, ZeroRTT) { CHECK(client->CryptoConnect()); CHECK_EQ(1u, client_conn->packets_.size()); + scoped_ptr<TestSession> server_session( + new TestSession(server_conn, config_, true)); + server_session->config()->SetDefaults(); scoped_ptr<QuicCryptoServerStream> server( - new QuicCryptoServerStream(config_, crypto_config_, - server_session.get())); + new QuicCryptoServerStream(crypto_config_, server_session.get())); server_session->SetCryptoStream(server.get()); CryptoTestUtils::CommunicateHandshakeMessages( @@ -185,14 +187,15 @@ TEST_F(QuicCryptoServerStreamTest, ZeroRTT) { // This causes the client's nonce to be different and thus stops the // strike-register from rejecting the repeated nonce. client_conn->random_generator()->Reseed(NULL, 0); - client_session.reset(new TestSession(client_conn, true)); - server_session.reset(new TestSession(server_conn, true)); + client_session.reset(new TestSession(client_conn, client_config, false)); + client_session->config()->SetDefaults(); + server_session.reset(new TestSession(server_conn, config_, true)); + server_session->config()->SetDefaults(); client.reset(new QuicCryptoClientStream( - "test.example.com", client_config, client_session.get(), - &client_crypto_config)); + "test.example.com", client_session.get(), &client_crypto_config)); client_session->SetCryptoStream(client.get()); - server.reset(new QuicCryptoServerStream(config_, crypto_config_, + server.reset(new QuicCryptoServerStream(crypto_config_, server_session.get())); server_session->SetCryptoStream(server.get()); @@ -230,6 +233,22 @@ TEST_F(QuicCryptoServerStreamTest, BadMessageType) { stream_.ProcessData(message_data_->data(), message_data_->length()); } +TEST_F(QuicCryptoServerStreamTest, WithoutCertificates) { + if (!Aes128GcmEncrypter::IsSupported()) { + LOG(INFO) << "AES GCM not supported. Test skipped."; + return; + } + + crypto_config_.SetProofSource(NULL); + client_options_.dont_verify_certs = true; + + // Only 2 client hellos need to be sent in the no-certs case: one to get the + // source-address token and the second to finish. + EXPECT_EQ(2, CompleteCryptoHandshake()); + EXPECT_TRUE(stream_.encryption_established()); + EXPECT_TRUE(stream_.handshake_confirmed()); +} + } // namespace } // namespace test } // namespace net |