Commit b07c0553 authored by bnc's avatar bnc Committed by Commit bot

Custom hosts in QuicTestPacketMaker.

* Add host parameter to QuicTestPacketMaker constructor to allow for non-default
  hostnames in generated packets.
* Change hostname in QuicNetworkTransactionTest.SecureResourceOver* in
  anticipation for a future CL that will enforce certificate validation in these
  unittests.
* s/kServerHostname/kDefaultServerHostName/ in QuicHttpStreamTest to match
  QuicStreamFactoryTest.

BUG=474217

Review URL: https://codereview.chromium.org/1142523004

Cr-Commit-Position: refs/heads/master@{#329890}
parent 88afb7e7
...@@ -50,8 +50,8 @@ namespace test { ...@@ -50,8 +50,8 @@ namespace test {
namespace { namespace {
const char kUploadData[] = "Really nifty data!"; const char kUploadData[] = "Really nifty data!";
const char kServerHostname[] = "www.google.com"; const char kDefaultServerHostName[] = "www.google.com";
const uint16 kServerPort = 80; const uint16 kDefaultServerPort = 80;
class TestQuicConnection : public QuicConnection { class TestQuicConnection : public QuicConnection {
public: public:
...@@ -135,7 +135,7 @@ class QuicHttpStreamTest : public ::testing::TestWithParam<QuicVersion> { ...@@ -135,7 +135,7 @@ class QuicHttpStreamTest : public ::testing::TestWithParam<QuicVersion> {
read_buffer_(new IOBufferWithSize(4096)), read_buffer_(new IOBufferWithSize(4096)),
connection_id_(2), connection_id_(2),
stream_id_(kClientDataStreamId1), stream_id_(kClientDataStreamId1),
maker_(GetParam(), connection_id_, &clock_), maker_(GetParam(), connection_id_, &clock_, kDefaultServerHostName),
random_generator_(0) { random_generator_(0) {
IPAddressNumber ip; IPAddressNumber ip;
CHECK(ParseIPLiteralToNumber("192.0.2.33", &ip)); CHECK(ParseIPLiteralToNumber("192.0.2.33", &ip));
...@@ -210,11 +210,10 @@ class QuicHttpStreamTest : public ::testing::TestWithParam<QuicVersion> { ...@@ -210,11 +210,10 @@ class QuicHttpStreamTest : public ::testing::TestWithParam<QuicVersion> {
&transport_security_state_, make_scoped_ptr((QuicServerInfo*)nullptr), &transport_security_state_, make_scoped_ptr((QuicServerInfo*)nullptr),
DefaultQuicConfig(), "CONNECTION_UNKNOWN", base::TimeTicks::Now(), DefaultQuicConfig(), "CONNECTION_UNKNOWN", base::TimeTicks::Now(),
base::MessageLoop::current()->message_loop_proxy().get(), nullptr)); base::MessageLoop::current()->message_loop_proxy().get(), nullptr));
session_->InitializeSession(QuicServerId(kServerHostname, kServerPort, session_->InitializeSession(
/*is_secure=*/false, QuicServerId(kDefaultServerHostName, kDefaultServerPort,
PRIVACY_MODE_DISABLED), /*is_secure=*/false, PRIVACY_MODE_DISABLED),
&crypto_config_, &crypto_config_, &crypto_client_stream_factory_);
&crypto_client_stream_factory_);
session_->GetCryptoStream()->CryptoConnect(); session_->GetCryptoStream()->CryptoConnect();
EXPECT_TRUE(session_->IsCryptoHandshakeConfirmed()); EXPECT_TRUE(session_->IsCryptoHandshakeConfirmed());
stream_.reset(use_closing_stream_ ? stream_.reset(use_closing_stream_ ?
......
...@@ -63,6 +63,8 @@ static const char kQuicAlternateProtocolDifferentPortHttpHeader[] = ...@@ -63,6 +63,8 @@ static const char kQuicAlternateProtocolDifferentPortHttpHeader[] =
static const char kQuicAlternateProtocolHttpsHeader[] = static const char kQuicAlternateProtocolHttpsHeader[] =
"Alternate-Protocol: 443:quic\r\n\r\n"; "Alternate-Protocol: 443:quic\r\n\r\n";
const char kDefaultServerHostName[] = "www.google.com";
} // namespace } // namespace
// Helper class to encapsulate MockReads and MockWrites for QUIC. // Helper class to encapsulate MockReads and MockWrites for QUIC.
...@@ -134,7 +136,7 @@ class QuicNetworkTransactionTest ...@@ -134,7 +136,7 @@ class QuicNetworkTransactionTest
protected: protected:
QuicNetworkTransactionTest() QuicNetworkTransactionTest()
: clock_(new MockClock), : clock_(new MockClock),
maker_(GetParam(), 0, clock_), maker_(GetParam(), 0, clock_, kDefaultServerHostName),
ssl_config_service_(new SSLConfigServiceDefaults), ssl_config_service_(new SSLConfigServiceDefaults),
proxy_service_(ProxyService::CreateDirect()), proxy_service_(ProxyService::CreateDirect()),
auth_handler_factory_( auth_handler_factory_(
...@@ -142,7 +144,9 @@ class QuicNetworkTransactionTest ...@@ -142,7 +144,9 @@ class QuicNetworkTransactionTest
random_generator_(0), random_generator_(0),
hanging_data_(nullptr, 0, nullptr, 0) { hanging_data_(nullptr, 0, nullptr, 0) {
request_.method = "GET"; request_.method = "GET";
request_.url = GURL("http://www.google.com/"); std::string url("http://");
url.append(kDefaultServerHostName);
request_.url = GURL(url);
request_.load_flags = 0; request_.load_flags = 0;
clock_->AdvanceTime(QuicTime::Delta::FromMilliseconds(20)); clock_->AdvanceTime(QuicTime::Delta::FromMilliseconds(20));
} }
...@@ -1205,6 +1209,7 @@ TEST_P(QuicNetworkTransactionTest, ConnectionCloseDuringConnect) { ...@@ -1205,6 +1209,7 @@ TEST_P(QuicNetworkTransactionTest, ConnectionCloseDuringConnect) {
// the appropriate error code. Note that this never happens in production, // the appropriate error code. Note that this never happens in production,
// because the handshake (which this test mocks) would fail in this scenario. // because the handshake (which this test mocks) would fail in this scenario.
TEST_P(QuicNetworkTransactionTest, SecureResourceOverInsecureQuic) { TEST_P(QuicNetworkTransactionTest, SecureResourceOverInsecureQuic) {
maker_.set_hostname("www.example.org");
MockQuicData mock_quic_data; MockQuicData mock_quic_data;
mock_quic_data.AddWrite( mock_quic_data.AddWrite(
ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true, ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true,
...@@ -1217,7 +1222,7 @@ TEST_P(QuicNetworkTransactionTest, SecureResourceOverInsecureQuic) { ...@@ -1217,7 +1222,7 @@ TEST_P(QuicNetworkTransactionTest, SecureResourceOverInsecureQuic) {
mock_quic_data.AddRead(SYNCHRONOUS, 0); mock_quic_data.AddRead(SYNCHRONOUS, 0);
mock_quic_data.AddSocketDataToFactory(&socket_factory_); mock_quic_data.AddSocketDataToFactory(&socket_factory_);
request_.url = GURL("https://www.google.com:443"); request_.url = GURL("https://www.example.org:443");
AddHangingNonAlternateProtocolSocketData(); AddHangingNonAlternateProtocolSocketData();
CreateSessionWithNextProtos(); CreateSessionWithNextProtos();
AddQuicAlternateProtocolMapping(MockCryptoClientStream::CONFIRM_HANDSHAKE); AddQuicAlternateProtocolMapping(MockCryptoClientStream::CONFIRM_HANDSHAKE);
...@@ -1230,6 +1235,7 @@ TEST_P(QuicNetworkTransactionTest, SecureResourceOverInsecureQuic) { ...@@ -1230,6 +1235,7 @@ TEST_P(QuicNetworkTransactionTest, SecureResourceOverInsecureQuic) {
} }
TEST_P(QuicNetworkTransactionTest, SecureResourceOverSecureQuic) { TEST_P(QuicNetworkTransactionTest, SecureResourceOverSecureQuic) {
maker_.set_hostname("www.example.org");
MockQuicData mock_quic_data; MockQuicData mock_quic_data;
mock_quic_data.AddWrite( mock_quic_data.AddWrite(
ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true, ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true,
...@@ -1245,11 +1251,14 @@ TEST_P(QuicNetworkTransactionTest, SecureResourceOverSecureQuic) { ...@@ -1245,11 +1251,14 @@ TEST_P(QuicNetworkTransactionTest, SecureResourceOverSecureQuic) {
scoped_refptr<X509Certificate> cert( scoped_refptr<X509Certificate> cert(
ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem")); ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"));
ASSERT_TRUE(cert.get()); ASSERT_TRUE(cert.get());
bool common_name_fallback_used;
EXPECT_TRUE(
cert->VerifyNameMatch("www.example.org", &common_name_fallback_used));
ProofVerifyDetailsChromium verify_details; ProofVerifyDetailsChromium verify_details;
verify_details.cert_verify_result.verified_cert = cert; verify_details.cert_verify_result.verified_cert = cert;
crypto_client_stream_factory_.set_proof_verify_details(&verify_details); crypto_client_stream_factory_.set_proof_verify_details(&verify_details);
request_.url = GURL("https://www.google.com:443"); request_.url = GURL("https://www.example.org:443");
AddHangingNonAlternateProtocolSocketData(); AddHangingNonAlternateProtocolSocketData();
CreateSessionWithNextProtos(); CreateSessionWithNextProtos();
AddQuicAlternateProtocolMapping(MockCryptoClientStream::CONFIRM_HANDSHAKE); AddQuicAlternateProtocolMapping(MockCryptoClientStream::CONFIRM_HANDSHAKE);
......
...@@ -197,7 +197,7 @@ class QuicStreamFactoryTest : public ::testing::TestWithParam<TestParams> { ...@@ -197,7 +197,7 @@ class QuicStreamFactoryTest : public ::testing::TestWithParam<TestParams> {
: random_generator_(0), : random_generator_(0),
clock_(new MockClock()), clock_(new MockClock()),
runner_(new TestTaskRunner(clock_)), runner_(new TestTaskRunner(clock_)),
maker_(GetParam().version, 0, clock_), maker_(GetParam().version, 0, clock_, kDefaultServerHostName),
cert_verifier_(CertVerifier::CreateDefault()), cert_verifier_(CertVerifier::CreateDefault()),
channel_id_service_( channel_id_service_(
new ChannelIDService(new DefaultChannelIDStore(nullptr), new ChannelIDService(new DefaultChannelIDStore(nullptr),
......
...@@ -18,10 +18,12 @@ namespace test { ...@@ -18,10 +18,12 @@ namespace test {
QuicTestPacketMaker::QuicTestPacketMaker(QuicVersion version, QuicTestPacketMaker::QuicTestPacketMaker(QuicVersion version,
QuicConnectionId connection_id, QuicConnectionId connection_id,
MockClock* clock) MockClock* clock,
const std::string& host)
: version_(version), : version_(version),
connection_id_(connection_id), connection_id_(connection_id),
clock_(clock), clock_(clock),
host_(host),
spdy_request_framer_(SPDY4), spdy_request_framer_(SPDY4),
spdy_response_framer_(SPDY4) { spdy_response_framer_(SPDY4) {
} }
...@@ -29,6 +31,10 @@ QuicTestPacketMaker::QuicTestPacketMaker(QuicVersion version, ...@@ -29,6 +31,10 @@ QuicTestPacketMaker::QuicTestPacketMaker(QuicVersion version,
QuicTestPacketMaker::~QuicTestPacketMaker() { QuicTestPacketMaker::~QuicTestPacketMaker() {
} }
void QuicTestPacketMaker::set_hostname(const std::string& host) {
host_.assign(host);
}
scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRstPacket( scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRstPacket(
QuicPacketSequenceNumber num, QuicPacketSequenceNumber num,
bool include_version, bool include_version,
...@@ -226,9 +232,9 @@ SpdyHeaderBlock QuicTestPacketMaker::GetRequestHeaders( ...@@ -226,9 +232,9 @@ SpdyHeaderBlock QuicTestPacketMaker::GetRequestHeaders(
SpdyHeaderBlock headers; SpdyHeaderBlock headers;
headers[":method"] = method; headers[":method"] = method;
if (version_ <= QUIC_VERSION_24) { if (version_ <= QUIC_VERSION_24) {
headers[":host"] = "www.google.com"; headers[":host"] = host_;
} else { } else {
headers[":authority"] = "www.google.com"; headers[":authority"] = host_;
} }
headers[":path"] = path; headers[":path"] = path;
headers[":scheme"] = scheme; headers[":scheme"] = scheme;
......
...@@ -22,9 +22,11 @@ class QuicTestPacketMaker { ...@@ -22,9 +22,11 @@ class QuicTestPacketMaker {
public: public:
QuicTestPacketMaker(QuicVersion version, QuicTestPacketMaker(QuicVersion version,
QuicConnectionId connection_id, QuicConnectionId connection_id,
MockClock* clock); MockClock* clock,
const std::string& host);
~QuicTestPacketMaker(); ~QuicTestPacketMaker();
void set_hostname(const std::string& host);
scoped_ptr<QuicEncryptedPacket> MakeRstPacket( scoped_ptr<QuicEncryptedPacket> MakeRstPacket(
QuicPacketSequenceNumber num, QuicPacketSequenceNumber num,
bool include_version, bool include_version,
...@@ -82,6 +84,7 @@ class QuicTestPacketMaker { ...@@ -82,6 +84,7 @@ class QuicTestPacketMaker {
QuicVersion version_; QuicVersion version_;
QuicConnectionId connection_id_; QuicConnectionId connection_id_;
MockClock* clock_; // Owned by QuicStreamFactory. MockClock* clock_; // Owned by QuicStreamFactory.
std::string host_;
SpdyFramer spdy_request_framer_; SpdyFramer spdy_request_framer_;
SpdyFramer spdy_response_framer_; SpdyFramer spdy_response_framer_;
MockRandom random_generator_; MockRandom random_generator_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment