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

Side by Side Diff: chrome/browser/extensions/management_policy_unittest.cc

Issue 10382149: Refactor the various ways to control what users can do to extensions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 6 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 | Annotate | Revision Log
Property Changes:
Added: svn:eol-style
+ LF
OLDNEW
(Empty)
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/utf_string_conversions.h"
6 #include "chrome/browser/extensions/management_policy.h"
7 #include "chrome/browser/extensions/test_management_policy.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9
10 typedef extensions::TestManagementPolicyProvider TestProvider;
11 using extensions::Extension;
12
13 class ManagementPolicyTest : public testing::Test {
14 public:
15 void SetUp() {
16 allow_all_.SetProhibitedActions(TestProvider::ALLOW_ALL);
17 no_modify_status_.SetProhibitedActions(
18 TestProvider::PROHIBIT_MODIFY_STATUS);
19 no_load_.SetProhibitedActions(TestProvider::PROHIBIT_LOAD);
20 must_remain_enabled_.SetProhibitedActions(
21 TestProvider::MUST_REMAIN_ENABLED);
22 restrict_all_.SetProhibitedActions(TestProvider::PROHIBIT_MODIFY_STATUS |
23 TestProvider::PROHIBIT_LOAD |
24 TestProvider::MUST_REMAIN_ENABLED);
25 }
26
27 protected:
28 extensions::ManagementPolicy policy_;
29
30 TestProvider allow_all_;
31 TestProvider no_modify_status_;
32 TestProvider no_load_;
33 TestProvider must_remain_enabled_;
34 TestProvider restrict_all_;
35 };
36
37 TEST_F(ManagementPolicyTest, RegisterAndUnregister) {
38 EXPECT_EQ(0, policy_.GetNumProviders());
39 policy_.RegisterProvider(&allow_all_);
40 EXPECT_EQ(1, policy_.GetNumProviders());
41 policy_.RegisterProvider(&allow_all_);
42 EXPECT_EQ(1, policy_.GetNumProviders());
43
44 policy_.RegisterProvider(&no_modify_status_);
45 EXPECT_EQ(2, policy_.GetNumProviders());
46 policy_.UnregisterProvider(&allow_all_);
47 EXPECT_EQ(1, policy_.GetNumProviders());
48 policy_.UnregisterProvider(&allow_all_);
49 EXPECT_EQ(1, policy_.GetNumProviders());
50 policy_.UnregisterProvider(&no_modify_status_);
51 EXPECT_EQ(0, policy_.GetNumProviders());
52
53 policy_.RegisterProvider(&allow_all_);
54 policy_.RegisterProvider(&no_modify_status_);
55 EXPECT_EQ(2, policy_.GetNumProviders());
56 policy_.UnregisterAllProviders();
57 EXPECT_EQ(0, policy_.GetNumProviders());
58 }
59
60 TEST_F(ManagementPolicyTest, UserMayLoad) {
61 // No providers registered.
62 string16 error;
63 // The extension and location are irrelevant to the
64 // TestManagementPolicyProviders.
65 EXPECT_TRUE(policy_.UserMayLoad(NULL, &error));
66 EXPECT_TRUE(error.empty());
67
68 // One provider, no relevant restriction.
69 policy_.RegisterProvider(&no_modify_status_);
70 EXPECT_TRUE(policy_.UserMayLoad(NULL, &error));
71 EXPECT_TRUE(error.empty());
72
73 // Two providers, no relevant restrictions.
74 policy_.RegisterProvider(&must_remain_enabled_);
75 EXPECT_TRUE(policy_.UserMayLoad(NULL, &error));
76 EXPECT_TRUE(error.empty());
77
78 // Three providers, one with a relevant restriction.
79 policy_.RegisterProvider(&no_load_);
80 EXPECT_FALSE(policy_.UserMayLoad(NULL, &error));
81 EXPECT_FALSE(error.empty());
82
83 // Remove the restriction.
84 policy_.UnregisterProvider(&no_load_);
85 error.clear();
86 EXPECT_TRUE(policy_.UserMayLoad(NULL, &error));
87 EXPECT_TRUE(error.empty());
88 }
89 TEST_F(ManagementPolicyTest, UserMayModifySettings) {
90 // No providers registered.
91 string16 error;
92 EXPECT_TRUE(policy_.UserMayModifySettings(NULL, &error));
93 EXPECT_TRUE(error.empty());
94
95 // One provider, no relevant restriction.
96 policy_.RegisterProvider(&allow_all_);
97 EXPECT_TRUE(policy_.UserMayModifySettings(NULL, &error));
98 EXPECT_TRUE(error.empty());
99
100 // Two providers, no relevant restrictions.
101 policy_.RegisterProvider(&no_load_);
102 EXPECT_TRUE(policy_.UserMayModifySettings(NULL, &error));
103 EXPECT_TRUE(error.empty());
104
105 // Three providers, one with a relevant restriction.
106 policy_.RegisterProvider(&no_modify_status_);
107 EXPECT_FALSE(policy_.UserMayModifySettings(NULL, &error));
108 EXPECT_FALSE(error.empty());
109
110 // Remove the restriction.
111 policy_.UnregisterProvider(&no_modify_status_);
112 error.clear();
113 EXPECT_TRUE(policy_.UserMayModifySettings(NULL, &error));
114 EXPECT_TRUE(error.empty());
115 }
116
117 TEST_F(ManagementPolicyTest, MustRemainEnabled) {
118 // No providers registered.
119 string16 error;
120 EXPECT_FALSE(policy_.MustRemainEnabled(NULL, &error));
121 EXPECT_TRUE(error.empty());
122
123 // One provider, no relevant restriction.
124 policy_.RegisterProvider(&allow_all_);
125 EXPECT_FALSE(policy_.MustRemainEnabled(NULL, &error));
126 EXPECT_TRUE(error.empty());
127
128 // Two providers, no relevant restrictions.
129 policy_.RegisterProvider(&no_modify_status_);
130 EXPECT_FALSE(policy_.MustRemainEnabled(NULL, &error));
131 EXPECT_TRUE(error.empty());
132
133 // Three providers, one with a relevant restriction.
134 policy_.RegisterProvider(&must_remain_enabled_);
135 EXPECT_TRUE(policy_.MustRemainEnabled(NULL, &error));
136 EXPECT_FALSE(error.empty());
137
138 // Remove the restriction.
139 policy_.UnregisterProvider(&must_remain_enabled_);
140 error.clear();
141 EXPECT_FALSE(policy_.MustRemainEnabled(NULL, &error));
142 EXPECT_TRUE(error.empty());
143 }
144
145 // Tests error handling in the ManagementPolicy.
146 TEST_F(ManagementPolicyTest, ErrorHandling) {
147 // The error parameter should be unchanged if no restriction was found.
148 std::string original_error = "Ceci est en effet une erreur.";
149 string16 original_error16 = UTF8ToUTF16(original_error);
150 string16 error = original_error16;
151 EXPECT_TRUE(policy_.UserMayLoad(NULL, &error));
152 EXPECT_EQ(original_error, UTF16ToUTF8(error));
153 EXPECT_TRUE(policy_.UserMayModifySettings(NULL, &error));
154 EXPECT_EQ(original_error, UTF16ToUTF8(error));
155 EXPECT_FALSE(policy_.MustRemainEnabled(NULL, &error));
156 EXPECT_EQ(original_error, UTF16ToUTF8(error));
157
158 // Ensure no crashes if no error message was requested.
159 EXPECT_TRUE(policy_.UserMayLoad(NULL, NULL));
160 EXPECT_TRUE(policy_.UserMayModifySettings(NULL, NULL));
161 EXPECT_FALSE(policy_.MustRemainEnabled(NULL, NULL));
162 policy_.RegisterProvider(&restrict_all_);
163 EXPECT_FALSE(policy_.UserMayLoad(NULL, NULL));
164 EXPECT_FALSE(policy_.UserMayModifySettings(NULL, NULL));
165 EXPECT_TRUE(policy_.MustRemainEnabled(NULL, NULL));
166
167 // Make sure returned error is correct.
168 error = original_error16;
169 EXPECT_FALSE(policy_.UserMayLoad(NULL, &error));
170 EXPECT_EQ(UTF8ToUTF16(TestProvider::expected_error()), error);
171 error = original_error16;
172 EXPECT_FALSE(policy_.UserMayModifySettings(NULL, &error));
173 EXPECT_EQ(UTF8ToUTF16(TestProvider::expected_error()), error);
174 error = original_error16;
175 EXPECT_TRUE(policy_.MustRemainEnabled(NULL, &error));
176 EXPECT_EQ(UTF8ToUTF16(TestProvider::expected_error()), error);
177 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/management_policy.cc ('k') | chrome/browser/extensions/test_extension_system.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698