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

Side by Side Diff: chrome/browser/chromeos/settings/device_settings_service_unittest.cc

Issue 23532034: Postpone loading about:flags ui until the certificates have been loaded (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 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 | Annotate | Revision Log
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/settings/device_settings_service.h" 5 #include "chrome/browser/chromeos/settings/device_settings_service.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/bind_helpers.h" 9 #include "base/bind_helpers.h"
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
(...skipping 21 matching lines...) Expand all
32 32
33 } // namespace 33 } // namespace
34 34
35 class DeviceSettingsServiceTest : public DeviceSettingsTestBase { 35 class DeviceSettingsServiceTest : public DeviceSettingsTestBase {
36 public: 36 public:
37 void SetOperationCompleted() { 37 void SetOperationCompleted() {
38 operation_completed_ = true; 38 operation_completed_ = true;
39 } 39 }
40 40
41 void SetOwnershipStatus( 41 void SetOwnershipStatus(
42 DeviceSettingsService::OwnershipStatus ownership_status, 42 DeviceSettingsService::OwnershipStatus ownership_status) {
43 bool is_owner) { 43 ownership_status_ = ownership_status;
44 }
45
46 void OnIsOwner(bool is_owner) {
44 is_owner_ = is_owner; 47 is_owner_ = is_owner;
45 ownership_status_ = ownership_status; 48 is_owner_set_ = true;
46 } 49 }
47 50
48 protected: 51 protected:
49 DeviceSettingsServiceTest() 52 DeviceSettingsServiceTest()
50 : operation_completed_(false), 53 : operation_completed_(false),
51 is_owner_(true), 54 is_owner_(true),
55 is_owner_set_(false),
52 ownership_status_(DeviceSettingsService::OWNERSHIP_UNKNOWN) {} 56 ownership_status_(DeviceSettingsService::OWNERSHIP_UNKNOWN) {}
53 57
54 virtual void SetUp() OVERRIDE { 58 virtual void SetUp() OVERRIDE {
55 device_policy_.payload().mutable_device_policy_refresh_rate()-> 59 device_policy_.payload().mutable_device_policy_refresh_rate()->
56 set_device_policy_refresh_rate(120); 60 set_device_policy_refresh_rate(120);
57 DeviceSettingsTestBase::SetUp(); 61 DeviceSettingsTestBase::SetUp();
58 } 62 }
59 63
60 void CheckPolicy() { 64 void CheckPolicy() {
61 ASSERT_TRUE(device_settings_service_.policy_data()); 65 ASSERT_TRUE(device_settings_service_.policy_data());
62 EXPECT_EQ(device_policy_.policy_data().SerializeAsString(), 66 EXPECT_EQ(device_policy_.policy_data().SerializeAsString(),
63 device_settings_service_.policy_data()->SerializeAsString()); 67 device_settings_service_.policy_data()->SerializeAsString());
64 ASSERT_TRUE(device_settings_service_.device_settings()); 68 ASSERT_TRUE(device_settings_service_.device_settings());
65 EXPECT_EQ(device_policy_.payload().SerializeAsString(), 69 EXPECT_EQ(device_policy_.payload().SerializeAsString(),
66 device_settings_service_.device_settings()->SerializeAsString()); 70 device_settings_service_.device_settings()->SerializeAsString());
67 } 71 }
68 72
69 bool operation_completed_; 73 bool operation_completed_;
70 bool is_owner_; 74 bool is_owner_;
75 bool is_owner_set_;
71 DeviceSettingsService::OwnershipStatus ownership_status_; 76 DeviceSettingsService::OwnershipStatus ownership_status_;
72 77
73 private: 78 private:
74 DISALLOW_COPY_AND_ASSIGN(DeviceSettingsServiceTest); 79 DISALLOW_COPY_AND_ASSIGN(DeviceSettingsServiceTest);
75 }; 80 };
76 81
77 TEST_F(DeviceSettingsServiceTest, LoadNoKey) { 82 TEST_F(DeviceSettingsServiceTest, LoadNoKey) {
78 owner_key_util_->Clear(); 83 owner_key_util_->Clear();
79 ReloadDeviceSettings(); 84 ReloadDeviceSettings();
80 85
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 device_settings_service_.GetOwnershipStatusAsync( 279 device_settings_service_.GetOwnershipStatusAsync(
275 base::Bind(&DeviceSettingsServiceTest::SetOwnershipStatus, 280 base::Bind(&DeviceSettingsServiceTest::SetOwnershipStatus,
276 base::Unretained(this))); 281 base::Unretained(this)));
277 FlushDeviceSettings(); 282 FlushDeviceSettings();
278 EXPECT_FALSE(device_settings_service_.HasPrivateOwnerKey()); 283 EXPECT_FALSE(device_settings_service_.HasPrivateOwnerKey());
279 ASSERT_TRUE(device_settings_service_.GetOwnerKey().get()); 284 ASSERT_TRUE(device_settings_service_.GetOwnerKey().get());
280 EXPECT_FALSE(device_settings_service_.GetOwnerKey()->public_key()); 285 EXPECT_FALSE(device_settings_service_.GetOwnerKey()->public_key());
281 EXPECT_FALSE(device_settings_service_.GetOwnerKey()->private_key()); 286 EXPECT_FALSE(device_settings_service_.GetOwnerKey()->private_key());
282 EXPECT_EQ(DeviceSettingsService::OWNERSHIP_NONE, 287 EXPECT_EQ(DeviceSettingsService::OWNERSHIP_NONE,
283 device_settings_service_.GetOwnershipStatus()); 288 device_settings_service_.GetOwnershipStatus());
284 EXPECT_FALSE(is_owner_);
285 EXPECT_EQ(DeviceSettingsService::OWNERSHIP_NONE, ownership_status_); 289 EXPECT_EQ(DeviceSettingsService::OWNERSHIP_NONE, ownership_status_);
286 290
287 owner_key_util_->SetPublicKeyFromPrivateKey(*device_policy_.GetSigningKey()); 291 owner_key_util_->SetPublicKeyFromPrivateKey(*device_policy_.GetSigningKey());
288 ReloadDeviceSettings(); 292 ReloadDeviceSettings();
289 device_settings_service_.GetOwnershipStatusAsync( 293 device_settings_service_.GetOwnershipStatusAsync(
290 base::Bind(&DeviceSettingsServiceTest::SetOwnershipStatus, 294 base::Bind(&DeviceSettingsServiceTest::SetOwnershipStatus,
291 base::Unretained(this))); 295 base::Unretained(this)));
292 FlushDeviceSettings(); 296 FlushDeviceSettings();
293 EXPECT_FALSE(device_settings_service_.HasPrivateOwnerKey()); 297 EXPECT_FALSE(device_settings_service_.HasPrivateOwnerKey());
294 ASSERT_TRUE(device_settings_service_.GetOwnerKey().get()); 298 ASSERT_TRUE(device_settings_service_.GetOwnerKey().get());
295 ASSERT_TRUE(device_settings_service_.GetOwnerKey()->public_key()); 299 ASSERT_TRUE(device_settings_service_.GetOwnerKey()->public_key());
296 std::vector<uint8> key; 300 std::vector<uint8> key;
297 ASSERT_TRUE(device_policy_.GetSigningKey()->ExportPublicKey(&key)); 301 ASSERT_TRUE(device_policy_.GetSigningKey()->ExportPublicKey(&key));
298 EXPECT_EQ(*device_settings_service_.GetOwnerKey()->public_key(), key); 302 EXPECT_EQ(*device_settings_service_.GetOwnerKey()->public_key(), key);
299 EXPECT_FALSE(device_settings_service_.GetOwnerKey()->private_key()); 303 EXPECT_FALSE(device_settings_service_.GetOwnerKey()->private_key());
300 EXPECT_EQ(DeviceSettingsService::OWNERSHIP_TAKEN, 304 EXPECT_EQ(DeviceSettingsService::OWNERSHIP_TAKEN,
301 device_settings_service_.GetOwnershipStatus()); 305 device_settings_service_.GetOwnershipStatus());
302 EXPECT_FALSE(is_owner_);
303 EXPECT_EQ(DeviceSettingsService::OWNERSHIP_TAKEN, ownership_status_); 306 EXPECT_EQ(DeviceSettingsService::OWNERSHIP_TAKEN, ownership_status_);
304 307
305 owner_key_util_->SetPrivateKey(device_policy_.GetSigningKey()); 308 owner_key_util_->SetPrivateKey(device_policy_.GetSigningKey());
306 device_settings_service_.SetUsername(device_policy_.policy_data().username()); 309 device_settings_service_.SetUsername(device_policy_.policy_data().username());
307 device_settings_service_.GetOwnershipStatusAsync( 310 device_settings_service_.GetOwnershipStatusAsync(
308 base::Bind(&DeviceSettingsServiceTest::SetOwnershipStatus, 311 base::Bind(&DeviceSettingsServiceTest::SetOwnershipStatus,
309 base::Unretained(this))); 312 base::Unretained(this)));
310 FlushDeviceSettings(); 313 FlushDeviceSettings();
311 EXPECT_TRUE(device_settings_service_.HasPrivateOwnerKey()); 314 EXPECT_TRUE(device_settings_service_.HasPrivateOwnerKey());
312 ASSERT_TRUE(device_settings_service_.GetOwnerKey().get()); 315 ASSERT_TRUE(device_settings_service_.GetOwnerKey().get());
313 ASSERT_TRUE(device_settings_service_.GetOwnerKey()->public_key()); 316 ASSERT_TRUE(device_settings_service_.GetOwnerKey()->public_key());
314 ASSERT_TRUE(device_policy_.GetSigningKey()->ExportPublicKey(&key)); 317 ASSERT_TRUE(device_policy_.GetSigningKey()->ExportPublicKey(&key));
315 EXPECT_EQ(*device_settings_service_.GetOwnerKey()->public_key(), key); 318 EXPECT_EQ(*device_settings_service_.GetOwnerKey()->public_key(), key);
316 EXPECT_TRUE(device_settings_service_.GetOwnerKey()->private_key()); 319 EXPECT_TRUE(device_settings_service_.GetOwnerKey()->private_key());
317 EXPECT_EQ(DeviceSettingsService::OWNERSHIP_TAKEN, 320 EXPECT_EQ(DeviceSettingsService::OWNERSHIP_TAKEN,
318 device_settings_service_.GetOwnershipStatus()); 321 device_settings_service_.GetOwnershipStatus());
322 EXPECT_EQ(DeviceSettingsService::OWNERSHIP_TAKEN, ownership_status_);
323 }
324
325 TEST_F(DeviceSettingsServiceTest, OnCertificatesLoadedForNonOwner) {
326 owner_key_util_->Clear();
327
328 EXPECT_FALSE(device_settings_service_.HasPrivateOwnerKey());
329 EXPECT_FALSE(device_settings_service_.GetOwnerKey().get());
330 EXPECT_EQ(DeviceSettingsService::OWNERSHIP_UNKNOWN,
331 device_settings_service_.GetOwnershipStatus());
332
333 device_settings_service_.IsCurrentUserOwnerAsync(
334 base::Bind(&DeviceSettingsServiceTest::OnIsOwner,
335 base::Unretained(this)));
336
337 owner_key_util_->SetPublicKeyFromPrivateKey(*device_policy_.GetSigningKey());
338 ReloadDeviceSettings();
339
340 EXPECT_FALSE(device_settings_service_.HasPrivateOwnerKey());
341 ASSERT_TRUE(device_settings_service_.GetOwnerKey().get());
342 ASSERT_TRUE(device_settings_service_.GetOwnerKey()->public_key());
343 std::vector<uint8> key;
344 ASSERT_TRUE(device_policy_.GetSigningKey()->ExportPublicKey(&key));
345 EXPECT_EQ(*device_settings_service_.GetOwnerKey()->public_key(), key);
346 EXPECT_FALSE(device_settings_service_.GetOwnerKey()->private_key());
347 EXPECT_EQ(DeviceSettingsService::OWNERSHIP_TAKEN,
348 device_settings_service_.GetOwnershipStatus());
349 EXPECT_FALSE(is_owner_set_);
350
351 // Simulate CertLoader reporting a new set of certificates. The passed
352 // certificates are ignored.
353 device_settings_service_.OnCertificatesLoaded(net::CertificateList(), true);
354 FlushDeviceSettings();
355
356 EXPECT_FALSE(device_settings_service_.HasPrivateOwnerKey());
357 ASSERT_TRUE(device_settings_service_.GetOwnerKey().get());
358 ASSERT_TRUE(device_settings_service_.GetOwnerKey()->public_key());
359 ASSERT_TRUE(device_policy_.GetSigningKey()->ExportPublicKey(&key));
360 EXPECT_EQ(*device_settings_service_.GetOwnerKey()->public_key(), key);
361 EXPECT_FALSE(device_settings_service_.GetOwnerKey()->private_key());
362 EXPECT_EQ(DeviceSettingsService::OWNERSHIP_TAKEN,
363 device_settings_service_.GetOwnershipStatus());
364 EXPECT_TRUE(is_owner_set_);
365 EXPECT_FALSE(is_owner_);
366 }
367
368 TEST_F(DeviceSettingsServiceTest, OnCertificatesLoadedForOwner) {
369 owner_key_util_->Clear();
370
371 EXPECT_FALSE(device_settings_service_.HasPrivateOwnerKey());
372 EXPECT_FALSE(device_settings_service_.GetOwnerKey().get());
373 EXPECT_EQ(DeviceSettingsService::OWNERSHIP_UNKNOWN,
374 device_settings_service_.GetOwnershipStatus());
375
376 device_settings_service_.IsCurrentUserOwnerAsync(
377 base::Bind(&DeviceSettingsServiceTest::OnIsOwner,
378 base::Unretained(this)));
379
380 owner_key_util_->SetPublicKeyFromPrivateKey(*device_policy_.GetSigningKey());
381 ReloadDeviceSettings();
382
383 EXPECT_FALSE(device_settings_service_.HasPrivateOwnerKey());
384 ASSERT_TRUE(device_settings_service_.GetOwnerKey().get());
385 ASSERT_TRUE(device_settings_service_.GetOwnerKey()->public_key());
386 std::vector<uint8> key;
387 ASSERT_TRUE(device_policy_.GetSigningKey()->ExportPublicKey(&key));
388 EXPECT_EQ(*device_settings_service_.GetOwnerKey()->public_key(), key);
389 EXPECT_FALSE(device_settings_service_.GetOwnerKey()->private_key());
390 EXPECT_EQ(DeviceSettingsService::OWNERSHIP_TAKEN,
391 device_settings_service_.GetOwnershipStatus());
392 EXPECT_FALSE(is_owner_set_);
393
394 owner_key_util_->SetPrivateKey(device_policy_.GetSigningKey());
395 device_settings_service_.SetUsername(device_policy_.policy_data().username());
396 // Simulate CertLoader reporting a new set of certificates. The passed
397 // certificates are ignored.
398 device_settings_service_.OnCertificatesLoaded(net::CertificateList(), true);
399 FlushDeviceSettings();
400
401 EXPECT_TRUE(device_settings_service_.HasPrivateOwnerKey());
402 ASSERT_TRUE(device_settings_service_.GetOwnerKey().get());
403 ASSERT_TRUE(device_settings_service_.GetOwnerKey()->public_key());
404 ASSERT_TRUE(device_policy_.GetSigningKey()->ExportPublicKey(&key));
405 EXPECT_EQ(*device_settings_service_.GetOwnerKey()->public_key(), key);
406 EXPECT_TRUE(device_settings_service_.GetOwnerKey()->private_key());
407 EXPECT_EQ(DeviceSettingsService::OWNERSHIP_TAKEN,
408 device_settings_service_.GetOwnershipStatus());
409 EXPECT_TRUE(is_owner_set_);
319 EXPECT_TRUE(is_owner_); 410 EXPECT_TRUE(is_owner_);
320 EXPECT_EQ(DeviceSettingsService::OWNERSHIP_TAKEN, ownership_status_); 411 }
412
413 TEST_F(DeviceSettingsServiceTest, IsCurrentUserOwnerAsyncWithLoadedCerts) {
414 owner_key_util_->Clear();
415
416 EXPECT_FALSE(device_settings_service_.HasPrivateOwnerKey());
417 EXPECT_FALSE(device_settings_service_.GetOwnerKey().get());
418 EXPECT_EQ(DeviceSettingsService::OWNERSHIP_UNKNOWN,
419 device_settings_service_.GetOwnershipStatus());
420
421 owner_key_util_->SetPublicKeyFromPrivateKey(*device_policy_.GetSigningKey());
422 owner_key_util_->SetPrivateKey(device_policy_.GetSigningKey());
423 device_settings_service_.SetUsername(device_policy_.policy_data().username());
424 ReloadDeviceSettings();
425
426 // Simulate CertLoader reporting a new set of certificates. The passed
427 // certificates are ignored.
428 device_settings_service_.OnCertificatesLoaded(net::CertificateList(), true);
429 FlushDeviceSettings();
430
431 EXPECT_TRUE(device_settings_service_.HasPrivateOwnerKey());
432 ASSERT_TRUE(device_settings_service_.GetOwnerKey().get());
433 ASSERT_TRUE(device_settings_service_.GetOwnerKey()->public_key());
434 std::vector<uint8> key;
435 ASSERT_TRUE(device_policy_.GetSigningKey()->ExportPublicKey(&key));
436 EXPECT_EQ(*device_settings_service_.GetOwnerKey()->public_key(), key);
437 EXPECT_TRUE(device_settings_service_.GetOwnerKey()->private_key());
438 EXPECT_EQ(DeviceSettingsService::OWNERSHIP_TAKEN,
439 device_settings_service_.GetOwnershipStatus());
440 EXPECT_FALSE(is_owner_set_);
441
442 device_settings_service_.IsCurrentUserOwnerAsync(
443 base::Bind(&DeviceSettingsServiceTest::OnIsOwner,
444 base::Unretained(this)));
445 // The callback should be called immediately.
446 base::MessageLoop::current()->RunUntilIdle();
447
448 EXPECT_TRUE(device_settings_service_.HasPrivateOwnerKey());
449 ASSERT_TRUE(device_settings_service_.GetOwnerKey().get());
450 ASSERT_TRUE(device_settings_service_.GetOwnerKey()->public_key());
451 ASSERT_TRUE(device_policy_.GetSigningKey()->ExportPublicKey(&key));
452 EXPECT_EQ(*device_settings_service_.GetOwnerKey()->public_key(), key);
453 EXPECT_TRUE(device_settings_service_.GetOwnerKey()->private_key());
454 EXPECT_EQ(DeviceSettingsService::OWNERSHIP_TAKEN,
455 device_settings_service_.GetOwnershipStatus());
456 EXPECT_TRUE(is_owner_set_);
457 EXPECT_TRUE(is_owner_);
321 } 458 }
322 459
323 TEST_F(DeviceSettingsServiceTest, Observer) { 460 TEST_F(DeviceSettingsServiceTest, Observer) {
324 owner_key_util_->Clear(); 461 owner_key_util_->Clear();
325 MockDeviceSettingsObserver observer_; 462 MockDeviceSettingsObserver observer_;
326 device_settings_service_.AddObserver(&observer_); 463 device_settings_service_.AddObserver(&observer_);
327 464
328 EXPECT_CALL(observer_, OwnershipStatusChanged()).Times(1); 465 EXPECT_CALL(observer_, OwnershipStatusChanged()).Times(1);
329 EXPECT_CALL(observer_, DeviceSettingsUpdated()).Times(1); 466 EXPECT_CALL(observer_, DeviceSettingsUpdated()).Times(1);
330 ReloadDeviceSettings(); 467 ReloadDeviceSettings();
(...skipping 14 matching lines...) Expand all
345 EXPECT_CALL(observer_, OwnershipStatusChanged()).Times(0); 482 EXPECT_CALL(observer_, OwnershipStatusChanged()).Times(0);
346 EXPECT_CALL(observer_, DeviceSettingsUpdated()).Times(1); 483 EXPECT_CALL(observer_, DeviceSettingsUpdated()).Times(1);
347 device_settings_service_.PropertyChangeComplete(true); 484 device_settings_service_.PropertyChangeComplete(true);
348 FlushDeviceSettings(); 485 FlushDeviceSettings();
349 Mock::VerifyAndClearExpectations(&observer_); 486 Mock::VerifyAndClearExpectations(&observer_);
350 487
351 device_settings_service_.RemoveObserver(&observer_); 488 device_settings_service_.RemoveObserver(&observer_);
352 } 489 }
353 490
354 } // namespace chromeos 491 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/settings/device_settings_service.cc ('k') | chrome/browser/resources/flags.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698