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

Side by Side Diff: chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos_unittest.cc

Issue 2287343004: All DCP manager tests that enroll/register are tested with all auths. (Closed)
Patch Set: All DCP manager tests that enroll/register are tested with all auths. Created 4 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
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/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 28 matching lines...) Expand all
39 #include "chromeos/dbus/dbus_client_implementation_type.h" 39 #include "chromeos/dbus/dbus_client_implementation_type.h"
40 #include "chromeos/dbus/dbus_thread_manager.h" 40 #include "chromeos/dbus/dbus_thread_manager.h"
41 #include "chromeos/dbus/fake_cryptohome_client.h" 41 #include "chromeos/dbus/fake_cryptohome_client.h"
42 #include "chromeos/dbus/fake_session_manager_client.h" 42 #include "chromeos/dbus/fake_session_manager_client.h"
43 #include "chromeos/system/fake_statistics_provider.h" 43 #include "chromeos/system/fake_statistics_provider.h"
44 #include "chromeos/system/statistics_provider.h" 44 #include "chromeos/system/statistics_provider.h"
45 #include "components/policy/core/common/cloud/cloud_policy_client.h" 45 #include "components/policy/core/common/cloud/cloud_policy_client.h"
46 #include "components/policy/core/common/cloud/cloud_policy_constants.h" 46 #include "components/policy/core/common/cloud/cloud_policy_constants.h"
47 #include "components/policy/core/common/cloud/cloud_policy_core.h" 47 #include "components/policy/core/common/cloud/cloud_policy_core.h"
48 #include "components/policy/core/common/cloud/mock_device_management_service.h" 48 #include "components/policy/core/common/cloud/mock_device_management_service.h"
49 #include "components/policy/core/common/cloud/mock_signing_service.h"
49 #include "components/policy/core/common/external_data_fetcher.h" 50 #include "components/policy/core/common/external_data_fetcher.h"
50 #include "components/policy/core/common/policy_types.h" 51 #include "components/policy/core/common/policy_types.h"
51 #include "components/policy/core/common/schema_registry.h" 52 #include "components/policy/core/common/schema_registry.h"
52 #include "components/policy/policy_constants.h" 53 #include "components/policy/policy_constants.h"
53 #include "components/policy/proto/device_management_backend.pb.h" 54 #include "components/policy/proto/device_management_backend.pb.h"
54 #include "components/prefs/pref_registry_simple.h" 55 #include "components/prefs/pref_registry_simple.h"
55 #include "components/prefs/testing_pref_service.h" 56 #include "components/prefs/testing_pref_service.h"
56 #include "google_apis/gaia/gaia_oauth_client.h" 57 #include "google_apis/gaia/gaia_oauth_client.h"
57 #include "net/url_request/test_url_fetcher_factory.h" 58 #include "net/url_request/test_url_fetcher_factory.h"
58 #include "net/url_request/url_request_test_util.h" 59 #include "net/url_request/url_request_test_util.h"
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 state_keys.push_back("1"); 118 state_keys.push_back("1");
118 state_keys.push_back("2"); 119 state_keys.push_back("2");
119 state_keys.push_back("3"); 120 state_keys.push_back("3");
120 fake_session_manager_client_.set_server_backed_state_keys(state_keys); 121 fake_session_manager_client_.set_server_backed_state_keys(state_keys);
121 } 122 }
122 123
123 ~DeviceCloudPolicyManagerChromeOSTest() override { 124 ~DeviceCloudPolicyManagerChromeOSTest() override {
124 chromeos::system::StatisticsProvider::SetTestProvider(NULL); 125 chromeos::system::StatisticsProvider::SetTestProvider(NULL);
125 } 126 }
126 127
127 virtual bool ShouldRegisterWitCert() const { return false; } 128 virtual bool ShouldRegisterWithCert() const { return false; }
128 129
129 void SetUp() override { 130 void SetUp() override {
130 DeviceSettingsTestBase::SetUp(); 131 DeviceSettingsTestBase::SetUp();
131 dbus_setter_->SetCryptohomeClient( 132 dbus_setter_->SetCryptohomeClient(
132 std::unique_ptr<chromeos::CryptohomeClient>(fake_cryptohome_client_)); 133 std::unique_ptr<chromeos::CryptohomeClient>(fake_cryptohome_client_));
133 chromeos::DBusThreadManager::Get()->GetCryptohomeClient(); 134 chromeos::DBusThreadManager::Get()->GetCryptohomeClient();
134 cryptohome::AsyncMethodCaller::Initialize(); 135 cryptohome::AsyncMethodCaller::Initialize();
135 136
136 install_attributes_.reset( 137 install_attributes_.reset(
137 new EnterpriseInstallAttributes(fake_cryptohome_client_)); 138 new EnterpriseInstallAttributes(fake_cryptohome_client_));
(...skipping 23 matching lines...) Expand all
161 "\"expires_in\":1234," 162 "\"expires_in\":1234,"
162 "\"refresh_token\":\"refreshToken4Test\"}"; 163 "\"refresh_token\":\"refreshToken4Test\"}";
163 164
164 AllowUninterestingRemoteCommandFetches(); 165 AllowUninterestingRemoteCommandFetches();
165 } 166 }
166 167
167 StrictMock<chromeos::attestation::MockAttestationFlow>* 168 StrictMock<chromeos::attestation::MockAttestationFlow>*
168 CreateAttestationFlow() { 169 CreateAttestationFlow() {
169 StrictMock<chromeos::attestation::MockAttestationFlow>* mock = 170 StrictMock<chromeos::attestation::MockAttestationFlow>* mock =
170 new StrictMock<chromeos::attestation::MockAttestationFlow>(); 171 new StrictMock<chromeos::attestation::MockAttestationFlow>();
171 if (ShouldRegisterWitCert()) { 172 if (ShouldRegisterWithCert()) {
172 EXPECT_CALL(*mock, GetCertificate(_, _, _, _, _)) 173 EXPECT_CALL(*mock, GetCertificate(_, _, _, _, _))
173 .WillOnce(WithArgs<4>(Invoke(CertCallbackSuccess))); 174 .WillOnce(WithArgs<4>(Invoke(CertCallbackSuccess)));
174 } 175 }
175 return mock; 176 return mock;
176 } 177 }
177 178
178 void TearDown() override { 179 void TearDown() override {
179 cryptohome::AsyncMethodCaller::Shutdown(); 180 cryptohome::AsyncMethodCaller::Shutdown();
180 181
181 manager_->RemoveDeviceCloudPolicyManagerObserver(this); 182 manager_->RemoveDeviceCloudPolicyManagerObserver(this);
(...skipping 22 matching lines...) Expand all
204 void ConnectManager() { 205 void ConnectManager() {
205 std::unique_ptr<chromeos::attestation::AttestationFlow> unique_flow( 206 std::unique_ptr<chromeos::attestation::AttestationFlow> unique_flow(
206 CreateAttestationFlow()); 207 CreateAttestationFlow());
207 manager_->Initialize(&local_state_); 208 manager_->Initialize(&local_state_);
208 manager_->AddDeviceCloudPolicyManagerObserver(this); 209 manager_->AddDeviceCloudPolicyManagerObserver(this);
209 initializer_.reset(new DeviceCloudPolicyInitializer( 210 initializer_.reset(new DeviceCloudPolicyInitializer(
210 &local_state_, &device_management_service_, 211 &local_state_, &device_management_service_,
211 base::ThreadTaskRunnerHandle::Get(), install_attributes_.get(), 212 base::ThreadTaskRunnerHandle::Get(), install_attributes_.get(),
212 &state_keys_broker_, store_, manager_.get(), 213 &state_keys_broker_, store_, manager_.get(),
213 cryptohome::AsyncMethodCaller::GetInstance(), std::move(unique_flow))); 214 cryptohome::AsyncMethodCaller::GetInstance(), std::move(unique_flow)));
215 initializer_->SetSigningServiceForTesting(
216 base::MakeUnique<FakeSigningService>());
214 initializer_->Init(); 217 initializer_->Init();
215 } 218 }
216 219
217 void VerifyPolicyPopulated() { 220 void VerifyPolicyPopulated() {
218 PolicyBundle bundle; 221 PolicyBundle bundle;
219 bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) 222 bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()))
220 .Set(key::kDeviceMetricsReportingEnabled, POLICY_LEVEL_MANDATORY, 223 .Set(key::kDeviceMetricsReportingEnabled, POLICY_LEVEL_MANDATORY,
221 POLICY_SCOPE_MACHINE, POLICY_SOURCE_CLOUD, 224 POLICY_SCOPE_MACHINE, POLICY_SOURCE_CLOUD,
222 base::MakeUnique<base::FundamentalValue>(false), nullptr); 225 base::MakeUnique<base::FundamentalValue>(false), nullptr);
223 EXPECT_TRUE(manager_->policies().Equals(bundle)); 226 EXPECT_TRUE(manager_->policies().Equals(bundle));
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 Mock::VerifyAndClearExpectations(this); 390 Mock::VerifyAndClearExpectations(this);
388 EXPECT_TRUE(manager_->core()->service()); // Connected. 391 EXPECT_TRUE(manager_->core()->service()); // Connected.
389 392
390 // Disconnect the manager. 393 // Disconnect the manager.
391 EXPECT_CALL(*this, OnDeviceCloudPolicyManagerDisconnected()); 394 EXPECT_CALL(*this, OnDeviceCloudPolicyManagerDisconnected());
392 manager_->Disconnect(); 395 manager_->Disconnect();
393 EXPECT_FALSE(manager_->core()->service()); // Not connnected. 396 EXPECT_FALSE(manager_->core()->service()); // Not connnected.
394 } 397 }
395 398
396 class DeviceCloudPolicyManagerChromeOSEnrollmentTest 399 class DeviceCloudPolicyManagerChromeOSEnrollmentTest
397 : public DeviceCloudPolicyManagerChromeOSTest { 400 : public DeviceCloudPolicyManagerChromeOSTest,
401 public testing::WithParamInterface<bool> {
398 public: 402 public:
399 void Done(EnrollmentStatus status) { 403 void Done(EnrollmentStatus status) {
400 status_ = status; 404 status_ = status;
401 done_ = true; 405 done_ = true;
402 } 406 }
403 407
404 MOCK_METHOD1(OnUnregistered, void(bool)); 408 MOCK_METHOD1(OnUnregistered, void(bool));
405 409
406 protected: 410 protected:
407 DeviceCloudPolicyManagerChromeOSEnrollmentTest() 411 DeviceCloudPolicyManagerChromeOSEnrollmentTest()
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 EXPECT_EQ(EnrollmentStatus::STATUS_SUCCESS, status_.status()); 456 EXPECT_EQ(EnrollmentStatus::STATUS_SUCCESS, status_.status());
453 ASSERT_TRUE(manager_->core()->client()); 457 ASSERT_TRUE(manager_->core()->client());
454 EXPECT_TRUE(manager_->core()->client()->is_registered()); 458 EXPECT_TRUE(manager_->core()->client()->is_registered());
455 EXPECT_EQ(DEVICE_MODE_ENTERPRISE, install_attributes_->GetMode()); 459 EXPECT_EQ(DEVICE_MODE_ENTERPRISE, install_attributes_->GetMode());
456 EXPECT_TRUE(store_->has_policy()); 460 EXPECT_TRUE(store_->has_policy());
457 EXPECT_TRUE(store_->is_managed()); 461 EXPECT_TRUE(store_->is_managed());
458 VerifyPolicyPopulated(); 462 VerifyPolicyPopulated();
459 } 463 }
460 464
461 void RunTest() { 465 void RunTest() {
462 const bool with_cert = ShouldRegisterWitCert(); 466 const bool with_cert = ShouldRegisterWithCert();
463 // Trigger enrollment. 467 // Trigger enrollment.
464 MockDeviceManagementJob* register_job = NULL; 468 MockDeviceManagementJob* register_job = NULL;
465 EXPECT_CALL( 469 EXPECT_CALL(
466 device_management_service_, 470 device_management_service_,
467 CreateJob(with_cert 471 CreateJob(with_cert
468 ? DeviceManagementRequestJob::TYPE_CERT_BASED_REGISTRATION 472 ? DeviceManagementRequestJob::TYPE_CERT_BASED_REGISTRATION
469 : DeviceManagementRequestJob::TYPE_REGISTRATION, 473 : DeviceManagementRequestJob::TYPE_REGISTRATION,
470 _)) 474 _))
471 .Times(AtMost(1)) 475 .Times(AtMost(1))
472 .WillOnce(device_management_service_.CreateAsyncJob(&register_job)); 476 .WillOnce(device_management_service_.CreateAsyncJob(&register_job));
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
591 if (done_) 595 if (done_)
592 return; 596 return;
593 597
594 // Key installation and policy load. 598 // Key installation and policy load.
595 device_settings_test_helper_.set_policy_blob(loaded_blob_); 599 device_settings_test_helper_.set_policy_blob(loaded_blob_);
596 owner_key_util_->SetPublicKeyFromPrivateKey( 600 owner_key_util_->SetPublicKeyFromPrivateKey(
597 *device_policy_.GetNewSigningKey()); 601 *device_policy_.GetNewSigningKey());
598 ReloadDeviceSettings(); 602 ReloadDeviceSettings();
599 } 603 }
600 604
605 bool ShouldRegisterWithCert() const override { return GetParam(); }
606
607 const em::DeviceRegisterRequest& GetDeviceRegisterRequest() {
608 if (ShouldRegisterWithCert()) {
609 const em::SignedData& signed_request =
610 register_request_.cert_based_register_request().signed_request();
611 em::CertificateBasedDeviceRegistrationData data;
612 EXPECT_TRUE(data.ParseFromString(signed_request.data().substr(
613 0,
614 signed_request.data().size() - signed_request.extra_data_bytes())));
615 EXPECT_EQ(em::CertificateBasedDeviceRegistrationData::
616 ENTERPRISE_ENROLLMENT_CERTIFICATE,
617 data.certificate_type());
618 return data.device_register_request();
619 } else {
620 return register_request_.register_request();
621 }
622 }
623
601 DeviceManagementStatus register_status_; 624 DeviceManagementStatus register_status_;
602 em::DeviceManagementResponse register_response_; 625 em::DeviceManagementResponse register_response_;
603 626
604 DeviceManagementStatus policy_fetch_status_; 627 DeviceManagementStatus policy_fetch_status_;
605 em::DeviceManagementResponse policy_fetch_response_; 628 em::DeviceManagementResponse policy_fetch_response_;
606 629
607 DeviceManagementStatus robot_auth_fetch_status_; 630 DeviceManagementStatus robot_auth_fetch_status_;
608 em::DeviceManagementResponse robot_auth_fetch_response_; 631 em::DeviceManagementResponse robot_auth_fetch_response_;
609 632
610 bool store_result_; 633 bool store_result_;
611 std::string loaded_blob_; 634 std::string loaded_blob_;
612 635
613 em::DeviceManagementRequest register_request_; 636 em::DeviceManagementRequest register_request_;
614 std::string client_id_; 637 std::string client_id_;
615 EnrollmentStatus status_; 638 EnrollmentStatus status_;
616 639
617 bool done_; 640 bool done_;
618 641
619 private: 642 private:
620 DISALLOW_COPY_AND_ASSIGN(DeviceCloudPolicyManagerChromeOSEnrollmentTest); 643 DISALLOW_COPY_AND_ASSIGN(DeviceCloudPolicyManagerChromeOSEnrollmentTest);
621 }; 644 };
622 645
623 // TODO(drcrash): Handle cert-based tests (http://crbug.com/641447). 646 TEST_P(DeviceCloudPolicyManagerChromeOSEnrollmentTest, Success) {
624 TEST_F(DeviceCloudPolicyManagerChromeOSEnrollmentTest, Reenrollment) {
625 LockDevice();
626 RunTest();
627 ExpectSuccessfulEnrollment();
628 EXPECT_TRUE(register_request_.register_request().reregister());
629 EXPECT_EQ(PolicyBuilder::kFakeDeviceId, client_id_);
630 }
631
632 class ParameterizedDeviceCloudPolicyManagerChromeOSEnrollmentTest
633 : public DeviceCloudPolicyManagerChromeOSEnrollmentTest,
634 public testing::WithParamInterface<bool> {
635 protected:
636 bool ShouldRegisterWitCert() const override { return GetParam(); }
637 };
638
639 TEST_P(ParameterizedDeviceCloudPolicyManagerChromeOSEnrollmentTest, Success) {
640 RunTest(); 647 RunTest();
641 ExpectSuccessfulEnrollment(); 648 ExpectSuccessfulEnrollment();
642 } 649 }
643 650
644 TEST_P(ParameterizedDeviceCloudPolicyManagerChromeOSEnrollmentTest, 651 TEST_P(DeviceCloudPolicyManagerChromeOSEnrollmentTest, Reenrollment) {
645 RegistrationFailed) { 652 LockDevice();
653 RunTest();
654 ExpectSuccessfulEnrollment();
655 EXPECT_TRUE(GetDeviceRegisterRequest().reregister());
656 EXPECT_EQ(PolicyBuilder::kFakeDeviceId, client_id_);
657 }
658
659 TEST_P(DeviceCloudPolicyManagerChromeOSEnrollmentTest, RegistrationFailed) {
646 register_status_ = DM_STATUS_REQUEST_FAILED; 660 register_status_ = DM_STATUS_REQUEST_FAILED;
647 RunTest(); 661 RunTest();
648 ExpectFailedEnrollment(EnrollmentStatus::STATUS_REGISTRATION_FAILED); 662 ExpectFailedEnrollment(EnrollmentStatus::STATUS_REGISTRATION_FAILED);
649 EXPECT_EQ(DM_STATUS_REQUEST_FAILED, status_.client_status()); 663 EXPECT_EQ(DM_STATUS_REQUEST_FAILED, status_.client_status());
650 } 664 }
651 665
652 TEST_P(ParameterizedDeviceCloudPolicyManagerChromeOSEnrollmentTest, 666 TEST_P(DeviceCloudPolicyManagerChromeOSEnrollmentTest,
653 RobotAuthCodeFetchFailed) { 667 RobotAuthCodeFetchFailed) {
654 robot_auth_fetch_status_ = DM_STATUS_REQUEST_FAILED; 668 robot_auth_fetch_status_ = DM_STATUS_REQUEST_FAILED;
655 RunTest(); 669 RunTest();
656 ExpectFailedEnrollment(EnrollmentStatus::STATUS_ROBOT_AUTH_FETCH_FAILED); 670 ExpectFailedEnrollment(EnrollmentStatus::STATUS_ROBOT_AUTH_FETCH_FAILED);
657 } 671 }
658 672
659 TEST_P(ParameterizedDeviceCloudPolicyManagerChromeOSEnrollmentTest, 673 TEST_P(DeviceCloudPolicyManagerChromeOSEnrollmentTest,
660 RobotRefreshTokenFetchResponseCodeFailed) { 674 RobotRefreshTokenFetchResponseCodeFailed) {
661 url_fetcher_response_code_ = 400; 675 url_fetcher_response_code_ = 400;
662 RunTest(); 676 RunTest();
663 ExpectFailedEnrollment(EnrollmentStatus::STATUS_ROBOT_REFRESH_FETCH_FAILED); 677 ExpectFailedEnrollment(EnrollmentStatus::STATUS_ROBOT_REFRESH_FETCH_FAILED);
664 EXPECT_EQ(400, status_.http_status()); 678 EXPECT_EQ(400, status_.http_status());
665 } 679 }
666 680
667 TEST_P(ParameterizedDeviceCloudPolicyManagerChromeOSEnrollmentTest, 681 TEST_P(DeviceCloudPolicyManagerChromeOSEnrollmentTest,
668 RobotRefreshTokenFetchResponseStringFailed) { 682 RobotRefreshTokenFetchResponseStringFailed) {
669 url_fetcher_response_string_ = "invalid response json"; 683 url_fetcher_response_string_ = "invalid response json";
670 RunTest(); 684 RunTest();
671 ExpectFailedEnrollment(EnrollmentStatus::STATUS_ROBOT_REFRESH_FETCH_FAILED); 685 ExpectFailedEnrollment(EnrollmentStatus::STATUS_ROBOT_REFRESH_FETCH_FAILED);
672 } 686 }
673 687
674 TEST_P(ParameterizedDeviceCloudPolicyManagerChromeOSEnrollmentTest, 688 TEST_P(DeviceCloudPolicyManagerChromeOSEnrollmentTest,
675 RobotRefreshEncryptionFailed) { 689 RobotRefreshEncryptionFailed) {
676 // The encryption lib is a noop for tests, but empty results from encryption 690 // The encryption lib is a noop for tests, but empty results from encryption
677 // is an error, so we simulate an encryption error by returning an empty 691 // is an error, so we simulate an encryption error by returning an empty
678 // refresh token. 692 // refresh token.
679 url_fetcher_response_string_ = "{\"access_token\":\"accessToken4Test\"," 693 url_fetcher_response_string_ = "{\"access_token\":\"accessToken4Test\","
680 "\"expires_in\":1234," 694 "\"expires_in\":1234,"
681 "\"refresh_token\":\"\"}"; 695 "\"refresh_token\":\"\"}";
682 RunTest(); 696 RunTest();
683 ExpectFailedEnrollment(EnrollmentStatus::STATUS_ROBOT_REFRESH_STORE_FAILED); 697 ExpectFailedEnrollment(EnrollmentStatus::STATUS_ROBOT_REFRESH_STORE_FAILED);
684 } 698 }
685 699
686 TEST_P(ParameterizedDeviceCloudPolicyManagerChromeOSEnrollmentTest, 700 TEST_P(DeviceCloudPolicyManagerChromeOSEnrollmentTest, PolicyFetchFailed) {
687 PolicyFetchFailed) {
688 policy_fetch_status_ = DM_STATUS_REQUEST_FAILED; 701 policy_fetch_status_ = DM_STATUS_REQUEST_FAILED;
689 RunTest(); 702 RunTest();
690 ExpectFailedEnrollment(EnrollmentStatus::STATUS_POLICY_FETCH_FAILED); 703 ExpectFailedEnrollment(EnrollmentStatus::STATUS_POLICY_FETCH_FAILED);
691 EXPECT_EQ(DM_STATUS_REQUEST_FAILED, status_.client_status()); 704 EXPECT_EQ(DM_STATUS_REQUEST_FAILED, status_.client_status());
692 } 705 }
693 706
694 TEST_P(ParameterizedDeviceCloudPolicyManagerChromeOSEnrollmentTest, 707 TEST_P(DeviceCloudPolicyManagerChromeOSEnrollmentTest, ValidationFailed) {
695 ValidationFailed) {
696 device_policy_.policy().set_policy_data_signature("bad"); 708 device_policy_.policy().set_policy_data_signature("bad");
697 policy_fetch_response_.clear_policy_response(); 709 policy_fetch_response_.clear_policy_response();
698 policy_fetch_response_.mutable_policy_response()->add_response()->CopyFrom( 710 policy_fetch_response_.mutable_policy_response()->add_response()->CopyFrom(
699 device_policy_.policy()); 711 device_policy_.policy());
700 RunTest(); 712 RunTest();
701 ExpectFailedEnrollment(EnrollmentStatus::STATUS_VALIDATION_FAILED); 713 ExpectFailedEnrollment(EnrollmentStatus::STATUS_VALIDATION_FAILED);
702 EXPECT_EQ(CloudPolicyValidatorBase::VALIDATION_BAD_INITIAL_SIGNATURE, 714 EXPECT_EQ(CloudPolicyValidatorBase::VALIDATION_BAD_INITIAL_SIGNATURE,
703 status_.validation_status()); 715 status_.validation_status());
704 } 716 }
705 717
706 TEST_P(ParameterizedDeviceCloudPolicyManagerChromeOSEnrollmentTest, 718 TEST_P(DeviceCloudPolicyManagerChromeOSEnrollmentTest, StoreError) {
707 StoreError) {
708 store_result_ = false; 719 store_result_ = false;
709 RunTest(); 720 RunTest();
710 ExpectFailedEnrollment(EnrollmentStatus::STATUS_STORE_ERROR); 721 ExpectFailedEnrollment(EnrollmentStatus::STATUS_STORE_ERROR);
711 EXPECT_EQ(CloudPolicyStore::STATUS_STORE_ERROR, 722 EXPECT_EQ(CloudPolicyStore::STATUS_STORE_ERROR,
712 status_.store_status()); 723 status_.store_status());
713 } 724 }
714 725
715 TEST_P(ParameterizedDeviceCloudPolicyManagerChromeOSEnrollmentTest, LoadError) { 726 TEST_P(DeviceCloudPolicyManagerChromeOSEnrollmentTest, LoadError) {
716 loaded_blob_.clear(); 727 loaded_blob_.clear();
717 RunTest(); 728 RunTest();
718 ExpectFailedEnrollment(EnrollmentStatus::STATUS_STORE_ERROR); 729 ExpectFailedEnrollment(EnrollmentStatus::STATUS_STORE_ERROR);
719 EXPECT_EQ(CloudPolicyStore::STATUS_LOAD_ERROR, 730 EXPECT_EQ(CloudPolicyStore::STATUS_LOAD_ERROR,
720 status_.store_status()); 731 status_.store_status());
721 } 732 }
722 733
723 TEST_P(ParameterizedDeviceCloudPolicyManagerChromeOSEnrollmentTest, 734 TEST_P(DeviceCloudPolicyManagerChromeOSEnrollmentTest, UnregisterSucceeds) {
724 UnregisterSucceeds) {
725 // Enroll first. 735 // Enroll first.
726 RunTest(); 736 RunTest();
727 ExpectSuccessfulEnrollment(); 737 ExpectSuccessfulEnrollment();
728 738
729 // Set up mock objects for the upcoming unregistration job. 739 // Set up mock objects for the upcoming unregistration job.
730 em::DeviceManagementResponse response; 740 em::DeviceManagementResponse response;
731 response.mutable_unregister_response(); 741 response.mutable_unregister_response();
732 EXPECT_CALL(device_management_service_, 742 EXPECT_CALL(device_management_service_,
733 CreateJob(DeviceManagementRequestJob::TYPE_UNREGISTRATION, _)) 743 CreateJob(DeviceManagementRequestJob::TYPE_UNREGISTRATION, _))
734 .WillOnce(device_management_service_.SucceedJob(response)); 744 .WillOnce(device_management_service_.SucceedJob(response));
735 EXPECT_CALL(device_management_service_, StartJob(_, _, _, _, _, _)); 745 EXPECT_CALL(device_management_service_, StartJob(_, _, _, _, _, _));
736 EXPECT_CALL(*this, OnUnregistered(true)); 746 EXPECT_CALL(*this, OnUnregistered(true));
737 747
738 // Start unregistering. 748 // Start unregistering.
739 manager_->Unregister(base::Bind( 749 manager_->Unregister(base::Bind(
740 &DeviceCloudPolicyManagerChromeOSEnrollmentTest::OnUnregistered, 750 &DeviceCloudPolicyManagerChromeOSEnrollmentTest::OnUnregistered,
741 base::Unretained(this))); 751 base::Unretained(this)));
742 } 752 }
743 753
744 TEST_P(ParameterizedDeviceCloudPolicyManagerChromeOSEnrollmentTest, 754 TEST_P(DeviceCloudPolicyManagerChromeOSEnrollmentTest, UnregisterFails) {
745 UnregisterFails) {
746 // Enroll first. 755 // Enroll first.
747 RunTest(); 756 RunTest();
748 ExpectSuccessfulEnrollment(); 757 ExpectSuccessfulEnrollment();
749 758
750 // Set up mock objects for the upcoming unregistration job. 759 // Set up mock objects for the upcoming unregistration job.
751 EXPECT_CALL(device_management_service_, 760 EXPECT_CALL(device_management_service_,
752 CreateJob(DeviceManagementRequestJob::TYPE_UNREGISTRATION, _)) 761 CreateJob(DeviceManagementRequestJob::TYPE_UNREGISTRATION, _))
753 .WillOnce(device_management_service_.FailJob(DM_STATUS_REQUEST_FAILED)); 762 .WillOnce(device_management_service_.FailJob(DM_STATUS_REQUEST_FAILED));
754 EXPECT_CALL(device_management_service_, StartJob(_, _, _, _, _, _)); 763 EXPECT_CALL(device_management_service_, StartJob(_, _, _, _, _, _));
755 EXPECT_CALL(*this, OnUnregistered(false)); 764 EXPECT_CALL(*this, OnUnregistered(false));
756 765
757 // Start unregistering. 766 // Start unregistering.
758 manager_->Unregister(base::Bind( 767 manager_->Unregister(base::Bind(
759 &DeviceCloudPolicyManagerChromeOSEnrollmentTest::OnUnregistered, 768 &DeviceCloudPolicyManagerChromeOSEnrollmentTest::OnUnregistered,
760 base::Unretained(this))); 769 base::Unretained(this)));
761 } 770 }
762 771
763 // A subclass that runs with a blank system salt. 772 // A subclass that runs with a blank system salt.
764 class DeviceCloudPolicyManagerChromeOSEnrollmentBlankSystemSaltTest 773 class DeviceCloudPolicyManagerChromeOSEnrollmentBlankSystemSaltTest
765 : public DeviceCloudPolicyManagerChromeOSEnrollmentTest { 774 : public DeviceCloudPolicyManagerChromeOSEnrollmentTest {
766 protected: 775 protected:
767 DeviceCloudPolicyManagerChromeOSEnrollmentBlankSystemSaltTest() { 776 DeviceCloudPolicyManagerChromeOSEnrollmentBlankSystemSaltTest() {
768 // Set up a FakeCryptohomeClient with a blank system salt. 777 // Set up a FakeCryptohomeClient with a blank system salt.
769 fake_cryptohome_client_->set_system_salt(std::vector<uint8_t>()); 778 fake_cryptohome_client_->set_system_salt(std::vector<uint8_t>());
770 } 779 }
771 }; 780 };
772 781
773 TEST_F(DeviceCloudPolicyManagerChromeOSEnrollmentBlankSystemSaltTest, 782 TEST_P(DeviceCloudPolicyManagerChromeOSEnrollmentBlankSystemSaltTest,
774 RobotRefreshSaveFailed) { 783 RobotRefreshSaveFailed) {
775 // Without the system salt, the robot token can't be stored. 784 // Without the system salt, the robot token can't be stored.
776 RunTest(); 785 RunTest();
777 ExpectFailedEnrollment(EnrollmentStatus::STATUS_ROBOT_REFRESH_STORE_FAILED); 786 ExpectFailedEnrollment(EnrollmentStatus::STATUS_ROBOT_REFRESH_STORE_FAILED);
778 } 787 }
779 788
789 INSTANTIATE_TEST_CASE_P(Cert,
790 DeviceCloudPolicyManagerChromeOSEnrollmentTest,
791 ::testing::Values(false, true));
792
780 INSTANTIATE_TEST_CASE_P( 793 INSTANTIATE_TEST_CASE_P(
781 Cert, 794 Cert,
782 ParameterizedDeviceCloudPolicyManagerChromeOSEnrollmentTest, 795 DeviceCloudPolicyManagerChromeOSEnrollmentBlankSystemSaltTest,
783 ::testing::Values(false, true)); 796 ::testing::Values(false, true));
784 797
785 } // namespace 798 } // namespace
786 } // namespace policy 799 } // namespace policy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698