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

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

Issue 8499021: UserPolicyCache only becomes ready after policy has been fetched. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 9 years, 1 month 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/user_policy_cache.h" 5 #include "chrome/browser/policy/user_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"
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 string_list.add_entries("ponies"); 200 string_list.add_entries("ponies");
201 string_list.add_entries("more ponies"); 201 string_list.add_entries("more ponies");
202 scoped_ptr<ListValue> decoded(DecodeStringList(string_list)); 202 scoped_ptr<ListValue> decoded(DecodeStringList(string_list));
203 ListValue expected; 203 ListValue expected;
204 expected.Append(Value::CreateStringValue("ponies")); 204 expected.Append(Value::CreateStringValue("ponies"));
205 expected.Append(Value::CreateStringValue("more ponies")); 205 expected.Append(Value::CreateStringValue("more ponies"));
206 EXPECT_TRUE(decoded->Equals(&expected)); 206 EXPECT_TRUE(decoded->Equals(&expected));
207 } 207 }
208 208
209 TEST_F(UserPolicyCacheTest, Empty) { 209 TEST_F(UserPolicyCacheTest, Empty) {
210 UserPolicyCache cache(test_file()); 210 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */);
211 PolicyMap empty; 211 PolicyMap empty;
212 EXPECT_TRUE(empty.Equals(mandatory_policy(cache))); 212 EXPECT_TRUE(empty.Equals(mandatory_policy(cache)));
213 EXPECT_TRUE(empty.Equals(recommended_policy(cache))); 213 EXPECT_TRUE(empty.Equals(recommended_policy(cache)));
214 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); 214 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time());
215 } 215 }
216 216
217 TEST_F(UserPolicyCacheTest, LoadNoFile) { 217 TEST_F(UserPolicyCacheTest, LoadNoFile) {
218 UserPolicyCache cache(test_file()); 218 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */);
219 cache.Load(); 219 cache.Load();
220 loop_.RunAllPending(); 220 loop_.RunAllPending();
221 PolicyMap empty; 221 PolicyMap empty;
222 EXPECT_TRUE(empty.Equals(mandatory_policy(cache))); 222 EXPECT_TRUE(empty.Equals(mandatory_policy(cache)));
223 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); 223 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time());
224 } 224 }
225 225
226 TEST_F(UserPolicyCacheTest, RejectFuture) { 226 TEST_F(UserPolicyCacheTest, RejectFuture) {
227 scoped_ptr<em::PolicyFetchResponse> policy_response( 227 scoped_ptr<em::PolicyFetchResponse> policy_response(
228 CreateHomepagePolicy("", base::Time::NowFromSystemTime() + 228 CreateHomepagePolicy("", base::Time::NowFromSystemTime() +
229 base::TimeDelta::FromMinutes(5), 229 base::TimeDelta::FromMinutes(5),
230 em::PolicyOptions::MANDATORY)); 230 em::PolicyOptions::MANDATORY));
231 WritePolicy(*policy_response); 231 WritePolicy(*policy_response);
232 UserPolicyCache cache(test_file()); 232 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */);
233 cache.Load(); 233 cache.Load();
234 loop_.RunAllPending(); 234 loop_.RunAllPending();
235 PolicyMap empty; 235 PolicyMap empty;
236 EXPECT_TRUE(empty.Equals(mandatory_policy(cache))); 236 EXPECT_TRUE(empty.Equals(mandatory_policy(cache)));
237 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); 237 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time());
238 } 238 }
239 239
240 TEST_F(UserPolicyCacheTest, LoadWithFile) { 240 TEST_F(UserPolicyCacheTest, LoadWithFile) {
241 scoped_ptr<em::PolicyFetchResponse> policy_response( 241 scoped_ptr<em::PolicyFetchResponse> policy_response(
242 CreateHomepagePolicy("", base::Time::NowFromSystemTime(), 242 CreateHomepagePolicy("", base::Time::NowFromSystemTime(),
243 em::PolicyOptions::MANDATORY)); 243 em::PolicyOptions::MANDATORY));
244 WritePolicy(*policy_response); 244 WritePolicy(*policy_response);
245 UserPolicyCache cache(test_file()); 245 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */);
246 cache.Load(); 246 cache.Load();
247 loop_.RunAllPending(); 247 loop_.RunAllPending();
248 PolicyMap empty; 248 PolicyMap empty;
249 EXPECT_TRUE(empty.Equals(mandatory_policy(cache))); 249 EXPECT_TRUE(empty.Equals(mandatory_policy(cache)));
250 EXPECT_NE(base::Time(), cache.last_policy_refresh_time()); 250 EXPECT_NE(base::Time(), cache.last_policy_refresh_time());
251 EXPECT_GE(base::Time::Now(), cache.last_policy_refresh_time()); 251 EXPECT_GE(base::Time::Now(), cache.last_policy_refresh_time());
252 } 252 }
253 253
254 TEST_F(UserPolicyCacheTest, LoadWithData) { 254 TEST_F(UserPolicyCacheTest, LoadWithData) {
255 scoped_ptr<em::PolicyFetchResponse> policy( 255 scoped_ptr<em::PolicyFetchResponse> policy(
256 CreateHomepagePolicy("http://www.example.com", 256 CreateHomepagePolicy("http://www.example.com",
257 base::Time::NowFromSystemTime(), 257 base::Time::NowFromSystemTime(),
258 em::PolicyOptions::MANDATORY)); 258 em::PolicyOptions::MANDATORY));
259 WritePolicy(*policy); 259 WritePolicy(*policy);
260 UserPolicyCache cache(test_file()); 260 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */);
261 cache.Load(); 261 cache.Load();
262 loop_.RunAllPending(); 262 loop_.RunAllPending();
263 PolicyMap expected; 263 PolicyMap expected;
264 expected.Set(kPolicyHomepageLocation, 264 expected.Set(kPolicyHomepageLocation,
265 Value::CreateStringValue("http://www.example.com")); 265 Value::CreateStringValue("http://www.example.com"));
266 EXPECT_TRUE(expected.Equals(mandatory_policy(cache))); 266 EXPECT_TRUE(expected.Equals(mandatory_policy(cache)));
267 } 267 }
268 268
269 TEST_F(UserPolicyCacheTest, SetPolicy) { 269 TEST_F(UserPolicyCacheTest, SetPolicy) {
270 UserPolicyCache cache(test_file()); 270 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */);
271 em::PolicyFetchResponse* policy = 271 em::PolicyFetchResponse* policy =
272 CreateHomepagePolicy("http://www.example.com", 272 CreateHomepagePolicy("http://www.example.com",
273 base::Time::NowFromSystemTime(), 273 base::Time::NowFromSystemTime(),
274 em::PolicyOptions::MANDATORY); 274 em::PolicyOptions::MANDATORY);
275 SetPolicy(&cache, policy); 275 SetPolicy(&cache, policy);
276 em::PolicyFetchResponse* policy2 = 276 em::PolicyFetchResponse* policy2 =
277 CreateHomepagePolicy("http://www.example.com", 277 CreateHomepagePolicy("http://www.example.com",
278 base::Time::NowFromSystemTime(), 278 base::Time::NowFromSystemTime(),
279 em::PolicyOptions::MANDATORY); 279 em::PolicyOptions::MANDATORY);
280 SetPolicy(&cache, policy2); 280 SetPolicy(&cache, policy2);
281 PolicyMap expected; 281 PolicyMap expected;
282 expected.Set(kPolicyHomepageLocation, 282 expected.Set(kPolicyHomepageLocation,
283 Value::CreateStringValue("http://www.example.com")); 283 Value::CreateStringValue("http://www.example.com"));
284 PolicyMap empty; 284 PolicyMap empty;
285 EXPECT_TRUE(expected.Equals(mandatory_policy(cache))); 285 EXPECT_TRUE(expected.Equals(mandatory_policy(cache)));
286 EXPECT_TRUE(empty.Equals(recommended_policy(cache))); 286 EXPECT_TRUE(empty.Equals(recommended_policy(cache)));
287 policy = CreateHomepagePolicy("http://www.example.com", 287 policy = CreateHomepagePolicy("http://www.example.com",
288 base::Time::NowFromSystemTime(), 288 base::Time::NowFromSystemTime(),
289 em::PolicyOptions::RECOMMENDED); 289 em::PolicyOptions::RECOMMENDED);
290 SetPolicy(&cache, policy); 290 SetPolicy(&cache, policy);
291 EXPECT_TRUE(expected.Equals(recommended_policy(cache))); 291 EXPECT_TRUE(expected.Equals(recommended_policy(cache)));
292 EXPECT_TRUE(empty.Equals(mandatory_policy(cache))); 292 EXPECT_TRUE(empty.Equals(mandatory_policy(cache)));
293 } 293 }
294 294
295 TEST_F(UserPolicyCacheTest, ResetPolicy) { 295 TEST_F(UserPolicyCacheTest, ResetPolicy) {
296 UserPolicyCache cache(test_file()); 296 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */);
297 297
298 em::PolicyFetchResponse* policy = 298 em::PolicyFetchResponse* policy =
299 CreateHomepagePolicy("http://www.example.com", 299 CreateHomepagePolicy("http://www.example.com",
300 base::Time::NowFromSystemTime(), 300 base::Time::NowFromSystemTime(),
301 em::PolicyOptions::MANDATORY); 301 em::PolicyOptions::MANDATORY);
302 SetPolicy(&cache, policy); 302 SetPolicy(&cache, policy);
303 PolicyMap expected; 303 PolicyMap expected;
304 expected.Set(kPolicyHomepageLocation, 304 expected.Set(kPolicyHomepageLocation,
305 Value::CreateStringValue("http://www.example.com")); 305 Value::CreateStringValue("http://www.example.com"));
306 EXPECT_TRUE(expected.Equals(mandatory_policy(cache))); 306 EXPECT_TRUE(expected.Equals(mandatory_policy(cache)));
307 307
308 em::PolicyFetchResponse* empty_policy = 308 em::PolicyFetchResponse* empty_policy =
309 CreateHomepagePolicy("", base::Time::NowFromSystemTime(), 309 CreateHomepagePolicy("", base::Time::NowFromSystemTime(),
310 em::PolicyOptions::MANDATORY); 310 em::PolicyOptions::MANDATORY);
311 SetPolicy(&cache, empty_policy); 311 SetPolicy(&cache, empty_policy);
312 PolicyMap empty; 312 PolicyMap empty;
313 EXPECT_TRUE(empty.Equals(mandatory_policy(cache))); 313 EXPECT_TRUE(empty.Equals(mandatory_policy(cache)));
314 } 314 }
315 315
316 TEST_F(UserPolicyCacheTest, PersistPolicy) { 316 TEST_F(UserPolicyCacheTest, PersistPolicy) {
317 { 317 {
318 UserPolicyCache cache(test_file()); 318 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */);
319 scoped_ptr<em::PolicyFetchResponse> policy( 319 scoped_ptr<em::PolicyFetchResponse> policy(
320 CreateHomepagePolicy("http://www.example.com", 320 CreateHomepagePolicy("http://www.example.com",
321 base::Time::NowFromSystemTime(), 321 base::Time::NowFromSystemTime(),
322 em::PolicyOptions::MANDATORY)); 322 em::PolicyOptions::MANDATORY));
323 cache.SetPolicy(*policy); 323 cache.SetPolicy(*policy);
324 } 324 }
325 325
326 loop_.RunAllPending(); 326 loop_.RunAllPending();
327 327
328 EXPECT_TRUE(file_util::PathExists(test_file())); 328 EXPECT_TRUE(file_util::PathExists(test_file()));
329 UserPolicyCache cache(test_file()); 329 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */);
330 cache.Load(); 330 cache.Load();
331 loop_.RunAllPending(); 331 loop_.RunAllPending();
332 PolicyMap expected; 332 PolicyMap expected;
333 expected.Set(kPolicyHomepageLocation, 333 expected.Set(kPolicyHomepageLocation,
334 Value::CreateStringValue("http://www.example.com")); 334 Value::CreateStringValue("http://www.example.com"));
335 EXPECT_TRUE(expected.Equals(mandatory_policy(cache))); 335 EXPECT_TRUE(expected.Equals(mandatory_policy(cache)));
336 } 336 }
337 337
338 TEST_F(UserPolicyCacheTest, FreshPolicyOverride) { 338 TEST_F(UserPolicyCacheTest, FreshPolicyOverride) {
339 scoped_ptr<em::PolicyFetchResponse> policy( 339 scoped_ptr<em::PolicyFetchResponse> policy(
340 CreateHomepagePolicy("http://www.example.com", 340 CreateHomepagePolicy("http://www.example.com",
341 base::Time::NowFromSystemTime(), 341 base::Time::NowFromSystemTime(),
342 em::PolicyOptions::MANDATORY)); 342 em::PolicyOptions::MANDATORY));
343 WritePolicy(*policy); 343 WritePolicy(*policy);
344 344
345 UserPolicyCache cache(test_file()); 345 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */);
346 em::PolicyFetchResponse* updated_policy = 346 em::PolicyFetchResponse* updated_policy =
347 CreateHomepagePolicy("http://www.chromium.org", 347 CreateHomepagePolicy("http://www.chromium.org",
348 base::Time::NowFromSystemTime(), 348 base::Time::NowFromSystemTime(),
349 em::PolicyOptions::MANDATORY); 349 em::PolicyOptions::MANDATORY);
350 SetPolicy(&cache, updated_policy); 350 SetPolicy(&cache, updated_policy);
351 351
352 cache.Load(); 352 cache.Load();
353 loop_.RunAllPending(); 353 loop_.RunAllPending();
354 PolicyMap expected; 354 PolicyMap expected;
355 expected.Set(kPolicyHomepageLocation, 355 expected.Set(kPolicyHomepageLocation,
356 Value::CreateStringValue("http://www.chromium.org")); 356 Value::CreateStringValue("http://www.chromium.org"));
357 EXPECT_TRUE(expected.Equals(mandatory_policy(cache))); 357 EXPECT_TRUE(expected.Equals(mandatory_policy(cache)));
358 } 358 }
359 359
360 TEST_F(UserPolicyCacheTest, SetReady) { 360 TEST_F(UserPolicyCacheTest, SetReady) {
361 UserPolicyCache cache(test_file()); 361 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */);
362 cache.AddObserver(&observer); 362 cache.AddObserver(&observer);
363 scoped_ptr<em::PolicyFetchResponse> policy( 363 scoped_ptr<em::PolicyFetchResponse> policy(
364 CreateHomepagePolicy("http://www.example.com", 364 CreateHomepagePolicy("http://www.example.com",
365 base::Time::NowFromSystemTime(), 365 base::Time::NowFromSystemTime(),
366 em::PolicyOptions::MANDATORY)); 366 em::PolicyOptions::MANDATORY));
367 EXPECT_CALL(observer, OnCacheUpdate(_)).Times(0); 367 EXPECT_CALL(observer, OnCacheUpdate(_)).Times(0);
368 cache.SetPolicy(*policy); 368 cache.SetPolicy(*policy);
369 testing::Mock::VerifyAndClearExpectations(&observer); 369 testing::Mock::VerifyAndClearExpectations(&observer);
370 370
371 // Switching the cache to ready should send a notification. 371 // Switching the cache to ready should send a notification.
372 EXPECT_CALL(observer, OnCacheUpdate(_)).Times(1); 372 EXPECT_CALL(observer, OnCacheUpdate(_)).Times(1);
373 SetReady(&cache); 373 SetReady(&cache);
374 cache.RemoveObserver(&observer); 374 cache.RemoveObserver(&observer);
375 } 375 }
376 376
377 // Test case for the temporary support for GenericNamedValues in the 377 // Test case for the temporary support for GenericNamedValues in the
378 // CloudPolicySettings protobuf. Can be removed when this support is no longer 378 // CloudPolicySettings protobuf. Can be removed when this support is no longer
379 // required. 379 // required.
380 TEST_F(UserPolicyCacheTest, OldStylePolicy) { 380 TEST_F(UserPolicyCacheTest, OldStylePolicy) {
381 UserPolicyCache cache(test_file()); 381 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */);
382 em::PolicyFetchResponse* policy = new em::PolicyFetchResponse(); 382 em::PolicyFetchResponse* policy = new em::PolicyFetchResponse();
383 em::PolicyData signed_response; 383 em::PolicyData signed_response;
384 em::LegacyChromeSettingsProto settings; 384 em::LegacyChromeSettingsProto settings;
385 em::GenericNamedValue* named_value = settings.add_named_value(); 385 em::GenericNamedValue* named_value = settings.add_named_value();
386 named_value->set_name("HomepageLocation"); 386 named_value->set_name("HomepageLocation");
387 em::GenericValue* value_container = named_value->mutable_value(); 387 em::GenericValue* value_container = named_value->mutable_value();
388 value_container->set_value_type(em::GenericValue::VALUE_TYPE_STRING); 388 value_container->set_value_type(em::GenericValue::VALUE_TYPE_STRING);
389 value_container->set_string_value("http://www.example.com"); 389 value_container->set_string_value("http://www.example.com");
390 EXPECT_TRUE( 390 EXPECT_TRUE(
391 settings.SerializeToString(signed_response.mutable_policy_value())); 391 settings.SerializeToString(signed_response.mutable_policy_value()));
(...skipping 12 matching lines...) Expand all
404 EXPECT_TRUE(empty.Equals(recommended_policy(cache))); 404 EXPECT_TRUE(empty.Equals(recommended_policy(cache)));
405 // If new-style policy comes in, it should override old-style policy. 405 // If new-style policy comes in, it should override old-style policy.
406 policy = CreateHomepagePolicy("http://www.example.com", 406 policy = CreateHomepagePolicy("http://www.example.com",
407 base::Time::NowFromSystemTime(), 407 base::Time::NowFromSystemTime(),
408 em::PolicyOptions::RECOMMENDED); 408 em::PolicyOptions::RECOMMENDED);
409 SetPolicy(&cache, policy); 409 SetPolicy(&cache, policy);
410 EXPECT_TRUE(expected.Equals(recommended_policy(cache))); 410 EXPECT_TRUE(expected.Equals(recommended_policy(cache)));
411 EXPECT_TRUE(empty.Equals(mandatory_policy(cache))); 411 EXPECT_TRUE(empty.Equals(mandatory_policy(cache)));
412 } 412 }
413 413
414 TEST_F(UserPolicyCacheTest, CheckReadyNoWaiting) {
415 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */);
416 EXPECT_FALSE(cache.IsReady());
417 cache.Load();
418 loop_.RunAllPending();
419 EXPECT_TRUE(cache.IsReady());
420 }
421
422 TEST_F(UserPolicyCacheTest, CheckReadyWaitForFetch) {
423 UserPolicyCache cache(test_file(), true /* wait_for_policy_fetch */);
424 EXPECT_FALSE(cache.IsReady());
425 cache.Load();
426 loop_.RunAllPending();
427 EXPECT_FALSE(cache.IsReady());
428 cache.SetFetchingDone();
429 EXPECT_TRUE(cache.IsReady());
430 }
431
432 TEST_F(UserPolicyCacheTest, CheckReadyWaitForDisk) {
433 UserPolicyCache cache(test_file(), true /* wait_for_policy_fetch */);
434 EXPECT_FALSE(cache.IsReady());
435 cache.SetFetchingDone();
436 EXPECT_FALSE(cache.IsReady());
437 cache.Load();
438 loop_.RunAllPending();
439 EXPECT_TRUE(cache.IsReady());
440 }
441
414 } // namespace policy 442 } // namespace policy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698