| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |