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

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: browser_tests done Created 8 years, 2 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 "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 29 matching lines...) Expand all
40 #include "net/base/cert_status_flags.h" 40 #include "net/base/cert_status_flags.h"
41 #include "net/test/test_server.h" 41 #include "net/test/test_server.h"
42 42
43 using content::InterstitialPage; 43 using content::InterstitialPage;
44 using content::NavigationController; 44 using content::NavigationController;
45 using content::NavigationEntry; 45 using content::NavigationEntry;
46 using content::SSLStatus; 46 using content::SSLStatus;
47 using content::WebContents; 47 using content::WebContents;
48 48
49 const FilePath::CharType kDocRoot[] = FILE_PATH_LITERAL("chrome/test/data"); 49 const FilePath::CharType kDocRoot[] = FILE_PATH_LITERAL("chrome/test/data");
50 const FilePath::CharType kWsRoot[] = FILE_PATH_LITERAL("net/data/websocket");
50 51
51 namespace { 52 namespace {
52 53
53 class ProvisionalLoadWaiter : public content::WebContentsObserver { 54 class ProvisionalLoadWaiter : public content::WebContentsObserver {
54 public: 55 public:
55 explicit ProvisionalLoadWaiter(WebContents* tab) 56 explicit ProvisionalLoadWaiter(WebContents* tab)
56 : WebContentsObserver(tab), waiting_(false), seen_(false) {} 57 : WebContentsObserver(tab), waiting_(false), seen_(false) {}
57 58
58 void Wait() { 59 void Wait() {
59 if (seen_) 60 if (seen_)
(...skipping 16 matching lines...) Expand all
76 } 77 }
77 78
78 private: 79 private:
79 bool waiting_; 80 bool waiting_;
80 bool seen_; 81 bool seen_;
81 }; 82 };
82 83
83 } // namespace 84 } // namespace
84 85
85 class SSLUITest : public InProcessBrowserTest { 86 class SSLUITest : public InProcessBrowserTest {
87 protected:
86 typedef net::TestServer::SSLOptions SSLOptions; 88 typedef net::TestServer::SSLOptions SSLOptions;
Ryan Sleevi 2012/10/10 17:59:57 style bug: Public -> Protected -> Private. I real
Takashi Toyoshima 2012/10/11 05:53:28 You are right. I moved this later in the file. It
87 89
88 public: 90 public:
89 SSLUITest() 91 SSLUITest()
90 : https_server_(net::TestServer::TYPE_HTTPS, 92 : https_server_(net::TestServer::TYPE_HTTPS,
91 SSLOptions(SSLOptions::CERT_OK), 93 SSLOptions(SSLOptions::CERT_OK),
92 FilePath(kDocRoot)), 94 FilePath(kDocRoot)),
93 https_server_expired_(net::TestServer::TYPE_HTTPS, 95 https_server_expired_(net::TestServer::TYPE_HTTPS,
94 SSLOptions(SSLOptions::CERT_EXPIRED), 96 SSLOptions(SSLOptions::CERT_EXPIRED),
95 FilePath(kDocRoot)), 97 FilePath(kDocRoot)),
96 https_server_mismatched_(net::TestServer::TYPE_HTTPS, 98 https_server_mismatched_(net::TestServer::TYPE_HTTPS,
97 SSLOptions(SSLOptions::CERT_MISMATCHED_NAME), 99 SSLOptions(SSLOptions::CERT_MISMATCHED_NAME),
98 FilePath(kDocRoot)) {} 100 FilePath(kDocRoot)),
101 wss_server_expired_(net::TestServer::TYPE_WSS,
102 SSLOptions(SSLOptions::CERT_EXPIRED),
103 FilePath(kWsRoot)) {}
Takashi Toyoshima 2012/10/10 08:14:44 I just follow existing style here. What do you thi
Jay Civelli 2012/10/10 15:39:46 I am not sure I understand what you mean.
Takashi Toyoshima 2012/10/11 04:53:21 Sorry for vague comment. Ryan and I have seen two
99 104
100 virtual void SetUpCommandLine(CommandLine* command_line) { 105 virtual void SetUpCommandLine(CommandLine* command_line) {
101 // Browser will both run and display insecure content. 106 // Browser will both run and display insecure content.
102 command_line->AppendSwitch(switches::kAllowRunningInsecureContent); 107 command_line->AppendSwitch(switches::kAllowRunningInsecureContent);
103 // Use process-per-site so that navigating to a same-site page in a 108 // Use process-per-site so that navigating to a same-site page in a
104 // new tab will use the same process. 109 // new tab will use the same process.
105 command_line->AppendSwitch(switches::kProcessPerSite); 110 command_line->AppendSwitch(switches::kProcessPerSite);
106 } 111 }
107 112
108 void CheckAuthenticatedState(WebContents* tab, 113 void CheckAuthenticatedState(WebContents* tab,
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 make_pair("REPLACE_WITH_UNSAFE_WORKER_PATH", unsafe_worker_path)); 286 make_pair("REPLACE_WITH_UNSAFE_WORKER_PATH", unsafe_worker_path));
282 return net::TestServer::GetFilePathWithReplacements( 287 return net::TestServer::GetFilePathWithReplacements(
283 "files/ssl/page_with_unsafe_worker.html", 288 "files/ssl/page_with_unsafe_worker.html",
284 replacement_text_for_page_with_unsafe_worker, 289 replacement_text_for_page_with_unsafe_worker,
285 page_with_unsafe_worker_path); 290 page_with_unsafe_worker_path);
286 } 291 }
287 292
288 net::TestServer https_server_; 293 net::TestServer https_server_;
289 net::TestServer https_server_expired_; 294 net::TestServer https_server_expired_;
290 net::TestServer https_server_mismatched_; 295 net::TestServer https_server_mismatched_;
296 net::TestServer wss_server_expired_;
291 297
292 private: 298 private:
293 DISALLOW_COPY_AND_ASSIGN(SSLUITest); 299 DISALLOW_COPY_AND_ASSIGN(SSLUITest);
294 }; 300 };
295 301
296 class SSLUITestBlock : public SSLUITest { 302 class SSLUITestBlock : public SSLUITest {
297 public: 303 public:
298 SSLUITestBlock() : SSLUITest() {} 304 SSLUITestBlock() : SSLUITest() {}
299 305
300 // Browser will neither run nor display insecure content. 306 // Browser will neither run nor display insecure content.
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
535 EXPECT_FALSE(tab->GetController().CanGoForward()); 541 EXPECT_FALSE(tab->GetController().CanGoForward());
536 NavigationEntry* entry4 = tab->GetController().GetActiveEntry(); 542 NavigationEntry* entry4 = tab->GetController().GetActiveEntry();
537 EXPECT_TRUE(entry2 == entry4); 543 EXPECT_TRUE(entry2 == entry4);
538 } 544 }
539 545
540 // Visit a HTTP page which request WSS connection to a server providing invalid 546 // Visit a HTTP page which request WSS connection to a server providing invalid
541 // certificate. Close the page while WSS connection waits for SSLManager's 547 // certificate. Close the page while WSS connection waits for SSLManager's
542 // response from UI thread. 548 // response from UI thread.
543 IN_PROC_BROWSER_TEST_F(SSLUITest, TestWSSInvalidCertAndClose) { 549 IN_PROC_BROWSER_TEST_F(SSLUITest, TestWSSInvalidCertAndClose) {
544 ASSERT_TRUE(test_server()->Start()); 550 ASSERT_TRUE(test_server()->Start());
545 ASSERT_TRUE(https_server_expired_.Start()); 551 ASSERT_TRUE(wss_server_expired_.Start());
546 552
547 // Setup page title observer. 553 // Setup page title observer.
548 WebContents* tab = chrome::GetActiveWebContents(browser()); 554 WebContents* tab = chrome::GetActiveWebContents(browser());
549 content::TitleWatcher watcher(tab, ASCIIToUTF16("PASS")); 555 content::TitleWatcher watcher(tab, ASCIIToUTF16("PASS"));
550 watcher.AlsoWaitForTitle(ASCIIToUTF16("FAIL")); 556 watcher.AlsoWaitForTitle(ASCIIToUTF16("FAIL"));
551 557
552 // Create GURLs to test pages. 558 // Create GURLs to test pages.
553 std::string masterUrlPath = StringPrintf("%s?%d", 559 std::string masterUrlPath = StringPrintf("%s?%d",
554 test_server()->GetURL("files/ssl/wss_close.html").spec().c_str(), 560 test_server()->GetURL("files/ssl/wss_close.html").spec().c_str(),
555 https_server_expired_.host_port_pair().port()); 561 wss_server_expired_.host_port_pair().port());
556 GURL masterUrl(masterUrlPath); 562 GURL masterUrl(masterUrlPath);
557 std::string slaveUrlPath = StringPrintf("%s?%d", 563 std::string slaveUrlPath = StringPrintf("%s?%d",
558 test_server()->GetURL("files/ssl/wss_close_slave.html").spec().c_str(), 564 test_server()->GetURL("files/ssl/wss_close_slave.html").spec().c_str(),
559 https_server_expired_.host_port_pair().port()); 565 wss_server_expired_.host_port_pair().port());
560 GURL slaveUrl(slaveUrlPath); 566 GURL slaveUrl(slaveUrlPath);
561 567
562 // Create tabs and visit pages which keep on creating wss connections. 568 // Create tabs and visit pages which keep on creating wss connections.
563 TabContents* tabs[16]; 569 TabContents* tabs[16];
564 for (int i = 0; i < 16; ++i) { 570 for (int i = 0; i < 16; ++i) {
565 tabs[i] = chrome::AddSelectedTabWithURL(browser(), slaveUrl, 571 tabs[i] = chrome::AddSelectedTabWithURL(browser(), slaveUrl,
566 content::PAGE_TRANSITION_LINK); 572 content::PAGE_TRANSITION_LINK);
567 } 573 }
568 chrome::SelectNextTab(browser()); 574 chrome::SelectNextTab(browser());
569 575
570 // Visit a page which waits for one TLS handshake failure. 576 // Visit a page which waits for one TLS handshake failure.
571 // The title will be changed to 'PASS'. 577 // The title will be changed to 'PASS'.
572 ui_test_utils::NavigateToURL(browser(), masterUrl); 578 ui_test_utils::NavigateToURL(browser(), masterUrl);
573 const string16 result = watcher.WaitAndGetTitle(); 579 const string16 result = watcher.WaitAndGetTitle();
574 EXPECT_TRUE(LowerCaseEqualsASCII(result, "pass")); 580 EXPECT_TRUE(LowerCaseEqualsASCII(result, "pass"));
575 581
576 // Close tabs which contains the test page. 582 // Close tabs which contains the test page.
577 for (int i = 0; i < 16; ++i) 583 for (int i = 0; i < 16; ++i)
578 chrome::CloseWebContents(browser(), tabs[i]->web_contents()); 584 chrome::CloseWebContents(browser(), tabs[i]->web_contents());
579 chrome::CloseWebContents(browser(), tab); 585 chrome::CloseWebContents(browser(), tab);
580 } 586 }
581 587
582 // Visit a HTTPS page and proceeds despite an invalid certificate. The page 588 // Visit a HTTPS page and proceeds despite an invalid certificate. The page
583 // requests WSS connection to the same origin host to check if WSS connection 589 // requests WSS connection to the same origin host to check if WSS connection
584 // share certificates policy with HTTPS correcly. 590 // share certificates policy with HTTPS correcly.
585 IN_PROC_BROWSER_TEST_F(SSLUITest, TestWSSInvalidCertAndGoForward) { 591 IN_PROC_BROWSER_TEST_F(SSLUITest, TestWSSInvalidCertAndGoForward) {
586 ASSERT_TRUE(test_server()->Start()); 592 ASSERT_TRUE(test_server()->Start());
587 ASSERT_TRUE(https_server_expired_.Start()); 593 ASSERT_TRUE(wss_server_expired_.Start());
588
589 // Start pywebsocket with TLS.
590 content::TestWebSocketServer wss_server;
591 int port = wss_server.UseRandomPort();
592 wss_server.UseTLS();
593 FilePath wss_root_dir;
594 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &wss_root_dir));
595 ASSERT_TRUE(wss_server.Start(wss_root_dir));
596 594
597 // Setup page title observer. 595 // Setup page title observer.
598 WebContents* tab = chrome::GetActiveWebContents(browser()); 596 WebContents* tab = chrome::GetActiveWebContents(browser());
599 content::TitleWatcher watcher(tab, ASCIIToUTF16("PASS")); 597 content::TitleWatcher watcher(tab, ASCIIToUTF16("PASS"));
600 watcher.AlsoWaitForTitle(ASCIIToUTF16("FAIL")); 598 watcher.AlsoWaitForTitle(ASCIIToUTF16("FAIL"));
601 599
602 // Visit bad HTTPS page. 600 // Visit bad HTTPS page.
603 std::string urlPath = 601 ui_test_utils::NavigateToURL(
604 StringPrintf("%s%d%s", "https://localhost:", port, "/ws.html"); 602 browser(), wss_server_expired_.GetAlternateURL("connect_check.html"));
605 ui_test_utils::NavigateToURL(browser(), GURL(urlPath)); 603 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false,
606 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID, 604 true); // Interstitial showing
607 false, true); // Interstitial showing
608 605
609 // Proceed anyway. 606 // Proceed anyway.
610 ProceedThroughInterstitial(tab); 607 ProceedThroughInterstitial(tab);
611 608
612 // Test page run a WebSocket wss connection test. The result will be shown 609 // Test page run a WebSocket wss connection test. The result will be shown
613 // as page title. 610 // as page title.
614 const string16 result = watcher.WaitAndGetTitle(); 611 const string16 result = watcher.WaitAndGetTitle();
615 EXPECT_TRUE(LowerCaseEqualsASCII(result, "pass")); 612 EXPECT_TRUE(LowerCaseEqualsASCII(result, "pass"));
616 } 613 }
617 614
(...skipping 869 matching lines...) Expand 10 before | Expand all | Expand 10 after
1487 https_server_.GetURL(replacement_path)); 1484 https_server_.GetURL(replacement_path));
1488 1485
1489 CheckAuthenticatedState(chrome::GetActiveWebContents(browser()), false); 1486 CheckAuthenticatedState(chrome::GetActiveWebContents(browser()), false);
1490 } 1487 }
1491 1488
1492 // Visit a page and establish a WebSocket connection over bad https with 1489 // Visit a page and establish a WebSocket connection over bad https with
1493 // --ignore-certificate-errors. The connection should be established without 1490 // --ignore-certificate-errors. The connection should be established without
1494 // interstitial page showing. 1491 // interstitial page showing.
1495 IN_PROC_BROWSER_TEST_F(SSLUITestIgnoreCertErrors, TestWSS) { 1492 IN_PROC_BROWSER_TEST_F(SSLUITestIgnoreCertErrors, TestWSS) {
1496 ASSERT_TRUE(test_server()->Start()); 1493 ASSERT_TRUE(test_server()->Start());
1497 ASSERT_TRUE(https_server_expired_.Start()); 1494 ASSERT_TRUE(wss_server_expired_.Start());
1498
1499 // Start pywebsocket with TLS.
1500 content::TestWebSocketServer wss_server;
1501 int port = wss_server.UseRandomPort();
1502 wss_server.UseTLS();
1503 FilePath wss_root_dir;
1504 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &wss_root_dir));
1505 ASSERT_TRUE(wss_server.Start(wss_root_dir));
1506 1495
1507 // Setup page title observer. 1496 // Setup page title observer.
1508 WebContents* tab = chrome::GetActiveWebContents(browser()); 1497 WebContents* tab = chrome::GetActiveWebContents(browser());
1509 content::TitleWatcher watcher(tab, ASCIIToUTF16("PASS")); 1498 content::TitleWatcher watcher(tab, ASCIIToUTF16("PASS"));
1510 watcher.AlsoWaitForTitle(ASCIIToUTF16("FAIL")); 1499 watcher.AlsoWaitForTitle(ASCIIToUTF16("FAIL"));
1511 1500
1512 // Visit bad HTTPS page. 1501 // Visit bad HTTPS page.
1513 std::string url_path = 1502 ui_test_utils::NavigateToURL(
1514 StringPrintf("%s%d%s", "https://localhost:", port, "/ws.html"); 1503 browser(), wss_server_expired_.GetAlternateURL("connect_check.html"));
1515 ui_test_utils::NavigateToURL(browser(), GURL(url_path));
1516 1504
1517 // We shouldn't have an interstitial page showing here. 1505 // We shouldn't have an interstitial page showing here.
1518 1506
1519 // Test page run a WebSocket wss connection test. The result will be shown 1507 // Test page run a WebSocket wss connection test. The result will be shown
1520 // as page title. 1508 // as page title.
1521 const string16 result = watcher.WaitAndGetTitle(); 1509 const string16 result = watcher.WaitAndGetTitle();
1522 EXPECT_TRUE(LowerCaseEqualsASCII(result, "pass")); 1510 EXPECT_TRUE(LowerCaseEqualsASCII(result, "pass"));
1523 } 1511 }
1524 1512
1525 // TODO(jcampan): more tests to do below. 1513 // TODO(jcampan): more tests to do below.
1526 1514
1527 // Visit a page over https that contains a frame with a redirect. 1515 // Visit a page over https that contains a frame with a redirect.
1528 1516
1529 // XMLHttpRequest insecure content in synchronous mode. 1517 // XMLHttpRequest insecure content in synchronous mode.
1530 1518
1531 // XMLHttpRequest insecure content in asynchronous mode. 1519 // XMLHttpRequest insecure content in asynchronous mode.
1532 1520
1533 // XMLHttpRequest over bad ssl in synchronous mode. 1521 // XMLHttpRequest over bad ssl in synchronous mode.
1534 1522
1535 // XMLHttpRequest over OK ssl in synchronous mode. 1523 // XMLHttpRequest over OK ssl in synchronous mode.
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698