OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |