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

Side by Side Diff: extensions/browser/admin_policy_unittest.cc

Issue 500043003: Add PolicyProvider to ExtensionManagement (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@ext-1
Patch Set: rebase again Created 6 years, 3 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 unified diff | Download patch
« no previous file with comments | « extensions/browser/admin_policy.cc ('k') | extensions/browser/extension_prefs.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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 #include "extensions/browser/admin_policy.h"
6
7 #include "base/values.h"
8 #include "extensions/common/extension.h"
9 #include "extensions/common/manifest.h"
10 #include "extensions/common/manifest_constants.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12
13 using base::Value;
14 using extensions::Extension;
15 using extensions::Manifest;
16
17 namespace ap = extensions::admin_policy;
18
19 class ExtensionAdminPolicyTest : public testing::Test {
20 public:
21 void CreateExtension(Manifest::Location location) {
22 base::DictionaryValue values;
23 CreateExtensionFromValues(location, &values);
24 }
25
26 void CreateHostedApp(Manifest::Location location) {
27 base::DictionaryValue values;
28 values.Set(extensions::manifest_keys::kWebURLs, new base::ListValue());
29 values.SetString(extensions::manifest_keys::kLaunchWebURL,
30 "http://www.example.com");
31 CreateExtensionFromValues(location, &values);
32 }
33
34 void CreateExtensionFromValues(Manifest::Location location,
35 base::DictionaryValue* values) {
36 values->SetString(extensions::manifest_keys::kName, "test");
37 values->SetString(extensions::manifest_keys::kVersion, "0.1");
38 std::string error;
39 extension_ = Extension::Create(base::FilePath(), location, *values,
40 Extension::NO_FLAGS, &error);
41 ASSERT_TRUE(extension_.get());
42 }
43
44 protected:
45 scoped_refptr<Extension> extension_;
46 };
47
48 // Tests the flag value indicating that extensions are blacklisted by default.
49 TEST_F(ExtensionAdminPolicyTest, BlacklistedByDefault) {
50 EXPECT_FALSE(ap::BlacklistedByDefault(NULL));
51
52 base::ListValue blacklist;
53 blacklist.Append(new base::StringValue("http://www.google.com"));
54 EXPECT_FALSE(ap::BlacklistedByDefault(&blacklist));
55 blacklist.Append(new base::StringValue("*"));
56 EXPECT_TRUE(ap::BlacklistedByDefault(&blacklist));
57
58 blacklist.Clear();
59 blacklist.Append(new base::StringValue("*"));
60 EXPECT_TRUE(ap::BlacklistedByDefault(&blacklist));
61 }
62
63 // Tests UserMayLoad for required extensions.
64 TEST_F(ExtensionAdminPolicyTest, UserMayLoadRequired) {
65 CreateExtension(Manifest::COMPONENT);
66 EXPECT_TRUE(ap::UserMayLoad(NULL, NULL, NULL, NULL, extension_.get(), NULL));
67 base::string16 error;
68 EXPECT_TRUE(ap::UserMayLoad(NULL, NULL, NULL, NULL, extension_.get(),
69 &error));
70 EXPECT_TRUE(error.empty());
71
72 // Required extensions may load even if they're on the blacklist.
73 base::ListValue blacklist;
74 blacklist.Append(new base::StringValue(extension_->id()));
75 EXPECT_TRUE(ap::UserMayLoad(&blacklist, NULL, NULL, NULL, extension_.get(),
76 NULL));
77
78 blacklist.Append(new base::StringValue("*"));
79 EXPECT_TRUE(ap::UserMayLoad(&blacklist, NULL, NULL, NULL, extension_.get(),
80 NULL));
81 }
82
83 // Tests UserMayLoad when no blacklist exists, or it's empty.
84 TEST_F(ExtensionAdminPolicyTest, UserMayLoadNoBlacklist) {
85 CreateExtension(Manifest::INTERNAL);
86 EXPECT_TRUE(ap::UserMayLoad(NULL, NULL, NULL, NULL, extension_.get(), NULL));
87 base::ListValue blacklist;
88 EXPECT_TRUE(ap::UserMayLoad(&blacklist, NULL, NULL, NULL, extension_.get(),
89 NULL));
90 base::string16 error;
91 EXPECT_TRUE(ap::UserMayLoad(&blacklist, NULL, NULL, NULL, extension_.get(),
92 &error));
93 EXPECT_TRUE(error.empty());
94 }
95
96 // Tests UserMayLoad for an extension on the whitelist.
97 TEST_F(ExtensionAdminPolicyTest, UserMayLoadWhitelisted) {
98 CreateExtension(Manifest::INTERNAL);
99
100 base::ListValue whitelist;
101 whitelist.Append(new base::StringValue(extension_->id()));
102 EXPECT_TRUE(ap::UserMayLoad(NULL, &whitelist, NULL, NULL, extension_.get(),
103 NULL));
104
105 base::ListValue blacklist;
106 blacklist.Append(new base::StringValue(extension_->id()));
107 EXPECT_TRUE(ap::UserMayLoad(NULL, &whitelist, NULL, NULL, extension_.get(),
108 NULL));
109 base::string16 error;
110 EXPECT_TRUE(ap::UserMayLoad(NULL, &whitelist, NULL, NULL, extension_.get(),
111 &error));
112 EXPECT_TRUE(error.empty());
113 }
114
115 // Tests UserMayLoad for an extension on the blacklist.
116 TEST_F(ExtensionAdminPolicyTest, UserMayLoadBlacklisted) {
117 CreateExtension(Manifest::INTERNAL);
118
119 // Blacklisted by default.
120 base::ListValue blacklist;
121 blacklist.Append(new base::StringValue("*"));
122 EXPECT_FALSE(ap::UserMayLoad(&blacklist, NULL, NULL, NULL, extension_.get(),
123 NULL));
124 base::string16 error;
125 EXPECT_FALSE(ap::UserMayLoad(&blacklist, NULL, NULL, NULL, extension_.get(),
126 &error));
127 EXPECT_FALSE(error.empty());
128
129 // Extension on the blacklist, with and without wildcard.
130 blacklist.Append(new base::StringValue(extension_->id()));
131 EXPECT_FALSE(ap::UserMayLoad(&blacklist, NULL, NULL, NULL, extension_.get(),
132 NULL));
133 blacklist.Clear();
134 blacklist.Append(new base::StringValue(extension_->id()));
135 EXPECT_FALSE(ap::UserMayLoad(&blacklist, NULL, NULL, NULL, extension_.get(),
136 NULL));
137
138 // With a whitelist. There's no such thing as a whitelist wildcard.
139 base::ListValue whitelist;
140 whitelist.Append(
141 new base::StringValue("behllobkkfkfnphdnhnkndlbkcpglgmj"));
142 EXPECT_FALSE(ap::UserMayLoad(&blacklist, &whitelist, NULL, NULL,
143 extension_.get(), NULL));
144 whitelist.Append(new base::StringValue("*"));
145 EXPECT_FALSE(ap::UserMayLoad(&blacklist, &whitelist, NULL, NULL,
146 extension_.get(), NULL));
147 }
148
149 TEST_F(ExtensionAdminPolicyTest, UserMayLoadAllowedTypes) {
150 CreateExtension(Manifest::INTERNAL);
151 EXPECT_TRUE(ap::UserMayLoad(NULL, NULL, NULL, NULL, extension_.get(), NULL));
152
153 base::ListValue allowed_types;
154 EXPECT_FALSE(ap::UserMayLoad(NULL, NULL, NULL, &allowed_types,
155 extension_.get(), NULL));
156
157 allowed_types.AppendInteger(Manifest::TYPE_EXTENSION);
158 EXPECT_TRUE(ap::UserMayLoad(NULL, NULL, NULL, &allowed_types,
159 extension_.get(), NULL));
160
161 CreateHostedApp(Manifest::INTERNAL);
162 EXPECT_FALSE(ap::UserMayLoad(NULL, NULL, NULL, &allowed_types,
163 extension_.get(), NULL));
164
165 CreateHostedApp(Manifest::EXTERNAL_POLICY_DOWNLOAD);
166 EXPECT_FALSE(ap::UserMayLoad(NULL, NULL, NULL, &allowed_types,
167 extension_.get(), NULL));
168 }
169
170 TEST_F(ExtensionAdminPolicyTest, UserMayModifySettings) {
171 CreateExtension(Manifest::INTERNAL);
172 EXPECT_TRUE(ap::UserMayModifySettings(extension_.get(), NULL));
173 base::string16 error;
174 EXPECT_TRUE(ap::UserMayModifySettings(extension_.get(), &error));
175 EXPECT_TRUE(error.empty());
176
177 CreateExtension(Manifest::EXTERNAL_POLICY_DOWNLOAD);
178 error.clear();
179 EXPECT_FALSE(ap::UserMayModifySettings(extension_.get(), NULL));
180 EXPECT_FALSE(ap::UserMayModifySettings(extension_.get(), &error));
181 EXPECT_FALSE(error.empty());
182 }
183
184 TEST_F(ExtensionAdminPolicyTest, MustRemainEnabled) {
185 CreateExtension(Manifest::EXTERNAL_POLICY_DOWNLOAD);
186 EXPECT_TRUE(ap::MustRemainEnabled(extension_.get(), NULL));
187 base::string16 error;
188 EXPECT_TRUE(ap::MustRemainEnabled(extension_.get(), &error));
189 EXPECT_FALSE(error.empty());
190
191 CreateExtension(Manifest::INTERNAL);
192 error.clear();
193 EXPECT_FALSE(ap::MustRemainEnabled(extension_.get(), NULL));
194 EXPECT_FALSE(ap::MustRemainEnabled(extension_.get(), &error));
195 EXPECT_TRUE(error.empty());
196 }
OLDNEW
« no previous file with comments | « extensions/browser/admin_policy.cc ('k') | extensions/browser/extension_prefs.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698