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

Side by Side Diff: chrome/browser/chromeos/policy/user_cloud_policy_store_chromeos_unittest.cc

Issue 2354333002: Remove calls to MessageLoop(ForUI|ForIO)::Run/RunUntilIdle. (Closed)
Patch Set: fix build error Created 4 years, 3 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/chromeos/policy/user_cloud_policy_store_chromeos.h" 5 #include "chrome/browser/chromeos/policy/user_cloud_policy_store_chromeos.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/bind.h" 12 #include "base/bind.h"
13 #include "base/files/file_util.h" 13 #include "base/files/file_util.h"
14 #include "base/files/scoped_temp_dir.h" 14 #include "base/files/scoped_temp_dir.h"
15 #include "base/location.h" 15 #include "base/location.h"
16 #include "base/macros.h" 16 #include "base/macros.h"
17 #include "base/memory/ptr_util.h" 17 #include "base/memory/ptr_util.h"
18 #include "base/message_loop/message_loop.h" 18 #include "base/message_loop/message_loop.h"
19 #include "base/run_loop.h"
19 #include "base/single_thread_task_runner.h" 20 #include "base/single_thread_task_runner.h"
20 #include "base/threading/sequenced_worker_pool.h" 21 #include "base/threading/sequenced_worker_pool.h"
21 #include "base/threading/thread_task_runner_handle.h" 22 #include "base/threading/thread_task_runner_handle.h"
22 #include "chromeos/dbus/mock_cryptohome_client.h" 23 #include "chromeos/dbus/mock_cryptohome_client.h"
23 #include "chromeos/dbus/mock_session_manager_client.h" 24 #include "chromeos/dbus/mock_session_manager_client.h"
24 #include "components/policy/core/common/cloud/cloud_policy_constants.h" 25 #include "components/policy/core/common/cloud/cloud_policy_constants.h"
25 #include "components/policy/core/common/cloud/mock_cloud_policy_store.h" 26 #include "components/policy/core/common/cloud/mock_cloud_policy_store.h"
26 #include "components/policy/core/common/cloud/policy_builder.h" 27 #include "components/policy/core/common/cloud/policy_builder.h"
27 #include "components/policy/core/common/policy_types.h" 28 #include "components/policy/core/common/policy_types.h"
28 #include "components/policy/policy_constants.h" 29 #include "components/policy/policy_constants.h"
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 ASSERT_TRUE(policy_.GetSigningKey()->ExportPublicKey(&public_key)); 80 ASSERT_TRUE(policy_.GetSigningKey()->ExportPublicKey(&public_key));
80 StoreUserPolicyKey(public_key); 81 StoreUserPolicyKey(public_key);
81 82
82 policy_.payload().mutable_homepagelocation()->set_value(kDefaultHomepage); 83 policy_.payload().mutable_homepagelocation()->set_value(kDefaultHomepage);
83 policy_.Build(); 84 policy_.Build();
84 } 85 }
85 86
86 void TearDown() override { 87 void TearDown() override {
87 store_->RemoveObserver(&observer_); 88 store_->RemoveObserver(&observer_);
88 store_.reset(); 89 store_.reset();
89 RunUntilIdle(); 90 base::RunLoop().RunUntilIdle();
90 } 91 }
91 92
92 // Install an expectation on |observer_| for an error code. 93 // Install an expectation on |observer_| for an error code.
93 void ExpectError(CloudPolicyStore::Status error) { 94 void ExpectError(CloudPolicyStore::Status error) {
94 EXPECT_CALL(observer_, 95 EXPECT_CALL(observer_,
95 OnStoreError(AllOf(Eq(store_.get()), 96 OnStoreError(AllOf(Eq(store_.get()),
96 Property(&CloudPolicyStore::status, 97 Property(&CloudPolicyStore::status,
97 Eq(error))))); 98 Eq(error)))));
98 } 99 }
99 100
100 // Triggers a store_->Load() operation, handles the expected call to 101 // Triggers a store_->Load() operation, handles the expected call to
101 // |session_manager_client_| and sends |response|. 102 // |session_manager_client_| and sends |response|.
102 void PerformPolicyLoad(const std::string& response) { 103 void PerformPolicyLoad(const std::string& response) {
103 // Issue a load command. 104 // Issue a load command.
104 chromeos::SessionManagerClient::RetrievePolicyCallback retrieve_callback; 105 chromeos::SessionManagerClient::RetrievePolicyCallback retrieve_callback;
105 EXPECT_CALL(session_manager_client_, 106 EXPECT_CALL(session_manager_client_,
106 RetrievePolicyForUser(cryptohome_id_, _)) 107 RetrievePolicyForUser(cryptohome_id_, _))
107 .WillOnce(SaveArg<1>(&retrieve_callback)); 108 .WillOnce(SaveArg<1>(&retrieve_callback));
108 store_->Load(); 109 store_->Load();
109 RunUntilIdle(); 110 base::RunLoop().RunUntilIdle();
110 Mock::VerifyAndClearExpectations(&session_manager_client_); 111 Mock::VerifyAndClearExpectations(&session_manager_client_);
111 ASSERT_FALSE(retrieve_callback.is_null()); 112 ASSERT_FALSE(retrieve_callback.is_null());
112 113
113 // Run the callback. 114 // Run the callback.
114 retrieve_callback.Run(response); 115 retrieve_callback.Run(response);
115 RunUntilIdle(); 116 base::RunLoop().RunUntilIdle();
116 } 117 }
117 118
118 // Verifies that store_->policy_map() has the HomepageLocation entry with 119 // Verifies that store_->policy_map() has the HomepageLocation entry with
119 // the |expected_value|. 120 // the |expected_value|.
120 void VerifyPolicyMap(const char* expected_value) { 121 void VerifyPolicyMap(const char* expected_value) {
121 EXPECT_EQ(1U, store_->policy_map().size()); 122 EXPECT_EQ(1U, store_->policy_map().size());
122 const PolicyMap::Entry* entry = 123 const PolicyMap::Entry* entry =
123 store_->policy_map().Get(key::kHomepageLocation); 124 store_->policy_map().Get(key::kHomepageLocation);
124 ASSERT_TRUE(entry); 125 ASSERT_TRUE(entry);
125 EXPECT_TRUE(base::StringValue(expected_value).Equals(entry->value.get())); 126 EXPECT_TRUE(base::StringValue(expected_value).Equals(entry->value.get()));
(...skipping 15 matching lines...) Expand all
141 // If |new_value| is set then a new policy with that value is expected after 142 // If |new_value| is set then a new policy with that value is expected after
142 // storing the |policy_| blob. 143 // storing the |policy_| blob.
143 void PerformStorePolicy(const std::vector<uint8_t>* new_public_key, 144 void PerformStorePolicy(const std::vector<uint8_t>* new_public_key,
144 const char* previous_value, 145 const char* previous_value,
145 const char* new_value) { 146 const char* new_value) {
146 chromeos::SessionManagerClient::StorePolicyCallback store_callback; 147 chromeos::SessionManagerClient::StorePolicyCallback store_callback;
147 EXPECT_CALL(session_manager_client_, 148 EXPECT_CALL(session_manager_client_,
148 StorePolicyForUser(cryptohome_id_, policy_.GetBlob(), _)) 149 StorePolicyForUser(cryptohome_id_, policy_.GetBlob(), _))
149 .WillOnce(SaveArg<2>(&store_callback)); 150 .WillOnce(SaveArg<2>(&store_callback));
150 store_->Store(policy_.policy()); 151 store_->Store(policy_.policy());
151 RunUntilIdle(); 152 base::RunLoop().RunUntilIdle();
152 Mock::VerifyAndClearExpectations(&session_manager_client_); 153 Mock::VerifyAndClearExpectations(&session_manager_client_);
153 ASSERT_FALSE(store_callback.is_null()); 154 ASSERT_FALSE(store_callback.is_null());
154 155
155 // The new policy shouldn't be present yet. 156 // The new policy shouldn't be present yet.
156 PolicyMap previous_policy; 157 PolicyMap previous_policy;
157 EXPECT_EQ(previous_value != NULL, store_->policy() != NULL); 158 EXPECT_EQ(previous_value != NULL, store_->policy() != NULL);
158 if (previous_value) { 159 if (previous_value) {
159 previous_policy.Set(key::kHomepageLocation, POLICY_LEVEL_MANDATORY, 160 previous_policy.Set(key::kHomepageLocation, POLICY_LEVEL_MANDATORY,
160 POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, 161 POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD,
161 base::MakeUnique<base::StringValue>(previous_value), 162 base::MakeUnique<base::StringValue>(previous_value),
162 nullptr); 163 nullptr);
163 } 164 }
164 EXPECT_TRUE(previous_policy.Equals(store_->policy_map())); 165 EXPECT_TRUE(previous_policy.Equals(store_->policy_map()));
165 EXPECT_EQ(CloudPolicyStore::STATUS_OK, store_->status()); 166 EXPECT_EQ(CloudPolicyStore::STATUS_OK, store_->status());
166 167
167 // Store the new public key so that the validation after the retrieve 168 // Store the new public key so that the validation after the retrieve
168 // operation completes can verify the signature. 169 // operation completes can verify the signature.
169 if (new_public_key) 170 if (new_public_key)
170 StoreUserPolicyKey(*new_public_key); 171 StoreUserPolicyKey(*new_public_key);
171 172
172 // Let the store operation complete. 173 // Let the store operation complete.
173 chromeos::SessionManagerClient::RetrievePolicyCallback retrieve_callback; 174 chromeos::SessionManagerClient::RetrievePolicyCallback retrieve_callback;
174 EXPECT_CALL(session_manager_client_, 175 EXPECT_CALL(session_manager_client_,
175 RetrievePolicyForUser(cryptohome_id_, _)) 176 RetrievePolicyForUser(cryptohome_id_, _))
176 .WillOnce(SaveArg<1>(&retrieve_callback)); 177 .WillOnce(SaveArg<1>(&retrieve_callback));
177 store_callback.Run(true); 178 store_callback.Run(true);
178 RunUntilIdle(); 179 base::RunLoop().RunUntilIdle();
179 EXPECT_TRUE(previous_policy.Equals(store_->policy_map())); 180 EXPECT_TRUE(previous_policy.Equals(store_->policy_map()));
180 EXPECT_EQ(CloudPolicyStore::STATUS_OK, store_->status()); 181 EXPECT_EQ(CloudPolicyStore::STATUS_OK, store_->status());
181 Mock::VerifyAndClearExpectations(&session_manager_client_); 182 Mock::VerifyAndClearExpectations(&session_manager_client_);
182 ASSERT_FALSE(retrieve_callback.is_null()); 183 ASSERT_FALSE(retrieve_callback.is_null());
183 184
184 // Finish the retrieve callback. 185 // Finish the retrieve callback.
185 EXPECT_CALL(observer_, OnStoreLoaded(store_.get())); 186 EXPECT_CALL(observer_, OnStoreLoaded(store_.get()));
186 retrieve_callback.Run(policy_.GetBlob()); 187 retrieve_callback.Run(policy_.GetBlob());
187 RunUntilIdle(); 188 base::RunLoop().RunUntilIdle();
188 ASSERT_TRUE(store_->policy()); 189 ASSERT_TRUE(store_->policy());
189 EXPECT_EQ(policy_.policy_data().SerializeAsString(), 190 EXPECT_EQ(policy_.policy_data().SerializeAsString(),
190 store_->policy()->SerializeAsString()); 191 store_->policy()->SerializeAsString());
191 VerifyPolicyMap(new_value); 192 VerifyPolicyMap(new_value);
192 EXPECT_EQ(CloudPolicyStore::STATUS_OK, store_->status()); 193 EXPECT_EQ(CloudPolicyStore::STATUS_OK, store_->status());
193 } 194 }
194 195
195 void VerifyStoreHasValidationError() { 196 void VerifyStoreHasValidationError() {
196 EXPECT_FALSE(store_->policy()); 197 EXPECT_FALSE(store_->policy());
197 EXPECT_TRUE(store_->policy_map().empty()); 198 EXPECT_TRUE(store_->policy_map().empty());
198 EXPECT_EQ(CloudPolicyStore::STATUS_VALIDATION_ERROR, store_->status()); 199 EXPECT_EQ(CloudPolicyStore::STATUS_VALIDATION_ERROR, store_->status());
199 } 200 }
200 201
201 void RunUntilIdle() {
202 loop_.RunUntilIdle();
203 loop_.RunUntilIdle();
204 }
205
206 base::FilePath user_policy_dir() { 202 base::FilePath user_policy_dir() {
207 return tmp_dir_.GetPath().AppendASCII("var_run_user_policy"); 203 return tmp_dir_.GetPath().AppendASCII("var_run_user_policy");
208 } 204 }
209 205
210 base::FilePath user_policy_key_file() { 206 base::FilePath user_policy_key_file() {
211 return user_policy_dir().AppendASCII(kSanitizedUsername) 207 return user_policy_dir().AppendASCII(kSanitizedUsername)
212 .AppendASCII("policy.pub"); 208 .AppendASCII("policy.pub");
213 } 209 }
214 210
215 base::FilePath token_file() { 211 base::FilePath token_file() {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 ASSERT_TRUE(base::DeleteFile(user_policy_key_file(), false)); 250 ASSERT_TRUE(base::DeleteFile(user_policy_key_file(), false));
255 // Make the policy blob contain a new public key. 251 // Make the policy blob contain a new public key.
256 policy_.SetDefaultSigningKey(); 252 policy_.SetDefaultSigningKey();
257 policy_.Build(); 253 policy_.Build();
258 *policy_.policy().mutable_new_public_key_verification_signature() = "garbage"; 254 *policy_.policy().mutable_new_public_key_verification_signature() = "garbage";
259 255
260 EXPECT_CALL(session_manager_client_, 256 EXPECT_CALL(session_manager_client_,
261 StorePolicyForUser(cryptohome_id_, policy_.GetBlob(), _)) 257 StorePolicyForUser(cryptohome_id_, policy_.GetBlob(), _))
262 .Times(0); 258 .Times(0);
263 store_->Store(policy_.policy()); 259 store_->Store(policy_.policy());
264 RunUntilIdle(); 260 base::RunLoop().RunUntilIdle();
265 Mock::VerifyAndClearExpectations(&session_manager_client_); 261 Mock::VerifyAndClearExpectations(&session_manager_client_);
266 } 262 }
267 263
268 TEST_F(UserCloudPolicyStoreChromeOSTest, InitialStoreMissingSignatureFailure) { 264 TEST_F(UserCloudPolicyStoreChromeOSTest, InitialStoreMissingSignatureFailure) {
269 // Start without any public key to trigger the initial key checks. 265 // Start without any public key to trigger the initial key checks.
270 ASSERT_TRUE(base::DeleteFile(user_policy_key_file(), false)); 266 ASSERT_TRUE(base::DeleteFile(user_policy_key_file(), false));
271 // Make the policy blob contain a new public key. 267 // Make the policy blob contain a new public key.
272 policy_.SetDefaultSigningKey(); 268 policy_.SetDefaultSigningKey();
273 policy_.Build(); 269 policy_.Build();
274 policy_.policy().clear_new_public_key_verification_signature(); 270 policy_.policy().clear_new_public_key_verification_signature();
275 271
276 EXPECT_CALL(session_manager_client_, 272 EXPECT_CALL(session_manager_client_,
277 StorePolicyForUser(cryptohome_id_, policy_.GetBlob(), _)) 273 StorePolicyForUser(cryptohome_id_, policy_.GetBlob(), _))
278 .Times(0); 274 .Times(0);
279 store_->Store(policy_.policy()); 275 store_->Store(policy_.policy());
280 RunUntilIdle(); 276 base::RunLoop().RunUntilIdle();
281 Mock::VerifyAndClearExpectations(&session_manager_client_); 277 Mock::VerifyAndClearExpectations(&session_manager_client_);
282 } 278 }
283 279
284 TEST_F(UserCloudPolicyStoreChromeOSTest, StoreWithExistingKey) { 280 TEST_F(UserCloudPolicyStoreChromeOSTest, StoreWithExistingKey) {
285 ASSERT_NO_FATAL_FAILURE( 281 ASSERT_NO_FATAL_FAILURE(
286 PerformStorePolicy(NULL, NULL, kDefaultHomepage)); 282 PerformStorePolicy(NULL, NULL, kDefaultHomepage));
287 } 283 }
288 284
289 TEST_F(UserCloudPolicyStoreChromeOSTest, StoreWithRotation) { 285 TEST_F(UserCloudPolicyStoreChromeOSTest, StoreWithRotation) {
290 // Make the policy blob contain a new public key. 286 // Make the policy blob contain a new public key.
291 policy_.SetDefaultNewSigningKey(); 287 policy_.SetDefaultNewSigningKey();
292 policy_.Build(); 288 policy_.Build();
293 std::vector<uint8_t> new_public_key; 289 std::vector<uint8_t> new_public_key;
294 ASSERT_TRUE(policy_.GetNewSigningKey()->ExportPublicKey(&new_public_key)); 290 ASSERT_TRUE(policy_.GetNewSigningKey()->ExportPublicKey(&new_public_key));
295 ASSERT_NO_FATAL_FAILURE( 291 ASSERT_NO_FATAL_FAILURE(
296 PerformStorePolicy(&new_public_key, NULL, kDefaultHomepage)); 292 PerformStorePolicy(&new_public_key, NULL, kDefaultHomepage));
297 } 293 }
298 294
299 TEST_F(UserCloudPolicyStoreChromeOSTest, 295 TEST_F(UserCloudPolicyStoreChromeOSTest,
300 StoreWithRotationMissingSignatureError) { 296 StoreWithRotationMissingSignatureError) {
301 // Make the policy blob contain a new public key. 297 // Make the policy blob contain a new public key.
302 policy_.SetDefaultNewSigningKey(); 298 policy_.SetDefaultNewSigningKey();
303 policy_.Build(); 299 policy_.Build();
304 policy_.policy().clear_new_public_key_verification_signature(); 300 policy_.policy().clear_new_public_key_verification_signature();
305 301
306 EXPECT_CALL(session_manager_client_, 302 EXPECT_CALL(session_manager_client_,
307 StorePolicyForUser(cryptohome_id_, policy_.GetBlob(), _)) 303 StorePolicyForUser(cryptohome_id_, policy_.GetBlob(), _))
308 .Times(0); 304 .Times(0);
309 store_->Store(policy_.policy()); 305 store_->Store(policy_.policy());
310 RunUntilIdle(); 306 base::RunLoop().RunUntilIdle();
311 Mock::VerifyAndClearExpectations(&session_manager_client_); 307 Mock::VerifyAndClearExpectations(&session_manager_client_);
312 } 308 }
313 309
314 TEST_F(UserCloudPolicyStoreChromeOSTest, StoreWithRotationValidationError) { 310 TEST_F(UserCloudPolicyStoreChromeOSTest, StoreWithRotationValidationError) {
315 // Make the policy blob contain a new public key. 311 // Make the policy blob contain a new public key.
316 policy_.SetDefaultNewSigningKey(); 312 policy_.SetDefaultNewSigningKey();
317 policy_.Build(); 313 policy_.Build();
318 *policy_.policy().mutable_new_public_key_verification_signature() = "garbage"; 314 *policy_.policy().mutable_new_public_key_verification_signature() = "garbage";
319 315
320 EXPECT_CALL(session_manager_client_, 316 EXPECT_CALL(session_manager_client_,
321 StorePolicyForUser(cryptohome_id_, policy_.GetBlob(), _)) 317 StorePolicyForUser(cryptohome_id_, policy_.GetBlob(), _))
322 .Times(0); 318 .Times(0);
323 store_->Store(policy_.policy()); 319 store_->Store(policy_.policy());
324 RunUntilIdle(); 320 base::RunLoop().RunUntilIdle();
325 Mock::VerifyAndClearExpectations(&session_manager_client_); 321 Mock::VerifyAndClearExpectations(&session_manager_client_);
326 } 322 }
327 323
328 TEST_F(UserCloudPolicyStoreChromeOSTest, StoreFail) { 324 TEST_F(UserCloudPolicyStoreChromeOSTest, StoreFail) {
329 // Store policy. 325 // Store policy.
330 chromeos::SessionManagerClient::StorePolicyCallback store_callback; 326 chromeos::SessionManagerClient::StorePolicyCallback store_callback;
331 EXPECT_CALL(session_manager_client_, 327 EXPECT_CALL(session_manager_client_,
332 StorePolicyForUser(cryptohome_id_, policy_.GetBlob(), _)) 328 StorePolicyForUser(cryptohome_id_, policy_.GetBlob(), _))
333 .WillOnce(SaveArg<2>(&store_callback)); 329 .WillOnce(SaveArg<2>(&store_callback));
334 store_->Store(policy_.policy()); 330 store_->Store(policy_.policy());
335 RunUntilIdle(); 331 base::RunLoop().RunUntilIdle();
336 Mock::VerifyAndClearExpectations(&session_manager_client_); 332 Mock::VerifyAndClearExpectations(&session_manager_client_);
337 ASSERT_FALSE(store_callback.is_null()); 333 ASSERT_FALSE(store_callback.is_null());
338 334
339 // Let the store operation complete. 335 // Let the store operation complete.
340 ExpectError(CloudPolicyStore::STATUS_STORE_ERROR); 336 ExpectError(CloudPolicyStore::STATUS_STORE_ERROR);
341 store_callback.Run(false); 337 store_callback.Run(false);
342 RunUntilIdle(); 338 base::RunLoop().RunUntilIdle();
343 EXPECT_FALSE(store_->policy()); 339 EXPECT_FALSE(store_->policy());
344 EXPECT_TRUE(store_->policy_map().empty()); 340 EXPECT_TRUE(store_->policy_map().empty());
345 EXPECT_EQ(CloudPolicyStore::STATUS_STORE_ERROR, store_->status()); 341 EXPECT_EQ(CloudPolicyStore::STATUS_STORE_ERROR, store_->status());
346 } 342 }
347 343
348 TEST_F(UserCloudPolicyStoreChromeOSTest, StoreValidationError) { 344 TEST_F(UserCloudPolicyStoreChromeOSTest, StoreValidationError) {
349 policy_.policy_data().clear_policy_type(); 345 policy_.policy_data().clear_policy_type();
350 policy_.Build(); 346 policy_.Build();
351 347
352 // Store policy. 348 // Store policy.
353 chromeos::SessionManagerClient::StorePolicyCallback store_callback; 349 chromeos::SessionManagerClient::StorePolicyCallback store_callback;
354 ExpectError(CloudPolicyStore::STATUS_VALIDATION_ERROR); 350 ExpectError(CloudPolicyStore::STATUS_VALIDATION_ERROR);
355 EXPECT_CALL(session_manager_client_, 351 EXPECT_CALL(session_manager_client_,
356 StorePolicyForUser(cryptohome_id_, policy_.GetBlob(), _)) 352 StorePolicyForUser(cryptohome_id_, policy_.GetBlob(), _))
357 .Times(0); 353 .Times(0);
358 store_->Store(policy_.policy()); 354 store_->Store(policy_.policy());
359 RunUntilIdle(); 355 base::RunLoop().RunUntilIdle();
360 Mock::VerifyAndClearExpectations(&session_manager_client_); 356 Mock::VerifyAndClearExpectations(&session_manager_client_);
361 } 357 }
362 358
363 TEST_F(UserCloudPolicyStoreChromeOSTest, StoreWithoutPolicyKey) { 359 TEST_F(UserCloudPolicyStoreChromeOSTest, StoreWithoutPolicyKey) {
364 // Make the dbus call to cryptohome fail. 360 // Make the dbus call to cryptohome fail.
365 Mock::VerifyAndClearExpectations(&cryptohome_client_); 361 Mock::VerifyAndClearExpectations(&cryptohome_client_);
366 EXPECT_CALL(cryptohome_client_, GetSanitizedUsername(cryptohome_id_, _)) 362 EXPECT_CALL(cryptohome_client_, GetSanitizedUsername(cryptohome_id_, _))
367 .Times(AnyNumber()) 363 .Times(AnyNumber())
368 .WillRepeatedly(SendSanitizedUsername(chromeos::DBUS_METHOD_CALL_FAILURE, 364 .WillRepeatedly(SendSanitizedUsername(chromeos::DBUS_METHOD_CALL_FAILURE,
369 std::string())); 365 std::string()));
370 366
371 // Store policy. 367 // Store policy.
372 chromeos::SessionManagerClient::StorePolicyCallback store_callback; 368 chromeos::SessionManagerClient::StorePolicyCallback store_callback;
373 ExpectError(CloudPolicyStore::STATUS_VALIDATION_ERROR); 369 ExpectError(CloudPolicyStore::STATUS_VALIDATION_ERROR);
374 EXPECT_CALL(session_manager_client_, 370 EXPECT_CALL(session_manager_client_,
375 StorePolicyForUser(cryptohome_id_, policy_.GetBlob(), _)) 371 StorePolicyForUser(cryptohome_id_, policy_.GetBlob(), _))
376 .Times(0); 372 .Times(0);
377 store_->Store(policy_.policy()); 373 store_->Store(policy_.policy());
378 RunUntilIdle(); 374 base::RunLoop().RunUntilIdle();
379 Mock::VerifyAndClearExpectations(&session_manager_client_); 375 Mock::VerifyAndClearExpectations(&session_manager_client_);
380 } 376 }
381 377
382 TEST_F(UserCloudPolicyStoreChromeOSTest, StoreWithInvalidSignature) { 378 TEST_F(UserCloudPolicyStoreChromeOSTest, StoreWithInvalidSignature) {
383 // Break the signature. 379 // Break the signature.
384 policy_.policy().mutable_policy_data_signature()->append("garbage"); 380 policy_.policy().mutable_policy_data_signature()->append("garbage");
385 381
386 // Store policy. 382 // Store policy.
387 chromeos::SessionManagerClient::StorePolicyCallback store_callback; 383 chromeos::SessionManagerClient::StorePolicyCallback store_callback;
388 ExpectError(CloudPolicyStore::STATUS_VALIDATION_ERROR); 384 ExpectError(CloudPolicyStore::STATUS_VALIDATION_ERROR);
389 EXPECT_CALL(session_manager_client_, 385 EXPECT_CALL(session_manager_client_,
390 StorePolicyForUser(cryptohome_id_, policy_.GetBlob(), _)) 386 StorePolicyForUser(cryptohome_id_, policy_.GetBlob(), _))
391 .Times(0); 387 .Times(0);
392 store_->Store(policy_.policy()); 388 store_->Store(policy_.policy());
393 RunUntilIdle(); 389 base::RunLoop().RunUntilIdle();
394 Mock::VerifyAndClearExpectations(&session_manager_client_); 390 Mock::VerifyAndClearExpectations(&session_manager_client_);
395 } 391 }
396 392
397 TEST_F(UserCloudPolicyStoreChromeOSTest, Load) { 393 TEST_F(UserCloudPolicyStoreChromeOSTest, Load) {
398 EXPECT_CALL(observer_, OnStoreLoaded(store_.get())); 394 EXPECT_CALL(observer_, OnStoreLoaded(store_.get()));
399 ASSERT_NO_FATAL_FAILURE(PerformPolicyLoad(policy_.GetBlob())); 395 ASSERT_NO_FATAL_FAILURE(PerformPolicyLoad(policy_.GetBlob()));
400 Mock::VerifyAndClearExpectations(&observer_); 396 Mock::VerifyAndClearExpectations(&observer_);
401 397
402 // Verify that the policy has been loaded. 398 // Verify that the policy has been loaded.
403 ASSERT_TRUE(store_->policy()); 399 ASSERT_TRUE(store_->policy());
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
666 Mock::VerifyAndClearExpectations(&cryptohome_client_); 662 Mock::VerifyAndClearExpectations(&cryptohome_client_);
667 663
668 EXPECT_FALSE(store_->policy()); 664 EXPECT_FALSE(store_->policy());
669 EXPECT_TRUE(store_->policy_map().empty()); 665 EXPECT_TRUE(store_->policy_map().empty());
670 EXPECT_EQ(CloudPolicyStore::STATUS_VALIDATION_ERROR, store_->status()); 666 EXPECT_EQ(CloudPolicyStore::STATUS_VALIDATION_ERROR, store_->status());
671 } 667 }
672 668
673 } // namespace 669 } // namespace
674 670
675 } // namespace policy 671 } // namespace policy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698