settings_override_permission_unittest.cc revision f2477e01787aa58f445919b809d89e252beef54f
1// Copyright 2013 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// These tests make sure SettingsOverridePermission values are set correctly. 6 7#include "base/basictypes.h" 8#include "base/strings/utf_string_conversions.h" 9#include "base/values.h" 10#include "chrome/common/extensions/manifest_tests/extension_manifest_test.h" 11#include "chrome/common/extensions/permissions/settings_override_permission.h" 12#include "extensions/common/manifest_constants.h" 13#include "extensions/common/permissions/permission_set.h" 14#include "extensions/common/permissions/permissions_data.h" 15#include "testing/gtest/include/gtest/gtest.h" 16 17namespace extensions { 18 19namespace { 20 21class SettingsOverridePermissionTest : public ExtensionManifestTest { 22 protected: 23 enum Flags { 24 kHomepage = 1, 25 kStartupPages = 1 << 1, 26 kSearchProvider = 1 << 2, 27 }; 28 29 scoped_refptr<Extension> GetPermissionSet(uint32 flags) { 30 base::DictionaryValue ext_manifest; 31 ext_manifest.SetString(manifest_keys::kName, "test"); 32 ext_manifest.SetString(manifest_keys::kVersion, "0.1"); 33 ext_manifest.SetInteger(manifest_keys::kManifestVersion, 2); 34 35 scoped_ptr<base::DictionaryValue> settings_override( 36 new base::DictionaryValue); 37 if (flags & kHomepage) 38 settings_override->SetString("homepage", "http://www.google.com"); 39 if (flags & kStartupPages) { 40 scoped_ptr<ListValue> startup_pages(new ListValue); 41 startup_pages->AppendString("http://startup.com/startup.html"); 42 settings_override->Set("startup_pages", startup_pages.release()); 43 } 44 if (flags & kSearchProvider) { 45 scoped_ptr<DictionaryValue> search_provider(new DictionaryValue); 46 search_provider->SetString("search_url", "http://google.com/search.html"); 47 search_provider->SetString("name", "test"); 48 search_provider->SetString("keyword", "lock"); 49 search_provider->SetString("encoding", "UTF-8"); 50 search_provider->SetBoolean("is_default", true); 51 search_provider->SetString("favicon_url", 52 "http://wikipedia.org/wiki/Favicon"); 53 settings_override->Set("search_provider", search_provider.release()); 54 } 55 ext_manifest.Set( 56 manifest_keys::kSettingsOverride, settings_override.release()); 57 58 Manifest manifest(&ext_manifest, "test"); 59 return LoadAndExpectSuccess(manifest); 60 } 61}; 62 63TEST_F(SettingsOverridePermissionTest, HomePage) { 64 scoped_refptr<Extension> extension(GetPermissionSet(kHomepage)); 65 scoped_refptr<const PermissionSet> permission_set( 66 extension->GetActivePermissions()); 67 68 EXPECT_TRUE(permission_set->HasAPIPermission(APIPermission::kHomepage)); 69 std::vector<string16> warnings = 70 PermissionsData::GetPermissionMessageStrings(extension.get()); 71 ASSERT_EQ(1u, warnings.size()); 72 EXPECT_EQ("Change your home page to: google.com/", 73 UTF16ToUTF8(warnings[0])); 74 75 EXPECT_FALSE(permission_set->HasAPIPermission(APIPermission::kStartupPages)); 76 EXPECT_FALSE(permission_set->HasAPIPermission( 77 APIPermission::kSearchProvider)); 78} 79 80TEST_F(SettingsOverridePermissionTest, SartupPages) { 81 scoped_refptr<Extension> extension(GetPermissionSet(kStartupPages)); 82 scoped_refptr<const PermissionSet> permission_set( 83 extension->GetActivePermissions()); 84 85 EXPECT_TRUE(permission_set->HasAPIPermission(APIPermission::kStartupPages)); 86 std::vector<string16> warnings = 87 PermissionsData::GetPermissionMessageStrings(extension.get()); 88 ASSERT_EQ(1u, warnings.size()); 89 EXPECT_EQ("Change your start page to: startup.com/startup.html", 90 UTF16ToUTF8(warnings[0])); 91 92 EXPECT_FALSE(permission_set->HasAPIPermission(APIPermission::kHomepage)); 93 EXPECT_FALSE(permission_set->HasAPIPermission( 94 APIPermission::kSearchProvider)); 95} 96 97TEST_F(SettingsOverridePermissionTest, SearchSettings) { 98 scoped_refptr<Extension> extension(GetPermissionSet(kSearchProvider)); 99 scoped_refptr<const PermissionSet> permission_set( 100 extension->GetActivePermissions()); 101 102 EXPECT_TRUE(permission_set->HasAPIPermission(APIPermission::kSearchProvider)); 103 std::vector<string16> warnings = 104 PermissionsData::GetPermissionMessageStrings(extension.get()); 105 ASSERT_EQ(1u, warnings.size()); 106 EXPECT_EQ("Change your search settings to: google.com", 107 UTF16ToUTF8(warnings[0])); 108 109 EXPECT_FALSE(permission_set->HasAPIPermission(APIPermission::kHomepage)); 110 EXPECT_FALSE(permission_set->HasAPIPermission(APIPermission::kStartupPages)); 111} 112 113TEST_F(SettingsOverridePermissionTest, All) { 114 scoped_refptr<Extension> extension(GetPermissionSet( 115 kSearchProvider | kStartupPages | kHomepage)); 116 scoped_refptr<const PermissionSet> permission_set( 117 extension->GetActivePermissions()); 118 119 EXPECT_TRUE(permission_set->HasAPIPermission(APIPermission::kSearchProvider)); 120 EXPECT_TRUE(permission_set->HasAPIPermission(APIPermission::kHomepage)); 121 EXPECT_TRUE(permission_set->HasAPIPermission(APIPermission::kStartupPages)); 122} 123 124TEST_F(SettingsOverridePermissionTest, Some) { 125 scoped_refptr<Extension> extension(GetPermissionSet( 126 kSearchProvider | kHomepage)); 127 scoped_refptr<const PermissionSet> permission_set( 128 extension->GetActivePermissions()); 129 130 131 EXPECT_TRUE(permission_set->HasAPIPermission(APIPermission::kSearchProvider)); 132 EXPECT_TRUE(permission_set->HasAPIPermission(APIPermission::kHomepage)); 133 EXPECT_FALSE(permission_set->HasAPIPermission(APIPermission::kStartupPages)); 134} 135 136} // namespace 137 138} // namespace extensions 139