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

Side by Side Diff: net/url_request/url_request_unittest.cc

Issue 10878003: Refactoring for merging WebSocket test server to net::TestServer (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: reflect Ryan's review Created 8 years, 4 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 | Annotate | Revision Log
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 "build/build_config.h" 5 #include "build/build_config.h"
6 6
7 #if defined(OS_WIN) 7 #if defined(OS_WIN)
8 #include <windows.h> 8 #include <windows.h>
9 #include <shlobj.h> 9 #include <shlobj.h>
10 #endif 10 #endif
(...skipping 1366 matching lines...) Expand 10 before | Expand all | Expand 10 after
1377 EXPECT_NE(0, d.bytes_received()); 1377 EXPECT_NE(0, d.bytes_received());
1378 CheckSSLInfo(r.ssl_info()); 1378 CheckSSLInfo(r.ssl_info());
1379 EXPECT_EQ(test_server.host_port_pair().host(), 1379 EXPECT_EQ(test_server.host_port_pair().host(),
1380 r.GetSocketAddress().host()); 1380 r.GetSocketAddress().host());
1381 EXPECT_EQ(test_server.host_port_pair().port(), 1381 EXPECT_EQ(test_server.host_port_pair().port(),
1382 r.GetSocketAddress().port()); 1382 r.GetSocketAddress().port());
1383 } 1383 }
1384 } 1384 }
1385 1385
1386 TEST_F(HTTPSRequestTest, HTTPSMismatchedTest) { 1386 TEST_F(HTTPSRequestTest, HTTPSMismatchedTest) {
1387 TestServer::HTTPSOptions https_options( 1387 TestServer::SSLOptions ssl_options(
1388 TestServer::HTTPSOptions::CERT_MISMATCHED_NAME); 1388 TestServer::SSLOptions::CERT_MISMATCHED_NAME);
1389 TestServer test_server(https_options, 1389 TestServer test_server(TestServer::TYPE_HTTPS,
1390 ssl_options,
1390 FilePath(FILE_PATH_LITERAL("net/data/ssl"))); 1391 FilePath(FILE_PATH_LITERAL("net/data/ssl")));
1391 ASSERT_TRUE(test_server.Start()); 1392 ASSERT_TRUE(test_server.Start());
1392 1393
1393 bool err_allowed = true; 1394 bool err_allowed = true;
1394 for (int i = 0; i < 2 ; i++, err_allowed = !err_allowed) { 1395 for (int i = 0; i < 2 ; i++, err_allowed = !err_allowed) {
1395 TestDelegate d; 1396 TestDelegate d;
1396 { 1397 {
1397 d.set_allow_certificate_errors(err_allowed); 1398 d.set_allow_certificate_errors(err_allowed);
1398 URLRequest r(test_server.GetURL(""), &d, &default_context_); 1399 URLRequest r(test_server.GetURL(""), &d, &default_context_);
1399 1400
1400 r.Start(); 1401 r.Start();
1401 EXPECT_TRUE(r.is_pending()); 1402 EXPECT_TRUE(r.is_pending());
1402 1403
1403 MessageLoop::current()->Run(); 1404 MessageLoop::current()->Run();
1404 1405
1405 EXPECT_EQ(1, d.response_started_count()); 1406 EXPECT_EQ(1, d.response_started_count());
1406 EXPECT_FALSE(d.received_data_before_response()); 1407 EXPECT_FALSE(d.received_data_before_response());
1407 EXPECT_TRUE(d.have_certificate_errors()); 1408 EXPECT_TRUE(d.have_certificate_errors());
1408 if (err_allowed) { 1409 if (err_allowed) {
1409 EXPECT_NE(0, d.bytes_received()); 1410 EXPECT_NE(0, d.bytes_received());
1410 CheckSSLInfo(r.ssl_info()); 1411 CheckSSLInfo(r.ssl_info());
1411 } else { 1412 } else {
1412 EXPECT_EQ(0, d.bytes_received()); 1413 EXPECT_EQ(0, d.bytes_received());
1413 } 1414 }
1414 } 1415 }
1415 } 1416 }
1416 } 1417 }
1417 1418
1418 TEST_F(HTTPSRequestTest, HTTPSExpiredTest) { 1419 TEST_F(HTTPSRequestTest, HTTPSExpiredTest) {
1419 TestServer::HTTPSOptions https_options( 1420 TestServer::SSLOptions ssl_options(
1420 TestServer::HTTPSOptions::CERT_EXPIRED); 1421 TestServer::SSLOptions::CERT_EXPIRED);
1421 TestServer test_server(https_options, 1422 TestServer test_server(TestServer::TYPE_HTTPS,
1423 ssl_options,
1422 FilePath(FILE_PATH_LITERAL("net/data/ssl"))); 1424 FilePath(FILE_PATH_LITERAL("net/data/ssl")));
1423 ASSERT_TRUE(test_server.Start()); 1425 ASSERT_TRUE(test_server.Start());
1424 1426
1425 // Iterate from false to true, just so that we do the opposite of the 1427 // Iterate from false to true, just so that we do the opposite of the
1426 // previous test in order to increase test coverage. 1428 // previous test in order to increase test coverage.
1427 bool err_allowed = false; 1429 bool err_allowed = false;
1428 for (int i = 0; i < 2 ; i++, err_allowed = !err_allowed) { 1430 for (int i = 0; i < 2 ; i++, err_allowed = !err_allowed) {
1429 TestDelegate d; 1431 TestDelegate d;
1430 { 1432 {
1431 d.set_allow_certificate_errors(err_allowed); 1433 d.set_allow_certificate_errors(err_allowed);
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
1499 ImportCertFromFile(GetTestCertsDirectory(), "ocsp-test-root.pem"); 1501 ImportCertFromFile(GetTestCertsDirectory(), "ocsp-test-root.pem");
1500 CHECK_NE(static_cast<X509Certificate*>(NULL), root_cert); 1502 CHECK_NE(static_cast<X509Certificate*>(NULL), root_cert);
1501 test_root_.reset(new ScopedTestRoot(root_cert)); 1503 test_root_.reset(new ScopedTestRoot(root_cert));
1502 1504
1503 #if defined(USE_NSS) 1505 #if defined(USE_NSS)
1504 SetURLRequestContextForNSSHttpIO(&context_); 1506 SetURLRequestContextForNSSHttpIO(&context_);
1505 EnsureNSSHttpIOInit(); 1507 EnsureNSSHttpIOInit();
1506 #endif 1508 #endif
1507 } 1509 }
1508 1510
1509 void DoConnection(const TestServer::HTTPSOptions& https_options, 1511 void DoConnection(const TestServer::SSLOptions& ssl_options,
1510 CertStatus* out_cert_status) { 1512 CertStatus* out_cert_status) {
1511 TestServer test_server(https_options, 1513 TestServer test_server(TestServer::TYPE_HTTPS,
1514 ssl_options,
1512 FilePath(FILE_PATH_LITERAL("net/data/ssl"))); 1515 FilePath(FILE_PATH_LITERAL("net/data/ssl")));
1513 ASSERT_TRUE(test_server.Start()); 1516 ASSERT_TRUE(test_server.Start());
1514 1517
1515 TestDelegate d; 1518 TestDelegate d;
1516 d.set_allow_certificate_errors(true); 1519 d.set_allow_certificate_errors(true);
1517 URLRequest r(test_server.GetURL(""), &d, &context_); 1520 URLRequest r(test_server.GetURL(""), &d, &context_);
1518 r.Start(); 1521 r.Start();
1519 1522
1520 MessageLoop::current()->Run(); 1523 MessageLoop::current()->Run();
1521 1524
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
1584 return true; 1587 return true;
1585 #endif 1588 #endif
1586 } 1589 }
1587 1590
1588 TEST_F(HTTPSOCSPTest, Valid) { 1591 TEST_F(HTTPSOCSPTest, Valid) {
1589 if (!SystemSupportsOCSP()) { 1592 if (!SystemSupportsOCSP()) {
1590 LOG(WARNING) << "Skipping test because system doesn't support OCSP"; 1593 LOG(WARNING) << "Skipping test because system doesn't support OCSP";
1591 return; 1594 return;
1592 } 1595 }
1593 1596
1594 TestServer::HTTPSOptions https_options(TestServer::HTTPSOptions::CERT_AUTO); 1597 TestServer::SSLOptions ssl_options(TestServer::SSLOptions::CERT_AUTO);
1595 https_options.ocsp_status = TestServer::HTTPSOptions::OCSP_OK; 1598 ssl_options.ocsp_status = TestServer::SSLOptions::OCSP_OK;
1596 1599
1597 CertStatus cert_status = 0; 1600 CertStatus cert_status = 0;
1598 DoConnection(https_options, &cert_status); 1601 DoConnection(ssl_options, &cert_status);
1599 1602
1600 EXPECT_EQ(0u, cert_status & CERT_STATUS_ALL_ERRORS); 1603 EXPECT_EQ(0u, cert_status & CERT_STATUS_ALL_ERRORS);
1601 1604
1602 EXPECT_EQ(SystemUsesChromiumEVMetadata(), 1605 EXPECT_EQ(SystemUsesChromiumEVMetadata(),
1603 static_cast<bool>(cert_status & CERT_STATUS_IS_EV)); 1606 static_cast<bool>(cert_status & CERT_STATUS_IS_EV));
1604 1607
1605 EXPECT_TRUE(cert_status & CERT_STATUS_REV_CHECKING_ENABLED); 1608 EXPECT_TRUE(cert_status & CERT_STATUS_REV_CHECKING_ENABLED);
1606 } 1609 }
1607 1610
1608 TEST_F(HTTPSOCSPTest, Revoked) { 1611 TEST_F(HTTPSOCSPTest, Revoked) {
1609 if (!SystemSupportsOCSP()) { 1612 if (!SystemSupportsOCSP()) {
1610 LOG(WARNING) << "Skipping test because system doesn't support OCSP"; 1613 LOG(WARNING) << "Skipping test because system doesn't support OCSP";
1611 return; 1614 return;
1612 } 1615 }
1613 1616
1614 TestServer::HTTPSOptions https_options( 1617 TestServer::SSLOptions ssl_options(
1615 TestServer::HTTPSOptions::CERT_AUTO); 1618 TestServer::SSLOptions::CERT_AUTO);
1616 https_options.ocsp_status = TestServer::HTTPSOptions::OCSP_REVOKED; 1619 ssl_options.ocsp_status = TestServer::SSLOptions::OCSP_REVOKED;
1617 1620
1618 CertStatus cert_status; 1621 CertStatus cert_status;
1619 DoConnection(https_options, &cert_status); 1622 DoConnection(ssl_options, &cert_status);
1620 1623
1621 #if !defined(OS_MACOSX) 1624 #if !defined(OS_MACOSX)
1622 // Doesn't pass on OS X yet for reasons that need to be investigated. 1625 // Doesn't pass on OS X yet for reasons that need to be investigated.
1623 EXPECT_EQ(CERT_STATUS_REVOKED, cert_status & CERT_STATUS_ALL_ERRORS); 1626 EXPECT_EQ(CERT_STATUS_REVOKED, cert_status & CERT_STATUS_ALL_ERRORS);
1624 #endif 1627 #endif
1625 EXPECT_FALSE(cert_status & CERT_STATUS_IS_EV); 1628 EXPECT_FALSE(cert_status & CERT_STATUS_IS_EV);
1626 EXPECT_TRUE(cert_status & CERT_STATUS_REV_CHECKING_ENABLED); 1629 EXPECT_TRUE(cert_status & CERT_STATUS_REV_CHECKING_ENABLED);
1627 } 1630 }
1628 1631
1629 TEST_F(HTTPSOCSPTest, Invalid) { 1632 TEST_F(HTTPSOCSPTest, Invalid) {
1630 if (!SystemSupportsOCSP()) { 1633 if (!SystemSupportsOCSP()) {
1631 LOG(WARNING) << "Skipping test because system doesn't support OCSP"; 1634 LOG(WARNING) << "Skipping test because system doesn't support OCSP";
1632 return; 1635 return;
1633 } 1636 }
1634 1637
1635 TestServer::HTTPSOptions https_options( 1638 TestServer::SSLOptions ssl_options(
1636 TestServer::HTTPSOptions::CERT_AUTO); 1639 TestServer::SSLOptions::CERT_AUTO);
1637 https_options.ocsp_status = TestServer::HTTPSOptions::OCSP_INVALID; 1640 ssl_options.ocsp_status = TestServer::SSLOptions::OCSP_INVALID;
1638 1641
1639 CertStatus cert_status = 0; 1642 CertStatus cert_status = 0;
1640 DoConnection(https_options, &cert_status); 1643 DoConnection(ssl_options, &cert_status);
1641 1644
1642 EXPECT_EQ(ExpectedCertStatusForFailedOnlineRevocationCheck(), 1645 EXPECT_EQ(ExpectedCertStatusForFailedOnlineRevocationCheck(),
1643 cert_status & CERT_STATUS_ALL_ERRORS); 1646 cert_status & CERT_STATUS_ALL_ERRORS);
1644 1647
1645 // Without a positive OCSP response, we shouldn't show the EV status. 1648 // Without a positive OCSP response, we shouldn't show the EV status.
1646 EXPECT_FALSE(cert_status & CERT_STATUS_IS_EV); 1649 EXPECT_FALSE(cert_status & CERT_STATUS_IS_EV);
1647 EXPECT_TRUE(cert_status & CERT_STATUS_REV_CHECKING_ENABLED); 1650 EXPECT_TRUE(cert_status & CERT_STATUS_REV_CHECKING_ENABLED);
1648 } 1651 }
1649 1652
1650 class HTTPSEVCRLSetTest : public HTTPSOCSPTest { 1653 class HTTPSEVCRLSetTest : public HTTPSOCSPTest {
1651 protected: 1654 protected:
1652 virtual void SetupContext(URLRequestContext* context) OVERRIDE { 1655 virtual void SetupContext(URLRequestContext* context) OVERRIDE {
1653 context->set_ssl_config_service( 1656 context->set_ssl_config_service(
1654 new TestSSLConfigService(true /* check for EV */, 1657 new TestSSLConfigService(true /* check for EV */,
1655 false /* online revocation checking */)); 1658 false /* online revocation checking */));
1656 } 1659 }
1657 }; 1660 };
1658 1661
1659 TEST_F(HTTPSEVCRLSetTest, MissingCRLSetAndInvalidOCSP) { 1662 TEST_F(HTTPSEVCRLSetTest, MissingCRLSetAndInvalidOCSP) {
1660 if (!SystemSupportsOCSP()) { 1663 if (!SystemSupportsOCSP()) {
1661 LOG(WARNING) << "Skipping test because system doesn't support OCSP"; 1664 LOG(WARNING) << "Skipping test because system doesn't support OCSP";
1662 return; 1665 return;
1663 } 1666 }
1664 1667
1665 TestServer::HTTPSOptions https_options( 1668 TestServer::SSLOptions ssl_options(
1666 TestServer::HTTPSOptions::CERT_AUTO); 1669 TestServer::SSLOptions::CERT_AUTO);
1667 https_options.ocsp_status = TestServer::HTTPSOptions::OCSP_INVALID; 1670 ssl_options.ocsp_status = TestServer::SSLOptions::OCSP_INVALID;
1668 SSLConfigService::SetCRLSet(scoped_refptr<CRLSet>()); 1671 SSLConfigService::SetCRLSet(scoped_refptr<CRLSet>());
1669 1672
1670 CertStatus cert_status = 0; 1673 CertStatus cert_status = 0;
1671 DoConnection(https_options, &cert_status); 1674 DoConnection(ssl_options, &cert_status);
1672 1675
1673 EXPECT_EQ(ExpectedCertStatusForFailedOnlineRevocationCheck(), 1676 EXPECT_EQ(ExpectedCertStatusForFailedOnlineRevocationCheck(),
1674 cert_status & CERT_STATUS_ALL_ERRORS); 1677 cert_status & CERT_STATUS_ALL_ERRORS);
1675 1678
1676 EXPECT_FALSE(cert_status & CERT_STATUS_IS_EV); 1679 EXPECT_FALSE(cert_status & CERT_STATUS_IS_EV);
1677 EXPECT_EQ(SystemUsesChromiumEVMetadata(), 1680 EXPECT_EQ(SystemUsesChromiumEVMetadata(),
1678 static_cast<bool>(cert_status & CERT_STATUS_REV_CHECKING_ENABLED)); 1681 static_cast<bool>(cert_status & CERT_STATUS_REV_CHECKING_ENABLED));
1679 } 1682 }
1680 1683
1681 TEST_F(HTTPSEVCRLSetTest, MissingCRLSetAndGoodOCSP) { 1684 TEST_F(HTTPSEVCRLSetTest, MissingCRLSetAndGoodOCSP) {
1682 if (!SystemSupportsOCSP()) { 1685 if (!SystemSupportsOCSP()) {
1683 LOG(WARNING) << "Skipping test because system doesn't support OCSP"; 1686 LOG(WARNING) << "Skipping test because system doesn't support OCSP";
1684 return; 1687 return;
1685 } 1688 }
1686 1689
1687 TestServer::HTTPSOptions https_options( 1690 TestServer::SSLOptions ssl_options(
1688 TestServer::HTTPSOptions::CERT_AUTO); 1691 TestServer::SSLOptions::CERT_AUTO);
1689 https_options.ocsp_status = TestServer::HTTPSOptions::OCSP_OK; 1692 ssl_options.ocsp_status = TestServer::SSLOptions::OCSP_OK;
1690 SSLConfigService::SetCRLSet(scoped_refptr<CRLSet>()); 1693 SSLConfigService::SetCRLSet(scoped_refptr<CRLSet>());
1691 1694
1692 CertStatus cert_status; 1695 CertStatus cert_status;
1693 DoConnection(https_options, &cert_status); 1696 DoConnection(ssl_options, &cert_status);
1694 1697
1695 EXPECT_EQ(0u, cert_status & CERT_STATUS_ALL_ERRORS); 1698 EXPECT_EQ(0u, cert_status & CERT_STATUS_ALL_ERRORS);
1696 1699
1697 EXPECT_EQ(SystemUsesChromiumEVMetadata(), 1700 EXPECT_EQ(SystemUsesChromiumEVMetadata(),
1698 static_cast<bool>(cert_status & CERT_STATUS_IS_EV)); 1701 static_cast<bool>(cert_status & CERT_STATUS_IS_EV));
1699 EXPECT_EQ(SystemUsesChromiumEVMetadata(), 1702 EXPECT_EQ(SystemUsesChromiumEVMetadata(),
1700 static_cast<bool>(cert_status & CERT_STATUS_REV_CHECKING_ENABLED)); 1703 static_cast<bool>(cert_status & CERT_STATUS_REV_CHECKING_ENABLED));
1701 } 1704 }
1702 1705
1703 TEST_F(HTTPSEVCRLSetTest, ExpiredCRLSet) { 1706 TEST_F(HTTPSEVCRLSetTest, ExpiredCRLSet) {
1704 if (!SystemSupportsOCSP()) { 1707 if (!SystemSupportsOCSP()) {
1705 LOG(WARNING) << "Skipping test because system doesn't support OCSP"; 1708 LOG(WARNING) << "Skipping test because system doesn't support OCSP";
1706 return; 1709 return;
1707 } 1710 }
1708 1711
1709 TestServer::HTTPSOptions https_options( 1712 TestServer::SSLOptions ssl_options(
1710 TestServer::HTTPSOptions::CERT_AUTO); 1713 TestServer::SSLOptions::CERT_AUTO);
1711 https_options.ocsp_status = TestServer::HTTPSOptions::OCSP_INVALID; 1714 ssl_options.ocsp_status = TestServer::SSLOptions::OCSP_INVALID;
1712 SSLConfigService::SetCRLSet( 1715 SSLConfigService::SetCRLSet(
1713 scoped_refptr<CRLSet>(CRLSet::ExpiredCRLSetForTesting())); 1716 scoped_refptr<CRLSet>(CRLSet::ExpiredCRLSetForTesting()));
1714 1717
1715 CertStatus cert_status; 1718 CertStatus cert_status;
1716 DoConnection(https_options, &cert_status); 1719 DoConnection(ssl_options, &cert_status);
1717 1720
1718 EXPECT_EQ(ExpectedCertStatusForFailedOnlineRevocationCheck(), 1721 EXPECT_EQ(ExpectedCertStatusForFailedOnlineRevocationCheck(),
1719 cert_status & CERT_STATUS_ALL_ERRORS); 1722 cert_status & CERT_STATUS_ALL_ERRORS);
1720 1723
1721 EXPECT_FALSE(cert_status & CERT_STATUS_IS_EV); 1724 EXPECT_FALSE(cert_status & CERT_STATUS_IS_EV);
1722 EXPECT_EQ(SystemUsesChromiumEVMetadata(), 1725 EXPECT_EQ(SystemUsesChromiumEVMetadata(),
1723 static_cast<bool>(cert_status & CERT_STATUS_REV_CHECKING_ENABLED)); 1726 static_cast<bool>(cert_status & CERT_STATUS_REV_CHECKING_ENABLED));
1724 } 1727 }
1725 1728
1726 TEST_F(HTTPSEVCRLSetTest, FreshCRLSet) { 1729 TEST_F(HTTPSEVCRLSetTest, FreshCRLSet) {
1727 TestServer::HTTPSOptions https_options( 1730 TestServer::SSLOptions ssl_options(
1728 TestServer::HTTPSOptions::CERT_AUTO); 1731 TestServer::SSLOptions::CERT_AUTO);
1729 https_options.ocsp_status = TestServer::HTTPSOptions::OCSP_INVALID; 1732 ssl_options.ocsp_status = TestServer::SSLOptions::OCSP_INVALID;
1730 SSLConfigService::SetCRLSet( 1733 SSLConfigService::SetCRLSet(
1731 scoped_refptr<CRLSet>(CRLSet::EmptyCRLSetForTesting())); 1734 scoped_refptr<CRLSet>(CRLSet::EmptyCRLSetForTesting()));
1732 1735
1733 CertStatus cert_status = 0; 1736 CertStatus cert_status = 0;
1734 DoConnection(https_options, &cert_status); 1737 DoConnection(ssl_options, &cert_status);
1735 1738
1736 // With a valid, fresh CRLSet the bad OCSP response shouldn't matter because 1739 // With a valid, fresh CRLSet the bad OCSP response shouldn't matter because
1737 // we wont check it. 1740 // we wont check it.
1738 EXPECT_EQ(0u, cert_status & CERT_STATUS_ALL_ERRORS); 1741 EXPECT_EQ(0u, cert_status & CERT_STATUS_ALL_ERRORS);
1739 1742
1740 EXPECT_EQ(SystemUsesChromiumEVMetadata(), 1743 EXPECT_EQ(SystemUsesChromiumEVMetadata(),
1741 static_cast<bool>(cert_status & CERT_STATUS_IS_EV)); 1744 static_cast<bool>(cert_status & CERT_STATUS_IS_EV));
1742 1745
1743 EXPECT_FALSE(cert_status & CERT_STATUS_REV_CHECKING_ENABLED); 1746 EXPECT_FALSE(cert_status & CERT_STATUS_REV_CHECKING_ENABLED);
1744 } 1747 }
1745 1748
1746 TEST_F(HTTPSEVCRLSetTest, ExpiredCRLSetAndRevokedNonEVCert) { 1749 TEST_F(HTTPSEVCRLSetTest, ExpiredCRLSetAndRevokedNonEVCert) {
1747 // Test that when EV verification is requested, but online revocation 1750 // Test that when EV verification is requested, but online revocation
1748 // checking is disabled, and the leaf certificate is not in fact EV, that 1751 // checking is disabled, and the leaf certificate is not in fact EV, that
1749 // no revocation checking actually happens. 1752 // no revocation checking actually happens.
1750 if (!SystemSupportsOCSP()) { 1753 if (!SystemSupportsOCSP()) {
1751 LOG(WARNING) << "Skipping test because system doesn't support OCSP"; 1754 LOG(WARNING) << "Skipping test because system doesn't support OCSP";
1752 return; 1755 return;
1753 } 1756 }
1754 1757
1755 // Unmark the certificate's OID as EV, which should disable revocation 1758 // Unmark the certificate's OID as EV, which should disable revocation
1756 // checking (as per the user preference) 1759 // checking (as per the user preference)
1757 ev_test_policy_.reset(); 1760 ev_test_policy_.reset();
1758 1761
1759 TestServer::HTTPSOptions https_options( 1762 TestServer::SSLOptions ssl_options(
1760 TestServer::HTTPSOptions::CERT_AUTO); 1763 TestServer::SSLOptions::CERT_AUTO);
1761 https_options.ocsp_status = TestServer::HTTPSOptions::OCSP_REVOKED; 1764 ssl_options.ocsp_status = TestServer::SSLOptions::OCSP_REVOKED;
1762 SSLConfigService::SetCRLSet( 1765 SSLConfigService::SetCRLSet(
1763 scoped_refptr<CRLSet>(CRLSet::ExpiredCRLSetForTesting())); 1766 scoped_refptr<CRLSet>(CRLSet::ExpiredCRLSetForTesting()));
1764 1767
1765 CertStatus cert_status; 1768 CertStatus cert_status;
1766 DoConnection(https_options, &cert_status); 1769 DoConnection(ssl_options, &cert_status);
1767 1770
1768 EXPECT_EQ(0u, cert_status & CERT_STATUS_ALL_ERRORS); 1771 EXPECT_EQ(0u, cert_status & CERT_STATUS_ALL_ERRORS);
1769 1772
1770 EXPECT_FALSE(cert_status & CERT_STATUS_IS_EV); 1773 EXPECT_FALSE(cert_status & CERT_STATUS_IS_EV);
1771 EXPECT_FALSE(cert_status & CERT_STATUS_REV_CHECKING_ENABLED); 1774 EXPECT_FALSE(cert_status & CERT_STATUS_REV_CHECKING_ENABLED);
1772 } 1775 }
1773 1776
1774 class HTTPSCRLSetTest : public HTTPSOCSPTest { 1777 class HTTPSCRLSetTest : public HTTPSOCSPTest {
1775 protected: 1778 protected:
1776 virtual void SetupContext(URLRequestContext* context) OVERRIDE { 1779 virtual void SetupContext(URLRequestContext* context) OVERRIDE {
1777 context->set_ssl_config_service( 1780 context->set_ssl_config_service(
1778 new TestSSLConfigService(false /* check for EV */, 1781 new TestSSLConfigService(false /* check for EV */,
1779 false /* online revocation checking */)); 1782 false /* online revocation checking */));
1780 } 1783 }
1781 }; 1784 };
1782 1785
1783 TEST_F(HTTPSCRLSetTest, ExpiredCRLSet) { 1786 TEST_F(HTTPSCRLSetTest, ExpiredCRLSet) {
1784 TestServer::HTTPSOptions https_options( 1787 TestServer::SSLOptions ssl_options(
1785 TestServer::HTTPSOptions::CERT_AUTO); 1788 TestServer::SSLOptions::CERT_AUTO);
1786 https_options.ocsp_status = TestServer::HTTPSOptions::OCSP_INVALID; 1789 ssl_options.ocsp_status = TestServer::SSLOptions::OCSP_INVALID;
1787 SSLConfigService::SetCRLSet( 1790 SSLConfigService::SetCRLSet(
1788 scoped_refptr<CRLSet>(CRLSet::ExpiredCRLSetForTesting())); 1791 scoped_refptr<CRLSet>(CRLSet::ExpiredCRLSetForTesting()));
1789 1792
1790 CertStatus cert_status = 0; 1793 CertStatus cert_status = 0;
1791 DoConnection(https_options, &cert_status); 1794 DoConnection(ssl_options, &cert_status);
1792 1795
1793 // If we're not trying EV verification then, even if the CRLSet has expired, 1796 // If we're not trying EV verification then, even if the CRLSet has expired,
1794 // we don't fall back to online revocation checks. 1797 // we don't fall back to online revocation checks.
1795 EXPECT_EQ(0u, cert_status & CERT_STATUS_ALL_ERRORS); 1798 EXPECT_EQ(0u, cert_status & CERT_STATUS_ALL_ERRORS);
1796 EXPECT_FALSE(cert_status & CERT_STATUS_IS_EV); 1799 EXPECT_FALSE(cert_status & CERT_STATUS_IS_EV);
1797 EXPECT_FALSE(cert_status & CERT_STATUS_REV_CHECKING_ENABLED); 1800 EXPECT_FALSE(cert_status & CERT_STATUS_REV_CHECKING_ENABLED);
1798 } 1801 }
1799 1802
1800 TEST_F(HTTPSRequestTest, SSLv3Fallback) { 1803 TEST_F(HTTPSRequestTest, SSLv3Fallback) {
1801 TestServer::HTTPSOptions https_options( 1804 TestServer::SSLOptions ssl_options(
1802 TestServer::HTTPSOptions::CERT_OK); 1805 TestServer::SSLOptions::CERT_OK);
1803 https_options.tls_intolerant = TestServer::HTTPSOptions::TLS_INTOLERANT_ALL; 1806 ssl_options.tls_intolerant = TestServer::SSLOptions::TLS_INTOLERANT_ALL;
1804 TestServer test_server(https_options, 1807 TestServer test_server(TestServer::TYPE_HTTPS,
1808 ssl_options,
1805 FilePath(FILE_PATH_LITERAL("net/data/ssl"))); 1809 FilePath(FILE_PATH_LITERAL("net/data/ssl")));
1806 ASSERT_TRUE(test_server.Start()); 1810 ASSERT_TRUE(test_server.Start());
1807 1811
1808 TestDelegate d; 1812 TestDelegate d;
1809 TestURLRequestContext context(true); 1813 TestURLRequestContext context(true);
1810 context.Init(); 1814 context.Init();
1811 d.set_allow_certificate_errors(true); 1815 d.set_allow_certificate_errors(true);
1812 URLRequest r(test_server.GetURL(""), &d, &context); 1816 URLRequest r(test_server.GetURL(""), &d, &context);
1813 r.Start(); 1817 r.Start();
1814 1818
(...skipping 10 matching lines...) Expand all
1825 // than necessary. 1829 // than necessary.
1826 TEST_F(HTTPSRequestTest, TLSv1Fallback) { 1830 TEST_F(HTTPSRequestTest, TLSv1Fallback) {
1827 uint16 default_version_max = SSLConfigService::default_version_max(); 1831 uint16 default_version_max = SSLConfigService::default_version_max();
1828 // The OpenSSL library in use may not support TLS 1.1. 1832 // The OpenSSL library in use may not support TLS 1.1.
1829 #if !defined(USE_OPENSSL) 1833 #if !defined(USE_OPENSSL)
1830 EXPECT_GT(default_version_max, SSL_PROTOCOL_VERSION_TLS1); 1834 EXPECT_GT(default_version_max, SSL_PROTOCOL_VERSION_TLS1);
1831 #endif 1835 #endif
1832 if (default_version_max <= SSL_PROTOCOL_VERSION_TLS1) 1836 if (default_version_max <= SSL_PROTOCOL_VERSION_TLS1)
1833 return; 1837 return;
1834 1838
1835 TestServer::HTTPSOptions https_options( 1839 TestServer::SSLOptions ssl_options(
1836 TestServer::HTTPSOptions::CERT_OK); 1840 TestServer::SSLOptions::CERT_OK);
1837 https_options.tls_intolerant = 1841 ssl_options.tls_intolerant =
1838 TestServer::HTTPSOptions::TLS_INTOLERANT_TLS1_1; 1842 TestServer::SSLOptions::TLS_INTOLERANT_TLS1_1;
1839 TestServer test_server(https_options, 1843 TestServer test_server(TestServer::TYPE_HTTPS,
1844 ssl_options,
1840 FilePath(FILE_PATH_LITERAL("net/data/ssl"))); 1845 FilePath(FILE_PATH_LITERAL("net/data/ssl")));
1841 ASSERT_TRUE(test_server.Start()); 1846 ASSERT_TRUE(test_server.Start());
1842 1847
1843 TestDelegate d; 1848 TestDelegate d;
1844 TestURLRequestContext context(true); 1849 TestURLRequestContext context(true);
1845 context.Init(); 1850 context.Init();
1846 d.set_allow_certificate_errors(true); 1851 d.set_allow_certificate_errors(true);
1847 URLRequest r(test_server.GetURL(""), &d, &context); 1852 URLRequest r(test_server.GetURL(""), &d, &context);
1848 r.Start(); 1853 r.Start();
1849 1854
1850 MessageLoop::current()->Run(); 1855 MessageLoop::current()->Run();
1851 1856
1852 EXPECT_EQ(1, d.response_started_count()); 1857 EXPECT_EQ(1, d.response_started_count());
1853 EXPECT_NE(0, d.bytes_received()); 1858 EXPECT_NE(0, d.bytes_received());
1854 EXPECT_EQ(static_cast<int>(SSL_CONNECTION_VERSION_TLS1), 1859 EXPECT_EQ(static_cast<int>(SSL_CONNECTION_VERSION_TLS1),
1855 SSLConnectionStatusToVersion(r.ssl_info().connection_status)); 1860 SSLConnectionStatusToVersion(r.ssl_info().connection_status));
1856 EXPECT_TRUE(r.ssl_info().connection_status & SSL_CONNECTION_VERSION_FALLBACK); 1861 EXPECT_TRUE(r.ssl_info().connection_status & SSL_CONNECTION_VERSION_FALLBACK);
1857 } 1862 }
1858 1863
1859 // This tests that a load of www.google.com with a certificate error sets 1864 // This tests that a load of www.google.com with a certificate error sets
1860 // the |certificate_errors_are_fatal| flag correctly. This flag will cause 1865 // the |certificate_errors_are_fatal| flag correctly. This flag will cause
1861 // the interstitial to be fatal. 1866 // the interstitial to be fatal.
1862 TEST_F(HTTPSRequestTest, HTTPSPreloadedHSTSTest) { 1867 TEST_F(HTTPSRequestTest, HTTPSPreloadedHSTSTest) {
1863 TestServer::HTTPSOptions https_options( 1868 TestServer::SSLOptions ssl_options(
1864 TestServer::HTTPSOptions::CERT_MISMATCHED_NAME); 1869 TestServer::SSLOptions::CERT_MISMATCHED_NAME);
1865 TestServer test_server(https_options, 1870 TestServer test_server(TestServer::TYPE_HTTPS,
1871 ssl_options,
1866 FilePath(FILE_PATH_LITERAL("net/data/ssl"))); 1872 FilePath(FILE_PATH_LITERAL("net/data/ssl")));
1867 ASSERT_TRUE(test_server.Start()); 1873 ASSERT_TRUE(test_server.Start());
1868 1874
1869 // We require that the URL be www.google.com in order to pick up the 1875 // We require that the URL be www.google.com in order to pick up the
1870 // preloaded HSTS entries in the TransportSecurityState. This means that we 1876 // preloaded HSTS entries in the TransportSecurityState. This means that we
1871 // have to use a MockHostResolver in order to direct www.google.com to the 1877 // have to use a MockHostResolver in order to direct www.google.com to the
1872 // testserver. 1878 // testserver.
1873 1879
1874 MockHostResolver host_resolver; 1880 MockHostResolver host_resolver;
1875 host_resolver.rules()->AddRule("www.google.com", "127.0.0.1"); 1881 host_resolver.rules()->AddRule("www.google.com", "127.0.0.1");
(...skipping 20 matching lines...) Expand all
1896 EXPECT_FALSE(d.received_data_before_response()); 1902 EXPECT_FALSE(d.received_data_before_response());
1897 EXPECT_TRUE(d.have_certificate_errors()); 1903 EXPECT_TRUE(d.have_certificate_errors());
1898 EXPECT_TRUE(d.certificate_errors_are_fatal()); 1904 EXPECT_TRUE(d.certificate_errors_are_fatal());
1899 } 1905 }
1900 1906
1901 // This tests that cached HTTPS page loads do not cause any updates to the 1907 // This tests that cached HTTPS page loads do not cause any updates to the
1902 // TransportSecurityState. 1908 // TransportSecurityState.
1903 TEST_F(HTTPSRequestTest, HTTPSErrorsNoClobberTSSTest) { 1909 TEST_F(HTTPSRequestTest, HTTPSErrorsNoClobberTSSTest) {
1904 // The actual problem -- CERT_MISMATCHED_NAME in this case -- doesn't 1910 // The actual problem -- CERT_MISMATCHED_NAME in this case -- doesn't
1905 // matter. It just has to be any error. 1911 // matter. It just has to be any error.
1906 TestServer::HTTPSOptions https_options( 1912 TestServer::SSLOptions ssl_options(
1907 TestServer::HTTPSOptions::CERT_MISMATCHED_NAME); 1913 TestServer::SSLOptions::CERT_MISMATCHED_NAME);
1908 TestServer test_server(https_options, 1914 TestServer test_server(TestServer::TYPE_HTTPS,
1915 ssl_options,
1909 FilePath(FILE_PATH_LITERAL("net/data/ssl"))); 1916 FilePath(FILE_PATH_LITERAL("net/data/ssl")));
1910 ASSERT_TRUE(test_server.Start()); 1917 ASSERT_TRUE(test_server.Start());
1911 1918
1912 // We require that the URL be www.google.com in order to pick up the 1919 // We require that the URL be www.google.com in order to pick up the
1913 // preloaded and dynamic HSTS and public key pin entries in the 1920 // preloaded and dynamic HSTS and public key pin entries in the
1914 // TransportSecurityState. This means that we have to use a 1921 // TransportSecurityState. This means that we have to use a
1915 // MockHostResolver in order to direct www.google.com to the testserver. 1922 // MockHostResolver in order to direct www.google.com to the testserver.
1916 1923
1917 MockHostResolver host_resolver; 1924 MockHostResolver host_resolver;
1918 host_resolver.rules()->AddRule("www.google.com", "127.0.0.1"); 1925 host_resolver.rules()->AddRule("www.google.com", "127.0.0.1");
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
1978 }; 1985 };
1979 1986
1980 } // namespace 1987 } // namespace
1981 1988
1982 // TODO(davidben): Test the rest of the code. Specifically, 1989 // TODO(davidben): Test the rest of the code. Specifically,
1983 // - Filtering which certificates to select. 1990 // - Filtering which certificates to select.
1984 // - Sending a certificate back. 1991 // - Sending a certificate back.
1985 // - Getting a certificate request in an SSL renegotiation sending the 1992 // - Getting a certificate request in an SSL renegotiation sending the
1986 // HTTP request. 1993 // HTTP request.
1987 TEST_F(HTTPSRequestTest, ClientAuthTest) { 1994 TEST_F(HTTPSRequestTest, ClientAuthTest) {
1988 TestServer::HTTPSOptions https_options; 1995 TestServer::SSLOptions ssl_options;
1989 https_options.request_client_certificate = true; 1996 ssl_options.request_client_certificate = true;
1990 TestServer test_server(https_options, 1997 TestServer test_server(TestServer::TYPE_HTTPS,
1998 ssl_options,
1991 FilePath(FILE_PATH_LITERAL("net/data/ssl"))); 1999 FilePath(FILE_PATH_LITERAL("net/data/ssl")));
1992 ASSERT_TRUE(test_server.Start()); 2000 ASSERT_TRUE(test_server.Start());
1993 2001
1994 SSLClientAuthTestDelegate d; 2002 SSLClientAuthTestDelegate d;
1995 { 2003 {
1996 URLRequest r(test_server.GetURL(""), &d, &default_context_); 2004 URLRequest r(test_server.GetURL(""), &d, &default_context_);
1997 2005
1998 r.Start(); 2006 r.Start();
1999 EXPECT_TRUE(r.is_pending()); 2007 EXPECT_TRUE(r.is_pending());
2000 2008
(...skipping 12 matching lines...) Expand all
2013 2021
2014 EXPECT_EQ(1, d.response_started_count()); 2022 EXPECT_EQ(1, d.response_started_count());
2015 EXPECT_FALSE(d.received_data_before_response()); 2023 EXPECT_FALSE(d.received_data_before_response());
2016 EXPECT_NE(0, d.bytes_received()); 2024 EXPECT_NE(0, d.bytes_received());
2017 } 2025 }
2018 } 2026 }
2019 2027
2020 TEST_F(HTTPSRequestTest, ResumeTest) { 2028 TEST_F(HTTPSRequestTest, ResumeTest) {
2021 // Test that we attempt a session resume when making two connections to the 2029 // Test that we attempt a session resume when making two connections to the
2022 // same host. 2030 // same host.
2023 TestServer::HTTPSOptions https_options; 2031 TestServer::SSLOptions ssl_options;
2024 https_options.record_resume = true; 2032 ssl_options.record_resume = true;
2025 TestServer test_server(https_options, 2033 TestServer test_server(TestServer::TYPE_HTTPS,
2034 ssl_options,
2026 FilePath(FILE_PATH_LITERAL("net/data/ssl"))); 2035 FilePath(FILE_PATH_LITERAL("net/data/ssl")));
2027 ASSERT_TRUE(test_server.Start()); 2036 ASSERT_TRUE(test_server.Start());
2028 2037
2029 SSLClientSocket::ClearSessionCache(); 2038 SSLClientSocket::ClearSessionCache();
2030 2039
2031 { 2040 {
2032 TestDelegate d; 2041 TestDelegate d;
2033 URLRequest r( 2042 URLRequest r(
2034 test_server.GetURL("ssl-session-cache"), &d, &default_context_); 2043 test_server.GetURL("ssl-session-cache"), &d, &default_context_);
2035 2044
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
2080 EXPECT_EQ("lookup", parts[0]); 2089 EXPECT_EQ("lookup", parts[0]);
2081 EXPECT_EQ(session_id, parts[1]); 2090 EXPECT_EQ(session_id, parts[1]);
2082 } 2091 }
2083 } 2092 }
2084 } 2093 }
2085 } 2094 }
2086 2095
2087 TEST_F(HTTPSRequestTest, SSLSessionCacheShardTest) { 2096 TEST_F(HTTPSRequestTest, SSLSessionCacheShardTest) {
2088 // Test that sessions aren't resumed when the value of ssl_session_cache_shard 2097 // Test that sessions aren't resumed when the value of ssl_session_cache_shard
2089 // differs. 2098 // differs.
2090 TestServer::HTTPSOptions https_options; 2099 TestServer::SSLOptions ssl_options;
2091 https_options.record_resume = true; 2100 ssl_options.record_resume = true;
2092 TestServer test_server(https_options, 2101 TestServer test_server(TestServer::TYPE_HTTPS,
2102 ssl_options,
2093 FilePath(FILE_PATH_LITERAL("net/data/ssl"))); 2103 FilePath(FILE_PATH_LITERAL("net/data/ssl")));
2094 ASSERT_TRUE(test_server.Start()); 2104 ASSERT_TRUE(test_server.Start());
2095 2105
2096 SSLClientSocket::ClearSessionCache(); 2106 SSLClientSocket::ClearSessionCache();
2097 2107
2098 { 2108 {
2099 TestDelegate d; 2109 TestDelegate d;
2100 URLRequest r( 2110 URLRequest r(
2101 test_server.GetURL("ssl-session-cache"), &d, &default_context_); 2111 test_server.GetURL("ssl-session-cache"), &d, &default_context_);
2102 2112
(...skipping 2559 matching lines...) Expand 10 before | Expand all | Expand 10 after
4662 req.SetExtraRequestHeaders(headers); 4672 req.SetExtraRequestHeaders(headers);
4663 req.Start(); 4673 req.Start();
4664 MessageLoop::current()->Run(); 4674 MessageLoop::current()->Run();
4665 // If the net tests are being run with ChromeFrame then we need to allow for 4675 // If the net tests are being run with ChromeFrame then we need to allow for
4666 // the 'chromeframe' suffix which is added to the user agent before the 4676 // the 'chromeframe' suffix which is added to the user agent before the
4667 // closing parentheses. 4677 // closing parentheses.
4668 EXPECT_TRUE(StartsWithASCII(d.data_received(), "Lynx (textmode", true)); 4678 EXPECT_TRUE(StartsWithASCII(d.data_received(), "Lynx (textmode", true));
4669 } 4679 }
4670 4680
4671 } // namespace net 4681 } // namespace net
OLDNEW
« net/test/local_test_server.cc ('K') | « net/url_request/url_fetcher_impl_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698