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

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

Issue 10928036: Implement Chrome OS device enrollment on the new cloud policy stack. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 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 | Annotate | Revision Log
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/policy/device_cloud_policy_manager_chromeos.h" 5 #include "chrome/browser/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/ref_counted.h" 9 #include "base/memory/ref_counted.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 PolicyBundle bundle; 133 PolicyBundle bundle;
134 EXPECT_TRUE(manager_.policies().Equals(bundle)); 134 EXPECT_TRUE(manager_.policies().Equals(bundle));
135 135
136 manager_.Initialize(&local_state_, &device_management_service_); 136 manager_.Initialize(&local_state_, &device_management_service_);
137 EXPECT_TRUE(manager_.policies().Equals(bundle)); 137 EXPECT_TRUE(manager_.policies().Equals(bundle));
138 138
139 manager_.Shutdown(); 139 manager_.Shutdown();
140 EXPECT_TRUE(manager_.policies().Equals(bundle)); 140 EXPECT_TRUE(manager_.policies().Equals(bundle));
141 } 141 }
142 142
143 class DeviceCloudPolicyManagerChromeOSEnrollmentTest
144 : public DeviceCloudPolicyManagerChromeOSTest {
145 public:
146 void Done(EnrollmentStatus enrollment_status,
147 DeviceManagementStatus dm_status,
148 CloudPolicyValidatorBase::Status validator_status,
149 CloudPolicyStore::Status store_status) {
150 EXPECT_EQ(expected_enrollment_status_, enrollment_status);
151 EXPECT_EQ(expected_dm_status_, dm_status);
152 EXPECT_EQ(expected_validator_status_, validator_status);
153 EXPECT_EQ(expected_store_status_, store_status);
154 done_ = true;
155 }
156
157 protected:
158 DeviceCloudPolicyManagerChromeOSEnrollmentTest()
159 : register_status_(DM_STATUS_SUCCESS),
160 fetch_status_(DM_STATUS_SUCCESS),
161 store_result_(true),
162 expected_enrollment_status_(ENROLLMENT_STATUS_SUCCESS),
163 expected_dm_status_(DM_STATUS_SUCCESS),
164 expected_validator_status_(CloudPolicyValidatorBase::VALIDATION_OK),
165 expected_store_status_(CloudPolicyStore::STATUS_OK),
166 done_(false) {}
167
168 virtual void SetUp() OVERRIDE {
169 DeviceCloudPolicyManagerChromeOSTest::SetUp();
170
171 // Set up test data.
172 policy_.set_new_signing_key(PolicyBuilder::CreateTestNewSigningKey());
173 policy_.policy_data().set_timestamp(
174 (base::Time::NowFromSystemTime() -
175 base::Time::UnixEpoch()).InMilliseconds());
176 policy_.Build();
177
178 register_response_.mutable_register_response()->set_device_management_token(
179 PolicyBuilder::kFakeToken);
180 fetch_response_.mutable_policy_response()->add_response()->CopyFrom(
181 policy_.policy());
182 loaded_blob_ = policy_.GetBlob();
183
184 // Initialize the manager.
185 device_settings_test_helper_.Flush();
186 EXPECT_EQ(CloudPolicyStore::STATUS_BAD_STATE, store_->status());
187 EXPECT_TRUE(manager_.IsInitializationComplete());
188
189 PolicyBundle bundle;
190 EXPECT_TRUE(manager_.policies().Equals(bundle));
191
192 manager_.Initialize(&local_state_, &device_management_service_);
193 }
194
195 virtual void TearDown() OVERRIDE {
196 RunTest();
197
198 // Enrollment should have completed.
199 EXPECT_TRUE(done_);
200 PolicyBundle bundle;
201 if (expected_enrollment_status_ != ENROLLMENT_STATUS_SUCCESS) {
202 EXPECT_FALSE(store_->has_policy());
203 EXPECT_FALSE(store_->is_managed());
204 EXPECT_TRUE(manager_.policies().Equals(bundle));
205 } else {
206 EXPECT_EQ(DEVICE_MODE_ENTERPRISE, install_attributes_.GetMode());
207 EXPECT_TRUE(store_->has_policy());
208 EXPECT_TRUE(store_->is_managed());
209 ASSERT_TRUE(manager_.cloud_policy_client());
210 EXPECT_TRUE(manager_.cloud_policy_client()->is_registered());
211
212 bundle.Get(POLICY_DOMAIN_CHROME, std::string()).Set(
213 key::kDeviceMetricsReportingEnabled, POLICY_LEVEL_MANDATORY,
214 POLICY_SCOPE_MACHINE, Value::CreateBooleanValue(true));
215 EXPECT_TRUE(manager_.policies().Equals(bundle));
216 }
217
218 DeviceCloudPolicyManagerChromeOSTest::TearDown();
219 }
220
221 void RunTest() {
222 // Trigger enrollment.
223 MockDeviceManagementJob* register_job = NULL;
224 EXPECT_CALL(device_management_service_,
225 CreateJob(DeviceManagementRequestJob::TYPE_REGISTRATION))
226 .Times(AtMost(1))
227 .WillOnce(device_management_service_.CreateAsyncJob(&register_job));
228 EXPECT_CALL(device_management_service_, StartJob(_, _, _, _, _, _, _))
229 .Times(AtMost(1));
230 manager_.StartEnrollment(
231 "auth token",
232 base::Bind(&DeviceCloudPolicyManagerChromeOSEnrollmentTest::Done,
233 base::Unretained(this)));
234 Mock::VerifyAndClearExpectations(&device_management_service_);
235
236 if (done_)
237 return;
238
239 // Process registration.
240 ASSERT_TRUE(register_job);
241 MockDeviceManagementJob* fetch_job = NULL;
242 EXPECT_CALL(device_management_service_,
243 CreateJob(DeviceManagementRequestJob::TYPE_POLICY_FETCH))
244 .Times(AtMost(1))
245 .WillOnce(device_management_service_.CreateAsyncJob(&fetch_job));
246 EXPECT_CALL(device_management_service_, StartJob(_, _, _, _, _, _, _))
247 .Times(AtMost(1));
248 register_job->SendResponse(register_status_, register_response_);
249 Mock::VerifyAndClearExpectations(&device_management_service_);
250
251 if (done_)
252 return;
253
254 // Process policy fetch.
255 ASSERT_TRUE(fetch_job);
256 fetch_job->SendResponse(fetch_status_, fetch_response_);
257
258 if (done_)
259 return;
260
261 // Process verification.
262 base::RunLoop().RunUntilIdle();
263
264 if (done_)
265 return;
266
267 // Process policy store.
268 device_settings_test_helper_.set_store_result(store_result_);
269 device_settings_test_helper_.FlushStore();
270 EXPECT_EQ(policy_.GetBlob(), device_settings_test_helper_.policy_blob());
271
272 if (done_)
273 return;
274
275 // Key installation and policy load.
276 device_settings_test_helper_.set_policy_blob(loaded_blob_);
277 owner_key_util_->SetPublicKeyFromPrivateKey(policy_.new_signing_key());
278 device_settings_service_.OwnerKeySet(true);
279 device_settings_test_helper_.Flush();
280 }
281
282 DeviceManagementStatus register_status_;
283 em::DeviceManagementResponse register_response_;
284
285 DeviceManagementStatus fetch_status_;
286 em::DeviceManagementResponse fetch_response_;
287
288 bool store_result_;
289 std::string loaded_blob_;
290
291 EnrollmentStatus expected_enrollment_status_;
292 DeviceManagementStatus expected_dm_status_;
293 CloudPolicyValidatorBase::Status expected_validator_status_;
294 CloudPolicyStore::Status expected_store_status_;
295 bool done_;
296
297 private:
298 DISALLOW_COPY_AND_ASSIGN(DeviceCloudPolicyManagerChromeOSEnrollmentTest);
299 };
300
301 TEST_F(DeviceCloudPolicyManagerChromeOSEnrollmentTest, Success) {
302 // The defaults should result in successful enrollment.
303 }
304
305 TEST_F(DeviceCloudPolicyManagerChromeOSEnrollmentTest, Reenrollment) {
306 ASSERT_EQ(EnterpriseInstallAttributes::LOCK_SUCCESS,
307 install_attributes_.LockDevice(PolicyBuilder::kFakeUsername,
308 DEVICE_MODE_ENTERPRISE,
309 PolicyBuilder::kFakeDeviceId));
310 }
311
312 TEST_F(DeviceCloudPolicyManagerChromeOSEnrollmentTest, RegistrationFailed) {
313 register_status_ = DM_STATUS_REQUEST_FAILED;
314 expected_enrollment_status_ = ENROLLMENT_STATUS_REGISTRATION_FAILED;
315 expected_dm_status_ = DM_STATUS_REQUEST_FAILED;
316 }
317
318 TEST_F(DeviceCloudPolicyManagerChromeOSEnrollmentTest, PolicyFetchFailed) {
319 fetch_status_ = DM_STATUS_REQUEST_FAILED;
320 expected_enrollment_status_ = ENROLLMENT_STATUS_POLICY_FETCH_FAILED;
321 expected_dm_status_ = DM_STATUS_REQUEST_FAILED;
322 }
323
324 TEST_F(DeviceCloudPolicyManagerChromeOSEnrollmentTest, ValidationFailed) {
325 policy_.policy().set_policy_data_signature("bad");
326 fetch_response_.clear_policy_response();
327 fetch_response_.mutable_policy_response()->add_response()->CopyFrom(
328 policy_.policy());
329 expected_enrollment_status_ = ENROLLMENT_STATUS_VALIDATION_FAILED;
330 expected_validator_status_ =
331 CloudPolicyValidatorBase::VALIDATION_BAD_SIGNATURE;
332 }
333
334 TEST_F(DeviceCloudPolicyManagerChromeOSEnrollmentTest, StoreError) {
335 store_result_ = false;
336 expected_enrollment_status_ = ENROLLMENT_STATUS_STORE_ERROR;
337 expected_store_status_ = CloudPolicyStore::STATUS_STORE_ERROR;
338 }
339
340 TEST_F(DeviceCloudPolicyManagerChromeOSEnrollmentTest, LoadError) {
341 loaded_blob_.clear();
342 expected_enrollment_status_ = ENROLLMENT_STATUS_STORE_ERROR;
343 expected_store_status_ = CloudPolicyStore::STATUS_LOAD_ERROR;
344 }
345
143 } // namespace 346 } // namespace
144 } // namespace policy 347 } // namespace policy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698