OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/extensions/admin_policy.h" | 5 #include "chrome/browser/extensions/admin_policy.h" |
6 | 6 |
7 #include "base/values.h" | 7 #include "base/values.h" |
8 #include "chrome/common/extensions/extension.h" | 8 #include "chrome/common/extensions/extension.h" |
9 #include "chrome/common/extensions/extension_manifest_constants.h" | 9 #include "chrome/common/extensions/extension_manifest_constants.h" |
| 10 #include "chrome/common/extensions/manifest.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
11 | 12 |
12 using base::Value; | 13 using base::Value; |
13 using extensions::Extension; | 14 using extensions::Extension; |
| 15 using extensions::Manifest; |
14 | 16 |
15 namespace ap = extensions::admin_policy; | 17 namespace ap = extensions::admin_policy; |
16 | 18 |
17 class ExtensionAdminPolicyTest : public testing::Test { | 19 class ExtensionAdminPolicyTest : public testing::Test { |
18 public: | 20 public: |
19 void CreateExtension(Extension::Location location) { | 21 void CreateExtension(Manifest::Location location) { |
20 base::DictionaryValue values; | 22 base::DictionaryValue values; |
21 CreateExtensionFromValues(location, &values); | 23 CreateExtensionFromValues(location, &values); |
22 } | 24 } |
23 | 25 |
24 void CreateHostedApp(Extension::Location location) { | 26 void CreateHostedApp(Manifest::Location location) { |
25 base::DictionaryValue values; | 27 base::DictionaryValue values; |
26 values.Set(extension_manifest_keys::kWebURLs, new base::ListValue()); | 28 values.Set(extension_manifest_keys::kWebURLs, new base::ListValue()); |
27 values.SetString(extension_manifest_keys::kLaunchWebURL, | 29 values.SetString(extension_manifest_keys::kLaunchWebURL, |
28 "http://www.example.com"); | 30 "http://www.example.com"); |
29 CreateExtensionFromValues(location, &values); | 31 CreateExtensionFromValues(location, &values); |
30 } | 32 } |
31 | 33 |
32 void CreateExtensionFromValues(Extension::Location location, | 34 void CreateExtensionFromValues(Manifest::Location location, |
33 base::DictionaryValue* values) { | 35 base::DictionaryValue* values) { |
34 values->SetString(extension_manifest_keys::kName, "test"); | 36 values->SetString(extension_manifest_keys::kName, "test"); |
35 values->SetString(extension_manifest_keys::kVersion, "0.1"); | 37 values->SetString(extension_manifest_keys::kVersion, "0.1"); |
36 std::string error; | 38 std::string error; |
37 extension_ = Extension::Create(FilePath(), location, *values, | 39 extension_ = Extension::Create(FilePath(), location, *values, |
38 Extension::NO_FLAGS, &error); | 40 Extension::NO_FLAGS, &error); |
39 ASSERT_TRUE(extension_.get()); | 41 ASSERT_TRUE(extension_.get()); |
40 } | 42 } |
41 | 43 |
42 protected: | 44 protected: |
(...skipping 10 matching lines...) Expand all Loading... |
53 blacklist.Append(Value::CreateStringValue("*")); | 55 blacklist.Append(Value::CreateStringValue("*")); |
54 EXPECT_TRUE(ap::BlacklistedByDefault(&blacklist)); | 56 EXPECT_TRUE(ap::BlacklistedByDefault(&blacklist)); |
55 | 57 |
56 blacklist.Clear(); | 58 blacklist.Clear(); |
57 blacklist.Append(Value::CreateStringValue("*")); | 59 blacklist.Append(Value::CreateStringValue("*")); |
58 EXPECT_TRUE(ap::BlacklistedByDefault(&blacklist)); | 60 EXPECT_TRUE(ap::BlacklistedByDefault(&blacklist)); |
59 } | 61 } |
60 | 62 |
61 // Tests UserMayLoad for required extensions. | 63 // Tests UserMayLoad for required extensions. |
62 TEST_F(ExtensionAdminPolicyTest, UserMayLoadRequired) { | 64 TEST_F(ExtensionAdminPolicyTest, UserMayLoadRequired) { |
63 CreateExtension(Extension::COMPONENT); | 65 CreateExtension(Manifest::COMPONENT); |
64 EXPECT_TRUE(ap::UserMayLoad(NULL, NULL, NULL, NULL, extension_.get(), NULL)); | 66 EXPECT_TRUE(ap::UserMayLoad(NULL, NULL, NULL, NULL, extension_.get(), NULL)); |
65 string16 error; | 67 string16 error; |
66 EXPECT_TRUE(ap::UserMayLoad(NULL, NULL, NULL, NULL, extension_.get(), | 68 EXPECT_TRUE(ap::UserMayLoad(NULL, NULL, NULL, NULL, extension_.get(), |
67 &error)); | 69 &error)); |
68 EXPECT_TRUE(error.empty()); | 70 EXPECT_TRUE(error.empty()); |
69 | 71 |
70 // Required extensions may load even if they're on the blacklist. | 72 // Required extensions may load even if they're on the blacklist. |
71 base::ListValue blacklist; | 73 base::ListValue blacklist; |
72 blacklist.Append(Value::CreateStringValue(extension_->id())); | 74 blacklist.Append(Value::CreateStringValue(extension_->id())); |
73 EXPECT_TRUE(ap::UserMayLoad(&blacklist, NULL, NULL, NULL, extension_.get(), | 75 EXPECT_TRUE(ap::UserMayLoad(&blacklist, NULL, NULL, NULL, extension_.get(), |
74 NULL)); | 76 NULL)); |
75 | 77 |
76 blacklist.Append(Value::CreateStringValue("*")); | 78 blacklist.Append(Value::CreateStringValue("*")); |
77 EXPECT_TRUE(ap::UserMayLoad(&blacklist, NULL, NULL, NULL, extension_.get(), | 79 EXPECT_TRUE(ap::UserMayLoad(&blacklist, NULL, NULL, NULL, extension_.get(), |
78 NULL)); | 80 NULL)); |
79 } | 81 } |
80 | 82 |
81 // Tests UserMayLoad when no blacklist exists, or it's empty. | 83 // Tests UserMayLoad when no blacklist exists, or it's empty. |
82 TEST_F(ExtensionAdminPolicyTest, UserMayLoadNoBlacklist) { | 84 TEST_F(ExtensionAdminPolicyTest, UserMayLoadNoBlacklist) { |
83 CreateExtension(Extension::INTERNAL); | 85 CreateExtension(Manifest::INTERNAL); |
84 EXPECT_TRUE(ap::UserMayLoad(NULL, NULL, NULL, NULL, extension_.get(), NULL)); | 86 EXPECT_TRUE(ap::UserMayLoad(NULL, NULL, NULL, NULL, extension_.get(), NULL)); |
85 base::ListValue blacklist; | 87 base::ListValue blacklist; |
86 EXPECT_TRUE(ap::UserMayLoad(&blacklist, NULL, NULL, NULL, extension_.get(), | 88 EXPECT_TRUE(ap::UserMayLoad(&blacklist, NULL, NULL, NULL, extension_.get(), |
87 NULL)); | 89 NULL)); |
88 string16 error; | 90 string16 error; |
89 EXPECT_TRUE(ap::UserMayLoad(&blacklist, NULL, NULL, NULL, extension_.get(), | 91 EXPECT_TRUE(ap::UserMayLoad(&blacklist, NULL, NULL, NULL, extension_.get(), |
90 &error)); | 92 &error)); |
91 EXPECT_TRUE(error.empty()); | 93 EXPECT_TRUE(error.empty()); |
92 } | 94 } |
93 | 95 |
94 // Tests UserMayLoad for an extension on the whitelist. | 96 // Tests UserMayLoad for an extension on the whitelist. |
95 TEST_F(ExtensionAdminPolicyTest, UserMayLoadWhitelisted) { | 97 TEST_F(ExtensionAdminPolicyTest, UserMayLoadWhitelisted) { |
96 CreateExtension(Extension::INTERNAL); | 98 CreateExtension(Manifest::INTERNAL); |
97 | 99 |
98 base::ListValue whitelist; | 100 base::ListValue whitelist; |
99 whitelist.Append(Value::CreateStringValue(extension_->id())); | 101 whitelist.Append(Value::CreateStringValue(extension_->id())); |
100 EXPECT_TRUE(ap::UserMayLoad(NULL, &whitelist, NULL, NULL, extension_.get(), | 102 EXPECT_TRUE(ap::UserMayLoad(NULL, &whitelist, NULL, NULL, extension_.get(), |
101 NULL)); | 103 NULL)); |
102 | 104 |
103 base::ListValue blacklist; | 105 base::ListValue blacklist; |
104 blacklist.Append(Value::CreateStringValue(extension_->id())); | 106 blacklist.Append(Value::CreateStringValue(extension_->id())); |
105 EXPECT_TRUE(ap::UserMayLoad(NULL, &whitelist, NULL, NULL, extension_.get(), | 107 EXPECT_TRUE(ap::UserMayLoad(NULL, &whitelist, NULL, NULL, extension_.get(), |
106 NULL)); | 108 NULL)); |
107 string16 error; | 109 string16 error; |
108 EXPECT_TRUE(ap::UserMayLoad(NULL, &whitelist, NULL, NULL, extension_.get(), | 110 EXPECT_TRUE(ap::UserMayLoad(NULL, &whitelist, NULL, NULL, extension_.get(), |
109 &error)); | 111 &error)); |
110 EXPECT_TRUE(error.empty()); | 112 EXPECT_TRUE(error.empty()); |
111 } | 113 } |
112 | 114 |
113 // Tests UserMayLoad for an extension on the blacklist. | 115 // Tests UserMayLoad for an extension on the blacklist. |
114 TEST_F(ExtensionAdminPolicyTest, UserMayLoadBlacklisted) { | 116 TEST_F(ExtensionAdminPolicyTest, UserMayLoadBlacklisted) { |
115 CreateExtension(Extension::INTERNAL); | 117 CreateExtension(Manifest::INTERNAL); |
116 | 118 |
117 // Blacklisted by default. | 119 // Blacklisted by default. |
118 base::ListValue blacklist; | 120 base::ListValue blacklist; |
119 blacklist.Append(Value::CreateStringValue("*")); | 121 blacklist.Append(Value::CreateStringValue("*")); |
120 EXPECT_FALSE(ap::UserMayLoad(&blacklist, NULL, NULL, NULL, extension_.get(), | 122 EXPECT_FALSE(ap::UserMayLoad(&blacklist, NULL, NULL, NULL, extension_.get(), |
121 NULL)); | 123 NULL)); |
122 string16 error; | 124 string16 error; |
123 EXPECT_FALSE(ap::UserMayLoad(&blacklist, NULL, NULL, NULL, extension_.get(), | 125 EXPECT_FALSE(ap::UserMayLoad(&blacklist, NULL, NULL, NULL, extension_.get(), |
124 &error)); | 126 &error)); |
125 EXPECT_FALSE(error.empty()); | 127 EXPECT_FALSE(error.empty()); |
(...skipping 12 matching lines...) Expand all Loading... |
138 whitelist.Append( | 140 whitelist.Append( |
139 Value::CreateStringValue("behllobkkfkfnphdnhnkndlbkcpglgmj")); | 141 Value::CreateStringValue("behllobkkfkfnphdnhnkndlbkcpglgmj")); |
140 EXPECT_FALSE(ap::UserMayLoad(&blacklist, &whitelist, NULL, NULL, | 142 EXPECT_FALSE(ap::UserMayLoad(&blacklist, &whitelist, NULL, NULL, |
141 extension_.get(), NULL)); | 143 extension_.get(), NULL)); |
142 whitelist.Append(Value::CreateStringValue("*")); | 144 whitelist.Append(Value::CreateStringValue("*")); |
143 EXPECT_FALSE(ap::UserMayLoad(&blacklist, &whitelist, NULL, NULL, | 145 EXPECT_FALSE(ap::UserMayLoad(&blacklist, &whitelist, NULL, NULL, |
144 extension_.get(), NULL)); | 146 extension_.get(), NULL)); |
145 } | 147 } |
146 | 148 |
147 TEST_F(ExtensionAdminPolicyTest, UserMayLoadAllowedTypes) { | 149 TEST_F(ExtensionAdminPolicyTest, UserMayLoadAllowedTypes) { |
148 CreateExtension(Extension::INTERNAL); | 150 CreateExtension(Manifest::INTERNAL); |
149 EXPECT_TRUE(ap::UserMayLoad(NULL, NULL, NULL, NULL, extension_.get(), NULL)); | 151 EXPECT_TRUE(ap::UserMayLoad(NULL, NULL, NULL, NULL, extension_.get(), NULL)); |
150 | 152 |
151 base::ListValue allowed_types; | 153 base::ListValue allowed_types; |
152 EXPECT_FALSE(ap::UserMayLoad(NULL, NULL, NULL, &allowed_types, | 154 EXPECT_FALSE(ap::UserMayLoad(NULL, NULL, NULL, &allowed_types, |
153 extension_.get(), NULL)); | 155 extension_.get(), NULL)); |
154 | 156 |
155 allowed_types.AppendInteger(Extension::TYPE_EXTENSION); | 157 allowed_types.AppendInteger(Manifest::TYPE_EXTENSION); |
156 EXPECT_TRUE(ap::UserMayLoad(NULL, NULL, NULL, &allowed_types, | 158 EXPECT_TRUE(ap::UserMayLoad(NULL, NULL, NULL, &allowed_types, |
157 extension_.get(), NULL)); | 159 extension_.get(), NULL)); |
158 | 160 |
159 CreateHostedApp(Extension::INTERNAL); | 161 CreateHostedApp(Manifest::INTERNAL); |
160 EXPECT_FALSE(ap::UserMayLoad(NULL, NULL, NULL, &allowed_types, | 162 EXPECT_FALSE(ap::UserMayLoad(NULL, NULL, NULL, &allowed_types, |
161 extension_.get(), NULL)); | 163 extension_.get(), NULL)); |
162 | 164 |
163 CreateHostedApp(Extension::EXTERNAL_POLICY_DOWNLOAD); | 165 CreateHostedApp(Manifest::EXTERNAL_POLICY_DOWNLOAD); |
164 EXPECT_FALSE(ap::UserMayLoad(NULL, NULL, NULL, &allowed_types, | 166 EXPECT_FALSE(ap::UserMayLoad(NULL, NULL, NULL, &allowed_types, |
165 extension_.get(), NULL)); | 167 extension_.get(), NULL)); |
166 } | 168 } |
167 | 169 |
168 TEST_F(ExtensionAdminPolicyTest, UserMayModifySettings) { | 170 TEST_F(ExtensionAdminPolicyTest, UserMayModifySettings) { |
169 CreateExtension(Extension::INTERNAL); | 171 CreateExtension(Manifest::INTERNAL); |
170 EXPECT_TRUE(ap::UserMayModifySettings(extension_.get(), NULL)); | 172 EXPECT_TRUE(ap::UserMayModifySettings(extension_.get(), NULL)); |
171 string16 error; | 173 string16 error; |
172 EXPECT_TRUE(ap::UserMayModifySettings(extension_.get(), &error)); | 174 EXPECT_TRUE(ap::UserMayModifySettings(extension_.get(), &error)); |
173 EXPECT_TRUE(error.empty()); | 175 EXPECT_TRUE(error.empty()); |
174 | 176 |
175 CreateExtension(Extension::EXTERNAL_POLICY_DOWNLOAD); | 177 CreateExtension(Manifest::EXTERNAL_POLICY_DOWNLOAD); |
176 error.clear(); | 178 error.clear(); |
177 EXPECT_FALSE(ap::UserMayModifySettings(extension_.get(), NULL)); | 179 EXPECT_FALSE(ap::UserMayModifySettings(extension_.get(), NULL)); |
178 EXPECT_FALSE(ap::UserMayModifySettings(extension_.get(), &error)); | 180 EXPECT_FALSE(ap::UserMayModifySettings(extension_.get(), &error)); |
179 EXPECT_FALSE(error.empty()); | 181 EXPECT_FALSE(error.empty()); |
180 } | 182 } |
181 | 183 |
182 TEST_F(ExtensionAdminPolicyTest, MustRemainEnabled) { | 184 TEST_F(ExtensionAdminPolicyTest, MustRemainEnabled) { |
183 CreateExtension(Extension::EXTERNAL_POLICY_DOWNLOAD); | 185 CreateExtension(Manifest::EXTERNAL_POLICY_DOWNLOAD); |
184 EXPECT_TRUE(ap::MustRemainEnabled(extension_.get(), NULL)); | 186 EXPECT_TRUE(ap::MustRemainEnabled(extension_.get(), NULL)); |
185 string16 error; | 187 string16 error; |
186 EXPECT_TRUE(ap::MustRemainEnabled(extension_.get(), &error)); | 188 EXPECT_TRUE(ap::MustRemainEnabled(extension_.get(), &error)); |
187 EXPECT_FALSE(error.empty()); | 189 EXPECT_FALSE(error.empty()); |
188 | 190 |
189 CreateExtension(Extension::INTERNAL); | 191 CreateExtension(Manifest::INTERNAL); |
190 error.clear(); | 192 error.clear(); |
191 EXPECT_FALSE(ap::MustRemainEnabled(extension_.get(), NULL)); | 193 EXPECT_FALSE(ap::MustRemainEnabled(extension_.get(), NULL)); |
192 EXPECT_FALSE(ap::MustRemainEnabled(extension_.get(), &error)); | 194 EXPECT_FALSE(ap::MustRemainEnabled(extension_.get(), &error)); |
193 EXPECT_TRUE(error.empty()); | 195 EXPECT_TRUE(error.empty()); |
194 } | 196 } |
OLD | NEW |