OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "components/policy/core/browser/configuration_policy_pref_store.h" | 5 #include "components/policy/core/browser/configuration_policy_pref_store.h" |
6 | 6 |
| 7 #include <memory> |
7 #include <string> | 8 #include <string> |
| 9 #include <utility> |
8 | 10 |
9 #include "base/callback.h" | 11 #include "base/callback.h" |
10 #include "base/files/file_path.h" | 12 #include "base/files/file_path.h" |
11 #include "base/memory/ptr_util.h" | 13 #include "base/memory/ptr_util.h" |
12 #include "base/run_loop.h" | 14 #include "base/run_loop.h" |
13 #include "components/policy/core/browser/configuration_policy_handler.h" | 15 #include "components/policy/core/browser/configuration_policy_handler.h" |
14 #include "components/policy/core/browser/configuration_policy_pref_store_test.h" | 16 #include "components/policy/core/browser/configuration_policy_pref_store_test.h" |
15 #include "components/policy/core/common/external_data_fetcher.h" | 17 #include "components/policy/core/common/external_data_fetcher.h" |
16 #include "components/policy/core/common/policy_details.h" | 18 #include "components/policy/core/common/policy_details.h" |
17 #include "components/policy/core/common/policy_map.h" | 19 #include "components/policy/core/common/policy_map.h" |
(...skipping 29 matching lines...) Expand all Loading... |
47 base::WrapUnique<ConfigurationPolicyHandler>(new SimplePolicyHandler( | 49 base::WrapUnique<ConfigurationPolicyHandler>(new SimplePolicyHandler( |
48 kTestPolicy, kTestPref, base::Value::TYPE_LIST))); | 50 kTestPolicy, kTestPref, base::Value::TYPE_LIST))); |
49 } | 51 } |
50 }; | 52 }; |
51 | 53 |
52 TEST_F(ConfigurationPolicyPrefStoreListTest, GetDefault) { | 54 TEST_F(ConfigurationPolicyPrefStoreListTest, GetDefault) { |
53 EXPECT_FALSE(store_->GetValue(kTestPref, NULL)); | 55 EXPECT_FALSE(store_->GetValue(kTestPref, NULL)); |
54 } | 56 } |
55 | 57 |
56 TEST_F(ConfigurationPolicyPrefStoreListTest, SetValue) { | 58 TEST_F(ConfigurationPolicyPrefStoreListTest, SetValue) { |
57 base::ListValue* in_value = new base::ListValue(); | 59 std::unique_ptr<base::ListValue> in_value(new base::ListValue()); |
58 in_value->Append(new base::StringValue("test1")); | 60 in_value->Append(new base::StringValue("test1")); |
59 in_value->Append(new base::StringValue("test2,")); | 61 in_value->Append(new base::StringValue("test2,")); |
60 PolicyMap policy; | 62 PolicyMap policy; |
61 policy.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 63 policy.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
62 POLICY_SOURCE_CLOUD, in_value, nullptr); | 64 POLICY_SOURCE_CLOUD, in_value->CreateDeepCopy(), nullptr); |
63 UpdateProviderPolicy(policy); | 65 UpdateProviderPolicy(policy); |
64 const base::Value* value = NULL; | 66 const base::Value* value = NULL; |
65 EXPECT_TRUE(store_->GetValue(kTestPref, &value)); | 67 EXPECT_TRUE(store_->GetValue(kTestPref, &value)); |
66 ASSERT_TRUE(value); | 68 ASSERT_TRUE(value); |
67 EXPECT_TRUE(in_value->Equals(value)); | 69 EXPECT_TRUE(in_value->Equals(value)); |
68 } | 70 } |
69 | 71 |
70 // Test cases for string-valued policy settings. | 72 // Test cases for string-valued policy settings. |
71 class ConfigurationPolicyPrefStoreStringTest | 73 class ConfigurationPolicyPrefStoreStringTest |
72 : public ConfigurationPolicyPrefStoreTest { | 74 : public ConfigurationPolicyPrefStoreTest { |
73 void SetUp() override { | 75 void SetUp() override { |
74 handler_list_.AddHandler( | 76 handler_list_.AddHandler( |
75 base::WrapUnique<ConfigurationPolicyHandler>(new SimplePolicyHandler( | 77 base::WrapUnique<ConfigurationPolicyHandler>(new SimplePolicyHandler( |
76 kTestPolicy, kTestPref, base::Value::TYPE_STRING))); | 78 kTestPolicy, kTestPref, base::Value::TYPE_STRING))); |
77 } | 79 } |
78 }; | 80 }; |
79 | 81 |
80 TEST_F(ConfigurationPolicyPrefStoreStringTest, GetDefault) { | 82 TEST_F(ConfigurationPolicyPrefStoreStringTest, GetDefault) { |
81 EXPECT_FALSE(store_->GetValue(kTestPref, NULL)); | 83 EXPECT_FALSE(store_->GetValue(kTestPref, NULL)); |
82 } | 84 } |
83 | 85 |
84 TEST_F(ConfigurationPolicyPrefStoreStringTest, SetValue) { | 86 TEST_F(ConfigurationPolicyPrefStoreStringTest, SetValue) { |
85 PolicyMap policy; | 87 PolicyMap policy; |
86 policy.Set(kTestPolicy, | 88 policy.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
87 POLICY_LEVEL_MANDATORY, | |
88 POLICY_SCOPE_USER, | |
89 POLICY_SOURCE_CLOUD, | 89 POLICY_SOURCE_CLOUD, |
90 new base::StringValue("http://chromium.org"), | 90 base::WrapUnique(new base::StringValue("http://chromium.org")), |
91 NULL); | 91 nullptr); |
92 UpdateProviderPolicy(policy); | 92 UpdateProviderPolicy(policy); |
93 const base::Value* value = NULL; | 93 const base::Value* value = NULL; |
94 EXPECT_TRUE(store_->GetValue(kTestPref, &value)); | 94 EXPECT_TRUE(store_->GetValue(kTestPref, &value)); |
95 ASSERT_TRUE(value); | 95 ASSERT_TRUE(value); |
96 EXPECT_TRUE(base::StringValue("http://chromium.org").Equals(value)); | 96 EXPECT_TRUE(base::StringValue("http://chromium.org").Equals(value)); |
97 } | 97 } |
98 | 98 |
99 // Test cases for boolean-valued policy settings. | 99 // Test cases for boolean-valued policy settings. |
100 class ConfigurationPolicyPrefStoreBooleanTest | 100 class ConfigurationPolicyPrefStoreBooleanTest |
101 : public ConfigurationPolicyPrefStoreTest { | 101 : public ConfigurationPolicyPrefStoreTest { |
102 void SetUp() override { | 102 void SetUp() override { |
103 handler_list_.AddHandler( | 103 handler_list_.AddHandler( |
104 base::WrapUnique<ConfigurationPolicyHandler>(new SimplePolicyHandler( | 104 base::WrapUnique<ConfigurationPolicyHandler>(new SimplePolicyHandler( |
105 kTestPolicy, kTestPref, base::Value::TYPE_BOOLEAN))); | 105 kTestPolicy, kTestPref, base::Value::TYPE_BOOLEAN))); |
106 } | 106 } |
107 }; | 107 }; |
108 | 108 |
109 TEST_F(ConfigurationPolicyPrefStoreBooleanTest, GetDefault) { | 109 TEST_F(ConfigurationPolicyPrefStoreBooleanTest, GetDefault) { |
110 EXPECT_FALSE(store_->GetValue(kTestPref, NULL)); | 110 EXPECT_FALSE(store_->GetValue(kTestPref, NULL)); |
111 } | 111 } |
112 | 112 |
113 TEST_F(ConfigurationPolicyPrefStoreBooleanTest, SetValue) { | 113 TEST_F(ConfigurationPolicyPrefStoreBooleanTest, SetValue) { |
114 PolicyMap policy; | 114 PolicyMap policy; |
115 policy.Set(kTestPolicy, | 115 policy.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
116 POLICY_LEVEL_MANDATORY, | |
117 POLICY_SCOPE_USER, | |
118 POLICY_SOURCE_CLOUD, | 116 POLICY_SOURCE_CLOUD, |
119 new base::FundamentalValue(false), | 117 base::WrapUnique(new base::FundamentalValue(false)), nullptr); |
120 NULL); | |
121 UpdateProviderPolicy(policy); | 118 UpdateProviderPolicy(policy); |
122 const base::Value* value = NULL; | 119 const base::Value* value = NULL; |
123 EXPECT_TRUE(store_->GetValue(kTestPref, &value)); | 120 EXPECT_TRUE(store_->GetValue(kTestPref, &value)); |
124 ASSERT_TRUE(value); | 121 ASSERT_TRUE(value); |
125 bool boolean_value = true; | 122 bool boolean_value = true; |
126 bool result = value->GetAsBoolean(&boolean_value); | 123 bool result = value->GetAsBoolean(&boolean_value); |
127 ASSERT_TRUE(result); | 124 ASSERT_TRUE(result); |
128 EXPECT_FALSE(boolean_value); | 125 EXPECT_FALSE(boolean_value); |
129 | 126 |
130 policy.Set(kTestPolicy, | 127 policy.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
131 POLICY_LEVEL_MANDATORY, | |
132 POLICY_SCOPE_USER, | |
133 POLICY_SOURCE_CLOUD, | 128 POLICY_SOURCE_CLOUD, |
134 new base::FundamentalValue(true), | 129 base::WrapUnique(new base::FundamentalValue(true)), nullptr); |
135 NULL); | |
136 UpdateProviderPolicy(policy); | 130 UpdateProviderPolicy(policy); |
137 value = NULL; | 131 value = NULL; |
138 EXPECT_TRUE(store_->GetValue(kTestPref, &value)); | 132 EXPECT_TRUE(store_->GetValue(kTestPref, &value)); |
139 boolean_value = false; | 133 boolean_value = false; |
140 result = value->GetAsBoolean(&boolean_value); | 134 result = value->GetAsBoolean(&boolean_value); |
141 ASSERT_TRUE(result); | 135 ASSERT_TRUE(result); |
142 EXPECT_TRUE(boolean_value); | 136 EXPECT_TRUE(boolean_value); |
143 } | 137 } |
144 | 138 |
145 // Test cases for integer-valued policy settings. | 139 // Test cases for integer-valued policy settings. |
146 class ConfigurationPolicyPrefStoreIntegerTest | 140 class ConfigurationPolicyPrefStoreIntegerTest |
147 : public ConfigurationPolicyPrefStoreTest { | 141 : public ConfigurationPolicyPrefStoreTest { |
148 void SetUp() override { | 142 void SetUp() override { |
149 handler_list_.AddHandler( | 143 handler_list_.AddHandler( |
150 base::WrapUnique<ConfigurationPolicyHandler>(new SimplePolicyHandler( | 144 base::WrapUnique<ConfigurationPolicyHandler>(new SimplePolicyHandler( |
151 kTestPolicy, kTestPref, base::Value::TYPE_INTEGER))); | 145 kTestPolicy, kTestPref, base::Value::TYPE_INTEGER))); |
152 } | 146 } |
153 }; | 147 }; |
154 | 148 |
155 TEST_F(ConfigurationPolicyPrefStoreIntegerTest, GetDefault) { | 149 TEST_F(ConfigurationPolicyPrefStoreIntegerTest, GetDefault) { |
156 EXPECT_FALSE(store_->GetValue(kTestPref, NULL)); | 150 EXPECT_FALSE(store_->GetValue(kTestPref, NULL)); |
157 } | 151 } |
158 | 152 |
159 TEST_F(ConfigurationPolicyPrefStoreIntegerTest, SetValue) { | 153 TEST_F(ConfigurationPolicyPrefStoreIntegerTest, SetValue) { |
160 PolicyMap policy; | 154 PolicyMap policy; |
161 policy.Set(kTestPolicy, | 155 policy.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
162 POLICY_LEVEL_MANDATORY, | |
163 POLICY_SCOPE_USER, | |
164 POLICY_SOURCE_CLOUD, | 156 POLICY_SOURCE_CLOUD, |
165 new base::FundamentalValue(2), | 157 base::WrapUnique(new base::FundamentalValue(2)), nullptr); |
166 NULL); | |
167 UpdateProviderPolicy(policy); | 158 UpdateProviderPolicy(policy); |
168 const base::Value* value = NULL; | 159 const base::Value* value = NULL; |
169 EXPECT_TRUE(store_->GetValue(kTestPref, &value)); | 160 EXPECT_TRUE(store_->GetValue(kTestPref, &value)); |
170 EXPECT_TRUE(base::FundamentalValue(2).Equals(value)); | 161 EXPECT_TRUE(base::FundamentalValue(2).Equals(value)); |
171 } | 162 } |
172 | 163 |
173 // Exercises the policy refresh mechanism. | 164 // Exercises the policy refresh mechanism. |
174 class ConfigurationPolicyPrefStoreRefreshTest | 165 class ConfigurationPolicyPrefStoreRefreshTest |
175 : public ConfigurationPolicyPrefStoreTest { | 166 : public ConfigurationPolicyPrefStoreTest { |
176 protected: | 167 protected: |
(...skipping 11 matching lines...) Expand all Loading... |
188 } | 179 } |
189 | 180 |
190 PrefStoreObserverMock observer_; | 181 PrefStoreObserverMock observer_; |
191 }; | 182 }; |
192 | 183 |
193 TEST_F(ConfigurationPolicyPrefStoreRefreshTest, Refresh) { | 184 TEST_F(ConfigurationPolicyPrefStoreRefreshTest, Refresh) { |
194 const base::Value* value = NULL; | 185 const base::Value* value = NULL; |
195 EXPECT_FALSE(store_->GetValue(kTestPolicy, NULL)); | 186 EXPECT_FALSE(store_->GetValue(kTestPolicy, NULL)); |
196 | 187 |
197 PolicyMap policy; | 188 PolicyMap policy; |
198 policy.Set(kTestPolicy, | 189 policy.Set(kTestPolicy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
199 POLICY_LEVEL_MANDATORY, | |
200 POLICY_SCOPE_USER, | |
201 POLICY_SOURCE_CLOUD, | 190 POLICY_SOURCE_CLOUD, |
202 new base::StringValue("http://www.chromium.org"), | 191 base::WrapUnique(new base::StringValue("http://www.chromium.org")), |
203 NULL); | 192 nullptr); |
204 UpdateProviderPolicy(policy); | 193 UpdateProviderPolicy(policy); |
205 observer_.VerifyAndResetChangedKey(kTestPref); | 194 observer_.VerifyAndResetChangedKey(kTestPref); |
206 EXPECT_TRUE(store_->GetValue(kTestPref, &value)); | 195 EXPECT_TRUE(store_->GetValue(kTestPref, &value)); |
207 EXPECT_TRUE(base::StringValue("http://www.chromium.org").Equals(value)); | 196 EXPECT_TRUE(base::StringValue("http://www.chromium.org").Equals(value)); |
208 | 197 |
209 UpdateProviderPolicy(policy); | 198 UpdateProviderPolicy(policy); |
210 EXPECT_TRUE(observer_.changed_keys.empty()); | 199 EXPECT_TRUE(observer_.changed_keys.empty()); |
211 | 200 |
212 policy.Erase(kTestPolicy); | 201 policy.Erase(kTestPolicy); |
213 UpdateProviderPolicy(policy); | 202 UpdateProviderPolicy(policy); |
214 observer_.VerifyAndResetChangedKey(kTestPref); | 203 observer_.VerifyAndResetChangedKey(kTestPref); |
215 EXPECT_FALSE(store_->GetValue(kTestPref, NULL)); | 204 EXPECT_FALSE(store_->GetValue(kTestPref, NULL)); |
216 } | 205 } |
217 | 206 |
218 TEST_F(ConfigurationPolicyPrefStoreRefreshTest, Initialization) { | 207 TEST_F(ConfigurationPolicyPrefStoreRefreshTest, Initialization) { |
219 EXPECT_FALSE(store_->IsInitializationComplete()); | 208 EXPECT_FALSE(store_->IsInitializationComplete()); |
220 EXPECT_CALL(provider_, IsInitializationComplete(POLICY_DOMAIN_CHROME)) | 209 EXPECT_CALL(provider_, IsInitializationComplete(POLICY_DOMAIN_CHROME)) |
221 .WillRepeatedly(Return(true)); | 210 .WillRepeatedly(Return(true)); |
222 PolicyMap policy; | 211 PolicyMap policy; |
223 UpdateProviderPolicy(policy); | 212 UpdateProviderPolicy(policy); |
224 EXPECT_TRUE(observer_.initialized); | 213 EXPECT_TRUE(observer_.initialized); |
225 EXPECT_TRUE(observer_.initialization_success); | 214 EXPECT_TRUE(observer_.initialization_success); |
226 Mock::VerifyAndClearExpectations(&observer_); | 215 Mock::VerifyAndClearExpectations(&observer_); |
227 EXPECT_TRUE(store_->IsInitializationComplete()); | 216 EXPECT_TRUE(store_->IsInitializationComplete()); |
228 } | 217 } |
229 | 218 |
230 } // namespace policy | 219 } // namespace policy |
OLD | NEW |