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

Side by Side Diff: chrome/browser/chromeos/login/signed_settings_unittest.cc

Issue 8163011: PART3: Removed whitelist special ops. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased on ToT where both previous parts are committed. 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/chromeos/login/signed_settings.h" 5 #include "chrome/browser/chromeos/login/signed_settings.h"
6 6
7 #include "base/file_util.h" 7 #include "base/file_util.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/scoped_temp_dir.h" 9 #include "base/scoped_temp_dir.h"
10 #include "base/stringprintf.h" 10 #include "base/stringprintf.h"
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 } 170 }
171 171
172 void SetAllowNewUsers(bool desired, em::PolicyData* poldata) { 172 void SetAllowNewUsers(bool desired, em::PolicyData* poldata) {
173 em::ChromeDeviceSettingsProto pol; 173 em::ChromeDeviceSettingsProto pol;
174 pol.ParseFromString(poldata->policy_value()); 174 pol.ParseFromString(poldata->policy_value());
175 em::AllowNewUsersProto* allow = pol.mutable_allow_new_users(); 175 em::AllowNewUsersProto* allow = pol.mutable_allow_new_users();
176 allow->set_allow_new_users(desired); 176 allow->set_allow_new_users(desired);
177 poldata->set_policy_value(pol.SerializeAsString()); 177 poldata->set_policy_value(pol.SerializeAsString());
178 } 178 }
179 179
180 bool CheckWhitelist(const std::string& email, const em::PolicyData& poldata) {
181 if (!poldata.has_policy_value())
182 return false;
183 em::ChromeDeviceSettingsProto pol;
184 pol.ParseFromString(poldata.policy_value());
185 if (!pol.has_user_whitelist())
186 return false;
187
188 const RepeatedPtrField<std::string>& whitelist =
189 pol.user_whitelist().user_whitelist();
190 for (RepeatedPtrField<std::string>::const_iterator it = whitelist.begin();
191 it != whitelist.end();
192 ++it) {
193 if (email == *it)
194 return true;
195 }
196 return false;
197 }
198
199 void ExpectWhitelistOp(SignedSettings* s,
200 em::PolicyData* fake_pol,
201 em::PolicyData* out_pol) {
202 mock_service(s, &m_);
203 EXPECT_CALL(m_, StartSigningAttempt(_, _))
204 .Times(1);
205 EXPECT_CALL(m_, has_cached_policy())
206 .WillOnce(Return(true));
207 EXPECT_CALL(m_, cached_policy())
208 .WillOnce(ReturnRef(*fake_pol));
209 EXPECT_CALL(m_, set_cached_policy(A<const em::PolicyData&>()))
210 .WillOnce(SaveArg<0>(out_pol));
211 }
212
213 void FailingStorePropertyOp(const OwnerManager::KeyOpCode return_code) { 180 void FailingStorePropertyOp(const OwnerManager::KeyOpCode return_code) {
214 NormalDelegate<bool> d(false); 181 NormalDelegate<bool> d(false);
215 scoped_refptr<SignedSettings> s( 182 scoped_refptr<SignedSettings> s(
216 SignedSettings::CreateStorePropertyOp(fake_prop_, fake_value_, &d)); 183 SignedSettings::CreateStorePropertyOp(fake_prop_, fake_value_, &d));
217 d.expect_failure(SignedSettings::MapKeyOpCode(return_code)); 184 d.expect_failure(SignedSettings::MapKeyOpCode(return_code));
218 185
219 mock_service(s.get(), &m_); 186 mock_service(s.get(), &m_);
220 EXPECT_CALL(m_, StartSigningAttempt(_, _)) 187 EXPECT_CALL(m_, StartSigningAttempt(_, _))
221 .Times(1); 188 .Times(1);
222 EXPECT_CALL(m_, GetStatus(_)) 189 EXPECT_CALL(m_, GetStatus(_))
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 MockInjector injector_; 274 MockInjector injector_;
308 MockDBusThreadManager* mock_dbus_thread_manager_; 275 MockDBusThreadManager* mock_dbus_thread_manager_;
309 276
310 ScopedStubCrosEnabler stub_cros_enabler_; 277 ScopedStubCrosEnabler stub_cros_enabler_;
311 }; 278 };
312 279
313 ACTION_P(Retrieve, policy_blob) { arg0.Run(policy_blob); } 280 ACTION_P(Retrieve, policy_blob) { arg0.Run(policy_blob); }
314 ACTION_P(Store, success) { arg1.Run(success); } 281 ACTION_P(Store, success) { arg1.Run(success); }
315 ACTION_P(FinishKeyOp, s) { arg2->OnKeyOpComplete(OwnerManager::SUCCESS, s); } 282 ACTION_P(FinishKeyOp, s) { arg2->OnKeyOpComplete(OwnerManager::SUCCESS, s); }
316 283
317 TEST_F(SignedSettingsTest, CheckWhitelist) {
318 NormalDelegate<bool> d(true);
319 d.expect_success();
320 scoped_refptr<SignedSettings> s(
321 SignedSettings::CreateCheckWhitelistOp(fake_email_, &d));
322
323 mock_service(s.get(), &m_);
324 EXPECT_CALL(m_, has_cached_policy())
325 .WillOnce(Return(true));
326
327 std::vector<std::string> whitelist(1, fake_email_);
328 whitelist.push_back(fake_email_ + "m");
329 em::PolicyData fake_pol = BuildPolicyData(whitelist);
330 EXPECT_CALL(m_, cached_policy())
331 .WillOnce(ReturnRef(fake_pol));
332
333 s->Execute();
334 message_loop_.RunAllPending();
335 }
336
337 TEST_F(SignedSettingsTest, CheckWhitelistWildcards) {
338 NormalDelegate<bool> d(true);
339 d.expect_success();
340 scoped_refptr<SignedSettings> s(
341 SignedSettings::CreateCheckWhitelistOp(fake_email_, &d));
342
343 mock_service(s.get(), &m_);
344 EXPECT_CALL(m_, has_cached_policy())
345 .WillOnce(Return(true));
346
347 std::vector<std::string> whitelist(1, fake_domain_);
348 whitelist.push_back(fake_email_ + "m");
349 em::PolicyData fake_pol = BuildPolicyData(whitelist);
350 EXPECT_CALL(m_, cached_policy())
351 .WillOnce(ReturnRef(fake_pol))
352 .WillOnce(ReturnRef(fake_pol));
353
354 s->Execute();
355 message_loop_.RunAllPending();
356 }
357
358 TEST_F(SignedSettingsTest, CheckWhitelistNotFound) {
359 NormalDelegate<bool> d(true);
360 scoped_refptr<SignedSettings> s(
361 SignedSettings::CreateCheckWhitelistOp(fake_email_, &d));
362 d.expect_failure(SignedSettings::NOT_FOUND);
363
364 mock_service(s.get(), &m_);
365 EXPECT_CALL(m_, has_cached_policy())
366 .WillOnce(Return(true));
367
368 std::vector<std::string> whitelist(1, fake_email_ + "m");
369 em::PolicyData fake_pol = BuildPolicyData(whitelist);
370 EXPECT_CALL(m_, cached_policy())
371 .WillOnce(ReturnRef(fake_pol))
372 .WillOnce(ReturnRef(fake_pol));
373
374 s->Execute();
375 message_loop_.RunAllPending();
376 }
377
378 TEST_F(SignedSettingsTest, Whitelist) {
379 NormalDelegate<bool> d(true);
380 d.expect_success();
381 scoped_refptr<SignedSettings> s(
382 SignedSettings::CreateWhitelistOp(fake_email_, true, &d));
383 em::PolicyData in_pol = BuildPolicyData(std::vector<std::string>());
384 em::PolicyData out_pol;
385 ExpectWhitelistOp(s.get(), &in_pol, &out_pol);
386
387 MockSessionManagerClient* client =
388 mock_dbus_thread_manager_->mock_session_manager_client();
389 EXPECT_CALL(*client, StorePolicy(_, _))
390 .WillOnce(Store(true))
391 .RetiresOnSaturation();
392
393 s->Execute();
394 s->OnKeyOpComplete(OwnerManager::SUCCESS, std::vector<uint8>());
395 message_loop_.RunAllPending();
396
397 ASSERT_TRUE(CheckWhitelist(fake_email_, out_pol));
398 }
399
400 TEST_F(SignedSettingsTest, AddToExistingWhitelist) {
401 NormalDelegate<bool> d(true);
402 d.expect_success();
403 scoped_refptr<SignedSettings> s(
404 SignedSettings::CreateWhitelistOp(fake_email_, true, &d));
405 em::PolicyData in_pol =
406 BuildPolicyData(std::vector<std::string>(1, fake_domain_));
407 em::PolicyData out_pol;
408 ExpectWhitelistOp(s.get(), &in_pol, &out_pol);
409
410 MockSessionManagerClient* client =
411 mock_dbus_thread_manager_->mock_session_manager_client();
412 EXPECT_CALL(*client, StorePolicy(_, _))
413 .WillOnce(Store(true))
414 .RetiresOnSaturation();
415
416 s->Execute();
417 s->OnKeyOpComplete(OwnerManager::SUCCESS, std::vector<uint8>());
418 message_loop_.RunAllPending();
419
420 ASSERT_TRUE(CheckWhitelist(fake_email_, out_pol));
421 }
422
423 TEST_F(SignedSettingsTest, Unwhitelist) {
424 NormalDelegate<bool> d(true);
425 d.expect_success();
426 scoped_refptr<SignedSettings> s(
427 SignedSettings::CreateWhitelistOp(fake_email_, false, &d));
428 em::PolicyData in_pol =
429 BuildPolicyData(std::vector<std::string>(1, fake_email_));
430 em::PolicyData out_pol;
431 ExpectWhitelistOp(s.get(), &in_pol, &out_pol);
432
433 MockSessionManagerClient* client =
434 mock_dbus_thread_manager_->mock_session_manager_client();
435 EXPECT_CALL(*client, StorePolicy(_, _))
436 .WillOnce(Store(true))
437 .RetiresOnSaturation();
438
439 s->Execute();
440 s->OnKeyOpComplete(OwnerManager::SUCCESS, std::vector<uint8>());
441 message_loop_.RunAllPending();
442
443 ASSERT_FALSE(CheckWhitelist(fake_email_, out_pol));
444 }
445
446 TEST_F(SignedSettingsTest, RemoveFromExistingWhitelist) {
447 NormalDelegate<bool> d(true);
448 d.expect_success();
449 scoped_refptr<SignedSettings> s(
450 SignedSettings::CreateWhitelistOp(fake_email_, false, &d));
451 std::vector<std::string> whitelist(1, fake_domain_);
452 whitelist.push_back(fake_email_);
453 whitelist.push_back(fake_email_ + "m");
454 em::PolicyData in_pol = BuildPolicyData(whitelist);
455 em::PolicyData out_pol;
456 ExpectWhitelistOp(s.get(), &in_pol, &out_pol);
457
458 MockSessionManagerClient* client =
459 mock_dbus_thread_manager_->mock_session_manager_client();
460 EXPECT_CALL(*client, StorePolicy(_, _))
461 .WillOnce(Store(true))
462 .RetiresOnSaturation();
463
464 s->Execute();
465 s->OnKeyOpComplete(OwnerManager::SUCCESS, std::vector<uint8>());
466 message_loop_.RunAllPending();
467
468 ASSERT_FALSE(CheckWhitelist(fake_email_, out_pol));
469 }
470
471 TEST_F(SignedSettingsTest, StoreProperty) { 284 TEST_F(SignedSettingsTest, StoreProperty) {
472 NormalDelegate<bool> d(true); 285 NormalDelegate<bool> d(true);
473 d.expect_success(); 286 d.expect_success();
474 scoped_refptr<SignedSettings> s( 287 scoped_refptr<SignedSettings> s(
475 SignedSettings::CreateStorePropertyOp(fake_prop_, fake_value_, &d)); 288 SignedSettings::CreateStorePropertyOp(fake_prop_, fake_value_, &d));
476 289
477 mock_service(s.get(), &m_); 290 mock_service(s.get(), &m_);
478 EXPECT_CALL(m_, StartSigningAttempt(_, _)) 291 EXPECT_CALL(m_, StartSigningAttempt(_, _))
479 .Times(1); 292 .Times(1);
480 EXPECT_CALL(m_, GetStatus(_)) 293 EXPECT_CALL(m_, GetStatus(_))
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after
808 .Times(1); 621 .Times(1);
809 622
810 s->Execute(); 623 s->Execute();
811 message_loop_.RunAllPending(); 624 message_loop_.RunAllPending();
812 625
813 s->OnKeyOpComplete(OwnerManager::OPERATION_FAILED, std::vector<uint8>()); 626 s->OnKeyOpComplete(OwnerManager::OPERATION_FAILED, std::vector<uint8>());
814 message_loop_.RunAllPending(); 627 message_loop_.RunAllPending();
815 } 628 }
816 629
817 } // namespace chromeos 630 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698