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

Side by Side Diff: chrome/browser/ssl/ssl_browser_tests.cc

Issue 11085039: WebSocket test server migration on browser_tests (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: protected -> private Created 8 years, 1 month 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 "base/command_line.h" 5 #include "base/command_line.h"
6 #include "base/path_service.h" 6 #include "base/path_service.h"
7 #include "base/string_util.h" 7 #include "base/string_util.h"
8 #include "base/stringprintf.h" 8 #include "base/stringprintf.h"
9 #include "base/time.h" 9 #include "base/time.h"
10 #include "base/utf_string_conversions.h" 10 #include "base/utf_string_conversions.h"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 #include "net/base/nss_cert_database.h" 48 #include "net/base/nss_cert_database.h"
49 #endif // defined(USE_NSS) 49 #endif // defined(USE_NSS)
50 50
51 using content::InterstitialPage; 51 using content::InterstitialPage;
52 using content::NavigationController; 52 using content::NavigationController;
53 using content::NavigationEntry; 53 using content::NavigationEntry;
54 using content::SSLStatus; 54 using content::SSLStatus;
55 using content::WebContents; 55 using content::WebContents;
56 56
57 const FilePath::CharType kDocRoot[] = FILE_PATH_LITERAL("chrome/test/data"); 57 const FilePath::CharType kDocRoot[] = FILE_PATH_LITERAL("chrome/test/data");
58 const FilePath::CharType kWsRoot[] = FILE_PATH_LITERAL("net/data/websocket");
58 59
59 namespace { 60 namespace {
60 61
61 class ProvisionalLoadWaiter : public content::WebContentsObserver { 62 class ProvisionalLoadWaiter : public content::WebContentsObserver {
62 public: 63 public:
63 explicit ProvisionalLoadWaiter(WebContents* tab) 64 explicit ProvisionalLoadWaiter(WebContents* tab)
64 : WebContentsObserver(tab), waiting_(false), seen_(false) {} 65 : WebContentsObserver(tab), waiting_(false), seen_(false) {}
65 66
66 void Wait() { 67 void Wait() {
67 if (seen_) 68 if (seen_)
(...skipping 16 matching lines...) Expand all
84 } 85 }
85 86
86 private: 87 private:
87 bool waiting_; 88 bool waiting_;
88 bool seen_; 89 bool seen_;
89 }; 90 };
90 91
91 } // namespace 92 } // namespace
92 93
93 class SSLUITest : public InProcessBrowserTest { 94 class SSLUITest : public InProcessBrowserTest {
94 typedef net::TestServer::SSLOptions SSLOptions;
95
96 public: 95 public:
97 SSLUITest() 96 SSLUITest()
98 : https_server_(net::TestServer::TYPE_HTTPS, 97 : https_server_(net::TestServer::TYPE_HTTPS,
99 SSLOptions(SSLOptions::CERT_OK), 98 SSLOptions(SSLOptions::CERT_OK),
100 FilePath(kDocRoot)), 99 FilePath(kDocRoot)),
101 https_server_expired_(net::TestServer::TYPE_HTTPS, 100 https_server_expired_(net::TestServer::TYPE_HTTPS,
102 SSLOptions(SSLOptions::CERT_EXPIRED), 101 SSLOptions(SSLOptions::CERT_EXPIRED),
103 FilePath(kDocRoot)), 102 FilePath(kDocRoot)),
104 https_server_mismatched_(net::TestServer::TYPE_HTTPS, 103 https_server_mismatched_(net::TestServer::TYPE_HTTPS,
105 SSLOptions(SSLOptions::CERT_MISMATCHED_NAME), 104 SSLOptions(SSLOptions::CERT_MISMATCHED_NAME),
106 FilePath(kDocRoot)) {} 105 FilePath(kDocRoot)),
106 wss_server_expired_(net::TestServer::TYPE_WSS,
107 SSLOptions(SSLOptions::CERT_EXPIRED),
108 FilePath(kWsRoot)) {}
107 109
108 virtual void SetUpCommandLine(CommandLine* command_line) { 110 virtual void SetUpCommandLine(CommandLine* command_line) {
109 // Browser will both run and display insecure content. 111 // Browser will both run and display insecure content.
110 command_line->AppendSwitch(switches::kAllowRunningInsecureContent); 112 command_line->AppendSwitch(switches::kAllowRunningInsecureContent);
111 // Use process-per-site so that navigating to a same-site page in a 113 // Use process-per-site so that navigating to a same-site page in a
112 // new tab will use the same process. 114 // new tab will use the same process.
113 command_line->AppendSwitch(switches::kProcessPerSite); 115 command_line->AppendSwitch(switches::kProcessPerSite);
114 } 116 }
115 117
116 void CheckAuthenticatedState(WebContents* tab, 118 void CheckAuthenticatedState(WebContents* tab,
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 make_pair("REPLACE_WITH_UNSAFE_WORKER_PATH", unsafe_worker_path)); 291 make_pair("REPLACE_WITH_UNSAFE_WORKER_PATH", unsafe_worker_path));
290 return net::TestServer::GetFilePathWithReplacements( 292 return net::TestServer::GetFilePathWithReplacements(
291 "files/ssl/page_with_unsafe_worker.html", 293 "files/ssl/page_with_unsafe_worker.html",
292 replacement_text_for_page_with_unsafe_worker, 294 replacement_text_for_page_with_unsafe_worker,
293 page_with_unsafe_worker_path); 295 page_with_unsafe_worker_path);
294 } 296 }
295 297
296 net::TestServer https_server_; 298 net::TestServer https_server_;
297 net::TestServer https_server_expired_; 299 net::TestServer https_server_expired_;
298 net::TestServer https_server_mismatched_; 300 net::TestServer https_server_mismatched_;
301 net::TestServer wss_server_expired_;
299 302
300 private: 303 private:
304 typedef net::TestServer::SSLOptions SSLOptions;
305
301 DISALLOW_COPY_AND_ASSIGN(SSLUITest); 306 DISALLOW_COPY_AND_ASSIGN(SSLUITest);
302 }; 307 };
303 308
304 class SSLUITestBlock : public SSLUITest { 309 class SSLUITestBlock : public SSLUITest {
305 public: 310 public:
306 SSLUITestBlock() : SSLUITest() {} 311 SSLUITestBlock() : SSLUITest() {}
307 312
308 // Browser will neither run nor display insecure content. 313 // Browser will neither run nor display insecure content.
309 virtual void SetUpCommandLine(CommandLine* command_line) { 314 virtual void SetUpCommandLine(CommandLine* command_line) {
310 command_line->AppendSwitch(switches::kNoDisplayingInsecureContent); 315 command_line->AppendSwitch(switches::kNoDisplayingInsecureContent);
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
543 EXPECT_FALSE(tab->GetController().CanGoForward()); 548 EXPECT_FALSE(tab->GetController().CanGoForward());
544 NavigationEntry* entry4 = tab->GetController().GetActiveEntry(); 549 NavigationEntry* entry4 = tab->GetController().GetActiveEntry();
545 EXPECT_TRUE(entry2 == entry4); 550 EXPECT_TRUE(entry2 == entry4);
546 } 551 }
547 552
548 // Visit a HTTP page which request WSS connection to a server providing invalid 553 // Visit a HTTP page which request WSS connection to a server providing invalid
549 // certificate. Close the page while WSS connection waits for SSLManager's 554 // certificate. Close the page while WSS connection waits for SSLManager's
550 // response from UI thread. 555 // response from UI thread.
551 IN_PROC_BROWSER_TEST_F(SSLUITest, TestWSSInvalidCertAndClose) { 556 IN_PROC_BROWSER_TEST_F(SSLUITest, TestWSSInvalidCertAndClose) {
552 ASSERT_TRUE(test_server()->Start()); 557 ASSERT_TRUE(test_server()->Start());
553 ASSERT_TRUE(https_server_expired_.Start()); 558 ASSERT_TRUE(wss_server_expired_.Start());
554 559
555 // Setup page title observer. 560 // Setup page title observer.
556 WebContents* tab = chrome::GetActiveWebContents(browser()); 561 WebContents* tab = chrome::GetActiveWebContents(browser());
557 content::TitleWatcher watcher(tab, ASCIIToUTF16("PASS")); 562 content::TitleWatcher watcher(tab, ASCIIToUTF16("PASS"));
558 watcher.AlsoWaitForTitle(ASCIIToUTF16("FAIL")); 563 watcher.AlsoWaitForTitle(ASCIIToUTF16("FAIL"));
559 564
560 // Create GURLs to test pages. 565 // Create GURLs to test pages.
561 std::string masterUrlPath = StringPrintf("%s?%d", 566 std::string masterUrlPath = StringPrintf("%s?%d",
562 test_server()->GetURL("files/ssl/wss_close.html").spec().c_str(), 567 test_server()->GetURL("files/ssl/wss_close.html").spec().c_str(),
563 https_server_expired_.host_port_pair().port()); 568 wss_server_expired_.host_port_pair().port());
564 GURL masterUrl(masterUrlPath); 569 GURL masterUrl(masterUrlPath);
565 std::string slaveUrlPath = StringPrintf("%s?%d", 570 std::string slaveUrlPath = StringPrintf("%s?%d",
566 test_server()->GetURL("files/ssl/wss_close_slave.html").spec().c_str(), 571 test_server()->GetURL("files/ssl/wss_close_slave.html").spec().c_str(),
567 https_server_expired_.host_port_pair().port()); 572 wss_server_expired_.host_port_pair().port());
568 GURL slaveUrl(slaveUrlPath); 573 GURL slaveUrl(slaveUrlPath);
569 574
570 // Create tabs and visit pages which keep on creating wss connections. 575 // Create tabs and visit pages which keep on creating wss connections.
571 TabContents* tabs[16]; 576 TabContents* tabs[16];
572 for (int i = 0; i < 16; ++i) { 577 for (int i = 0; i < 16; ++i) {
573 tabs[i] = chrome::AddSelectedTabWithURL(browser(), slaveUrl, 578 tabs[i] = chrome::AddSelectedTabWithURL(browser(), slaveUrl,
574 content::PAGE_TRANSITION_LINK); 579 content::PAGE_TRANSITION_LINK);
575 } 580 }
576 chrome::SelectNextTab(browser()); 581 chrome::SelectNextTab(browser());
577 582
578 // Visit a page which waits for one TLS handshake failure. 583 // Visit a page which waits for one TLS handshake failure.
579 // The title will be changed to 'PASS'. 584 // The title will be changed to 'PASS'.
580 ui_test_utils::NavigateToURL(browser(), masterUrl); 585 ui_test_utils::NavigateToURL(browser(), masterUrl);
581 const string16 result = watcher.WaitAndGetTitle(); 586 const string16 result = watcher.WaitAndGetTitle();
582 EXPECT_TRUE(LowerCaseEqualsASCII(result, "pass")); 587 EXPECT_TRUE(LowerCaseEqualsASCII(result, "pass"));
583 588
584 // Close tabs which contains the test page. 589 // Close tabs which contains the test page.
585 for (int i = 0; i < 16; ++i) 590 for (int i = 0; i < 16; ++i)
586 chrome::CloseWebContents(browser(), tabs[i]->web_contents()); 591 chrome::CloseWebContents(browser(), tabs[i]->web_contents());
587 chrome::CloseWebContents(browser(), tab); 592 chrome::CloseWebContents(browser(), tab);
588 } 593 }
589 594
590 // Visit a HTTPS page and proceeds despite an invalid certificate. The page 595 // Visit a HTTPS page and proceeds despite an invalid certificate. The page
591 // requests WSS connection to the same origin host to check if WSS connection 596 // requests WSS connection to the same origin host to check if WSS connection
592 // share certificates policy with HTTPS correcly. 597 // share certificates policy with HTTPS correcly.
593 IN_PROC_BROWSER_TEST_F(SSLUITest, TestWSSInvalidCertAndGoForward) { 598 IN_PROC_BROWSER_TEST_F(SSLUITest, TestWSSInvalidCertAndGoForward) {
594 ASSERT_TRUE(test_server()->Start()); 599 ASSERT_TRUE(test_server()->Start());
595 ASSERT_TRUE(https_server_expired_.Start()); 600 ASSERT_TRUE(wss_server_expired_.Start());
596
597 // Start pywebsocket with TLS.
598 content::TestWebSocketServer wss_server;
599 int port = wss_server.UseRandomPort();
600 wss_server.UseTLS();
601 FilePath wss_root_dir;
602 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &wss_root_dir));
603 ASSERT_TRUE(wss_server.Start(wss_root_dir));
604 601
605 // Setup page title observer. 602 // Setup page title observer.
606 WebContents* tab = chrome::GetActiveWebContents(browser()); 603 WebContents* tab = chrome::GetActiveWebContents(browser());
607 content::TitleWatcher watcher(tab, ASCIIToUTF16("PASS")); 604 content::TitleWatcher watcher(tab, ASCIIToUTF16("PASS"));
608 watcher.AlsoWaitForTitle(ASCIIToUTF16("FAIL")); 605 watcher.AlsoWaitForTitle(ASCIIToUTF16("FAIL"));
609 606
610 // Visit bad HTTPS page. 607 // Visit bad HTTPS page.
611 std::string urlPath = 608 std::string scheme("https");
612 StringPrintf("%s%d%s", "https://localhost:", port, "/ws.html"); 609 GURL::Replacements replacements;
613 ui_test_utils::NavigateToURL(browser(), GURL(urlPath)); 610 replacements.SetSchemeStr(scheme);
614 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID, 611 ui_test_utils::NavigateToURL(
615 false, true); // Interstitial showing 612 browser(),
613 wss_server_expired_.GetURL(
614 "connect_check.html").ReplaceComponents(replacements));
615 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false,
616 true); // Interstitial showing
616 617
617 // Proceed anyway. 618 // Proceed anyway.
618 ProceedThroughInterstitial(tab); 619 ProceedThroughInterstitial(tab);
619 620
620 // Test page run a WebSocket wss connection test. The result will be shown 621 // Test page run a WebSocket wss connection test. The result will be shown
621 // as page title. 622 // as page title.
622 const string16 result = watcher.WaitAndGetTitle(); 623 const string16 result = watcher.WaitAndGetTitle();
623 EXPECT_TRUE(LowerCaseEqualsASCII(result, "pass")); 624 EXPECT_TRUE(LowerCaseEqualsASCII(result, "pass"));
624 } 625 }
625 626
(...skipping 944 matching lines...) Expand 10 before | Expand all | Expand 10 after
1570 https_server_.GetURL(replacement_path)); 1571 https_server_.GetURL(replacement_path));
1571 1572
1572 CheckAuthenticatedState(chrome::GetActiveWebContents(browser()), false); 1573 CheckAuthenticatedState(chrome::GetActiveWebContents(browser()), false);
1573 } 1574 }
1574 1575
1575 // Visit a page and establish a WebSocket connection over bad https with 1576 // Visit a page and establish a WebSocket connection over bad https with
1576 // --ignore-certificate-errors. The connection should be established without 1577 // --ignore-certificate-errors. The connection should be established without
1577 // interstitial page showing. 1578 // interstitial page showing.
1578 IN_PROC_BROWSER_TEST_F(SSLUITestIgnoreCertErrors, TestWSS) { 1579 IN_PROC_BROWSER_TEST_F(SSLUITestIgnoreCertErrors, TestWSS) {
1579 ASSERT_TRUE(test_server()->Start()); 1580 ASSERT_TRUE(test_server()->Start());
1580 ASSERT_TRUE(https_server_expired_.Start()); 1581 ASSERT_TRUE(wss_server_expired_.Start());
1581
1582 // Start pywebsocket with TLS.
1583 content::TestWebSocketServer wss_server;
1584 int port = wss_server.UseRandomPort();
1585 wss_server.UseTLS();
1586 FilePath wss_root_dir;
1587 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &wss_root_dir));
1588 ASSERT_TRUE(wss_server.Start(wss_root_dir));
1589 1582
1590 // Setup page title observer. 1583 // Setup page title observer.
1591 WebContents* tab = chrome::GetActiveWebContents(browser()); 1584 WebContents* tab = chrome::GetActiveWebContents(browser());
1592 content::TitleWatcher watcher(tab, ASCIIToUTF16("PASS")); 1585 content::TitleWatcher watcher(tab, ASCIIToUTF16("PASS"));
1593 watcher.AlsoWaitForTitle(ASCIIToUTF16("FAIL")); 1586 watcher.AlsoWaitForTitle(ASCIIToUTF16("FAIL"));
1594 1587
1595 // Visit bad HTTPS page. 1588 // Visit bad HTTPS page.
1596 std::string url_path = 1589 std::string scheme("https");
1597 StringPrintf("%s%d%s", "https://localhost:", port, "/ws.html"); 1590 GURL::Replacements replacements;
1598 ui_test_utils::NavigateToURL(browser(), GURL(url_path)); 1591 replacements.SetSchemeStr(scheme);
1592 ui_test_utils::NavigateToURL(
1593 browser(),
1594 wss_server_expired_.GetURL(
1595 "connect_check.html").ReplaceComponents(replacements));
1599 1596
1600 // We shouldn't have an interstitial page showing here. 1597 // We shouldn't have an interstitial page showing here.
1601 1598
1602 // Test page run a WebSocket wss connection test. The result will be shown 1599 // Test page run a WebSocket wss connection test. The result will be shown
1603 // as page title. 1600 // as page title.
1604 const string16 result = watcher.WaitAndGetTitle(); 1601 const string16 result = watcher.WaitAndGetTitle();
1605 EXPECT_TRUE(LowerCaseEqualsASCII(result, "pass")); 1602 EXPECT_TRUE(LowerCaseEqualsASCII(result, "pass"));
1606 } 1603 }
1607 1604
1608 // TODO(jcampan): more tests to do below. 1605 // TODO(jcampan): more tests to do below.
1609 1606
1610 // Visit a page over https that contains a frame with a redirect. 1607 // Visit a page over https that contains a frame with a redirect.
1611 1608
1612 // XMLHttpRequest insecure content in synchronous mode. 1609 // XMLHttpRequest insecure content in synchronous mode.
1613 1610
1614 // XMLHttpRequest insecure content in asynchronous mode. 1611 // XMLHttpRequest insecure content in asynchronous mode.
1615 1612
1616 // XMLHttpRequest over bad ssl in synchronous mode. 1613 // XMLHttpRequest over bad ssl in synchronous mode.
1617 1614
1618 // XMLHttpRequest over OK ssl in synchronous mode. 1615 // XMLHttpRequest over OK ssl in synchronous mode.
OLDNEW
« no previous file with comments | « chrome/browser/net/proxy_browsertest.cc ('k') | chrome/test/data/http/tests/websocket/tests/echo_wsh.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698