| Index: net/quic/quic_client_session_test.cc
|
| diff --git a/net/quic/quic_client_session_test.cc b/net/quic/quic_client_session_test.cc
|
| index 264fbfa52708d69cc545cc15640f6acd24c5a28e..d93ecd3100a73d3aeae3c912b4aec86e597be94e 100644
|
| --- a/net/quic/quic_client_session_test.cc
|
| +++ b/net/quic/quic_client_session_test.cc
|
| @@ -6,11 +6,15 @@
|
|
|
| #include <vector>
|
|
|
| +#include "base/files/file_path.h"
|
| #include "base/rand_util.h"
|
| #include "net/base/capturing_net_log.h"
|
| #include "net/base/test_completion_callback.h"
|
| +#include "net/base/test_data_directory.h"
|
| +#include "net/cert/cert_verify_result.h"
|
| #include "net/quic/crypto/aes_128_gcm_12_encrypter.h"
|
| #include "net/quic/crypto/crypto_protocol.h"
|
| +#include "net/quic/crypto/proof_verifier_chromium.h"
|
| #include "net/quic/crypto/quic_decrypter.h"
|
| #include "net/quic/crypto/quic_encrypter.h"
|
| #include "net/quic/crypto/quic_server_info.h"
|
| @@ -20,6 +24,7 @@
|
| #include "net/quic/test_tools/quic_test_utils.h"
|
| #include "net/quic/test_tools/simple_quic_framer.h"
|
| #include "net/socket/socket_test_util.h"
|
| +#include "net/test/cert_test_util.h"
|
| #include "net/udp/datagram_client_socket.h"
|
|
|
| using testing::_;
|
| @@ -28,7 +33,7 @@ namespace net {
|
| namespace test {
|
| namespace {
|
|
|
| -const char kServerHostname[] = "www.example.com";
|
| +const char kServerHostname[] = "www.example.org";
|
| const uint16 kServerPort = 80;
|
|
|
| class TestPacketWriter : public QuicDefaultPacketWriter {
|
| @@ -61,6 +66,20 @@ class TestPacketWriter : public QuicDefaultPacketWriter {
|
| QuicPacketHeader header_;
|
| };
|
|
|
| +class FakeChannelIDKey : public ChannelIDKey {
|
| + public:
|
| + // ChannelIDKey implementation
|
| + virtual bool Sign(base::StringPiece signed_data,
|
| + std::string* out_signature) const OVERRIDE {
|
| + *out_signature = "";
|
| + return true;
|
| + }
|
| +
|
| + virtual std::string SerializeKey() const OVERRIDE {
|
| + return "";
|
| + }
|
| +};
|
| +
|
| class QuicClientSessionTest : public ::testing::TestWithParam<QuicVersion> {
|
| protected:
|
| QuicClientSessionTest()
|
| @@ -166,6 +185,52 @@ TEST_P(QuicClientSessionTest, GoAwayReceived) {
|
| EXPECT_EQ(NULL, session_.CreateOutgoingDataStream());
|
| }
|
|
|
| +TEST_P(QuicClientSessionTest, CanPool) {
|
| + // Load a cert that is valid for:
|
| + // www.example.org
|
| + // mail.example.org
|
| + // www.example.com
|
| + base::FilePath certs_dir = GetTestCertsDirectory();
|
| +
|
| + CertVerifyResult result;
|
| + ProofVerifyDetailsChromium details;
|
| + details.cert_verify_result.verified_cert =
|
| + ImportCertFromFile(certs_dir, "spdy_pooling.pem");
|
| + ASSERT_TRUE(details.cert_verify_result.verified_cert);
|
| +
|
| + session_.OnProofVerifyDetailsAvailable(details);
|
| + CompleteCryptoHandshake();
|
| +
|
| +
|
| + EXPECT_TRUE(session_.CanPool("www.example.org"));
|
| + EXPECT_TRUE(session_.CanPool("mail.example.org"));
|
| + EXPECT_TRUE(session_.CanPool("mail.example.com"));
|
| + EXPECT_FALSE(session_.CanPool("mail.google.com"));
|
| +}
|
| +
|
| +TEST_P(QuicClientSessionTest, ConnectionPooledWithTlsChannelId) {
|
| + // Load a cert that is valid for:
|
| + // www.example.org
|
| + // mail.example.org
|
| + // www.example.com
|
| + base::FilePath certs_dir = GetTestCertsDirectory();
|
| +
|
| + CertVerifyResult result;
|
| + ProofVerifyDetailsChromium details;
|
| + details.cert_verify_result.verified_cert =
|
| + ImportCertFromFile(certs_dir, "spdy_pooling.pem");
|
| + ASSERT_TRUE(details.cert_verify_result.verified_cert);
|
| +
|
| + session_.OnProofVerifyDetailsAvailable(details);
|
| + CompleteCryptoHandshake();
|
| + QuicClientSessionPeer::SetChannelIDKey(&session_, new FakeChannelIDKey);
|
| +
|
| + EXPECT_TRUE(session_.CanPool("www.example.org"));
|
| + EXPECT_TRUE(session_.CanPool("mail.example.org"));
|
| + EXPECT_FALSE(session_.CanPool("mail.example.com"));
|
| + EXPECT_FALSE(session_.CanPool("mail.google.com"));
|
| +}
|
| +
|
| } // namespace
|
| } // namespace test
|
| } // namespace net
|
|
|