Home | History | Annotate | Download | only in content_settings
      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
      3 // found in the LICENSE file.
      4 
      5 #include "base/macros.h"
      6 #include "chrome/browser/extensions/api/content_settings/content_settings_helpers.h"
      7 #include "testing/gtest/include/gtest/gtest.h"
      8 
      9 namespace extensions {
     10 namespace helpers = content_settings_helpers;
     11 
     12 TEST(ExtensionContentSettingsHelpersTest, ParseExtensionPattern) {
     13   const struct {
     14     const char* extension_pattern;
     15     const char* content_settings_pattern;
     16   } kTestPatterns[] = {
     17     { "<all_urls>", "*" },
     18     { "*://*.google.com/*", "[*.]google.com" },
     19     { "http://www.example.com/*", "http://www.example.com" },
     20     { "*://www.example.com/*", "www.example.com" },
     21     { "http://www.example.com:8080/*", "http://www.example.com:8080" },
     22     { "https://*/*", "https://*" },
     23     { "file:///foo/bar/baz", "file:///foo/bar/baz" },
     24   };
     25   for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestPatterns); ++i) {
     26     std::string error;
     27     std::string pattern_str = helpers::ParseExtensionPattern(
     28         kTestPatterns[i].extension_pattern, &error).ToString();
     29     EXPECT_EQ(kTestPatterns[i].content_settings_pattern, pattern_str)
     30         << "Unexpected error parsing " << kTestPatterns[i].extension_pattern
     31         << ": " << error;
     32   }
     33 
     34   const struct {
     35     const char* extension_pattern;
     36     const char* expected_error;
     37   } kInvalidTestPatterns[] = {
     38     { "http://www.example.com/path", "Specific paths are not allowed." },
     39     { "file:///foo/bar/*",
     40       "Path wildcards in file URL patterns are not allowed." },
     41   };
     42   for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kInvalidTestPatterns); ++i) {
     43     std::string error;
     44     ContentSettingsPattern pattern = helpers::ParseExtensionPattern(
     45         kInvalidTestPatterns[i].extension_pattern, &error);
     46     EXPECT_FALSE(pattern.IsValid());
     47     EXPECT_EQ(kInvalidTestPatterns[i].expected_error, error)
     48         << "Unexpected error parsing "
     49         << kInvalidTestPatterns[i].extension_pattern;
     50   }
     51 }
     52 
     53 }  // namespace extensions
     54