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

Side by Side Diff: net/spdy/spdy_session_unittest.cc

Issue 2031373002: Process HTTP/2 ALTSVC frames. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Clear up my confusion with zero streams and empty origins. Created 4 years, 6 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
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/spdy/spdy_session.h" 5 #include "net/spdy/spdy_session.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/base64.h" 10 #include "base/base64.h"
(...skipping 2376 matching lines...) Expand 10 before | Expand all | Expand 10 after
2387 2387
2388 TEST_P(SpdySessionTest, VerifyDomainAuthentication) { 2388 TEST_P(SpdySessionTest, VerifyDomainAuthentication) {
2389 session_deps_.host_resolver->set_synchronous_mode(true); 2389 session_deps_.host_resolver->set_synchronous_mode(true);
2390 2390
2391 SequencedSocketData data(nullptr, 0, nullptr, 0); 2391 SequencedSocketData data(nullptr, 0, nullptr, 0);
2392 session_deps_.socket_factory->AddSocketDataProvider(&data); 2392 session_deps_.socket_factory->AddSocketDataProvider(&data);
2393 2393
2394 // Load a cert that is valid for: 2394 // Load a cert that is valid for:
2395 // www.example.org 2395 // www.example.org
2396 // mail.example.org 2396 // mail.example.org
2397 // www.example.com 2397 // mail.example.com
2398 base::FilePath certs_dir = GetTestCertsDirectory(); 2398 base::FilePath certs_dir = GetTestCertsDirectory();
2399 scoped_refptr<X509Certificate> test_cert( 2399 scoped_refptr<X509Certificate> test_cert(
2400 ImportCertFromFile(certs_dir, "spdy_pooling.pem")); 2400 ImportCertFromFile(certs_dir, "spdy_pooling.pem"));
2401 ASSERT_NE(static_cast<X509Certificate*>(nullptr), test_cert.get()); 2401 ASSERT_NE(static_cast<X509Certificate*>(nullptr), test_cert.get());
2402 2402
2403 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); 2403 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
2404 ssl.cert = test_cert; 2404 ssl.cert = test_cert;
2405 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 2405 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
2406 2406
2407 CreateNetworkSession(); 2407 CreateNetworkSession();
2408 2408
2409 session_ = CreateSecureSpdySession(http_session_.get(), key_, BoundNetLog()); 2409 session_ = CreateSecureSpdySession(http_session_.get(), key_, BoundNetLog());
2410 2410
2411 EXPECT_TRUE(session_->VerifyDomainAuthentication("www.example.org")); 2411 EXPECT_TRUE(session_->VerifyDomainAuthentication("www.example.org"));
2412 EXPECT_TRUE(session_->VerifyDomainAuthentication("mail.example.org")); 2412 EXPECT_TRUE(session_->VerifyDomainAuthentication("mail.example.org"));
2413 EXPECT_TRUE(session_->VerifyDomainAuthentication("mail.example.com")); 2413 EXPECT_TRUE(session_->VerifyDomainAuthentication("mail.example.com"));
2414 EXPECT_FALSE(session_->VerifyDomainAuthentication("mail.google.com")); 2414 EXPECT_FALSE(session_->VerifyDomainAuthentication("mail.google.com"));
2415 } 2415 }
2416 2416
2417 TEST_P(SpdySessionTest, ConnectionPooledWithTlsChannelId) { 2417 TEST_P(SpdySessionTest, ConnectionPooledWithTlsChannelId) {
2418 session_deps_.host_resolver->set_synchronous_mode(true); 2418 session_deps_.host_resolver->set_synchronous_mode(true);
2419 2419
2420 SequencedSocketData data(nullptr, 0, nullptr, 0); 2420 SequencedSocketData data(nullptr, 0, nullptr, 0);
2421 session_deps_.socket_factory->AddSocketDataProvider(&data); 2421 session_deps_.socket_factory->AddSocketDataProvider(&data);
2422 2422
2423 // Load a cert that is valid for: 2423 // Load a cert that is valid for:
2424 // www.example.org 2424 // www.example.org
2425 // mail.example.org 2425 // mail.example.org
2426 // www.example.com 2426 // mail.example.com
2427 base::FilePath certs_dir = GetTestCertsDirectory(); 2427 base::FilePath certs_dir = GetTestCertsDirectory();
2428 scoped_refptr<X509Certificate> test_cert( 2428 scoped_refptr<X509Certificate> test_cert(
2429 ImportCertFromFile(certs_dir, "spdy_pooling.pem")); 2429 ImportCertFromFile(certs_dir, "spdy_pooling.pem"));
2430 ASSERT_NE(static_cast<X509Certificate*>(nullptr), test_cert.get()); 2430 ASSERT_NE(static_cast<X509Certificate*>(nullptr), test_cert.get());
2431 2431
2432 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); 2432 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
2433 ssl.channel_id_sent = true; 2433 ssl.channel_id_sent = true;
2434 ssl.cert = test_cert; 2434 ssl.cert = test_cert;
2435 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 2435 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
2436 2436
(...skipping 2875 matching lines...) Expand 10 before | Expand all | Expand 10 after
5312 // Client id exceeding watermark. 5312 // Client id exceeding watermark.
5313 EXPECT_FALSE(session_->OnUnknownFrame(9, 0)); 5313 EXPECT_FALSE(session_->OnUnknownFrame(9, 0));
5314 5314
5315 session_->last_accepted_push_stream_id_ = 6; 5315 session_->last_accepted_push_stream_id_ = 6;
5316 // Low server (even) ids are fine. 5316 // Low server (even) ids are fine.
5317 EXPECT_TRUE(session_->OnUnknownFrame(2, 0)); 5317 EXPECT_TRUE(session_->OnUnknownFrame(2, 0));
5318 // Server id exceeding last accepted id. 5318 // Server id exceeding last accepted id.
5319 EXPECT_FALSE(session_->OnUnknownFrame(8, 0)); 5319 EXPECT_FALSE(session_->OnUnknownFrame(8, 0));
5320 } 5320 }
5321 5321
5322 class AltSvcFrameTest : public SpdySessionTest {
5323 public:
5324 AltSvcFrameTest()
5325 : alternative_service_("quic",
5326 "alternative.example.org",
5327 443,
5328 86400,
5329 SpdyAltSvcWireFormat::VersionVector()),
5330 ssl_(SYNCHRONOUS, OK) {}
5331
5332 void AddSocketData(const SpdyAltSvcIR& altsvc_ir) {
5333 altsvc_frame_ = spdy_util_.SerializeFrame(altsvc_ir);
5334 reads_.push_back(CreateMockRead(altsvc_frame_, 0));
5335 reads_.push_back(MockRead(ASYNC, 0, 1));
5336
5337 data_.reset(
5338 new SequencedSocketData(reads_.data(), reads_.size(), nullptr, 0));
5339 session_deps_.socket_factory->AddSocketDataProvider(data_.get());
5340 }
5341
5342 void AddSSLSocketData() {
5343 // Load a cert that is valid for
5344 // www.example.org, mail.example.org, and mail.example.com.
5345 cert_ = ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem");
5346 ASSERT_TRUE(cert_);
5347 ssl_.cert = cert_;
5348 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_);
5349 }
5350
5351 void CreateSecureSpdySession() {
5352 session_ = ::net::CreateSecureSpdySession(http_session_.get(), key_,
5353 BoundNetLog());
5354 }
5355
5356 SpdyAltSvcWireFormat::AlternativeService alternative_service_;
5357
5358 private:
5359 SpdySerializedFrame altsvc_frame_;
5360 std::vector<MockRead> reads_;
5361 std::unique_ptr<SequencedSocketData> data_;
5362 scoped_refptr<X509Certificate> cert_;
5363 SSLSocketDataProvider ssl_;
5364 };
5365
5366 INSTANTIATE_TEST_CASE_P(HTTP2,
5367 AltSvcFrameTest,
5368 testing::Values(kTestCaseHTTP2PriorityDependencies));
5369
5370 TEST_P(AltSvcFrameTest, ProcessAltSvcFrame) {
5371 const char origin[] = "https://mail.example.org";
5372 SpdyAltSvcIR altsvc_ir(0);
5373 altsvc_ir.add_altsvc(alternative_service_);
5374 altsvc_ir.set_origin(origin);
5375 AddSocketData(altsvc_ir);
5376 AddSSLSocketData();
5377
5378 CreateNetworkSession();
5379 CreateSecureSpdySession();
5380
5381 base::RunLoop().RunUntilIdle();
5382
5383 const url::SchemeHostPort session_origin("https", test_url_.host(),
5384 test_url_.EffectiveIntPort());
5385 AlternativeServiceVector altsvc_vector =
5386 spdy_session_pool_->http_server_properties()->GetAlternativeServices(
5387 session_origin);
5388 ASSERT_TRUE(altsvc_vector.empty());
5389
5390 altsvc_vector =
5391 spdy_session_pool_->http_server_properties()->GetAlternativeServices(
5392 url::SchemeHostPort(GURL(origin)));
5393 ASSERT_EQ(1u, altsvc_vector.size());
5394 EXPECT_EQ(QUIC, altsvc_vector[0].protocol);
5395 EXPECT_EQ("alternative.example.org", altsvc_vector[0].host);
5396 EXPECT_EQ(443u, altsvc_vector[0].port);
5397 }
5398
5399 TEST_P(AltSvcFrameTest, DoNotProcessAltSvcFrameOnInsecureSession) {
5400 const char origin[] = "https://mail.example.org";
5401 SpdyAltSvcIR altsvc_ir(0);
5402 altsvc_ir.add_altsvc(alternative_service_);
5403 altsvc_ir.set_origin(origin);
5404 AddSocketData(altsvc_ir);
5405 AddSSLSocketData();
5406
5407 CreateNetworkSession();
5408 CreateInsecureSpdySession();
5409
5410 base::RunLoop().RunUntilIdle();
5411
5412 const url::SchemeHostPort session_origin("https", test_url_.host(),
5413 test_url_.EffectiveIntPort());
5414 AlternativeServiceVector altsvc_vector =
5415 spdy_session_pool_->http_server_properties()->GetAlternativeServices(
5416 session_origin);
5417 ASSERT_TRUE(altsvc_vector.empty());
5418
5419 altsvc_vector =
5420 spdy_session_pool_->http_server_properties()->GetAlternativeServices(
5421 url::SchemeHostPort(GURL(origin)));
5422 ASSERT_TRUE(altsvc_vector.empty());
5423 }
5424
5425 TEST_P(AltSvcFrameTest, DoNotProcessAltSvcFrameForOriginNotCoveredByCert) {
5426 const char origin[] = "https://invalid.example.org";
5427 SpdyAltSvcIR altsvc_ir(0);
5428 altsvc_ir.add_altsvc(alternative_service_);
5429 altsvc_ir.set_origin(origin);
5430 AddSocketData(altsvc_ir);
5431 AddSSLSocketData();
5432
5433 CreateNetworkSession();
5434 CreateSecureSpdySession();
5435
5436 base::RunLoop().RunUntilIdle();
5437
5438 const url::SchemeHostPort session_origin("https", test_url_.host(),
5439 test_url_.EffectiveIntPort());
5440 AlternativeServiceVector altsvc_vector =
5441 spdy_session_pool_->http_server_properties()->GetAlternativeServices(
5442 session_origin);
5443 ASSERT_TRUE(altsvc_vector.empty());
5444
5445 altsvc_vector =
5446 spdy_session_pool_->http_server_properties()->GetAlternativeServices(
5447 url::SchemeHostPort(GURL(origin)));
5448 ASSERT_TRUE(altsvc_vector.empty());
5449 }
5450
5451 TEST_P(AltSvcFrameTest, DoNotProcessAltSvcFrameWithEmptyOriginOnZeroStream) {
5452 SpdyAltSvcIR altsvc_ir(0);
5453 altsvc_ir.add_altsvc(alternative_service_);
5454 AddSocketData(altsvc_ir);
5455 AddSSLSocketData();
5456
5457 CreateNetworkSession();
5458 CreateSecureSpdySession();
5459
5460 base::RunLoop().RunUntilIdle();
5461
5462 const url::SchemeHostPort session_origin("https", test_url_.host(),
5463 test_url_.EffectiveIntPort());
5464 AlternativeServiceVector altsvc_vector =
5465 spdy_session_pool_->http_server_properties()->GetAlternativeServices(
5466 session_origin);
5467 ASSERT_TRUE(altsvc_vector.empty());
5468 }
5469
5470 TEST_P(AltSvcFrameTest, ProcessAltSvcFrameOnActiveStream) {
5471 SpdyAltSvcIR altsvc_ir(1);
5472 altsvc_ir.add_altsvc(alternative_service_);
5473
5474 SpdySerializedFrame altsvc_frame(spdy_util_.SerializeFrame(altsvc_ir));
5475 std::unique_ptr<SpdySerializedFrame> rst(
5476 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_REFUSED_STREAM));
5477 MockRead reads[] = {
5478 CreateMockRead(altsvc_frame, 1), CreateMockRead(*rst, 2),
5479 MockRead(ASYNC, 0, 3) // EOF
5480 };
5481
5482 const char request_origin[] = "https://mail.example.org";
5483 std::unique_ptr<SpdySerializedFrame> req(
5484 spdy_util_.ConstructSpdyGet(request_origin, 1, MEDIUM));
5485 MockWrite writes[] = {
5486 CreateMockWrite(*req, 0),
5487 };
5488 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
5489 session_deps_.socket_factory->AddSocketDataProvider(&data);
5490
5491 AddSSLSocketData();
5492
5493 CreateNetworkSession();
5494 CreateSecureSpdySession();
5495
5496 base::WeakPtr<SpdyStream> spdy_stream1 =
5497 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_,
5498 GURL(request_origin), MEDIUM, BoundNetLog());
5499 test::StreamDelegateDoNothing delegate1(spdy_stream1);
5500 spdy_stream1->SetDelegate(&delegate1);
5501
5502 std::unique_ptr<SpdyHeaderBlock> headers(
5503 spdy_util_.ConstructGetHeaderBlock(request_origin));
5504
5505 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
5506 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders());
5507
5508 base::RunLoop().RunUntilIdle();
5509
5510 const url::SchemeHostPort session_origin("https", test_url_.host(),
5511 test_url_.EffectiveIntPort());
5512 AlternativeServiceVector altsvc_vector =
5513 spdy_session_pool_->http_server_properties()->GetAlternativeServices(
5514 session_origin);
5515 ASSERT_TRUE(altsvc_vector.empty());
5516
5517 altsvc_vector =
5518 spdy_session_pool_->http_server_properties()->GetAlternativeServices(
5519 url::SchemeHostPort(GURL(request_origin)));
5520 ASSERT_EQ(1u, altsvc_vector.size());
5521 EXPECT_EQ(QUIC, altsvc_vector[0].protocol);
5522 EXPECT_EQ("alternative.example.org", altsvc_vector[0].host);
5523 EXPECT_EQ(443u, altsvc_vector[0].port);
5524 }
5525
5526 TEST_P(AltSvcFrameTest, DoNotProcessAltSvcFrameOnStreamWithInsecureOrigin) {
5527 SpdyAltSvcIR altsvc_ir(1);
5528 altsvc_ir.add_altsvc(alternative_service_);
5529
5530 SpdySerializedFrame altsvc_frame(spdy_util_.SerializeFrame(altsvc_ir));
5531 std::unique_ptr<SpdySerializedFrame> rst(
5532 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_REFUSED_STREAM));
5533 MockRead reads[] = {
5534 CreateMockRead(altsvc_frame, 1), CreateMockRead(*rst, 2),
5535 MockRead(ASYNC, 0, 3) // EOF
5536 };
5537
5538 const char request_origin[] = "http://mail.example.org";
5539 std::unique_ptr<SpdySerializedFrame> req(
5540 spdy_util_.ConstructSpdyGet(request_origin, 1, MEDIUM));
5541 MockWrite writes[] = {
5542 CreateMockWrite(*req, 0),
5543 };
5544 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
5545 session_deps_.socket_factory->AddSocketDataProvider(&data);
5546
5547 AddSSLSocketData();
5548
5549 CreateNetworkSession();
5550 CreateSecureSpdySession();
5551
5552 base::WeakPtr<SpdyStream> spdy_stream1 =
5553 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_,
5554 GURL(request_origin), MEDIUM, BoundNetLog());
5555 test::StreamDelegateDoNothing delegate1(spdy_stream1);
5556 spdy_stream1->SetDelegate(&delegate1);
5557
5558 std::unique_ptr<SpdyHeaderBlock> headers(
5559 spdy_util_.ConstructGetHeaderBlock(request_origin));
5560
5561 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
5562 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders());
5563
5564 base::RunLoop().RunUntilIdle();
5565
5566 const url::SchemeHostPort session_origin("https", test_url_.host(),
5567 test_url_.EffectiveIntPort());
5568 AlternativeServiceVector altsvc_vector =
5569 spdy_session_pool_->http_server_properties()->GetAlternativeServices(
5570 session_origin);
5571 ASSERT_TRUE(altsvc_vector.empty());
5572
5573 altsvc_vector =
5574 spdy_session_pool_->http_server_properties()->GetAlternativeServices(
5575 url::SchemeHostPort(GURL(request_origin)));
5576 ASSERT_TRUE(altsvc_vector.empty());
5577 }
5578
5579 TEST_P(AltSvcFrameTest, DoNotProcessAltSvcFrameOnNonExistentStream) {
5580 SpdyAltSvcIR altsvc_ir(1);
5581 altsvc_ir.add_altsvc(alternative_service_);
5582 AddSocketData(altsvc_ir);
5583 AddSSLSocketData();
5584
5585 CreateNetworkSession();
5586 CreateSecureSpdySession();
5587
5588 base::RunLoop().RunUntilIdle();
5589
5590 const url::SchemeHostPort session_origin("https", test_url_.host(),
5591 test_url_.EffectiveIntPort());
5592 AlternativeServiceVector altsvc_vector =
5593 spdy_session_pool_->http_server_properties()->GetAlternativeServices(
5594 session_origin);
5595 ASSERT_TRUE(altsvc_vector.empty());
5596 }
5597
5322 TEST(MapFramerErrorToProtocolError, MapsValues) { 5598 TEST(MapFramerErrorToProtocolError, MapsValues) {
5323 CHECK_EQ( 5599 CHECK_EQ(
5324 SPDY_ERROR_INVALID_CONTROL_FRAME, 5600 SPDY_ERROR_INVALID_CONTROL_FRAME,
5325 MapFramerErrorToProtocolError(SpdyFramer::SPDY_INVALID_CONTROL_FRAME)); 5601 MapFramerErrorToProtocolError(SpdyFramer::SPDY_INVALID_CONTROL_FRAME));
5326 CHECK_EQ( 5602 CHECK_EQ(
5327 SPDY_ERROR_INVALID_DATA_FRAME_FLAGS, 5603 SPDY_ERROR_INVALID_DATA_FRAME_FLAGS,
5328 MapFramerErrorToProtocolError(SpdyFramer::SPDY_INVALID_DATA_FRAME_FLAGS)); 5604 MapFramerErrorToProtocolError(SpdyFramer::SPDY_INVALID_DATA_FRAME_FLAGS));
5329 CHECK_EQ( 5605 CHECK_EQ(
5330 SPDY_ERROR_GOAWAY_FRAME_CORRUPT, 5606 SPDY_ERROR_GOAWAY_FRAME_CORRUPT,
5331 MapFramerErrorToProtocolError(SpdyFramer::SPDY_GOAWAY_FRAME_CORRUPT)); 5607 MapFramerErrorToProtocolError(SpdyFramer::SPDY_GOAWAY_FRAME_CORRUPT));
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
5369 MapNetErrorToGoAwayStatus(ERR_SPDY_COMPRESSION_ERROR)); 5645 MapNetErrorToGoAwayStatus(ERR_SPDY_COMPRESSION_ERROR));
5370 CHECK_EQ(GOAWAY_FRAME_SIZE_ERROR, 5646 CHECK_EQ(GOAWAY_FRAME_SIZE_ERROR,
5371 MapNetErrorToGoAwayStatus(ERR_SPDY_FRAME_SIZE_ERROR)); 5647 MapNetErrorToGoAwayStatus(ERR_SPDY_FRAME_SIZE_ERROR));
5372 CHECK_EQ(GOAWAY_PROTOCOL_ERROR, MapNetErrorToGoAwayStatus(ERR_UNEXPECTED)); 5648 CHECK_EQ(GOAWAY_PROTOCOL_ERROR, MapNetErrorToGoAwayStatus(ERR_UNEXPECTED));
5373 } 5649 }
5374 5650
5375 TEST(CanPoolTest, CanPool) { 5651 TEST(CanPoolTest, CanPool) {
5376 // Load a cert that is valid for: 5652 // Load a cert that is valid for:
5377 // www.example.org 5653 // www.example.org
5378 // mail.example.org 5654 // mail.example.org
5379 // www.example.com 5655 // mail.example.com
5380 5656
5381 TransportSecurityState tss; 5657 TransportSecurityState tss;
5382 SSLInfo ssl_info; 5658 SSLInfo ssl_info;
5383 ssl_info.cert = ImportCertFromFile(GetTestCertsDirectory(), 5659 ssl_info.cert = ImportCertFromFile(GetTestCertsDirectory(),
5384 "spdy_pooling.pem"); 5660 "spdy_pooling.pem");
5385 5661
5386 EXPECT_TRUE(SpdySession::CanPool( 5662 EXPECT_TRUE(SpdySession::CanPool(
5387 &tss, ssl_info, "www.example.org", "www.example.org")); 5663 &tss, ssl_info, "www.example.org", "www.example.org"));
5388 EXPECT_TRUE(SpdySession::CanPool( 5664 EXPECT_TRUE(SpdySession::CanPool(
5389 &tss, ssl_info, "www.example.org", "mail.example.org")); 5665 &tss, ssl_info, "www.example.org", "mail.example.org"));
5390 EXPECT_TRUE(SpdySession::CanPool( 5666 EXPECT_TRUE(SpdySession::CanPool(
5391 &tss, ssl_info, "www.example.org", "mail.example.com")); 5667 &tss, ssl_info, "www.example.org", "mail.example.com"));
5392 EXPECT_FALSE(SpdySession::CanPool( 5668 EXPECT_FALSE(SpdySession::CanPool(
5393 &tss, ssl_info, "www.example.org", "mail.google.com")); 5669 &tss, ssl_info, "www.example.org", "mail.google.com"));
5394 } 5670 }
5395 5671
5396 TEST(CanPoolTest, CanNotPoolWithCertErrors) { 5672 TEST(CanPoolTest, CanNotPoolWithCertErrors) {
5397 // Load a cert that is valid for: 5673 // Load a cert that is valid for:
5398 // www.example.org 5674 // www.example.org
5399 // mail.example.org 5675 // mail.example.org
5400 // www.example.com 5676 // mail.example.com
5401 5677
5402 TransportSecurityState tss; 5678 TransportSecurityState tss;
5403 SSLInfo ssl_info; 5679 SSLInfo ssl_info;
5404 ssl_info.cert = ImportCertFromFile(GetTestCertsDirectory(), 5680 ssl_info.cert = ImportCertFromFile(GetTestCertsDirectory(),
5405 "spdy_pooling.pem"); 5681 "spdy_pooling.pem");
5406 ssl_info.cert_status = CERT_STATUS_REVOKED; 5682 ssl_info.cert_status = CERT_STATUS_REVOKED;
5407 5683
5408 EXPECT_FALSE(SpdySession::CanPool( 5684 EXPECT_FALSE(SpdySession::CanPool(
5409 &tss, ssl_info, "www.example.org", "mail.example.org")); 5685 &tss, ssl_info, "www.example.org", "mail.example.org"));
5410 } 5686 }
5411 5687
5412 TEST(CanPoolTest, CanNotPoolWithClientCerts) { 5688 TEST(CanPoolTest, CanNotPoolWithClientCerts) {
5413 // Load a cert that is valid for: 5689 // Load a cert that is valid for:
5414 // www.example.org 5690 // www.example.org
5415 // mail.example.org 5691 // mail.example.org
5416 // www.example.com 5692 // mail.example.com
5417 5693
5418 TransportSecurityState tss; 5694 TransportSecurityState tss;
5419 SSLInfo ssl_info; 5695 SSLInfo ssl_info;
5420 ssl_info.cert = ImportCertFromFile(GetTestCertsDirectory(), 5696 ssl_info.cert = ImportCertFromFile(GetTestCertsDirectory(),
5421 "spdy_pooling.pem"); 5697 "spdy_pooling.pem");
5422 ssl_info.client_cert_sent = true; 5698 ssl_info.client_cert_sent = true;
5423 5699
5424 EXPECT_FALSE(SpdySession::CanPool( 5700 EXPECT_FALSE(SpdySession::CanPool(
5425 &tss, ssl_info, "www.example.org", "mail.example.org")); 5701 &tss, ssl_info, "www.example.org", "mail.example.org"));
5426 } 5702 }
5427 5703
5428 TEST(CanPoolTest, CanNotPoolAcrossETLDsWithChannelID) { 5704 TEST(CanPoolTest, CanNotPoolAcrossETLDsWithChannelID) {
5429 // Load a cert that is valid for: 5705 // Load a cert that is valid for:
5430 // www.example.org 5706 // www.example.org
5431 // mail.example.org 5707 // mail.example.org
5432 // www.example.com 5708 // mail.example.com
5433 5709
5434 TransportSecurityState tss; 5710 TransportSecurityState tss;
5435 SSLInfo ssl_info; 5711 SSLInfo ssl_info;
5436 ssl_info.cert = ImportCertFromFile(GetTestCertsDirectory(), 5712 ssl_info.cert = ImportCertFromFile(GetTestCertsDirectory(),
5437 "spdy_pooling.pem"); 5713 "spdy_pooling.pem");
5438 ssl_info.channel_id_sent = true; 5714 ssl_info.channel_id_sent = true;
5439 5715
5440 EXPECT_TRUE(SpdySession::CanPool( 5716 EXPECT_TRUE(SpdySession::CanPool(
5441 &tss, ssl_info, "www.example.org", "mail.example.org")); 5717 &tss, ssl_info, "www.example.org", "mail.example.org"));
5442 EXPECT_FALSE(SpdySession::CanPool( 5718 EXPECT_FALSE(SpdySession::CanPool(
(...skipping 27 matching lines...) Expand all
5470 ssl_info.cert = ImportCertFromFile(GetTestCertsDirectory(), 5746 ssl_info.cert = ImportCertFromFile(GetTestCertsDirectory(),
5471 "spdy_pooling.pem"); 5747 "spdy_pooling.pem");
5472 ssl_info.is_issued_by_known_root = true; 5748 ssl_info.is_issued_by_known_root = true;
5473 ssl_info.public_key_hashes.push_back(test::GetTestHashValue(primary_pin)); 5749 ssl_info.public_key_hashes.push_back(test::GetTestHashValue(primary_pin));
5474 5750
5475 EXPECT_TRUE(SpdySession::CanPool( 5751 EXPECT_TRUE(SpdySession::CanPool(
5476 &tss, ssl_info, "www.example.org", "mail.example.org")); 5752 &tss, ssl_info, "www.example.org", "mail.example.org"));
5477 } 5753 }
5478 5754
5479 } // namespace net 5755 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698