OLD | NEW |
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 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 em::CachedCloudPolicyResponse cached_policy; | 96 em::CachedCloudPolicyResponse cached_policy; |
97 cached_policy.mutable_cloud_policy()->CopyFrom(policy); | 97 cached_policy.mutable_cloud_policy()->CopyFrom(policy); |
98 EXPECT_TRUE(cached_policy.SerializeToString(&data)); | 98 EXPECT_TRUE(cached_policy.SerializeToString(&data)); |
99 int size = static_cast<int>(data.size()); | 99 int size = static_cast<int>(data.size()); |
100 EXPECT_EQ(size, file_util::WriteFile(test_file(), data.c_str(), size)); | 100 EXPECT_EQ(size, file_util::WriteFile(test_file(), data.c_str(), size)); |
101 } | 101 } |
102 | 102 |
103 // Takes ownership of |policy_response|. | 103 // Takes ownership of |policy_response|. |
104 void SetPolicy(UserPolicyCache* cache, | 104 void SetPolicy(UserPolicyCache* cache, |
105 em::PolicyFetchResponse* policy_response) { | 105 em::PolicyFetchResponse* policy_response) { |
| 106 EXPECT_CALL(observer_, OnCacheUpdate(_)).Times(1); |
| 107 cache->AddObserver(&observer_); |
| 108 |
106 scoped_ptr<em::PolicyFetchResponse> policy(policy_response); | 109 scoped_ptr<em::PolicyFetchResponse> policy(policy_response); |
| 110 cache->SetPolicy(*policy); |
107 cache->SetReady(); | 111 cache->SetReady(); |
108 cache->AddObserver(&observer); | 112 testing::Mock::VerifyAndClearExpectations(&observer_); |
109 | 113 |
110 EXPECT_CALL(observer, OnCacheUpdate(_)).Times(1); | 114 cache->RemoveObserver(&observer_); |
111 | |
112 cache->SetPolicy(*policy); | |
113 testing::Mock::VerifyAndClearExpectations(&observer); | |
114 | |
115 cache->RemoveObserver(&observer); | |
116 } | 115 } |
117 | 116 |
118 void SetReady(UserPolicyCache* cache) { | 117 void SetReady(UserPolicyCache* cache) { |
119 cache->SetReady(); | 118 cache->SetReady(); |
120 } | 119 } |
121 | 120 |
122 FilePath test_file() { | 121 FilePath test_file() { |
123 return temp_dir_.path().AppendASCII("UserPolicyCacheTest"); | 122 return temp_dir_.path().AppendASCII("UserPolicyCacheTest"); |
124 } | 123 } |
125 | 124 |
126 const PolicyMap& mandatory_policy(const UserPolicyCache& cache) { | 125 const PolicyMap& mandatory_policy(const UserPolicyCache& cache) { |
127 return cache.mandatory_policy_; | 126 return cache.mandatory_policy_; |
128 } | 127 } |
129 | 128 |
130 const PolicyMap& recommended_policy(const UserPolicyCache& cache) { | 129 const PolicyMap& recommended_policy(const UserPolicyCache& cache) { |
131 return cache.recommended_policy_; | 130 return cache.recommended_policy_; |
132 } | 131 } |
133 | 132 |
134 MessageLoop loop_; | 133 MessageLoop loop_; |
135 MockCloudPolicyCacheBaseObserver observer; | 134 MockCloudPolicyCacheBaseObserver observer_; |
136 | 135 |
137 private: | 136 private: |
138 ScopedTempDir temp_dir_; | 137 ScopedTempDir temp_dir_; |
139 content::TestBrowserThread ui_thread_; | 138 content::TestBrowserThread ui_thread_; |
140 content::TestBrowserThread file_thread_; | 139 content::TestBrowserThread file_thread_; |
141 }; | 140 }; |
142 | 141 |
143 TEST_F(UserPolicyCacheTest, DecodePolicy) { | 142 TEST_F(UserPolicyCacheTest, DecodePolicy) { |
144 em::CloudPolicySettings settings; | 143 em::CloudPolicySettings settings; |
145 settings.mutable_homepagelocation()->set_homepagelocation("chromium.org"); | 144 settings.mutable_homepagelocation()->set_homepagelocation("chromium.org"); |
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
352 cache.Load(); | 351 cache.Load(); |
353 loop_.RunAllPending(); | 352 loop_.RunAllPending(); |
354 PolicyMap expected; | 353 PolicyMap expected; |
355 expected.Set(kPolicyHomepageLocation, | 354 expected.Set(kPolicyHomepageLocation, |
356 Value::CreateStringValue("http://www.chromium.org")); | 355 Value::CreateStringValue("http://www.chromium.org")); |
357 EXPECT_TRUE(expected.Equals(mandatory_policy(cache))); | 356 EXPECT_TRUE(expected.Equals(mandatory_policy(cache))); |
358 } | 357 } |
359 | 358 |
360 TEST_F(UserPolicyCacheTest, SetReady) { | 359 TEST_F(UserPolicyCacheTest, SetReady) { |
361 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); | 360 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); |
362 cache.AddObserver(&observer); | 361 cache.AddObserver(&observer_); |
363 scoped_ptr<em::PolicyFetchResponse> policy( | 362 scoped_ptr<em::PolicyFetchResponse> policy( |
364 CreateHomepagePolicy("http://www.example.com", | 363 CreateHomepagePolicy("http://www.example.com", |
365 base::Time::NowFromSystemTime(), | 364 base::Time::NowFromSystemTime(), |
366 em::PolicyOptions::MANDATORY)); | 365 em::PolicyOptions::MANDATORY)); |
367 EXPECT_CALL(observer, OnCacheUpdate(_)).Times(0); | 366 EXPECT_CALL(observer_, OnCacheUpdate(_)).Times(0); |
368 cache.SetPolicy(*policy); | 367 cache.SetPolicy(*policy); |
369 testing::Mock::VerifyAndClearExpectations(&observer); | 368 testing::Mock::VerifyAndClearExpectations(&observer_); |
370 | 369 |
371 // Switching the cache to ready should send a notification. | 370 // Switching the cache to ready should send a notification. |
372 EXPECT_CALL(observer, OnCacheUpdate(_)).Times(1); | 371 EXPECT_CALL(observer_, OnCacheUpdate(_)).Times(1); |
373 SetReady(&cache); | 372 SetReady(&cache); |
374 cache.RemoveObserver(&observer); | 373 cache.RemoveObserver(&observer_); |
375 } | 374 } |
376 | 375 |
377 // Test case for the temporary support for GenericNamedValues in the | 376 // Test case for the temporary support for GenericNamedValues in the |
378 // CloudPolicySettings protobuf. Can be removed when this support is no longer | 377 // CloudPolicySettings protobuf. Can be removed when this support is no longer |
379 // required. | 378 // required. |
380 TEST_F(UserPolicyCacheTest, OldStylePolicy) { | 379 TEST_F(UserPolicyCacheTest, OldStylePolicy) { |
381 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); | 380 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); |
382 em::PolicyFetchResponse* policy = new em::PolicyFetchResponse(); | 381 em::PolicyFetchResponse* policy = new em::PolicyFetchResponse(); |
383 em::PolicyData signed_response; | 382 em::PolicyData signed_response; |
384 em::LegacyChromeSettingsProto settings; | 383 em::LegacyChromeSettingsProto settings; |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
433 UserPolicyCache cache(test_file(), true /* wait_for_policy_fetch */); | 432 UserPolicyCache cache(test_file(), true /* wait_for_policy_fetch */); |
434 EXPECT_FALSE(cache.IsReady()); | 433 EXPECT_FALSE(cache.IsReady()); |
435 cache.SetFetchingDone(); | 434 cache.SetFetchingDone(); |
436 EXPECT_FALSE(cache.IsReady()); | 435 EXPECT_FALSE(cache.IsReady()); |
437 cache.Load(); | 436 cache.Load(); |
438 loop_.RunAllPending(); | 437 loop_.RunAllPending(); |
439 EXPECT_TRUE(cache.IsReady()); | 438 EXPECT_TRUE(cache.IsReady()); |
440 } | 439 } |
441 | 440 |
442 } // namespace policy | 441 } // namespace policy |
OLD | NEW |