blob: 1bb7db6b76ed690862c608e1baf279131a5c0e56 [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "extensions/browser/api/web_request/web_request_permissions.h"
#include "extensions/browser/api/extensions_api_client.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "url/gurl.h"
namespace extensions {
TEST(ExtensionWebRequestPermissions, IsSensitiveURL) {
ExtensionsAPIClient api_client;
struct TestCase {
const char* url;
bool is_sensitive_if_request_from_common_renderer;
bool is_sensitive_if_request_from_browser_or_webui_renderer;
} cases[] = {
{"https://www.google.com", false, false},
{"http://www.example.com", false, false},
{"https://www.example.com", false, false},
{"https://clients.google.com", false, true},
{"https://clients4.google.com", false, true},
{"https://clients9999.google.com", false, true},
{"https://clients9999..google.com", false, false},
{"https://clients9999.example.google.com", false, false},
{"https://clients.google.com.", false, true},
{"https://.clients.google.com.", false, true},
{"http://google.example.com", false, false},
{"http://www.example.com", false, false},
{"https://www.example.com", false, false},
{"https://clients.google.com", false, true},
{"https://sb-ssl.google.com", true, true},
{"https://sb-ssl.random.google.com", false, false},
{"https://safebrowsing.googleapis.com", true, true},
{"blob:https://safebrowsing.googleapis.com/"
"fc3f440b-78ed-469f-8af8-7a1717ff39ae",
true, true},
{"filesystem:https://safebrowsing.googleapis.com/path", true, true},
{"https://safebrowsing.googleapis.com.", true, true},
{"https://safebrowsing.googleapis.com/v4", true, true},
{"https://safebrowsing.googleapis.com:80/v4", true, true},
{"https://safebrowsing.googleapis.com./v4", true, true},
{"https://safebrowsing.googleapis.com/v5", true, true},
{"https://safebrowsing.google.com/safebrowsing", true, true},
{"https://safebrowsing.google.com/safebrowsing/anything", true, true},
{"https://safebrowsing.google.com", false, false},
{"https://chrome.google.com", false, false},
{"https://chrome.google.com/webstore", true, true},
{"https://chrome.google.com./webstore", true, true},
{"blob:https://chrome.google.com/fc3f440b-78ed-469f-8af8-7a1717ff39ae",
false, false},
{"https://chrome.google.com:80/webstore", true, true},
{"https://chrome.google.com/webstore?query", true, true},
};
for (const TestCase& test : cases) {
GURL url(test.url);
EXPECT_TRUE(url.is_valid()) << test.url;
EXPECT_EQ(test.is_sensitive_if_request_from_common_renderer,
IsSensitiveURL(
url, false /* is_request_from_browser_or_webui_renderer */))
<< test.url;
EXPECT_EQ(test.is_sensitive_if_request_from_browser_or_webui_renderer,
IsSensitiveURL(
url, true /* is_request_from_browser_or_webui_renderer */))
<< test.url;
}
}
} // namespace extensions