15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include <vector> 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/extensions/webstore_inline_installer.h" 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/common/extensions/webstore_install_result.h" 9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/test/base/chrome_render_view_host_test_harness.h" 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "content/public/browser/web_contents.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "url/gurl.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace extensions { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace { 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Wraps WebstoreInlineInstaller to provide access to domain verification 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// methods for testing. 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class TestWebstoreInlineInstaller : public WebstoreInlineInstaller { 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) explicit TestWebstoreInlineInstaller(content::WebContents* contents, 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& requestor_url); 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool TestCheckRequestorPermitted(const base::DictionaryValue& webstore_data) { 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string error; 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return CheckRequestorPermitted(webstore_data, &error); 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) protected: 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual ~TestWebstoreInlineInstaller(); 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void TestInstallerCallback(bool success, 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& error, 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) webstore_install::Result result) {} 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TestWebstoreInlineInstaller::TestWebstoreInlineInstaller( 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) content::WebContents* contents, 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& requestor_url) 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) : WebstoreInlineInstaller(contents, 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "", 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GURL(requestor_url), 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::Bind(&TestInstallerCallback)) { 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TestWebstoreInlineInstaller::~TestWebstoreInlineInstaller() {} 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// We inherit from ChromeRenderViewHostTestHarness only for 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// CreateTestWebContents, because we need a mock WebContents to support the 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// underlying WebstoreInlineInstaller in each test case. 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class WebstoreInlineInstallerTest : public ChromeRenderViewHostTestHarness { 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // testing::Test 55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void SetUp() OVERRIDE; 56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void TearDown() OVERRIDE; 57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool TestSingleVerifiedSite(const std::string& requestor_url, 59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& verified_site); 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool TestMultipleVerifiedSites( 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& requestor_url, 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::vector<std::string>& verified_sites); 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) protected: 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<content::WebContents> web_contents_; 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void WebstoreInlineInstallerTest::SetUp() { 70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ChromeRenderViewHostTestHarness::SetUp(); 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) web_contents_.reset(CreateTestWebContents()); 72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void WebstoreInlineInstallerTest::TearDown() { 75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) web_contents_.reset(NULL); 76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ChromeRenderViewHostTestHarness::TearDown(); 77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Simulates a test against the verified site string from a Webstore item's 80c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// "verified_site" manifest entry. 81c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)bool WebstoreInlineInstallerTest::TestSingleVerifiedSite( 82c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& requestor_url, 83c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& verified_site) { 84c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::DictionaryValue webstore_data; 85c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) webstore_data.SetString("verified_site", verified_site); 86c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 87c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_refptr<TestWebstoreInlineInstaller> installer = 88c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) new TestWebstoreInlineInstaller(web_contents_.get(), requestor_url); 89c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return installer->TestCheckRequestorPermitted(webstore_data); 90c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 92c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Simulates a test against a list of verified site strings from a Webstore 93c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// item's "verified_sites" manifest entry. 94c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)bool WebstoreInlineInstallerTest::TestMultipleVerifiedSites( 95c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& requestor_url, 96c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::vector<std::string>& verified_sites) { 97c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::ListValue* sites = new base::ListValue(); 98c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (std::vector<std::string>::const_iterator it = verified_sites.begin(); 99c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) it != verified_sites.end(); ++it) { 100c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) sites->Append(new base::StringValue(*it)); 101c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 102c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::DictionaryValue webstore_data; 103c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) webstore_data.Set("verified_sites", sites); 104c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 105c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_refptr<TestWebstoreInlineInstaller> installer = 106c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) new TestWebstoreInlineInstaller(web_contents_.get(), requestor_url); 107c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return installer->TestCheckRequestorPermitted(webstore_data); 108c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 109c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} // namespace 111c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 112c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(WebstoreInlineInstallerTest, DomainVerification) { 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Exact domain match. 114c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(TestSingleVerifiedSite("http://example.com", "example.com")); 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The HTTPS scheme is allowed. 117c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(TestSingleVerifiedSite("https://example.com", "example.com")); 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The file: scheme is not allowed. 120c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(TestSingleVerifiedSite("file:///example.com", "example.com")); 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Trailing slash in URL. 123c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(TestSingleVerifiedSite("http://example.com/", "example.com")); 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Page on the domain. 126c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(TestSingleVerifiedSite("http://example.com/page.html", 127c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "example.com")); 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Page on a subdomain. 130c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(TestSingleVerifiedSite("http://sub.example.com/page.html", 131c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "example.com")); 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Root domain when only a subdomain is verified. 134c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(TestSingleVerifiedSite("http://example.com/", 135c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "sub.example.com")); 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Different subdomain when only a subdomain is verified. 138c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(TestSingleVerifiedSite("http://www.example.com/", 139c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "sub.example.com")); 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Port matches. 142c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(TestSingleVerifiedSite("http://example.com:123/", 143c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "example.com:123")); 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Port doesn't match. 146c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(TestSingleVerifiedSite("http://example.com:456/", 147c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "example.com:123")); 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Port is missing in the requestor URL. 150c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(TestSingleVerifiedSite("http://example.com/", 151c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "example.com:123")); 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Port is missing in the verified site (any port matches). 154c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(TestSingleVerifiedSite("http://example.com:123/", "example.com")); 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Path matches. 157c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(TestSingleVerifiedSite("http://example.com/path", 158c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "example.com/path")); 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Path doesn't match. 161c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(TestSingleVerifiedSite("http://example.com/foo", 162c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "example.com/path")); 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Path is missing. 165c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(TestSingleVerifiedSite("http://example.com", 166c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "example.com/path")); 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Path matches (with trailing slash). 169c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(TestSingleVerifiedSite("http://example.com/path/", 170c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "example.com/path")); 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Path matches (is a file under the path). 173c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(TestSingleVerifiedSite("http://example.com/path/page.html", 174c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "example.com/path")); 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Path and port match. 177c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(TestSingleVerifiedSite( 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "http://example.com:123/path/page.html", "example.com:123/path")); 179c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 180b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) // Match specific valid schemes 181b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) EXPECT_TRUE(TestSingleVerifiedSite("http://example.com", 182b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) "http://example.com")); 183b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) EXPECT_TRUE(TestSingleVerifiedSite("https://example.com", 184b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) "https://example.com")); 185b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 186b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) // Mismatch specific vaild schemes 187b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) EXPECT_FALSE(TestSingleVerifiedSite("https://example.com", 188b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) "http://example.com")); 189b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) EXPECT_FALSE(TestSingleVerifiedSite("http://example.com", 190b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) "https://example.com")); 191b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 192b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) // Invalid scheme spec 193b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) EXPECT_FALSE(TestSingleVerifiedSite("file://example.com", 194b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) "file://example.com")); 195b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 196c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::vector<std::string> verified_sites; 197c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) verified_sites.push_back("foo.example.com"); 198c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) verified_sites.push_back("bar.example.com:123"); 199c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) verified_sites.push_back("example.com/unicorns"); 200c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 201c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Test valid examples against the site list. 202c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 203c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(TestMultipleVerifiedSites("http://foo.example.com", 204c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) verified_sites)); 205c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 206c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(TestMultipleVerifiedSites("http://bar.example.com:123", 207c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) verified_sites)); 208c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 209c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(TestMultipleVerifiedSites( 210c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "http://cooking.example.com/unicorns/bacon.html", verified_sites)); 211c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 212c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Test invalid examples against the site list. 213c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 214c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(TestMultipleVerifiedSites("http://example.com", 215c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) verified_sites)); 216c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 217c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(TestMultipleVerifiedSites("file://foo.example.com", 218c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) verified_sites)); 219c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 220c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(TestMultipleVerifiedSites("http://baz.example.com", 221c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) verified_sites)); 222c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 223c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(TestMultipleVerifiedSites("http://bar.example.com:456", 224c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) verified_sites)); 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace extensions 228