| 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 "base/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include "base/compiler_specific.h" | 8 #include "base/compiler_specific.h" |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "base/prefs/pref_registry_simple.h" | 10 #include "base/prefs/pref_registry_simple.h" |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 46 | 46 |
| 47 class DeviceCloudPolicyManagerChromeOSTest | 47 class DeviceCloudPolicyManagerChromeOSTest |
| 48 : public chromeos::DeviceSettingsTestBase { | 48 : public chromeos::DeviceSettingsTestBase { |
| 49 protected: | 49 protected: |
| 50 DeviceCloudPolicyManagerChromeOSTest() | 50 DeviceCloudPolicyManagerChromeOSTest() |
| 51 : cryptohome_library_(chromeos::CryptohomeLibrary::GetImpl(true)), | 51 : cryptohome_library_(chromeos::CryptohomeLibrary::GetImpl(true)), |
| 52 stub_cryptohome_client_(chromeos::CryptohomeClient::Create( | 52 stub_cryptohome_client_(chromeos::CryptohomeClient::Create( |
| 53 chromeos::STUB_DBUS_CLIENT_IMPLEMENTATION, NULL)), | 53 chromeos::STUB_DBUS_CLIENT_IMPLEMENTATION, NULL)), |
| 54 install_attributes_(cryptohome_library_.get(), | 54 install_attributes_(cryptohome_library_.get(), |
| 55 stub_cryptohome_client_.get()), | 55 stub_cryptohome_client_.get()), |
| 56 store_(new DeviceCloudPolicyStoreChromeOS(&device_settings_service_, | 56 store_(new DeviceCloudPolicyStoreChromeOS(device_settings_service_, |
| 57 &install_attributes_)), | 57 &install_attributes_)), |
| 58 manager_(make_scoped_ptr(store_), &install_attributes_) {} | 58 manager_(new DeviceCloudPolicyManagerChromeOS(make_scoped_ptr(store_), |
| 59 &install_attributes_)) { |
| 60 } |
| 59 | 61 |
| 60 virtual void SetUp() OVERRIDE { | 62 virtual void SetUp() OVERRIDE { |
| 61 DeviceSettingsTestBase::SetUp(); | 63 DeviceSettingsTestBase::SetUp(); |
| 62 chrome::RegisterLocalState(local_state_.registry()); | 64 chrome::RegisterLocalState(local_state_.registry()); |
| 63 manager_.Init(); | 65 manager_->Init(); |
| 64 } | 66 } |
| 65 | 67 |
| 66 virtual void TearDown() OVERRIDE { | 68 virtual void TearDown() OVERRIDE { |
| 67 manager_.Shutdown(); | 69 manager_->Shutdown(); |
| 70 manager_.reset(); |
| 68 DeviceSettingsTestBase::TearDown(); | 71 DeviceSettingsTestBase::TearDown(); |
| 69 } | 72 } |
| 70 | 73 |
| 71 scoped_ptr<chromeos::CryptohomeLibrary> cryptohome_library_; | 74 scoped_ptr<chromeos::CryptohomeLibrary> cryptohome_library_; |
| 72 scoped_ptr<chromeos::CryptohomeClient> stub_cryptohome_client_; | 75 scoped_ptr<chromeos::CryptohomeClient> stub_cryptohome_client_; |
| 73 EnterpriseInstallAttributes install_attributes_; | 76 EnterpriseInstallAttributes install_attributes_; |
| 74 | 77 |
| 75 TestingPrefServiceSimple local_state_; | 78 TestingPrefServiceSimple local_state_; |
| 76 MockDeviceManagementService device_management_service_; | 79 MockDeviceManagementService device_management_service_; |
| 77 | 80 |
| 78 DeviceCloudPolicyStoreChromeOS* store_; | 81 DeviceCloudPolicyStoreChromeOS* store_; |
| 79 DeviceCloudPolicyManagerChromeOS manager_; | 82 scoped_ptr<DeviceCloudPolicyManagerChromeOS> manager_; |
| 80 | 83 |
| 81 private: | 84 private: |
| 82 DISALLOW_COPY_AND_ASSIGN(DeviceCloudPolicyManagerChromeOSTest); | 85 DISALLOW_COPY_AND_ASSIGN(DeviceCloudPolicyManagerChromeOSTest); |
| 83 }; | 86 }; |
| 84 | 87 |
| 85 TEST_F(DeviceCloudPolicyManagerChromeOSTest, FreshDevice) { | 88 TEST_F(DeviceCloudPolicyManagerChromeOSTest, FreshDevice) { |
| 86 owner_key_util_->Clear(); | 89 owner_key_util_->Clear(); |
| 87 FlushDeviceSettings(); | 90 FlushDeviceSettings(); |
| 88 EXPECT_TRUE(manager_.IsInitializationComplete(POLICY_DOMAIN_CHROME)); | 91 EXPECT_TRUE(manager_->IsInitializationComplete(POLICY_DOMAIN_CHROME)); |
| 89 | 92 |
| 90 manager_.Connect(&local_state_, &device_management_service_, | 93 manager_->Connect(&local_state_, &device_management_service_, |
| 91 scoped_ptr<CloudPolicyClient::StatusProvider>(NULL)); | 94 scoped_ptr<CloudPolicyClient::StatusProvider>(NULL)); |
| 92 | 95 |
| 93 PolicyBundle bundle; | 96 PolicyBundle bundle; |
| 94 EXPECT_TRUE(manager_.policies().Equals(bundle)); | 97 EXPECT_TRUE(manager_->policies().Equals(bundle)); |
| 95 } | 98 } |
| 96 | 99 |
| 97 TEST_F(DeviceCloudPolicyManagerChromeOSTest, EnrolledDevice) { | 100 TEST_F(DeviceCloudPolicyManagerChromeOSTest, EnrolledDevice) { |
| 98 base::RunLoop loop; | 101 base::RunLoop loop; |
| 99 EnterpriseInstallAttributes::LockResult result; | 102 EnterpriseInstallAttributes::LockResult result; |
| 100 install_attributes_.LockDevice(PolicyBuilder::kFakeUsername, | 103 install_attributes_.LockDevice(PolicyBuilder::kFakeUsername, |
| 101 DEVICE_MODE_ENTERPRISE, | 104 DEVICE_MODE_ENTERPRISE, |
| 102 PolicyBuilder::kFakeDeviceId, | 105 PolicyBuilder::kFakeDeviceId, |
| 103 base::Bind(&CopyLockResult, &loop, &result)); | 106 base::Bind(&CopyLockResult, &loop, &result)); |
| 104 loop.Run(); | 107 loop.Run(); |
| 105 ASSERT_EQ(EnterpriseInstallAttributes::LOCK_SUCCESS, result); | 108 ASSERT_EQ(EnterpriseInstallAttributes::LOCK_SUCCESS, result); |
| 106 | 109 |
| 107 FlushDeviceSettings(); | 110 FlushDeviceSettings(); |
| 108 EXPECT_EQ(CloudPolicyStore::STATUS_OK, store_->status()); | 111 EXPECT_EQ(CloudPolicyStore::STATUS_OK, store_->status()); |
| 109 EXPECT_TRUE(manager_.IsInitializationComplete(POLICY_DOMAIN_CHROME)); | 112 EXPECT_TRUE(manager_->IsInitializationComplete(POLICY_DOMAIN_CHROME)); |
| 110 | 113 |
| 111 PolicyBundle bundle; | 114 PolicyBundle bundle; |
| 112 bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) | 115 bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) |
| 113 .Set(key::kDeviceMetricsReportingEnabled, | 116 .Set(key::kDeviceMetricsReportingEnabled, |
| 114 POLICY_LEVEL_MANDATORY, | 117 POLICY_LEVEL_MANDATORY, |
| 115 POLICY_SCOPE_MACHINE, | 118 POLICY_SCOPE_MACHINE, |
| 116 Value::CreateBooleanValue(false)); | 119 Value::CreateBooleanValue(false)); |
| 117 EXPECT_TRUE(manager_.policies().Equals(bundle)); | 120 EXPECT_TRUE(manager_->policies().Equals(bundle)); |
| 118 | 121 |
| 119 manager_.Connect(&local_state_, &device_management_service_, | 122 manager_->Connect(&local_state_, &device_management_service_, |
| 120 scoped_ptr<CloudPolicyClient::StatusProvider>(NULL)); | 123 scoped_ptr<CloudPolicyClient::StatusProvider>(NULL)); |
| 121 EXPECT_TRUE(manager_.policies().Equals(bundle)); | 124 EXPECT_TRUE(manager_->policies().Equals(bundle)); |
| 122 | 125 |
| 123 manager_.Shutdown(); | 126 manager_->Shutdown(); |
| 124 EXPECT_TRUE(manager_.policies().Equals(bundle)); | 127 EXPECT_TRUE(manager_->policies().Equals(bundle)); |
| 125 } | 128 } |
| 126 | 129 |
| 127 TEST_F(DeviceCloudPolicyManagerChromeOSTest, ConsumerDevice) { | 130 TEST_F(DeviceCloudPolicyManagerChromeOSTest, ConsumerDevice) { |
| 128 FlushDeviceSettings(); | 131 FlushDeviceSettings(); |
| 129 EXPECT_EQ(CloudPolicyStore::STATUS_BAD_STATE, store_->status()); | 132 EXPECT_EQ(CloudPolicyStore::STATUS_BAD_STATE, store_->status()); |
| 130 EXPECT_TRUE(manager_.IsInitializationComplete(POLICY_DOMAIN_CHROME)); | 133 EXPECT_TRUE(manager_->IsInitializationComplete(POLICY_DOMAIN_CHROME)); |
| 131 | 134 |
| 132 PolicyBundle bundle; | 135 PolicyBundle bundle; |
| 133 EXPECT_TRUE(manager_.policies().Equals(bundle)); | 136 EXPECT_TRUE(manager_->policies().Equals(bundle)); |
| 134 | 137 |
| 135 manager_.Connect(&local_state_, &device_management_service_, | 138 manager_->Connect(&local_state_, &device_management_service_, |
| 136 scoped_ptr<CloudPolicyClient::StatusProvider>(NULL)); | 139 scoped_ptr<CloudPolicyClient::StatusProvider>(NULL)); |
| 137 EXPECT_TRUE(manager_.policies().Equals(bundle)); | 140 EXPECT_TRUE(manager_->policies().Equals(bundle)); |
| 138 | 141 |
| 139 manager_.Shutdown(); | 142 manager_->Shutdown(); |
| 140 EXPECT_TRUE(manager_.policies().Equals(bundle)); | 143 EXPECT_TRUE(manager_->policies().Equals(bundle)); |
| 141 } | 144 } |
| 142 | 145 |
| 143 class DeviceCloudPolicyManagerChromeOSEnrollmentTest | 146 class DeviceCloudPolicyManagerChromeOSEnrollmentTest |
| 144 : public DeviceCloudPolicyManagerChromeOSTest { | 147 : public DeviceCloudPolicyManagerChromeOSTest { |
| 145 public: | 148 public: |
| 146 void Done(EnrollmentStatus status) { | 149 void Done(EnrollmentStatus status) { |
| 147 status_ = status; | 150 status_ = status; |
| 148 done_ = true; | 151 done_ = true; |
| 149 } | 152 } |
| 150 | 153 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 170 | 173 |
| 171 register_response_.mutable_register_response()->set_device_management_token( | 174 register_response_.mutable_register_response()->set_device_management_token( |
| 172 PolicyBuilder::kFakeToken); | 175 PolicyBuilder::kFakeToken); |
| 173 fetch_response_.mutable_policy_response()->add_response()->CopyFrom( | 176 fetch_response_.mutable_policy_response()->add_response()->CopyFrom( |
| 174 device_policy_.policy()); | 177 device_policy_.policy()); |
| 175 loaded_blob_ = device_policy_.GetBlob(); | 178 loaded_blob_ = device_policy_.GetBlob(); |
| 176 | 179 |
| 177 // Initialize the manager. | 180 // Initialize the manager. |
| 178 FlushDeviceSettings(); | 181 FlushDeviceSettings(); |
| 179 EXPECT_EQ(CloudPolicyStore::STATUS_BAD_STATE, store_->status()); | 182 EXPECT_EQ(CloudPolicyStore::STATUS_BAD_STATE, store_->status()); |
| 180 EXPECT_TRUE(manager_.IsInitializationComplete(POLICY_DOMAIN_CHROME)); | 183 EXPECT_TRUE(manager_->IsInitializationComplete(POLICY_DOMAIN_CHROME)); |
| 181 | 184 |
| 182 PolicyBundle bundle; | 185 PolicyBundle bundle; |
| 183 EXPECT_TRUE(manager_.policies().Equals(bundle)); | 186 EXPECT_TRUE(manager_->policies().Equals(bundle)); |
| 184 | 187 |
| 185 manager_.Connect(&local_state_, &device_management_service_, | 188 manager_->Connect(&local_state_, &device_management_service_, |
| 186 scoped_ptr<CloudPolicyClient::StatusProvider>(NULL)); | 189 scoped_ptr<CloudPolicyClient::StatusProvider>(NULL)); |
| 187 } | 190 } |
| 188 | 191 |
| 189 void ExpectFailedEnrollment(EnrollmentStatus::Status status) { | 192 void ExpectFailedEnrollment(EnrollmentStatus::Status status) { |
| 190 EXPECT_EQ(status, status_.status()); | 193 EXPECT_EQ(status, status_.status()); |
| 191 EXPECT_FALSE(store_->is_managed()); | 194 EXPECT_FALSE(store_->is_managed()); |
| 192 PolicyBundle empty_bundle; | 195 PolicyBundle empty_bundle; |
| 193 EXPECT_TRUE(manager_.policies().Equals(empty_bundle)); | 196 EXPECT_TRUE(manager_->policies().Equals(empty_bundle)); |
| 194 } | 197 } |
| 195 | 198 |
| 196 void ExpectSuccessfulEnrollment() { | 199 void ExpectSuccessfulEnrollment() { |
| 197 EXPECT_EQ(EnrollmentStatus::STATUS_SUCCESS, status_.status()); | 200 EXPECT_EQ(EnrollmentStatus::STATUS_SUCCESS, status_.status()); |
| 198 EXPECT_EQ(DEVICE_MODE_ENTERPRISE, install_attributes_.GetMode()); | 201 EXPECT_EQ(DEVICE_MODE_ENTERPRISE, install_attributes_.GetMode()); |
| 199 EXPECT_TRUE(store_->has_policy()); | 202 EXPECT_TRUE(store_->has_policy()); |
| 200 EXPECT_TRUE(store_->is_managed()); | 203 EXPECT_TRUE(store_->is_managed()); |
| 201 ASSERT_TRUE(manager_.core()->client()); | 204 ASSERT_TRUE(manager_->core()->client()); |
| 202 EXPECT_TRUE(manager_.core()->client()->is_registered()); | 205 EXPECT_TRUE(manager_->core()->client()->is_registered()); |
| 203 | 206 |
| 204 PolicyBundle bundle; | 207 PolicyBundle bundle; |
| 205 bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) | 208 bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) |
| 206 .Set(key::kDeviceMetricsReportingEnabled, | 209 .Set(key::kDeviceMetricsReportingEnabled, |
| 207 POLICY_LEVEL_MANDATORY, | 210 POLICY_LEVEL_MANDATORY, |
| 208 POLICY_SCOPE_MACHINE, | 211 POLICY_SCOPE_MACHINE, |
| 209 Value::CreateBooleanValue(false)); | 212 Value::CreateBooleanValue(false)); |
| 210 EXPECT_TRUE(manager_.policies().Equals(bundle)); | 213 EXPECT_TRUE(manager_->policies().Equals(bundle)); |
| 211 } | 214 } |
| 212 | 215 |
| 213 void RunTest() { | 216 void RunTest() { |
| 214 // Trigger enrollment. | 217 // Trigger enrollment. |
| 215 MockDeviceManagementJob* register_job = NULL; | 218 MockDeviceManagementJob* register_job = NULL; |
| 216 EXPECT_CALL(device_management_service_, | 219 EXPECT_CALL(device_management_service_, |
| 217 CreateJob(DeviceManagementRequestJob::TYPE_REGISTRATION)) | 220 CreateJob(DeviceManagementRequestJob::TYPE_REGISTRATION)) |
| 218 .Times(AtMost(1)) | 221 .Times(AtMost(1)) |
| 219 .WillOnce(device_management_service_.CreateAsyncJob(®ister_job)); | 222 .WillOnce(device_management_service_.CreateAsyncJob(®ister_job)); |
| 220 EXPECT_CALL(device_management_service_, StartJob(_, _, _, _, _, _, _)) | 223 EXPECT_CALL(device_management_service_, StartJob(_, _, _, _, _, _, _)) |
| 221 .Times(AtMost(1)) | 224 .Times(AtMost(1)) |
| 222 .WillOnce(DoAll(SaveArg<5>(&client_id_), | 225 .WillOnce(DoAll(SaveArg<5>(&client_id_), |
| 223 SaveArg<6>(®ister_request_))); | 226 SaveArg<6>(®ister_request_))); |
| 224 DeviceCloudPolicyManagerChromeOS::AllowedDeviceModes modes; | 227 DeviceCloudPolicyManagerChromeOS::AllowedDeviceModes modes; |
| 225 modes[DEVICE_MODE_ENTERPRISE] = true; | 228 modes[DEVICE_MODE_ENTERPRISE] = true; |
| 226 manager_.StartEnrollment( | 229 manager_->StartEnrollment( |
| 227 "auth token", is_auto_enrollment_, modes, | 230 "auth token", is_auto_enrollment_, modes, |
| 228 base::Bind(&DeviceCloudPolicyManagerChromeOSEnrollmentTest::Done, | 231 base::Bind(&DeviceCloudPolicyManagerChromeOSEnrollmentTest::Done, |
| 229 base::Unretained(this))); | 232 base::Unretained(this))); |
| 230 Mock::VerifyAndClearExpectations(&device_management_service_); | 233 Mock::VerifyAndClearExpectations(&device_management_service_); |
| 231 | 234 |
| 232 if (done_) | 235 if (done_) |
| 233 return; | 236 return; |
| 234 | 237 |
| 235 // Process registration. | 238 // Process registration. |
| 236 ASSERT_TRUE(register_job); | 239 ASSERT_TRUE(register_job); |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 361 TEST_F(DeviceCloudPolicyManagerChromeOSEnrollmentTest, LoadError) { | 364 TEST_F(DeviceCloudPolicyManagerChromeOSEnrollmentTest, LoadError) { |
| 362 loaded_blob_.clear(); | 365 loaded_blob_.clear(); |
| 363 RunTest(); | 366 RunTest(); |
| 364 ExpectFailedEnrollment(EnrollmentStatus::STATUS_STORE_ERROR); | 367 ExpectFailedEnrollment(EnrollmentStatus::STATUS_STORE_ERROR); |
| 365 EXPECT_EQ(CloudPolicyStore::STATUS_LOAD_ERROR, | 368 EXPECT_EQ(CloudPolicyStore::STATUS_LOAD_ERROR, |
| 366 status_.store_status()); | 369 status_.store_status()); |
| 367 } | 370 } |
| 368 | 371 |
| 369 } // namespace | 372 } // namespace |
| 370 } // namespace policy | 373 } // namespace policy |
| OLD | NEW |