| 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/policy/device_cloud_policy_manager_chromeos.h" | 5 #include "chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 171 base::Bind(&CopyLockResult, &loop, &result)); | 171 base::Bind(&CopyLockResult, &loop, &result)); |
| 172 loop.Run(); | 172 loop.Run(); |
| 173 ASSERT_EQ(EnterpriseInstallAttributes::LOCK_SUCCESS, result); | 173 ASSERT_EQ(EnterpriseInstallAttributes::LOCK_SUCCESS, result); |
| 174 } | 174 } |
| 175 | 175 |
| 176 void ConnectManager() { | 176 void ConnectManager() { |
| 177 manager_->Initialize(&local_state_); | 177 manager_->Initialize(&local_state_); |
| 178 manager_->AddDeviceCloudPolicyManagerObserver(this); | 178 manager_->AddDeviceCloudPolicyManagerObserver(this); |
| 179 initializer_.reset(new DeviceCloudPolicyInitializer( | 179 initializer_.reset(new DeviceCloudPolicyInitializer( |
| 180 &local_state_, &device_management_service_, | 180 &local_state_, &device_management_service_, |
| 181 &consumer_device_management_service_, | |
| 182 base::ThreadTaskRunnerHandle::Get(), install_attributes_.get(), | 181 base::ThreadTaskRunnerHandle::Get(), install_attributes_.get(), |
| 183 &state_keys_broker_, store_, manager_.get())); | 182 &state_keys_broker_, store_, manager_.get())); |
| 184 initializer_->Init(); | 183 initializer_->Init(); |
| 185 } | 184 } |
| 186 | 185 |
| 187 void VerifyPolicyPopulated() { | 186 void VerifyPolicyPopulated() { |
| 188 PolicyBundle bundle; | 187 PolicyBundle bundle; |
| 189 bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) | 188 bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) |
| 190 .Set(key::kDeviceMetricsReportingEnabled, POLICY_LEVEL_MANDATORY, | 189 .Set(key::kDeviceMetricsReportingEnabled, POLICY_LEVEL_MANDATORY, |
| 191 POLICY_SCOPE_MACHINE, POLICY_SOURCE_CLOUD, | 190 POLICY_SCOPE_MACHINE, POLICY_SOURCE_CLOUD, |
| (...skipping 19 matching lines...) Expand all Loading... |
| 211 MOCK_METHOD0(OnDeviceCloudPolicyManagerDisconnected, void()); | 210 MOCK_METHOD0(OnDeviceCloudPolicyManagerDisconnected, void()); |
| 212 | 211 |
| 213 std::unique_ptr<EnterpriseInstallAttributes> install_attributes_; | 212 std::unique_ptr<EnterpriseInstallAttributes> install_attributes_; |
| 214 | 213 |
| 215 scoped_refptr<net::URLRequestContextGetter> request_context_getter_; | 214 scoped_refptr<net::URLRequestContextGetter> request_context_getter_; |
| 216 net::TestURLFetcherFactory url_fetcher_factory_; | 215 net::TestURLFetcherFactory url_fetcher_factory_; |
| 217 int url_fetcher_response_code_; | 216 int url_fetcher_response_code_; |
| 218 std::string url_fetcher_response_string_; | 217 std::string url_fetcher_response_string_; |
| 219 TestingPrefServiceSimple local_state_; | 218 TestingPrefServiceSimple local_state_; |
| 220 MockDeviceManagementService device_management_service_; | 219 MockDeviceManagementService device_management_service_; |
| 221 MockDeviceManagementService consumer_device_management_service_; | |
| 222 chromeos::ScopedTestDeviceSettingsService test_device_settings_service_; | 220 chromeos::ScopedTestDeviceSettingsService test_device_settings_service_; |
| 223 chromeos::ScopedTestCrosSettings test_cros_settings_; | 221 chromeos::ScopedTestCrosSettings test_cros_settings_; |
| 224 chromeos::system::ScopedFakeStatisticsProvider fake_statistics_provider_; | 222 chromeos::system::ScopedFakeStatisticsProvider fake_statistics_provider_; |
| 225 chromeos::FakeSessionManagerClient fake_session_manager_client_; | 223 chromeos::FakeSessionManagerClient fake_session_manager_client_; |
| 226 chromeos::FakeCryptohomeClient* fake_cryptohome_client_; | 224 chromeos::FakeCryptohomeClient* fake_cryptohome_client_; |
| 227 ServerBackedStateKeysBroker state_keys_broker_; | 225 ServerBackedStateKeysBroker state_keys_broker_; |
| 228 | 226 |
| 229 DeviceCloudPolicyStoreChromeOS* store_; | 227 DeviceCloudPolicyStoreChromeOS* store_; |
| 230 SchemaRegistry schema_registry_; | 228 SchemaRegistry schema_registry_; |
| 231 std::unique_ptr<TestingDeviceCloudPolicyManagerChromeOS> manager_; | 229 std::unique_ptr<TestingDeviceCloudPolicyManagerChromeOS> manager_; |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 370 public: | 368 public: |
| 371 void Done(EnrollmentStatus status) { | 369 void Done(EnrollmentStatus status) { |
| 372 status_ = status; | 370 status_ = status; |
| 373 done_ = true; | 371 done_ = true; |
| 374 } | 372 } |
| 375 | 373 |
| 376 MOCK_METHOD1(OnUnregistered, void(bool)); | 374 MOCK_METHOD1(OnUnregistered, void(bool)); |
| 377 | 375 |
| 378 protected: | 376 protected: |
| 379 DeviceCloudPolicyManagerChromeOSEnrollmentTest() | 377 DeviceCloudPolicyManagerChromeOSEnrollmentTest() |
| 380 : management_mode_(MANAGEMENT_MODE_ENTERPRISE_MANAGED), | 378 : register_status_(DM_STATUS_SUCCESS), |
| 381 register_status_(DM_STATUS_SUCCESS), | |
| 382 policy_fetch_status_(DM_STATUS_SUCCESS), | 379 policy_fetch_status_(DM_STATUS_SUCCESS), |
| 383 robot_auth_fetch_status_(DM_STATUS_SUCCESS), | 380 robot_auth_fetch_status_(DM_STATUS_SUCCESS), |
| 384 store_result_(true), | 381 store_result_(true), |
| 385 status_(EnrollmentStatus::ForStatus(EnrollmentStatus::STATUS_SUCCESS)), | 382 status_(EnrollmentStatus::ForStatus(EnrollmentStatus::STATUS_SUCCESS)), |
| 386 done_(false) {} | 383 done_(false) {} |
| 387 | 384 |
| 388 void SetUp() override { | 385 void SetUp() override { |
| 389 DeviceCloudPolicyManagerChromeOSTest::SetUp(); | 386 DeviceCloudPolicyManagerChromeOSTest::SetUp(); |
| 390 | 387 |
| 391 // Set up test data. | 388 // Set up test data. |
| (...skipping 26 matching lines...) Expand all Loading... |
| 418 EXPECT_EQ(status, status_.status()); | 415 EXPECT_EQ(status, status_.status()); |
| 419 EXPECT_FALSE(store_->is_managed()); | 416 EXPECT_FALSE(store_->is_managed()); |
| 420 PolicyBundle empty_bundle; | 417 PolicyBundle empty_bundle; |
| 421 EXPECT_TRUE(manager_->policies().Equals(empty_bundle)); | 418 EXPECT_TRUE(manager_->policies().Equals(empty_bundle)); |
| 422 } | 419 } |
| 423 | 420 |
| 424 void ExpectSuccessfulEnrollment() { | 421 void ExpectSuccessfulEnrollment() { |
| 425 EXPECT_EQ(EnrollmentStatus::STATUS_SUCCESS, status_.status()); | 422 EXPECT_EQ(EnrollmentStatus::STATUS_SUCCESS, status_.status()); |
| 426 ASSERT_TRUE(manager_->core()->client()); | 423 ASSERT_TRUE(manager_->core()->client()); |
| 427 EXPECT_TRUE(manager_->core()->client()->is_registered()); | 424 EXPECT_TRUE(manager_->core()->client()->is_registered()); |
| 428 | 425 EXPECT_EQ(DEVICE_MODE_ENTERPRISE, install_attributes_->GetMode()); |
| 429 if (management_mode_ != MANAGEMENT_MODE_CONSUMER_MANAGED) { | 426 EXPECT_TRUE(store_->has_policy()); |
| 430 EXPECT_EQ(DEVICE_MODE_ENTERPRISE, install_attributes_->GetMode()); | 427 EXPECT_TRUE(store_->is_managed()); |
| 431 EXPECT_TRUE(store_->has_policy()); | 428 VerifyPolicyPopulated(); |
| 432 EXPECT_TRUE(store_->is_managed()); | |
| 433 VerifyPolicyPopulated(); | |
| 434 } | |
| 435 } | 429 } |
| 436 | 430 |
| 437 void RunTest() { | 431 void RunTest() { |
| 438 // Trigger enrollment. | 432 // Trigger enrollment. |
| 439 MockDeviceManagementJob* register_job = NULL; | 433 MockDeviceManagementJob* register_job = NULL; |
| 440 EXPECT_CALL(device_management_service_, | 434 EXPECT_CALL(device_management_service_, |
| 441 CreateJob(DeviceManagementRequestJob::TYPE_REGISTRATION, _)) | 435 CreateJob(DeviceManagementRequestJob::TYPE_REGISTRATION, _)) |
| 442 .Times(AtMost(1)) | 436 .Times(AtMost(1)) |
| 443 .WillOnce(device_management_service_.CreateAsyncJob(®ister_job)); | 437 .WillOnce(device_management_service_.CreateAsyncJob(®ister_job)); |
| 444 EXPECT_CALL(device_management_service_, | 438 EXPECT_CALL(device_management_service_, |
| 445 StartJob(dm_protocol::kValueRequestRegister, _, _, _, _, _)) | 439 StartJob(dm_protocol::kValueRequestRegister, _, _, _, _, _)) |
| 446 .Times(AtMost(1)) | 440 .Times(AtMost(1)) |
| 447 .WillOnce( | 441 .WillOnce( |
| 448 DoAll(SaveArg<4>(&client_id_), SaveArg<5>(®ister_request_))); | 442 DoAll(SaveArg<4>(&client_id_), SaveArg<5>(®ister_request_))); |
| 449 DeviceCloudPolicyInitializer::AllowedDeviceModes modes; | 443 DeviceCloudPolicyInitializer::AllowedDeviceModes modes; |
| 450 modes[DEVICE_MODE_ENTERPRISE] = true; | 444 modes[DEVICE_MODE_ENTERPRISE] = true; |
| 451 | 445 |
| 452 chromeos::OwnerSettingsServiceChromeOS* owner_settings_service = | 446 chromeos::OwnerSettingsServiceChromeOS* owner_settings_service = |
| 453 chromeos::OwnerSettingsServiceChromeOSFactory::GetForBrowserContext( | 447 chromeos::OwnerSettingsServiceChromeOSFactory::GetForBrowserContext( |
| 454 profile_.get()); | 448 profile_.get()); |
| 455 ASSERT_TRUE(owner_settings_service); | 449 ASSERT_TRUE(owner_settings_service); |
| 456 | 450 |
| 457 EnrollmentConfig enrollment_config; | 451 EnrollmentConfig enrollment_config; |
| 458 enrollment_config.mode = EnrollmentConfig::MODE_MANUAL; | 452 enrollment_config.mode = EnrollmentConfig::MODE_MANUAL; |
| 459 initializer_->StartEnrollment( | 453 initializer_->StartEnrollment( |
| 460 management_mode_, &device_management_service_, owner_settings_service, | 454 &device_management_service_, enrollment_config, "auth token", modes, |
| 461 enrollment_config, "auth token", modes, | |
| 462 base::Bind(&DeviceCloudPolicyManagerChromeOSEnrollmentTest::Done, | 455 base::Bind(&DeviceCloudPolicyManagerChromeOSEnrollmentTest::Done, |
| 463 base::Unretained(this))); | 456 base::Unretained(this))); |
| 464 base::RunLoop().RunUntilIdle(); | 457 base::RunLoop().RunUntilIdle(); |
| 465 Mock::VerifyAndClearExpectations(&device_management_service_); | 458 Mock::VerifyAndClearExpectations(&device_management_service_); |
| 466 AllowUninterestingRemoteCommandFetches(); | 459 AllowUninterestingRemoteCommandFetches(); |
| 467 | 460 |
| 468 if (done_) | 461 if (done_) |
| 469 return; | 462 return; |
| 470 | 463 |
| 471 // Process registration. | 464 // Process registration. |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 530 net::TestURLFetcher* url_fetcher = url_fetcher_factory_.GetFetcherByID( | 523 net::TestURLFetcher* url_fetcher = url_fetcher_factory_.GetFetcherByID( |
| 531 gaia::GaiaOAuthClient::kUrlFetcherId); | 524 gaia::GaiaOAuthClient::kUrlFetcherId); |
| 532 ASSERT_TRUE(url_fetcher); | 525 ASSERT_TRUE(url_fetcher); |
| 533 url_fetcher->SetMaxRetriesOn5xx(0); | 526 url_fetcher->SetMaxRetriesOn5xx(0); |
| 534 url_fetcher->set_status(net::URLRequestStatus()); | 527 url_fetcher->set_status(net::URLRequestStatus()); |
| 535 url_fetcher->set_response_code(url_fetcher_response_code_); | 528 url_fetcher->set_response_code(url_fetcher_response_code_); |
| 536 url_fetcher->SetResponseString(url_fetcher_response_string_); | 529 url_fetcher->SetResponseString(url_fetcher_response_string_); |
| 537 url_fetcher->delegate()->OnURLFetchComplete(url_fetcher); | 530 url_fetcher->delegate()->OnURLFetchComplete(url_fetcher); |
| 538 } | 531 } |
| 539 | 532 |
| 540 if (management_mode_ == MANAGEMENT_MODE_CONSUMER_MANAGED) | 533 base::RunLoop().RunUntilIdle(); |
| 541 FlushDeviceSettings(); | |
| 542 else | |
| 543 base::RunLoop().RunUntilIdle(); | |
| 544 | 534 |
| 545 if (done_) | 535 if (done_) |
| 546 return; | 536 return; |
| 547 | 537 |
| 548 // Process robot refresh token store. | 538 // Process robot refresh token store. |
| 549 chromeos::DeviceOAuth2TokenService* token_service = | 539 chromeos::DeviceOAuth2TokenService* token_service = |
| 550 chromeos::DeviceOAuth2TokenServiceFactory::Get(); | 540 chromeos::DeviceOAuth2TokenServiceFactory::Get(); |
| 551 EXPECT_TRUE(token_service->RefreshTokenIsAvailable( | 541 EXPECT_TRUE(token_service->RefreshTokenIsAvailable( |
| 552 token_service->GetRobotAccountId())); | 542 token_service->GetRobotAccountId())); |
| 553 | 543 |
| 554 // Process policy store. | 544 // Process policy store. |
| 555 device_settings_test_helper_.set_store_result(store_result_); | 545 device_settings_test_helper_.set_store_result(store_result_); |
| 556 device_settings_test_helper_.FlushStore(); | 546 device_settings_test_helper_.FlushStore(); |
| 557 EXPECT_EQ(device_policy_.GetBlob(), | 547 EXPECT_EQ(device_policy_.GetBlob(), |
| 558 device_settings_test_helper_.policy_blob()); | 548 device_settings_test_helper_.policy_blob()); |
| 559 | 549 |
| 560 if (done_) | 550 if (done_) |
| 561 return; | 551 return; |
| 562 | 552 |
| 563 // Key installation and policy load. | 553 // Key installation and policy load. |
| 564 device_settings_test_helper_.set_policy_blob(loaded_blob_); | 554 device_settings_test_helper_.set_policy_blob(loaded_blob_); |
| 565 owner_key_util_->SetPublicKeyFromPrivateKey( | 555 owner_key_util_->SetPublicKeyFromPrivateKey( |
| 566 *device_policy_.GetNewSigningKey()); | 556 *device_policy_.GetNewSigningKey()); |
| 567 ReloadDeviceSettings(); | 557 ReloadDeviceSettings(); |
| 568 } | 558 } |
| 569 | 559 |
| 570 ManagementMode management_mode_; | |
| 571 | |
| 572 DeviceManagementStatus register_status_; | 560 DeviceManagementStatus register_status_; |
| 573 em::DeviceManagementResponse register_response_; | 561 em::DeviceManagementResponse register_response_; |
| 574 | 562 |
| 575 DeviceManagementStatus policy_fetch_status_; | 563 DeviceManagementStatus policy_fetch_status_; |
| 576 em::DeviceManagementResponse policy_fetch_response_; | 564 em::DeviceManagementResponse policy_fetch_response_; |
| 577 | 565 |
| 578 DeviceManagementStatus robot_auth_fetch_status_; | 566 DeviceManagementStatus robot_auth_fetch_status_; |
| 579 em::DeviceManagementResponse robot_auth_fetch_response_; | 567 em::DeviceManagementResponse robot_auth_fetch_response_; |
| 580 | 568 |
| 581 bool store_result_; | 569 bool store_result_; |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 673 } | 661 } |
| 674 | 662 |
| 675 TEST_F(DeviceCloudPolicyManagerChromeOSEnrollmentTest, LoadError) { | 663 TEST_F(DeviceCloudPolicyManagerChromeOSEnrollmentTest, LoadError) { |
| 676 loaded_blob_.clear(); | 664 loaded_blob_.clear(); |
| 677 RunTest(); | 665 RunTest(); |
| 678 ExpectFailedEnrollment(EnrollmentStatus::STATUS_STORE_ERROR); | 666 ExpectFailedEnrollment(EnrollmentStatus::STATUS_STORE_ERROR); |
| 679 EXPECT_EQ(CloudPolicyStore::STATUS_LOAD_ERROR, | 667 EXPECT_EQ(CloudPolicyStore::STATUS_LOAD_ERROR, |
| 680 status_.store_status()); | 668 status_.store_status()); |
| 681 } | 669 } |
| 682 | 670 |
| 683 TEST_F(DeviceCloudPolicyManagerChromeOSEnrollmentTest, | |
| 684 SuccessfulConsumerManagementEnrollment) { | |
| 685 management_mode_ = MANAGEMENT_MODE_CONSUMER_MANAGED; | |
| 686 owner_key_util_->SetPrivateKey(device_policy_.GetNewSigningKey()); | |
| 687 InitOwner(AccountId::FromUserEmail(device_policy_.policy_data().username()), | |
| 688 true); | |
| 689 FlushDeviceSettings(); | |
| 690 | |
| 691 device_policy_.policy_data().set_management_mode(em::PolicyData::LOCAL_OWNER); | |
| 692 device_policy_.Build(); | |
| 693 device_settings_test_helper_.set_policy_blob(device_policy_.GetBlob()); | |
| 694 ReloadDeviceSettings(); | |
| 695 | |
| 696 RunTest(); | |
| 697 ExpectSuccessfulEnrollment(); | |
| 698 } | |
| 699 | |
| 700 TEST_F(DeviceCloudPolicyManagerChromeOSEnrollmentTest, UnregisterSucceeds) { | 671 TEST_F(DeviceCloudPolicyManagerChromeOSEnrollmentTest, UnregisterSucceeds) { |
| 701 // Enroll first. | 672 // Enroll first. |
| 702 RunTest(); | 673 RunTest(); |
| 703 ExpectSuccessfulEnrollment(); | 674 ExpectSuccessfulEnrollment(); |
| 704 | 675 |
| 705 // Set up mock objects for the upcoming unregistration job. | 676 // Set up mock objects for the upcoming unregistration job. |
| 706 em::DeviceManagementResponse response; | 677 em::DeviceManagementResponse response; |
| 707 response.mutable_unregister_response(); | 678 response.mutable_unregister_response(); |
| 708 EXPECT_CALL(device_management_service_, | 679 EXPECT_CALL(device_management_service_, |
| 709 CreateJob(DeviceManagementRequestJob::TYPE_UNREGISTRATION, _)) | 680 CreateJob(DeviceManagementRequestJob::TYPE_UNREGISTRATION, _)) |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 747 | 718 |
| 748 TEST_F(DeviceCloudPolicyManagerChromeOSEnrollmentBlankSystemSaltTest, | 719 TEST_F(DeviceCloudPolicyManagerChromeOSEnrollmentBlankSystemSaltTest, |
| 749 RobotRefreshSaveFailed) { | 720 RobotRefreshSaveFailed) { |
| 750 // Without the system salt, the robot token can't be stored. | 721 // Without the system salt, the robot token can't be stored. |
| 751 RunTest(); | 722 RunTest(); |
| 752 ExpectFailedEnrollment(EnrollmentStatus::STATUS_ROBOT_REFRESH_STORE_FAILED); | 723 ExpectFailedEnrollment(EnrollmentStatus::STATUS_ROBOT_REFRESH_STORE_FAILED); |
| 753 } | 724 } |
| 754 | 725 |
| 755 } // namespace | 726 } // namespace |
| 756 } // namespace policy | 727 } // namespace policy |
| OLD | NEW |