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 |