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

Side by Side Diff: chrome/browser/policy/cloud_policy_cache_unittest.cc

Issue 6520008: Device policy infrastructure (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix nits Created 9 years, 10 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
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/policy/cloud_policy_cache.h" 5 #include "chrome/browser/policy/cloud_policy_cache.h"
6 6
7 #include <limits> 7 #include <limits>
8 #include <string> 8 #include <string>
9 9
10 #include "base/file_util.h" 10 #include "base/file_util.h"
11 #include "base/message_loop.h" 11 #include "base/message_loop.h"
12 #include "base/scoped_temp_dir.h" 12 #include "base/scoped_temp_dir.h"
13 #include "base/values.h" 13 #include "base/values.h"
14 #include "chrome/browser/browser_thread.h" 14 #include "chrome/browser/browser_thread.h"
15 #include "chrome/browser/policy/configuration_policy_provider.h"
15 #include "chrome/browser/policy/proto/cloud_policy.pb.h" 16 #include "chrome/browser/policy/proto/cloud_policy.pb.h"
16 #include "chrome/browser/policy/proto/device_management_backend.pb.h" 17 #include "chrome/browser/policy/proto/device_management_backend.pb.h"
17 // TODO(jkummerow): remove this import when removing old DMPC test cases. 18 // TODO(jkummerow): remove this import when removing old DMPC test cases.
18 #include "chrome/browser/policy/proto/device_management_constants.h" 19 #include "chrome/browser/policy/proto/device_management_constants.h"
19 #include "chrome/browser/policy/proto/device_management_local.pb.h" 20 #include "chrome/browser/policy/proto/device_management_local.pb.h"
21 #include "testing/gmock/include/gmock/gmock.h"
20 #include "testing/gtest/include/gtest/gtest.h" 22 #include "testing/gtest/include/gtest/gtest.h"
21 23
22 namespace policy { 24 namespace policy {
23 25
24 // Decodes a CloudPolicySettings object into two maps with mandatory and 26 // Decodes a CloudPolicySettings object into two maps with mandatory and
25 // recommended settings, respectively. The implementation is generated code 27 // recommended settings, respectively. The implementation is generated code
26 // in policy/cloud_policy_generated.cc. 28 // in policy/cloud_policy_generated.cc.
27 void DecodePolicy(const em::CloudPolicySettings& policy, 29 void DecodePolicy(const em::CloudPolicySettings& policy,
28 PolicyMap* mandatory, PolicyMap* recommended); 30 PolicyMap* mandatory, PolicyMap* recommended);
29 31
30 // The implementations of these methods are in cloud_policy_generated.cc. 32 // The implementations of these methods are in cloud_policy_generated.cc.
31 Value* DecodeIntegerValue(google::protobuf::int64 value); 33 Value* DecodeIntegerValue(google::protobuf::int64 value);
32 ListValue* DecodeStringList(const em::StringList& string_list); 34 ListValue* DecodeStringList(const em::StringList& string_list);
33 35
36 class MockConfigurationPolicyProviderObserver
37 : public ConfigurationPolicyProvider::Observer {
38 public:
39 MockConfigurationPolicyProviderObserver() {}
40 virtual ~MockConfigurationPolicyProviderObserver() {}
41 MOCK_METHOD0(OnUpdatePolicy, void());
42 void OnProviderGoingAway() {}
43 };
44
34 // Tests the device management policy cache. 45 // Tests the device management policy cache.
35 class CloudPolicyCacheTest : public testing::Test { 46 class CloudPolicyCacheTest : public testing::Test {
36 protected: 47 protected:
37 CloudPolicyCacheTest() 48 CloudPolicyCacheTest()
38 : loop_(MessageLoop::TYPE_UI), 49 : loop_(MessageLoop::TYPE_UI),
39 ui_thread_(BrowserThread::UI, &loop_), 50 ui_thread_(BrowserThread::UI, &loop_),
40 file_thread_(BrowserThread::FILE, &loop_) {} 51 file_thread_(BrowserThread::FILE, &loop_) {}
41 52
42 void SetUp() { 53 void SetUp() {
43 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); 54 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 89
79 void WritePolicy(const em::CloudPolicyResponse& policy) { 90 void WritePolicy(const em::CloudPolicyResponse& policy) {
80 std::string data; 91 std::string data;
81 em::CachedCloudPolicyResponse cached_policy; 92 em::CachedCloudPolicyResponse cached_policy;
82 cached_policy.mutable_cloud_policy()->CopyFrom(policy); 93 cached_policy.mutable_cloud_policy()->CopyFrom(policy);
83 EXPECT_TRUE(cached_policy.SerializeToString(&data)); 94 EXPECT_TRUE(cached_policy.SerializeToString(&data));
84 int size = static_cast<int>(data.size()); 95 int size = static_cast<int>(data.size());
85 EXPECT_EQ(size, file_util::WriteFile(test_file(), data.c_str(), size)); 96 EXPECT_EQ(size, file_util::WriteFile(test_file(), data.c_str(), size));
86 } 97 }
87 98
99 // Takes ownership of |policy_response|.
100 void SetPolicy(CloudPolicyCache* cache,
101 em::CloudPolicyResponse* policy_response,
102 bool expect_changed_policy) {
103 scoped_ptr<em::CloudPolicyResponse> policy(policy_response);
104 ConfigurationPolicyObserverRegistrar registrar;
105 registrar.Init(cache->GetManagedPolicyProvider(), &observer);
106 if (expect_changed_policy)
107 EXPECT_CALL(observer, OnUpdatePolicy()).Times(1);
108 else
109 EXPECT_CALL(observer, OnUpdatePolicy()).Times(0);
110 cache->SetPolicy(*policy);
111 testing::Mock::VerifyAndClearExpectations(&observer);
112 }
113
88 FilePath test_file() { 114 FilePath test_file() {
89 return temp_dir_.path().AppendASCII("CloudPolicyCacheTest"); 115 return temp_dir_.path().AppendASCII("CloudPolicyCacheTest");
90 } 116 }
91 117
118 const PolicyMap& mandatory_policy(const CloudPolicyCache& cache) {
119 return cache.mandatory_policy_;
120 }
121
122 const PolicyMap& recommended_policy(const CloudPolicyCache& cache) {
123 return cache.recommended_policy_;
124 }
125
92 MessageLoop loop_; 126 MessageLoop loop_;
127 MockConfigurationPolicyProviderObserver observer;
93 128
94 private: 129 private:
95 ScopedTempDir temp_dir_; 130 ScopedTempDir temp_dir_;
96 BrowserThread ui_thread_; 131 BrowserThread ui_thread_;
97 BrowserThread file_thread_; 132 BrowserThread file_thread_;
98 }; 133 };
99 134
100 TEST_F(CloudPolicyCacheTest, DecodePolicy) { 135 TEST_F(CloudPolicyCacheTest, DecodePolicy) {
101 em::CloudPolicySettings settings; 136 em::CloudPolicySettings settings;
102 settings.mutable_homepagelocation()->set_homepagelocation("chromium.org"); 137 settings.mutable_homepagelocation()->set_homepagelocation("chromium.org");
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 scoped_ptr<ListValue> decoded(DecodeStringList(string_list)); 185 scoped_ptr<ListValue> decoded(DecodeStringList(string_list));
151 ListValue expected; 186 ListValue expected;
152 expected.Append(Value::CreateStringValue("ponies")); 187 expected.Append(Value::CreateStringValue("ponies"));
153 expected.Append(Value::CreateStringValue("more ponies")); 188 expected.Append(Value::CreateStringValue("more ponies"));
154 EXPECT_TRUE(decoded->Equals(&expected)); 189 EXPECT_TRUE(decoded->Equals(&expected));
155 } 190 }
156 191
157 TEST_F(CloudPolicyCacheTest, Empty) { 192 TEST_F(CloudPolicyCacheTest, Empty) {
158 CloudPolicyCache cache(test_file()); 193 CloudPolicyCache cache(test_file());
159 PolicyMap empty; 194 PolicyMap empty;
160 EXPECT_TRUE(empty.Equals(*cache.GetMandatoryPolicy())); 195 EXPECT_TRUE(empty.Equals(mandatory_policy(cache)));
161 EXPECT_TRUE(empty.Equals(*cache.GetRecommendedPolicy())); 196 EXPECT_TRUE(empty.Equals(recommended_policy(cache)));
162 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); 197 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time());
163 } 198 }
164 199
165 TEST_F(CloudPolicyCacheTest, LoadNoFile) { 200 TEST_F(CloudPolicyCacheTest, LoadNoFile) {
166 CloudPolicyCache cache(test_file()); 201 CloudPolicyCache cache(test_file());
167 cache.LoadPolicyFromFile(); 202 cache.LoadFromFile();
168 PolicyMap empty; 203 PolicyMap empty;
169 EXPECT_TRUE(empty.Equals(*cache.GetMandatoryPolicy())); 204 EXPECT_TRUE(empty.Equals(mandatory_policy(cache)));
170 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); 205 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time());
171 } 206 }
172 207
173 TEST_F(CloudPolicyCacheTest, RejectFuture) { 208 TEST_F(CloudPolicyCacheTest, RejectFuture) {
174 scoped_ptr<em::CloudPolicyResponse> policy_response( 209 scoped_ptr<em::CloudPolicyResponse> policy_response(
175 CreateHomepagePolicy("", base::Time::NowFromSystemTime() + 210 CreateHomepagePolicy("", base::Time::NowFromSystemTime() +
176 base::TimeDelta::FromMinutes(5), 211 base::TimeDelta::FromMinutes(5),
177 em::PolicyOptions::MANDATORY)); 212 em::PolicyOptions::MANDATORY));
178 WritePolicy(*policy_response); 213 WritePolicy(*policy_response);
179 CloudPolicyCache cache(test_file()); 214 CloudPolicyCache cache(test_file());
180 cache.LoadPolicyFromFile(); 215 cache.LoadFromFile();
181 PolicyMap empty; 216 PolicyMap empty;
182 EXPECT_TRUE(empty.Equals(*cache.GetMandatoryPolicy())); 217 EXPECT_TRUE(empty.Equals(mandatory_policy(cache)));
183 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); 218 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time());
184 } 219 }
185 220
186 TEST_F(CloudPolicyCacheTest, LoadWithFile) { 221 TEST_F(CloudPolicyCacheTest, LoadWithFile) {
187 scoped_ptr<em::CloudPolicyResponse> policy_response( 222 scoped_ptr<em::CloudPolicyResponse> policy_response(
188 CreateHomepagePolicy("", base::Time::NowFromSystemTime(), 223 CreateHomepagePolicy("", base::Time::NowFromSystemTime(),
189 em::PolicyOptions::MANDATORY)); 224 em::PolicyOptions::MANDATORY));
190 WritePolicy(*policy_response); 225 WritePolicy(*policy_response);
191 CloudPolicyCache cache(test_file()); 226 CloudPolicyCache cache(test_file());
192 cache.LoadPolicyFromFile(); 227 cache.LoadFromFile();
193 PolicyMap empty; 228 PolicyMap empty;
194 EXPECT_TRUE(empty.Equals(*cache.GetMandatoryPolicy())); 229 EXPECT_TRUE(empty.Equals(mandatory_policy(cache)));
195 EXPECT_NE(base::Time(), cache.last_policy_refresh_time()); 230 EXPECT_NE(base::Time(), cache.last_policy_refresh_time());
196 EXPECT_GE(base::Time::Now(), cache.last_policy_refresh_time()); 231 EXPECT_GE(base::Time::Now(), cache.last_policy_refresh_time());
197 } 232 }
198 233
199 TEST_F(CloudPolicyCacheTest, LoadWithData) { 234 TEST_F(CloudPolicyCacheTest, LoadWithData) {
200 scoped_ptr<em::CloudPolicyResponse> policy( 235 scoped_ptr<em::CloudPolicyResponse> policy(
201 CreateHomepagePolicy("http://www.example.com", 236 CreateHomepagePolicy("http://www.example.com",
202 base::Time::NowFromSystemTime(), 237 base::Time::NowFromSystemTime(),
203 em::PolicyOptions::MANDATORY)); 238 em::PolicyOptions::MANDATORY));
204 WritePolicy(*policy); 239 WritePolicy(*policy);
205 CloudPolicyCache cache(test_file()); 240 CloudPolicyCache cache(test_file());
206 cache.LoadPolicyFromFile(); 241 cache.LoadFromFile();
207 PolicyMap expected; 242 PolicyMap expected;
208 expected.Set(kPolicyHomepageLocation, 243 expected.Set(kPolicyHomepageLocation,
209 Value::CreateStringValue("http://www.example.com")); 244 Value::CreateStringValue("http://www.example.com"));
210 EXPECT_TRUE(expected.Equals(*cache.GetMandatoryPolicy())); 245 EXPECT_TRUE(expected.Equals(mandatory_policy(cache)));
211 } 246 }
212 247
213 TEST_F(CloudPolicyCacheTest, SetPolicy) { 248 TEST_F(CloudPolicyCacheTest, SetPolicy) {
214 CloudPolicyCache cache(test_file()); 249 CloudPolicyCache cache(test_file());
215 scoped_ptr<em::CloudPolicyResponse> policy( 250 em::CloudPolicyResponse* policy =
216 CreateHomepagePolicy("http://www.example.com", 251 CreateHomepagePolicy("http://www.example.com",
217 base::Time::NowFromSystemTime(), 252 base::Time::NowFromSystemTime(),
218 em::PolicyOptions::MANDATORY)); 253 em::PolicyOptions::MANDATORY);
219 EXPECT_TRUE(cache.SetPolicy(*policy)); 254 SetPolicy(&cache, policy, true);
220 scoped_ptr<em::CloudPolicyResponse> policy2( 255 em::CloudPolicyResponse* policy2 =
221 CreateHomepagePolicy("http://www.example.com", 256 CreateHomepagePolicy("http://www.example.com",
222 base::Time::NowFromSystemTime(), 257 base::Time::NowFromSystemTime(),
223 em::PolicyOptions::MANDATORY)); 258 em::PolicyOptions::MANDATORY);
224 EXPECT_FALSE(cache.SetPolicy(*policy2)); 259 SetPolicy(&cache, policy2, false);
225 PolicyMap expected; 260 PolicyMap expected;
226 expected.Set(kPolicyHomepageLocation, 261 expected.Set(kPolicyHomepageLocation,
227 Value::CreateStringValue("http://www.example.com")); 262 Value::CreateStringValue("http://www.example.com"));
228 PolicyMap empty; 263 PolicyMap empty;
229 EXPECT_TRUE(expected.Equals(*cache.GetMandatoryPolicy())); 264 EXPECT_TRUE(expected.Equals(mandatory_policy(cache)));
230 EXPECT_TRUE(empty.Equals(*cache.GetRecommendedPolicy())); 265 EXPECT_TRUE(empty.Equals(recommended_policy(cache)));
231 policy.reset(CreateHomepagePolicy("http://www.example.com", 266 policy = CreateHomepagePolicy("http://www.example.com",
232 base::Time::NowFromSystemTime(), 267 base::Time::NowFromSystemTime(),
233 em::PolicyOptions::RECOMMENDED)); 268 em::PolicyOptions::RECOMMENDED);
234 EXPECT_TRUE(cache.SetPolicy(*policy)); 269 SetPolicy(&cache, policy, true);
235 EXPECT_TRUE(expected.Equals(*cache.GetRecommendedPolicy())); 270 EXPECT_TRUE(expected.Equals(recommended_policy(cache)));
236 EXPECT_TRUE(empty.Equals(*cache.GetMandatoryPolicy())); 271 EXPECT_TRUE(empty.Equals(mandatory_policy(cache)));
237 } 272 }
238 273
239 TEST_F(CloudPolicyCacheTest, ResetPolicy) { 274 TEST_F(CloudPolicyCacheTest, ResetPolicy) {
240 CloudPolicyCache cache(test_file()); 275 CloudPolicyCache cache(test_file());
241 276
242 scoped_ptr<em::CloudPolicyResponse> policy( 277 em::CloudPolicyResponse* policy =
243 CreateHomepagePolicy("http://www.example.com", 278 CreateHomepagePolicy("http://www.example.com",
244 base::Time::NowFromSystemTime(), 279 base::Time::NowFromSystemTime(),
245 em::PolicyOptions::MANDATORY)); 280 em::PolicyOptions::MANDATORY);
246 EXPECT_TRUE(cache.SetPolicy(*policy)); 281 SetPolicy(&cache, policy, true);
247 PolicyMap expected; 282 PolicyMap expected;
248 expected.Set(kPolicyHomepageLocation, 283 expected.Set(kPolicyHomepageLocation,
249 Value::CreateStringValue("http://www.example.com")); 284 Value::CreateStringValue("http://www.example.com"));
250 EXPECT_TRUE(expected.Equals(*cache.GetMandatoryPolicy())); 285 EXPECT_TRUE(expected.Equals(mandatory_policy(cache)));
251 286
252 scoped_ptr<em::CloudPolicyResponse> empty_policy( 287 em::CloudPolicyResponse* empty_policy =
253 CreateHomepagePolicy("", base::Time::NowFromSystemTime(), 288 CreateHomepagePolicy("", base::Time::NowFromSystemTime(),
254 em::PolicyOptions::MANDATORY)); 289 em::PolicyOptions::MANDATORY);
255 EXPECT_TRUE(cache.SetPolicy(*empty_policy)); 290 SetPolicy(&cache, empty_policy, true);
256 PolicyMap empty; 291 PolicyMap empty;
257 EXPECT_TRUE(empty.Equals(*cache.GetMandatoryPolicy())); 292 EXPECT_TRUE(empty.Equals(mandatory_policy(cache)));
258 } 293 }
259 294
260 TEST_F(CloudPolicyCacheTest, PersistPolicy) { 295 TEST_F(CloudPolicyCacheTest, PersistPolicy) {
261 { 296 {
262 CloudPolicyCache cache(test_file()); 297 CloudPolicyCache cache(test_file());
263 scoped_ptr<em::CloudPolicyResponse> policy( 298 scoped_ptr<em::CloudPolicyResponse> policy(
264 CreateHomepagePolicy("http://www.example.com", 299 CreateHomepagePolicy("http://www.example.com",
265 base::Time::NowFromSystemTime(), 300 base::Time::NowFromSystemTime(),
266 em::PolicyOptions::MANDATORY)); 301 em::PolicyOptions::MANDATORY));
267 cache.SetPolicy(*policy); 302 cache.SetPolicy(*policy);
268 } 303 }
269 304
270 loop_.RunAllPending(); 305 loop_.RunAllPending();
271 306
272 EXPECT_TRUE(file_util::PathExists(test_file())); 307 EXPECT_TRUE(file_util::PathExists(test_file()));
273 CloudPolicyCache cache(test_file()); 308 CloudPolicyCache cache(test_file());
274 cache.LoadPolicyFromFile(); 309 cache.LoadFromFile();
275 PolicyMap expected; 310 PolicyMap expected;
276 expected.Set(kPolicyHomepageLocation, 311 expected.Set(kPolicyHomepageLocation,
277 Value::CreateStringValue("http://www.example.com")); 312 Value::CreateStringValue("http://www.example.com"));
278 EXPECT_TRUE(expected.Equals(*cache.GetMandatoryPolicy())); 313 EXPECT_TRUE(expected.Equals(mandatory_policy(cache)));
279 } 314 }
280 315
281 TEST_F(CloudPolicyCacheTest, FreshPolicyOverride) { 316 TEST_F(CloudPolicyCacheTest, FreshPolicyOverride) {
282 scoped_ptr<em::CloudPolicyResponse> policy( 317 scoped_ptr<em::CloudPolicyResponse> policy(
283 CreateHomepagePolicy("http://www.example.com", 318 CreateHomepagePolicy("http://www.example.com",
284 base::Time::NowFromSystemTime(), 319 base::Time::NowFromSystemTime(),
285 em::PolicyOptions::MANDATORY)); 320 em::PolicyOptions::MANDATORY));
286 WritePolicy(*policy); 321 WritePolicy(*policy);
287 322
288 CloudPolicyCache cache(test_file()); 323 CloudPolicyCache cache(test_file());
289 scoped_ptr<em::CloudPolicyResponse> updated_policy( 324 em::CloudPolicyResponse* updated_policy =
290 CreateHomepagePolicy("http://www.chromium.org", 325 CreateHomepagePolicy("http://www.chromium.org",
291 base::Time::NowFromSystemTime(), 326 base::Time::NowFromSystemTime(),
292 em::PolicyOptions::MANDATORY)); 327 em::PolicyOptions::MANDATORY);
293 EXPECT_TRUE(cache.SetPolicy(*updated_policy)); 328 SetPolicy(&cache, updated_policy, true);
294 329
295 cache.LoadPolicyFromFile(); 330 cache.LoadFromFile();
296 PolicyMap expected; 331 PolicyMap expected;
297 expected.Set(kPolicyHomepageLocation, 332 expected.Set(kPolicyHomepageLocation,
298 Value::CreateStringValue("http://www.chromium.org")); 333 Value::CreateStringValue("http://www.chromium.org"));
299 EXPECT_TRUE(expected.Equals(*cache.GetMandatoryPolicy())); 334 EXPECT_TRUE(expected.Equals(mandatory_policy(cache)));
300 } 335 }
301 336
302 } // namespace policy 337 } // namespace policy
303 338
304 // ================================================================== 339 // ==================================================================
305 // Everything below this line can go when we phase out support for 340 // Everything below this line can go when we phase out support for
306 // the old (trusted testing/pilot program) policy format. 341 // the old (trusted testing/pilot program) policy format.
307 342
308 // This is a (slightly updated) copy of the old 343 // This is a (slightly updated) copy of the old
309 // device_management_policy_cache_unittest.cc. The new CloudPolicyCache 344 // device_management_policy_cache_unittest.cc. The new CloudPolicyCache
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 cached_policy.set_timestamp(timestamp.ToTimeT()); 391 cached_policy.set_timestamp(timestamp.ToTimeT());
357 EXPECT_TRUE(cached_policy.SerializeToString(&data)); 392 EXPECT_TRUE(cached_policy.SerializeToString(&data));
358 int size = static_cast<int>(data.size()); 393 int size = static_cast<int>(data.size());
359 EXPECT_EQ(size, file_util::WriteFile(test_file(), data.c_str(), size)); 394 EXPECT_EQ(size, file_util::WriteFile(test_file(), data.c_str(), size));
360 } 395 }
361 396
362 FilePath test_file() { 397 FilePath test_file() {
363 return temp_dir_.path().AppendASCII("DeviceManagementPolicyCacheTest"); 398 return temp_dir_.path().AppendASCII("DeviceManagementPolicyCacheTest");
364 } 399 }
365 400
366 protected: 401 const DictionaryValue* device_policy(const CloudPolicyCache& cache) {
402 return cache.device_policy_.get();
403 }
404
367 MessageLoop loop_; 405 MessageLoop loop_;
368 406
369 private: 407 private:
370 ScopedTempDir temp_dir_; 408 ScopedTempDir temp_dir_;
371 BrowserThread ui_thread_; 409 BrowserThread ui_thread_;
372 BrowserThread file_thread_; 410 BrowserThread file_thread_;
373 }; 411 };
374 412
375 TEST_F(DeviceManagementPolicyCacheTest, Empty) { 413 TEST_F(DeviceManagementPolicyCacheTest, Empty) {
376 CloudPolicyCache cache(test_file()); 414 CloudPolicyCache cache(test_file());
377 DictionaryValue empty; 415 DictionaryValue empty;
378 scoped_ptr<Value> policy(cache.GetDevicePolicy()); 416 EXPECT_TRUE(empty.Equals(device_policy(cache)));
379 EXPECT_TRUE(empty.Equals(policy.get()));
380 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); 417 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time());
381 } 418 }
382 419
383 TEST_F(DeviceManagementPolicyCacheTest, LoadNoFile) { 420 TEST_F(DeviceManagementPolicyCacheTest, LoadNoFile) {
384 CloudPolicyCache cache(test_file()); 421 CloudPolicyCache cache(test_file());
385 cache.LoadPolicyFromFile(); 422 cache.LoadFromFile();
386 DictionaryValue empty; 423 DictionaryValue empty;
387 scoped_ptr<Value> policy(cache.GetDevicePolicy()); 424 EXPECT_TRUE(empty.Equals(device_policy(cache)));
388 EXPECT_TRUE(empty.Equals(policy.get()));
389 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); 425 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time());
390 } 426 }
391 427
392 TEST_F(DeviceManagementPolicyCacheTest, RejectFuture) { 428 TEST_F(DeviceManagementPolicyCacheTest, RejectFuture) {
393 em::DevicePolicyResponse policy_response; 429 em::DevicePolicyResponse policy_response;
394 WritePolicy(policy_response, base::Time::NowFromSystemTime() + 430 WritePolicy(policy_response, base::Time::NowFromSystemTime() +
395 base::TimeDelta::FromMinutes(5)); 431 base::TimeDelta::FromMinutes(5));
396 CloudPolicyCache cache(test_file()); 432 CloudPolicyCache cache(test_file());
397 cache.LoadPolicyFromFile(); 433 cache.LoadFromFile();
398 DictionaryValue empty; 434 DictionaryValue empty;
399 scoped_ptr<Value> policy(cache.GetDevicePolicy()); 435 EXPECT_TRUE(empty.Equals(device_policy(cache)));
400 EXPECT_TRUE(empty.Equals(policy.get()));
401 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); 436 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time());
402 } 437 }
403 438
404 TEST_F(DeviceManagementPolicyCacheTest, LoadWithFile) { 439 TEST_F(DeviceManagementPolicyCacheTest, LoadWithFile) {
405 em::DevicePolicyResponse policy_response; 440 em::DevicePolicyResponse policy_response;
406 WritePolicy(policy_response, base::Time::NowFromSystemTime()); 441 WritePolicy(policy_response, base::Time::NowFromSystemTime());
407 CloudPolicyCache cache(test_file()); 442 CloudPolicyCache cache(test_file());
408 cache.LoadPolicyFromFile(); 443 cache.LoadFromFile();
409 DictionaryValue empty; 444 DictionaryValue empty;
410 scoped_ptr<Value> policy(cache.GetDevicePolicy()); 445 EXPECT_TRUE(empty.Equals(device_policy(cache)));
411 EXPECT_TRUE(empty.Equals(policy.get()));
412 EXPECT_NE(base::Time(), cache.last_policy_refresh_time()); 446 EXPECT_NE(base::Time(), cache.last_policy_refresh_time());
413 EXPECT_GE(base::Time::Now(), cache.last_policy_refresh_time()); 447 EXPECT_GE(base::Time::Now(), cache.last_policy_refresh_time());
414 } 448 }
415 449
416 TEST_F(DeviceManagementPolicyCacheTest, LoadWithData) { 450 TEST_F(DeviceManagementPolicyCacheTest, LoadWithData) {
417 em::DevicePolicyResponse policy; 451 em::DevicePolicyResponse policy;
418 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com"); 452 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com");
419 WritePolicy(policy, base::Time::NowFromSystemTime()); 453 WritePolicy(policy, base::Time::NowFromSystemTime());
420 CloudPolicyCache cache(test_file()); 454 CloudPolicyCache cache(test_file());
421 cache.LoadPolicyFromFile(); 455 cache.LoadFromFile();
422 DictionaryValue expected; 456 DictionaryValue expected;
423 expected.Set("HomepageLocation", 457 expected.Set("HomepageLocation",
424 Value::CreateStringValue("http://www.example.com")); 458 Value::CreateStringValue("http://www.example.com"));
425 scoped_ptr<Value> policy_value(cache.GetDevicePolicy()); 459 EXPECT_TRUE(expected.Equals(device_policy(cache)));
426 EXPECT_TRUE(expected.Equals(policy_value.get()));
427 } 460 }
428 461
429 TEST_F(DeviceManagementPolicyCacheTest, SetDevicePolicy) { 462 TEST_F(DeviceManagementPolicyCacheTest, SetDevicePolicy) {
430 CloudPolicyCache cache(test_file()); 463 CloudPolicyCache cache(test_file());
431 em::DevicePolicyResponse policy; 464 em::DevicePolicyResponse policy;
432 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com"); 465 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com");
433 EXPECT_TRUE(cache.SetDevicePolicy(policy)); 466 cache.SetDevicePolicy(policy);
434 em::DevicePolicyResponse policy2; 467 em::DevicePolicyResponse policy2;
435 AddStringPolicy(&policy2, "HomepageLocation", "http://www.example.com"); 468 AddStringPolicy(&policy2, "HomepageLocation", "http://www.example.com");
436 EXPECT_FALSE(cache.SetDevicePolicy(policy2)); 469 cache.SetDevicePolicy(policy2); // Does not notify observers.
437 DictionaryValue expected; 470 DictionaryValue expected;
438 expected.Set("HomepageLocation", 471 expected.Set("HomepageLocation",
439 Value::CreateStringValue("http://www.example.com")); 472 Value::CreateStringValue("http://www.example.com"));
440 scoped_ptr<Value> policy_value(cache.GetDevicePolicy()); 473 EXPECT_TRUE(expected.Equals(device_policy(cache)));
441 EXPECT_TRUE(expected.Equals(policy_value.get()));
442 } 474 }
443 475
444 TEST_F(DeviceManagementPolicyCacheTest, ResetPolicy) { 476 TEST_F(DeviceManagementPolicyCacheTest, ResetPolicy) {
445 CloudPolicyCache cache(test_file()); 477 CloudPolicyCache cache(test_file());
446 478
447 em::DevicePolicyResponse policy; 479 em::DevicePolicyResponse policy;
448 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com"); 480 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com");
449 EXPECT_TRUE(cache.SetDevicePolicy(policy)); 481 cache.SetDevicePolicy(policy);
450 DictionaryValue expected; 482 DictionaryValue expected;
451 expected.Set("HomepageLocation", 483 expected.Set("HomepageLocation",
452 Value::CreateStringValue("http://www.example.com")); 484 Value::CreateStringValue("http://www.example.com"));
453 scoped_ptr<Value> policy_value(cache.GetDevicePolicy()); 485 EXPECT_TRUE(expected.Equals(device_policy(cache)));
454 EXPECT_TRUE(expected.Equals(policy_value.get()));
455 486
456 EXPECT_TRUE(cache.SetDevicePolicy(em::DevicePolicyResponse())); 487 cache.SetDevicePolicy(em::DevicePolicyResponse());
457 policy_value.reset(cache.GetDevicePolicy());
458 DictionaryValue empty; 488 DictionaryValue empty;
459 EXPECT_TRUE(empty.Equals(policy_value.get())); 489 EXPECT_TRUE(empty.Equals(device_policy(cache)));
460 } 490 }
461 491
462 TEST_F(DeviceManagementPolicyCacheTest, PersistPolicy) { 492 TEST_F(DeviceManagementPolicyCacheTest, PersistPolicy) {
463 { 493 {
464 CloudPolicyCache cache(test_file()); 494 CloudPolicyCache cache(test_file());
465 em::DevicePolicyResponse policy; 495 em::DevicePolicyResponse policy;
466 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com"); 496 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com");
467 cache.SetDevicePolicy(policy); 497 cache.SetDevicePolicy(policy);
468 } 498 }
469 499
470 loop_.RunAllPending(); 500 loop_.RunAllPending();
471 501
472 EXPECT_TRUE(file_util::PathExists(test_file())); 502 EXPECT_TRUE(file_util::PathExists(test_file()));
473 CloudPolicyCache cache(test_file()); 503 CloudPolicyCache cache(test_file());
474 cache.LoadPolicyFromFile(); 504 cache.LoadFromFile();
475 DictionaryValue expected; 505 DictionaryValue expected;
476 expected.Set("HomepageLocation", 506 expected.Set("HomepageLocation",
477 Value::CreateStringValue("http://www.example.com")); 507 Value::CreateStringValue("http://www.example.com"));
478 scoped_ptr<Value> policy_value(cache.GetDevicePolicy()); 508 EXPECT_TRUE(expected.Equals(device_policy(cache)));
479 EXPECT_TRUE(expected.Equals(policy_value.get()));
480 } 509 }
481 510
482 TEST_F(DeviceManagementPolicyCacheTest, FreshPolicyOverride) { 511 TEST_F(DeviceManagementPolicyCacheTest, FreshPolicyOverride) {
483 em::DevicePolicyResponse policy; 512 em::DevicePolicyResponse policy;
484 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com"); 513 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com");
485 WritePolicy(policy, base::Time::NowFromSystemTime()); 514 WritePolicy(policy, base::Time::NowFromSystemTime());
486 515
487 CloudPolicyCache cache(test_file()); 516 CloudPolicyCache cache(test_file());
488 em::DevicePolicyResponse updated_policy; 517 em::DevicePolicyResponse updated_policy;
489 AddStringPolicy(&updated_policy, "HomepageLocation", 518 AddStringPolicy(&updated_policy, "HomepageLocation",
490 "http://www.chromium.org"); 519 "http://www.chromium.org");
491 EXPECT_TRUE(cache.SetDevicePolicy(updated_policy)); 520 cache.SetDevicePolicy(updated_policy);
492 521
493 cache.LoadPolicyFromFile(); 522 cache.LoadFromFile();
494 DictionaryValue expected; 523 DictionaryValue expected;
495 expected.Set("HomepageLocation", 524 expected.Set("HomepageLocation",
496 Value::CreateStringValue("http://www.chromium.org")); 525 Value::CreateStringValue("http://www.chromium.org"));
497 scoped_ptr<Value> policy_value(cache.GetDevicePolicy()); 526 EXPECT_TRUE(expected.Equals(device_policy(cache)));
498 EXPECT_TRUE(expected.Equals(policy_value.get()));
499 } 527 }
500 528
501 // Tests proper decoding of policy values. 529 // Tests proper decoding of policy values.
502 class DeviceManagementPolicyCacheDecodeTest 530 class DeviceManagementPolicyCacheDecodeTest
503 : public DeviceManagementPolicyCacheTestBase { 531 : public DeviceManagementPolicyCacheTestBase {
504 protected: 532 protected:
505 void DecodeAndCheck(Value* expected_value_ptr) { 533 void DecodeAndCheck(Value* expected_value_ptr) {
506 scoped_ptr<Value> expected_value(expected_value_ptr); 534 scoped_ptr<Value> expected_value(expected_value_ptr);
507 scoped_ptr<Value> decoded_value( 535 scoped_ptr<Value> decoded_value(
508 CloudPolicyCache::DecodeValue(value_)); 536 CloudPolicyCache::DecodeValue(value_));
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
611 em::DevicePolicyResponse policy; 639 em::DevicePolicyResponse policy;
612 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com"); 640 AddStringPolicy(&policy, "HomepageLocation", "http://www.example.com");
613 scoped_ptr<Value> decoded(DecodeDevicePolicy(policy)); 641 scoped_ptr<Value> decoded(DecodeDevicePolicy(policy));
614 DictionaryValue expected; 642 DictionaryValue expected;
615 expected.Set("HomepageLocation", 643 expected.Set("HomepageLocation",
616 Value::CreateStringValue("http://www.example.com")); 644 Value::CreateStringValue("http://www.example.com"));
617 EXPECT_TRUE(expected.Equals(decoded.get())); 645 EXPECT_TRUE(expected.Equals(decoded.get()));
618 } 646 }
619 647
620 } // namespace policy 648 } // namespace policy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698