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

Unified Diff: chrome/browser/extensions/policy_handlers_unittest.cc

Issue 2495353003: chrome.webRequest support for ExtensionSettings (Closed)
Patch Set: Policy template translation doesn't like '&', switching to 'and'. Small fix to browser test. Created 3 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/policy_handlers_unittest.cc
diff --git a/chrome/browser/extensions/policy_handlers_unittest.cc b/chrome/browser/extensions/policy_handlers_unittest.cc
index 1a0f91883a56a8cdff63972b164d936d40e599e9..f04375c635fd61dc2d9378689a65c8054bfcbaa3 100644
--- a/chrome/browser/extensions/policy_handlers_unittest.cc
+++ b/chrome/browser/extensions/policy_handlers_unittest.cc
@@ -5,6 +5,8 @@
#include <utility>
#include "base/json/json_reader.h"
+#include "base/strings/stringprintf.h"
+#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/extensions/external_policy_loader.h"
#include "chrome/browser/extensions/policy_handlers.h"
#include "components/policy/core/browser/policy_error_map.h"
@@ -35,6 +37,12 @@ const char kTestManagementPolicy2[] =
" \"installation_mode\": \"blocked\","
" },"
"}";
+const char kTestManagementPolicy3[] =
+ "{"
+ " \"*\": {"
+ " \"runtime_blocked_hosts\": [\"%s\"]"
+ " }"
+ "}";
TEST(ExtensionListPolicyHandlerTest, CheckPolicySettings) {
base::ListValue list;
@@ -283,6 +291,52 @@ TEST(ExtensionSettingsPolicyHandlerTest, CheckPolicySettings) {
EXPECT_FALSE(errors.empty());
}
+TEST(ExtensionSettingsPolicyHandlerTest, CheckPolicySettingsURL) {
+ std::vector<std::string> good_urls = {
+ "*://*.example.com", "*://example.com", "http://cat.example.com",
+ "https://example.*", "*://*.example.*", "<all_urls>"};
+
+ // Invalid URLPattern or with a non-standard path
+ std::vector<std::string> bad_urls = {
+ "://*.example.com", "*://example.com/cat*", "*://example.com/",
+ "*://*.example.com/*cat", "*://example.com/cat/*", "bad",
+ "*://example.com/*"};
+
+ // Crafts and parses a ExtensionSettings policy to test URL parsing.
+ auto URLParsesSuccessfully = [](std::string url) {
+ std::string policy =
+ base::StringPrintf(kTestManagementPolicy3, url.c_str());
+ std::string error;
+ std::unique_ptr<base::Value> policy_value =
+ base::JSONReader::ReadAndReturnError(
+ policy, base::JSONParserOptions::JSON_ALLOW_TRAILING_COMMAS, NULL,
+ &error);
+ if (!policy_value.get())
+ return false;
+
+ policy::Schema chrome_schema =
+ policy::Schema::Wrap(policy::GetChromeSchemaData());
+ policy::PolicyMap policy_map;
+ policy::PolicyErrorMap errors;
+ ExtensionSettingsPolicyHandler handler(chrome_schema);
+
+ policy_map.Set(policy::key::kExtensionSettings,
+ policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
+ policy::POLICY_SOURCE_CLOUD, std::move(policy_value),
+ nullptr);
+
+ return handler.CheckPolicySettings(policy_map, &errors) && errors.empty();
+
+ };
+
+ for (std::string url : good_urls) {
+ EXPECT_TRUE(URLParsesSuccessfully(url)) << url;
+ }
+ for (std::string url : bad_urls) {
+ EXPECT_FALSE(URLParsesSuccessfully(url)) << url;
+ }
+}
+
TEST(ExtensionSettingsPolicyHandlerTest, ApplyPolicySettings) {
std::string error;
std::unique_ptr<base::Value> policy_value =

Powered by Google App Engine
This is Rietveld 408576698