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

Side by Side Diff: chrome/browser/policy/cloud/user_cloud_policy_store_unittest.cc

Issue 19733003: Implement cloud policy invalidations using the invalidation service framework. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 4 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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/user_cloud_policy_store.h" 5 #include "chrome/browser/policy/cloud/user_cloud_policy_store.h"
6 6
7 #include "base/file_util.h" 7 #include "base/file_util.h"
8 #include "base/files/scoped_temp_dir.h" 8 #include "base/files/scoped_temp_dir.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/prefs/pref_service.h" 10 #include "base/prefs/pref_service.h"
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 TEST_F(UserCloudPolicyStoreTest, LoadWithNoFile) { 108 TEST_F(UserCloudPolicyStoreTest, LoadWithNoFile) {
109 EXPECT_FALSE(store_->policy()); 109 EXPECT_FALSE(store_->policy());
110 EXPECT_TRUE(store_->policy_map().empty()); 110 EXPECT_TRUE(store_->policy_map().empty());
111 111
112 EXPECT_CALL(observer_, OnStoreLoaded(store_.get())); 112 EXPECT_CALL(observer_, OnStoreLoaded(store_.get()));
113 store_->Load(); 113 store_->Load();
114 RunUntilIdle(); 114 RunUntilIdle();
115 115
116 EXPECT_FALSE(store_->policy()); 116 EXPECT_FALSE(store_->policy());
117 EXPECT_TRUE(store_->policy_map().empty()); 117 EXPECT_TRUE(store_->policy_map().empty());
118 EXPECT_FALSE(store_->policy_changed());
118 } 119 }
119 120
120 TEST_F(UserCloudPolicyStoreTest, LoadWithInvalidFile) { 121 TEST_F(UserCloudPolicyStoreTest, LoadWithInvalidFile) {
121 EXPECT_FALSE(store_->policy()); 122 EXPECT_FALSE(store_->policy());
122 EXPECT_TRUE(store_->policy_map().empty()); 123 EXPECT_TRUE(store_->policy_map().empty());
123 124
124 // Create a bogus file. 125 // Create a bogus file.
125 ASSERT_TRUE(file_util::CreateDirectory(policy_file().DirName())); 126 ASSERT_TRUE(file_util::CreateDirectory(policy_file().DirName()));
126 std::string bogus_data = "bogus_data"; 127 std::string bogus_data = "bogus_data";
127 int size = bogus_data.size(); 128 int size = bogus_data.size();
128 ASSERT_EQ(size, file_util::WriteFile(policy_file(), 129 ASSERT_EQ(size, file_util::WriteFile(policy_file(),
129 bogus_data.c_str(), 130 bogus_data.c_str(),
130 bogus_data.size())); 131 bogus_data.size()));
131 132
132 ExpectError(store_.get(), CloudPolicyStore::STATUS_LOAD_ERROR); 133 ExpectError(store_.get(), CloudPolicyStore::STATUS_LOAD_ERROR);
133 store_->Load(); 134 store_->Load();
134 RunUntilIdle(); 135 RunUntilIdle();
135 136
136 EXPECT_FALSE(store_->policy()); 137 EXPECT_FALSE(store_->policy());
137 EXPECT_TRUE(store_->policy_map().empty()); 138 EXPECT_TRUE(store_->policy_map().empty());
139 EXPECT_FALSE(store_->policy_changed());
138 } 140 }
139 141
140 TEST_F(UserCloudPolicyStoreTest, LoadImmediatelyWithNoFile) { 142 TEST_F(UserCloudPolicyStoreTest, LoadImmediatelyWithNoFile) {
141 EXPECT_FALSE(store_->policy()); 143 EXPECT_FALSE(store_->policy());
142 EXPECT_TRUE(store_->policy_map().empty()); 144 EXPECT_TRUE(store_->policy_map().empty());
143 145
144 EXPECT_CALL(observer_, OnStoreLoaded(store_.get())); 146 EXPECT_CALL(observer_, OnStoreLoaded(store_.get()));
145 store_->LoadImmediately(); // Should load without running the message loop. 147 store_->LoadImmediately(); // Should load without running the message loop.
146 148
147 EXPECT_FALSE(store_->policy()); 149 EXPECT_FALSE(store_->policy());
148 EXPECT_TRUE(store_->policy_map().empty()); 150 EXPECT_TRUE(store_->policy_map().empty());
151 EXPECT_FALSE(store_->policy_changed());
149 } 152 }
150 153
151 TEST_F(UserCloudPolicyStoreTest, LoadImmediatelyWithInvalidFile) { 154 TEST_F(UserCloudPolicyStoreTest, LoadImmediatelyWithInvalidFile) {
152 EXPECT_FALSE(store_->policy()); 155 EXPECT_FALSE(store_->policy());
153 EXPECT_TRUE(store_->policy_map().empty()); 156 EXPECT_TRUE(store_->policy_map().empty());
154 157
155 // Create a bogus file. 158 // Create a bogus file.
156 ASSERT_TRUE(file_util::CreateDirectory(policy_file().DirName())); 159 ASSERT_TRUE(file_util::CreateDirectory(policy_file().DirName()));
157 std::string bogus_data = "bogus_data"; 160 std::string bogus_data = "bogus_data";
158 int size = bogus_data.size(); 161 int size = bogus_data.size();
159 ASSERT_EQ(size, file_util::WriteFile(policy_file(), 162 ASSERT_EQ(size, file_util::WriteFile(policy_file(),
160 bogus_data.c_str(), 163 bogus_data.c_str(),
161 bogus_data.size())); 164 bogus_data.size()));
162 165
163 ExpectError(store_.get(), CloudPolicyStore::STATUS_LOAD_ERROR); 166 ExpectError(store_.get(), CloudPolicyStore::STATUS_LOAD_ERROR);
164 store_->LoadImmediately(); // Should load without running the message loop. 167 store_->LoadImmediately(); // Should load without running the message loop.
165 168
166 EXPECT_FALSE(store_->policy()); 169 EXPECT_FALSE(store_->policy());
167 EXPECT_TRUE(store_->policy_map().empty()); 170 EXPECT_TRUE(store_->policy_map().empty());
171 EXPECT_FALSE(store_->policy_changed());
168 } 172 }
169 173
170 TEST_F(UserCloudPolicyStoreTest, Store) { 174 TEST_F(UserCloudPolicyStoreTest, Store) {
171 EXPECT_FALSE(store_->policy()); 175 EXPECT_FALSE(store_->policy());
172 EXPECT_TRUE(store_->policy_map().empty()); 176 EXPECT_TRUE(store_->policy_map().empty());
173 177
174 // Store a simple policy and make sure it ends up as the currently active 178 // Store a simple policy and make sure it ends up as the currently active
175 // policy. 179 // policy.
176 EXPECT_CALL(observer_, OnStoreLoaded(store_.get())); 180 EXPECT_CALL(observer_, OnStoreLoaded(store_.get()));
177 store_->Store(policy_.policy()); 181 store_->Store(policy_.policy());
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
276 store2->AddObserver(&observer_); 280 store2->AddObserver(&observer_);
277 EXPECT_CALL(observer_, OnStoreLoaded(store2.get())); 281 EXPECT_CALL(observer_, OnStoreLoaded(store2.get()));
278 store2->LoadImmediately(); // Should load without running the message loop. 282 store2->LoadImmediately(); // Should load without running the message loop.
279 283
280 ASSERT_TRUE(store2->policy()); 284 ASSERT_TRUE(store2->policy());
281 EXPECT_EQ(policy_.policy_data().SerializeAsString(), 285 EXPECT_EQ(policy_.policy_data().SerializeAsString(),
282 store2->policy()->SerializeAsString()); 286 store2->policy()->SerializeAsString());
283 VerifyPolicyMap(store2.get()); 287 VerifyPolicyMap(store2.get());
284 EXPECT_EQ(CloudPolicyStore::STATUS_OK, store2->status()); 288 EXPECT_EQ(CloudPolicyStore::STATUS_OK, store2->status());
285 store2->RemoveObserver(&observer_); 289 store2->RemoveObserver(&observer_);
290 EXPECT_TRUE(store2->policy_changed());
286 } 291 }
287 292
288 TEST_F(UserCloudPolicyStoreTest, StoreValidationError) { 293 TEST_F(UserCloudPolicyStoreTest, StoreValidationError) {
289 // Create an invalid policy (no policy type). 294 // Create an invalid policy (no policy type).
290 policy_.policy_data().clear_policy_type(); 295 policy_.policy_data().clear_policy_type();
291 policy_.Build(); 296 policy_.Build();
292 297
293 // Store policy. 298 // Store policy.
294 ExpectError(store_.get(), CloudPolicyStore::STATUS_VALIDATION_ERROR); 299 ExpectError(store_.get(), CloudPolicyStore::STATUS_VALIDATION_ERROR);
295 store_->Store(policy_.policy()); 300 store_->Store(policy_.policy());
296 RunUntilIdle(); 301 RunUntilIdle();
297 ASSERT_FALSE(store_->policy()); 302 ASSERT_FALSE(store_->policy());
303 EXPECT_FALSE(store_->policy_changed());
298 } 304 }
299 305
300 TEST_F(UserCloudPolicyStoreTest, LoadValidationError) { 306 TEST_F(UserCloudPolicyStoreTest, LoadValidationError) {
301 // Force a validation error by changing the username after policy is stored. 307 // Force a validation error by changing the username after policy is stored.
302 EXPECT_CALL(observer_, OnStoreLoaded(store_.get())); 308 EXPECT_CALL(observer_, OnStoreLoaded(store_.get()));
303 store_->Store(policy_.policy()); 309 store_->Store(policy_.policy());
304 RunUntilIdle(); 310 RunUntilIdle();
305 311
306 // Sign out, and sign back in as a different user, and try to load the profile 312 // Sign out, and sign back in as a different user, and try to load the profile
307 // data (should fail due to mismatched username). 313 // data (should fail due to mismatched username).
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 new UserCloudPolicyStore(profile_.get(), policy_file())); 347 new UserCloudPolicyStore(profile_.get(), policy_file()));
342 store4->AddObserver(&observer_); 348 store4->AddObserver(&observer_);
343 ExpectError(store4.get(), CloudPolicyStore::STATUS_VALIDATION_ERROR); 349 ExpectError(store4.get(), CloudPolicyStore::STATUS_VALIDATION_ERROR);
344 store4->Load(); 350 store4->Load();
345 RunUntilIdle(); 351 RunUntilIdle();
346 352
347 ASSERT_FALSE(store4->policy()); 353 ASSERT_FALSE(store4->policy());
348 store4->RemoveObserver(&observer_); 354 store4->RemoveObserver(&observer_);
349 } 355 }
350 356
357 TEST_F(UserCloudPolicyStoreTest, PolicyChanged) {
358 EXPECT_CALL(observer_, OnStoreLoaded(store_.get())).Times(7);
359 EXPECT_FALSE(store_->policy_changed());
360
361 // Clearing before storing should not result in a change.
362 store_->Clear();
363 EXPECT_FALSE(store_->policy_changed());
364
365 // Storing an initial policy should result in a change.
366 store_->Store(policy_.policy());
367 RunUntilIdle();
368 EXPECT_TRUE(store_->policy_changed());
369
370 // Storing the same policy should not result in a change.
371 store_->Store(policy_.policy());
372 RunUntilIdle();
373 EXPECT_FALSE(store_->policy_changed());
374
375 // Storing a modified policy should result in a change.
376 policy_.payload().mutable_urlblacklist()->mutable_value()->add_entries(
377 "build.chromium.org");
378 policy_.Build();
379 store_->Store(policy_.policy());
380 RunUntilIdle();
381 EXPECT_TRUE(store_->policy_changed());
382
383 // Storing the same policy should not result in a change.
384 store_->Store(policy_.policy());
385 RunUntilIdle();
386 EXPECT_FALSE(store_->policy_changed());
387
388 // Clearing the policy should result in a change.
389 store_->Clear();
390 EXPECT_TRUE(store_->policy_changed());
391
392 // Clearing the policy again shouldn't result in a change.
393 store_->Clear();
394 EXPECT_FALSE(store_->policy_changed());
395 }
396
351 } // namespace 397 } // namespace
352 398
353 } // namespace policy 399 } // namespace policy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698