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

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 the new PART2. (I think it should be 100% the same but I'd rather upload it) Created 9 years, 2 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 | 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 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 } 169 }
170 170
171 void SetAllowNewUsers(bool desired, em::PolicyData* poldata) { 171 void SetAllowNewUsers(bool desired, em::PolicyData* poldata) {
172 em::ChromeDeviceSettingsProto pol; 172 em::ChromeDeviceSettingsProto pol;
173 pol.ParseFromString(poldata->policy_value()); 173 pol.ParseFromString(poldata->policy_value());
174 em::AllowNewUsersProto* allow = pol.mutable_allow_new_users(); 174 em::AllowNewUsersProto* allow = pol.mutable_allow_new_users();
175 allow->set_allow_new_users(desired); 175 allow->set_allow_new_users(desired);
176 poldata->set_policy_value(pol.SerializeAsString()); 176 poldata->set_policy_value(pol.SerializeAsString());
177 } 177 }
178 178
179 bool CheckWhitelist(const std::string& email, const em::PolicyData& poldata) {
180 if (!poldata.has_policy_value())
181 return false;
182 em::ChromeDeviceSettingsProto pol;
183 pol.ParseFromString(poldata.policy_value());
184 if (!pol.has_user_whitelist())
185 return false;
186
187 const RepeatedPtrField<std::string>& whitelist =
188 pol.user_whitelist().user_whitelist();
189 for (RepeatedPtrField<std::string>::const_iterator it = whitelist.begin();
190 it != whitelist.end();
191 ++it) {
192 if (email == *it)
193 return true;
194 }
195 return false;
196 }
197
198 void ExpectWhitelistOp(SignedSettings* s,
199 em::PolicyData* fake_pol,
200 em::PolicyData* out_pol) {
201 mock_service(s, &m_);
202 EXPECT_CALL(m_, StartSigningAttempt(_, _))
203 .Times(1);
204 EXPECT_CALL(m_, has_cached_policy())
205 .WillOnce(Return(true));
206 EXPECT_CALL(m_, cached_policy())
207 .WillOnce(ReturnRef(*fake_pol));
208 EXPECT_CALL(m_, set_cached_policy(A<const em::PolicyData&>()))
209 .WillOnce(SaveArg<0>(out_pol));
210 }
211
212 void FailingStorePropertyOp(const OwnerManager::KeyOpCode return_code) { 179 void FailingStorePropertyOp(const OwnerManager::KeyOpCode return_code) {
213 NormalDelegate<bool> d(false); 180 NormalDelegate<bool> d(false);
214 scoped_refptr<SignedSettings> s( 181 scoped_refptr<SignedSettings> s(
215 SignedSettings::CreateStorePropertyOp(fake_prop_, fake_value_, &d)); 182 SignedSettings::CreateStorePropertyOp(fake_prop_, fake_value_, &d));
216 d.expect_failure(SignedSettings::MapKeyOpCode(return_code)); 183 d.expect_failure(SignedSettings::MapKeyOpCode(return_code));
217 184
218 mock_service(s.get(), &m_); 185 mock_service(s.get(), &m_);
219 EXPECT_CALL(m_, StartSigningAttempt(_, _)) 186 EXPECT_CALL(m_, StartSigningAttempt(_, _))
220 .Times(1); 187 .Times(1);
221 EXPECT_CALL(m_, GetStatus(_)) 188 EXPECT_CALL(m_, GetStatus(_))
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
330 297
331 std::vector<uint8> fake_public_key_; 298 std::vector<uint8> fake_public_key_;
332 scoped_ptr<crypto::RSAPrivateKey> fake_private_key_; 299 scoped_ptr<crypto::RSAPrivateKey> fake_private_key_;
333 300
334 MockKeyUtils* mock_; 301 MockKeyUtils* mock_;
335 MockInjector injector_; 302 MockInjector injector_;
336 303
337 ScopedStubCrosEnabler stub_cros_enabler_; 304 ScopedStubCrosEnabler stub_cros_enabler_;
338 }; 305 };
339 306
340 TEST_F(SignedSettingsTest, CheckWhitelist) {
341 NormalDelegate<bool> d(true);
342 d.expect_success();
343 scoped_refptr<SignedSettings> s(
344 SignedSettings::CreateCheckWhitelistOp(fake_email_, &d));
345
346 mock_service(s.get(), &m_);
347 EXPECT_CALL(m_, has_cached_policy())
348 .WillOnce(Return(true));
349
350 std::vector<std::string> whitelist(1, fake_email_);
351 whitelist.push_back(fake_email_ + "m");
352 em::PolicyData fake_pol = BuildPolicyData(whitelist);
353 EXPECT_CALL(m_, cached_policy())
354 .WillOnce(ReturnRef(fake_pol));
355
356 s->Execute();
357 message_loop_.RunAllPending();
358 }
359
360 TEST_F(SignedSettingsTest, CheckWhitelistWildcards) {
361 NormalDelegate<bool> d(true);
362 d.expect_success();
363 scoped_refptr<SignedSettings> s(
364 SignedSettings::CreateCheckWhitelistOp(fake_email_, &d));
365
366 mock_service(s.get(), &m_);
367 EXPECT_CALL(m_, has_cached_policy())
368 .WillOnce(Return(true));
369
370 std::vector<std::string> whitelist(1, fake_domain_);
371 whitelist.push_back(fake_email_ + "m");
372 em::PolicyData fake_pol = BuildPolicyData(whitelist);
373 EXPECT_CALL(m_, cached_policy())
374 .WillOnce(ReturnRef(fake_pol))
375 .WillOnce(ReturnRef(fake_pol));
376
377 s->Execute();
378 message_loop_.RunAllPending();
379 }
380
381 TEST_F(SignedSettingsTest, CheckWhitelistNotFound) {
382 NormalDelegate<bool> d(true);
383 scoped_refptr<SignedSettings> s(
384 SignedSettings::CreateCheckWhitelistOp(fake_email_, &d));
385 d.expect_failure(SignedSettings::NOT_FOUND);
386
387 mock_service(s.get(), &m_);
388 EXPECT_CALL(m_, has_cached_policy())
389 .WillOnce(Return(true));
390
391 std::vector<std::string> whitelist(1, fake_email_ + "m");
392 em::PolicyData fake_pol = BuildPolicyData(whitelist);
393 EXPECT_CALL(m_, cached_policy())
394 .WillOnce(ReturnRef(fake_pol))
395 .WillOnce(ReturnRef(fake_pol));
396
397 s->Execute();
398 message_loop_.RunAllPending();
399 }
400
401 TEST_F(SignedSettingsTest, Whitelist) {
402 NormalDelegate<bool> d(true);
403 d.expect_success();
404 scoped_refptr<SignedSettings> s(
405 SignedSettings::CreateWhitelistOp(fake_email_, true, &d));
406 em::PolicyData in_pol = BuildPolicyData(std::vector<std::string>());
407 em::PolicyData out_pol;
408 ExpectWhitelistOp(s.get(), &in_pol, &out_pol);
409
410 s->Execute();
411 s->OnKeyOpComplete(OwnerManager::SUCCESS, std::vector<uint8>());
412 message_loop_.RunAllPending();
413
414 ASSERT_TRUE(CheckWhitelist(fake_email_, out_pol));
415 }
416
417 TEST_F(SignedSettingsTest, AddToExistingWhitelist) {
418 NormalDelegate<bool> d(true);
419 d.expect_success();
420 scoped_refptr<SignedSettings> s(
421 SignedSettings::CreateWhitelistOp(fake_email_, true, &d));
422 em::PolicyData in_pol =
423 BuildPolicyData(std::vector<std::string>(1, fake_domain_));
424 em::PolicyData out_pol;
425 ExpectWhitelistOp(s.get(), &in_pol, &out_pol);
426
427 s->Execute();
428 s->OnKeyOpComplete(OwnerManager::SUCCESS, std::vector<uint8>());
429 message_loop_.RunAllPending();
430
431 ASSERT_TRUE(CheckWhitelist(fake_email_, out_pol));
432 }
433
434 TEST_F(SignedSettingsTest, Unwhitelist) {
435 NormalDelegate<bool> d(true);
436 d.expect_success();
437 scoped_refptr<SignedSettings> s(
438 SignedSettings::CreateWhitelistOp(fake_email_, false, &d));
439 em::PolicyData in_pol =
440 BuildPolicyData(std::vector<std::string>(1, fake_email_));
441 em::PolicyData out_pol;
442 ExpectWhitelistOp(s.get(), &in_pol, &out_pol);
443
444 s->Execute();
445 s->OnKeyOpComplete(OwnerManager::SUCCESS, std::vector<uint8>());
446 message_loop_.RunAllPending();
447
448 ASSERT_FALSE(CheckWhitelist(fake_email_, out_pol));
449 }
450
451 TEST_F(SignedSettingsTest, RemoveFromExistingWhitelist) {
452 NormalDelegate<bool> d(true);
453 d.expect_success();
454 scoped_refptr<SignedSettings> s(
455 SignedSettings::CreateWhitelistOp(fake_email_, false, &d));
456 std::vector<std::string> whitelist(1, fake_domain_);
457 whitelist.push_back(fake_email_);
458 whitelist.push_back(fake_email_ + "m");
459 em::PolicyData in_pol = BuildPolicyData(whitelist);
460 em::PolicyData out_pol;
461 ExpectWhitelistOp(s.get(), &in_pol, &out_pol);
462
463 s->Execute();
464 s->OnKeyOpComplete(OwnerManager::SUCCESS, std::vector<uint8>());
465 message_loop_.RunAllPending();
466
467 ASSERT_FALSE(CheckWhitelist(fake_email_, out_pol));
468 }
469
470 TEST_F(SignedSettingsTest, StoreProperty) { 307 TEST_F(SignedSettingsTest, StoreProperty) {
471 NormalDelegate<bool> d(true); 308 NormalDelegate<bool> d(true);
472 d.expect_success(); 309 d.expect_success();
473 scoped_refptr<SignedSettings> s( 310 scoped_refptr<SignedSettings> s(
474 SignedSettings::CreateStorePropertyOp(fake_prop_, fake_value_, &d)); 311 SignedSettings::CreateStorePropertyOp(fake_prop_, fake_value_, &d));
475 312
476 mock_service(s.get(), &m_); 313 mock_service(s.get(), &m_);
477 EXPECT_CALL(m_, StartSigningAttempt(_, _)) 314 EXPECT_CALL(m_, StartSigningAttempt(_, _))
478 .Times(1); 315 .Times(1);
479 EXPECT_CALL(m_, GetStatus(_)) 316 EXPECT_CALL(m_, GetStatus(_))
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after
812 649
813 s->Execute(); 650 s->Execute();
814 message_loop_.RunAllPending(); 651 message_loop_.RunAllPending();
815 UnMockLoginLib(); 652 UnMockLoginLib();
816 653
817 s->OnKeyOpComplete(OwnerManager::OPERATION_FAILED, std::vector<uint8>()); 654 s->OnKeyOpComplete(OwnerManager::OPERATION_FAILED, std::vector<uint8>());
818 message_loop_.RunAllPending(); 655 message_loop_.RunAllPending();
819 } 656 }
820 657
821 } // namespace chromeos 658 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698