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

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

Issue 672653002: Test that AutoEnrollmentClient stores server-backed state correctly (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@e_1_425574_add_disabled_device_screen
Patch Set: Created 6 years, 2 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/auto_enrollment_client.h" 5 #include "chrome/browser/chromeos/policy/auto_enrollment_client.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/prefs/pref_service.h" 10 #include "base/prefs/pref_service.h"
11 #include "base/prefs/testing_pref_service.h" 11 #include "base/prefs/testing_pref_service.h"
12 #include "base/run_loop.h" 12 #include "base/run_loop.h"
13 #include "base/strings/stringprintf.h" 13 #include "base/strings/stringprintf.h"
14 #include "base/values.h" 14 #include "base/values.h"
15 #include "chrome/browser/browser_process.h" 15 #include "chrome/browser/browser_process.h"
16 #include "chrome/browser/chromeos/policy/server_backed_device_state.h"
16 #include "chrome/common/pref_names.h" 17 #include "chrome/common/pref_names.h"
17 #include "chrome/test/base/scoped_testing_local_state.h" 18 #include "chrome/test/base/scoped_testing_local_state.h"
18 #include "chrome/test/base/testing_browser_process.h" 19 #include "chrome/test/base/testing_browser_process.h"
19 #include "components/policy/core/common/cloud/mock_device_management_service.h" 20 #include "components/policy/core/common/cloud/mock_device_management_service.h"
20 #include "content/public/test/test_browser_thread_bundle.h" 21 #include "content/public/test/test_browser_thread_bundle.h"
21 #include "crypto/sha2.h" 22 #include "crypto/sha2.h"
22 #include "net/url_request/url_request_context_getter.h" 23 #include "net/url_request/url_request_context_getter.h"
23 #include "net/url_request/url_request_test_util.h" 24 #include "net/url_request/url_request_test_util.h"
24 #include "testing/gmock/include/gmock/gmock.h" 25 #include "testing/gmock/include/gmock/gmock.h"
25 #include "testing/gtest/include/gtest/gtest.h" 26 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 base::FundamentalValue value_should_enroll(should_enroll); 142 base::FundamentalValue value_should_enroll(should_enroll);
142 base::FundamentalValue value_power_limit(power_limit); 143 base::FundamentalValue value_power_limit(power_limit);
143 EXPECT_TRUE(base::Value::Equals( 144 EXPECT_TRUE(base::Value::Equals(
144 &value_should_enroll, 145 &value_should_enroll,
145 local_state_->GetUserPref(prefs::kShouldAutoEnroll))); 146 local_state_->GetUserPref(prefs::kShouldAutoEnroll)));
146 EXPECT_TRUE(base::Value::Equals( 147 EXPECT_TRUE(base::Value::Equals(
147 &value_power_limit, 148 &value_power_limit,
148 local_state_->GetUserPref(prefs::kAutoEnrollmentPowerLimit))); 149 local_state_->GetUserPref(prefs::kAutoEnrollmentPowerLimit)));
149 } 150 }
150 151
152 bool HasServerBackedState() {
153 return local_state_->GetUserPref(prefs::kServerBackedDeviceState);
154 }
155
156 void VerifyServerBackedState(const std::string& expected_management_domain,
157 const std::string& expected_restore_mode) {
158 const base::Value* state =
159 local_state_->GetUserPref(prefs::kServerBackedDeviceState);
160 ASSERT_TRUE(state);
161 const base::DictionaryValue* state_dict = nullptr;
162 ASSERT_TRUE(state->GetAsDictionary(&state_dict));
163
164 std::string actual_management_domain;
165 EXPECT_TRUE(state_dict->GetString(kDeviceStateManagementDomain,
166 &actual_management_domain));
167 EXPECT_EQ(expected_management_domain, actual_management_domain);
168
169 std::string actual_restore_mode;
170 EXPECT_TRUE(state_dict->GetString(kDeviceStateRestoreMode,
171 &actual_restore_mode));
172 EXPECT_EQ(expected_restore_mode, actual_restore_mode);
173 }
174
151 const em::DeviceAutoEnrollmentRequest& auto_enrollment_request() { 175 const em::DeviceAutoEnrollmentRequest& auto_enrollment_request() {
152 return last_request_.auto_enrollment_request(); 176 return last_request_.auto_enrollment_request();
153 } 177 }
154 178
155 content::TestBrowserThreadBundle browser_threads_; 179 content::TestBrowserThreadBundle browser_threads_;
156 ScopedTestingLocalState scoped_testing_local_state_; 180 ScopedTestingLocalState scoped_testing_local_state_;
157 TestingPrefServiceSimple* local_state_; 181 TestingPrefServiceSimple* local_state_;
158 scoped_ptr<MockDeviceManagementService> service_; 182 scoped_ptr<MockDeviceManagementService> service_;
159 scoped_ptr<AutoEnrollmentClient> client_; 183 scoped_ptr<AutoEnrollmentClient> client_;
160 em::DeviceManagementRequest last_request_; 184 em::DeviceManagementRequest last_request_;
161 AutoEnrollmentState state_; 185 AutoEnrollmentState state_;
162 186
163 private: 187 private:
164 DISALLOW_COPY_AND_ASSIGN(AutoEnrollmentClientTest); 188 DISALLOW_COPY_AND_ASSIGN(AutoEnrollmentClientTest);
165 }; 189 };
166 190
167 TEST_F(AutoEnrollmentClientTest, NetworkFailure) { 191 TEST_F(AutoEnrollmentClientTest, NetworkFailure) {
168 ServerWillFail(DM_STATUS_TEMPORARY_UNAVAILABLE); 192 ServerWillFail(DM_STATUS_TEMPORARY_UNAVAILABLE);
169 client_->Start(); 193 client_->Start();
170 EXPECT_EQ(AUTO_ENROLLMENT_STATE_SERVER_ERROR, state_); 194 EXPECT_EQ(AUTO_ENROLLMENT_STATE_SERVER_ERROR, state_);
171 EXPECT_FALSE(HasCachedDecision()); 195 EXPECT_FALSE(HasCachedDecision());
196 EXPECT_FALSE(HasServerBackedState());
172 } 197 }
173 198
174 TEST_F(AutoEnrollmentClientTest, EmptyReply) { 199 TEST_F(AutoEnrollmentClientTest, EmptyReply) {
175 ServerWillReply(-1, false, false); 200 ServerWillReply(-1, false, false);
176 client_->Start(); 201 client_->Start();
177 EXPECT_EQ(AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, state_); 202 EXPECT_EQ(AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, state_);
178 VerifyCachedResult(false, 8); 203 VerifyCachedResult(false, 8);
204 EXPECT_FALSE(HasServerBackedState());
179 } 205 }
180 206
181 TEST_F(AutoEnrollmentClientTest, ClientUploadsRightBits) { 207 TEST_F(AutoEnrollmentClientTest, ClientUploadsRightBits) {
182 ServerWillReply(-1, false, false); 208 ServerWillReply(-1, false, false);
183 client_->Start(); 209 client_->Start();
184 EXPECT_EQ(AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, state_); 210 EXPECT_EQ(AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, state_);
185 211
186 EXPECT_TRUE(auto_enrollment_request().has_remainder()); 212 EXPECT_TRUE(auto_enrollment_request().has_remainder());
187 EXPECT_TRUE(auto_enrollment_request().has_modulus()); 213 EXPECT_TRUE(auto_enrollment_request().has_modulus());
188 EXPECT_EQ(16, auto_enrollment_request().modulus()); 214 EXPECT_EQ(16, auto_enrollment_request().modulus());
189 EXPECT_EQ(kStateKeyHash[31] & 0xf, auto_enrollment_request().remainder()); 215 EXPECT_EQ(kStateKeyHash[31] & 0xf, auto_enrollment_request().remainder());
190 VerifyCachedResult(false, 8); 216 VerifyCachedResult(false, 8);
217 EXPECT_FALSE(HasServerBackedState());
191 } 218 }
192 219
193 TEST_F(AutoEnrollmentClientTest, AskForMoreThenFail) { 220 TEST_F(AutoEnrollmentClientTest, AskForMoreThenFail) {
194 InSequence sequence; 221 InSequence sequence;
195 ServerWillReply(32, false, false); 222 ServerWillReply(32, false, false);
196 ServerWillFail(DM_STATUS_TEMPORARY_UNAVAILABLE); 223 ServerWillFail(DM_STATUS_TEMPORARY_UNAVAILABLE);
197 client_->Start(); 224 client_->Start();
198 EXPECT_EQ(AUTO_ENROLLMENT_STATE_SERVER_ERROR, state_); 225 EXPECT_EQ(AUTO_ENROLLMENT_STATE_SERVER_ERROR, state_);
199 EXPECT_FALSE(HasCachedDecision()); 226 EXPECT_FALSE(HasCachedDecision());
227 EXPECT_FALSE(HasServerBackedState());
200 } 228 }
201 229
202 TEST_F(AutoEnrollmentClientTest, AskForMoreThenEvenMore) { 230 TEST_F(AutoEnrollmentClientTest, AskForMoreThenEvenMore) {
203 InSequence sequence; 231 InSequence sequence;
204 ServerWillReply(32, false, false); 232 ServerWillReply(32, false, false);
205 ServerWillReply(64, false, false); 233 ServerWillReply(64, false, false);
206 client_->Start(); 234 client_->Start();
207 EXPECT_EQ(AUTO_ENROLLMENT_STATE_SERVER_ERROR, state_); 235 EXPECT_EQ(AUTO_ENROLLMENT_STATE_SERVER_ERROR, state_);
208 EXPECT_FALSE(HasCachedDecision()); 236 EXPECT_FALSE(HasCachedDecision());
237 EXPECT_FALSE(HasServerBackedState());
209 } 238 }
210 239
211 TEST_F(AutoEnrollmentClientTest, AskForLess) { 240 TEST_F(AutoEnrollmentClientTest, AskForLess) {
212 InSequence sequence; 241 InSequence sequence;
213 ServerWillReply(8, false, false); 242 ServerWillReply(8, false, false);
214 ServerWillReply(-1, true, true); 243 ServerWillReply(-1, true, true);
215 ServerWillSendState( 244 ServerWillSendState(
216 "example.com", 245 "example.com",
217 em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED); 246 em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED);
218 client_->Start(); 247 client_->Start();
219 EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); 248 EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_);
220 VerifyCachedResult(true, 8); 249 VerifyCachedResult(true, 8);
250 VerifyServerBackedState("example.com",
251 kDeviceStateRestoreModeReEnrollmentEnforced);
221 } 252 }
222 253
223 TEST_F(AutoEnrollmentClientTest, AskForSame) { 254 TEST_F(AutoEnrollmentClientTest, AskForSame) {
224 InSequence sequence; 255 InSequence sequence;
225 ServerWillReply(16, false, false); 256 ServerWillReply(16, false, false);
226 ServerWillReply(-1, true, true); 257 ServerWillReply(-1, true, true);
227 ServerWillSendState( 258 ServerWillSendState(
228 "example.com", 259 "example.com",
229 em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED); 260 em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED);
230 client_->Start(); 261 client_->Start();
231 EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); 262 EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_);
232 VerifyCachedResult(true, 8); 263 VerifyCachedResult(true, 8);
264 VerifyServerBackedState("example.com",
265 kDeviceStateRestoreModeReEnrollmentEnforced);
233 } 266 }
234 267
235 TEST_F(AutoEnrollmentClientTest, AskForSameTwice) { 268 TEST_F(AutoEnrollmentClientTest, AskForSameTwice) {
236 InSequence sequence; 269 InSequence sequence;
237 ServerWillReply(16, false, false); 270 ServerWillReply(16, false, false);
238 ServerWillReply(16, false, false); 271 ServerWillReply(16, false, false);
239 client_->Start(); 272 client_->Start();
240 EXPECT_EQ(AUTO_ENROLLMENT_STATE_SERVER_ERROR, state_); 273 EXPECT_EQ(AUTO_ENROLLMENT_STATE_SERVER_ERROR, state_);
241 EXPECT_FALSE(HasCachedDecision()); 274 EXPECT_FALSE(HasCachedDecision());
275 EXPECT_FALSE(HasServerBackedState());
242 } 276 }
243 277
244 TEST_F(AutoEnrollmentClientTest, AskForTooMuch) { 278 TEST_F(AutoEnrollmentClientTest, AskForTooMuch) {
245 ServerWillReply(512, false, false); 279 ServerWillReply(512, false, false);
246 client_->Start(); 280 client_->Start();
247 EXPECT_EQ(AUTO_ENROLLMENT_STATE_SERVER_ERROR, state_); 281 EXPECT_EQ(AUTO_ENROLLMENT_STATE_SERVER_ERROR, state_);
248 EXPECT_FALSE(HasCachedDecision()); 282 EXPECT_FALSE(HasCachedDecision());
283 EXPECT_FALSE(HasServerBackedState());
249 } 284 }
250 285
251 TEST_F(AutoEnrollmentClientTest, AskNonPowerOf2) { 286 TEST_F(AutoEnrollmentClientTest, AskNonPowerOf2) {
252 InSequence sequence; 287 InSequence sequence;
253 ServerWillReply(100, false, false); 288 ServerWillReply(100, false, false);
254 ServerWillReply(-1, false, false); 289 ServerWillReply(-1, false, false);
255 client_->Start(); 290 client_->Start();
256 EXPECT_EQ(AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, state_); 291 EXPECT_EQ(AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, state_);
257 EXPECT_TRUE(auto_enrollment_request().has_remainder()); 292 EXPECT_TRUE(auto_enrollment_request().has_remainder());
258 EXPECT_TRUE(auto_enrollment_request().has_modulus()); 293 EXPECT_TRUE(auto_enrollment_request().has_modulus());
259 EXPECT_EQ(128, auto_enrollment_request().modulus()); 294 EXPECT_EQ(128, auto_enrollment_request().modulus());
260 EXPECT_EQ(kStateKeyHash[31] & 0x7f, auto_enrollment_request().remainder()); 295 EXPECT_EQ(kStateKeyHash[31] & 0x7f, auto_enrollment_request().remainder());
261 VerifyCachedResult(false, 8); 296 VerifyCachedResult(false, 8);
297 EXPECT_FALSE(HasServerBackedState());
262 } 298 }
263 299
264 TEST_F(AutoEnrollmentClientTest, ConsumerDevice) { 300 TEST_F(AutoEnrollmentClientTest, ConsumerDevice) {
265 ServerWillReply(-1, true, false); 301 ServerWillReply(-1, true, false);
266 client_->Start(); 302 client_->Start();
267 EXPECT_EQ(AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, state_); 303 EXPECT_EQ(AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, state_);
268 VerifyCachedResult(false, 8); 304 VerifyCachedResult(false, 8);
305 EXPECT_FALSE(HasServerBackedState());
269 306
270 // Network changes don't trigger retries after obtaining a response from 307 // Network changes don't trigger retries after obtaining a response from
271 // the server. 308 // the server.
272 client_->OnNetworkChanged(net::NetworkChangeNotifier::CONNECTION_ETHERNET); 309 client_->OnNetworkChanged(net::NetworkChangeNotifier::CONNECTION_ETHERNET);
273 EXPECT_EQ(AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, state_); 310 EXPECT_EQ(AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, state_);
274 } 311 }
275 312
276 TEST_F(AutoEnrollmentClientTest, EnterpriseDevice) { 313 TEST_F(AutoEnrollmentClientTest, EnterpriseDevice) {
277 ServerWillReply(-1, true, true); 314 ServerWillReply(-1, true, true);
278 ServerWillSendState( 315 ServerWillSendState(
279 "example.com", 316 "example.com",
280 em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED); 317 em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED);
281 client_->Start(); 318 client_->Start();
282 EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); 319 EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_);
283 VerifyCachedResult(true, 8); 320 VerifyCachedResult(true, 8);
321 VerifyServerBackedState("example.com",
322 kDeviceStateRestoreModeReEnrollmentEnforced);
284 323
285 // Network changes don't trigger retries after obtaining a response from 324 // Network changes don't trigger retries after obtaining a response from
286 // the server. 325 // the server.
287 client_->OnNetworkChanged(net::NetworkChangeNotifier::CONNECTION_ETHERNET); 326 client_->OnNetworkChanged(net::NetworkChangeNotifier::CONNECTION_ETHERNET);
288 EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); 327 EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_);
289 } 328 }
290 329
291 TEST_F(AutoEnrollmentClientTest, NoSerial) { 330 TEST_F(AutoEnrollmentClientTest, NoSerial) {
292 CreateClient("", true, 4, 8); 331 CreateClient("", true, 4, 8);
293 client_->Start(); 332 client_->Start();
294 EXPECT_EQ(AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, state_); 333 EXPECT_EQ(AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, state_);
295 EXPECT_FALSE(HasCachedDecision()); 334 EXPECT_FALSE(HasCachedDecision());
335 EXPECT_FALSE(HasServerBackedState());
296 } 336 }
297 337
298 TEST_F(AutoEnrollmentClientTest, NoBitsUploaded) { 338 TEST_F(AutoEnrollmentClientTest, NoBitsUploaded) {
299 CreateClient(kStateKey, true, 0, 0); 339 CreateClient(kStateKey, true, 0, 0);
300 ServerWillReply(-1, false, false); 340 ServerWillReply(-1, false, false);
301 client_->Start(); 341 client_->Start();
302 EXPECT_EQ(AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, state_); 342 EXPECT_EQ(AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, state_);
303 EXPECT_TRUE(auto_enrollment_request().has_remainder()); 343 EXPECT_TRUE(auto_enrollment_request().has_remainder());
304 EXPECT_TRUE(auto_enrollment_request().has_modulus()); 344 EXPECT_TRUE(auto_enrollment_request().has_modulus());
305 EXPECT_EQ(1, auto_enrollment_request().modulus()); 345 EXPECT_EQ(1, auto_enrollment_request().modulus());
306 EXPECT_EQ(0, auto_enrollment_request().remainder()); 346 EXPECT_EQ(0, auto_enrollment_request().remainder());
307 VerifyCachedResult(false, 0); 347 VerifyCachedResult(false, 0);
348 EXPECT_FALSE(HasServerBackedState());
308 } 349 }
309 350
310 TEST_F(AutoEnrollmentClientTest, ManyBitsUploaded) { 351 TEST_F(AutoEnrollmentClientTest, ManyBitsUploaded) {
311 int64 bottom62 = GG_INT64_C(0x386e7244d097c3e6); 352 int64 bottom62 = GG_INT64_C(0x386e7244d097c3e6);
312 for (int i = 0; i <= 62; ++i) { 353 for (int i = 0; i <= 62; ++i) {
313 CreateClient(kStateKey, true, i, i); 354 CreateClient(kStateKey, true, i, i);
314 ServerWillReply(-1, false, false); 355 ServerWillReply(-1, false, false);
315 client_->Start(); 356 client_->Start();
316 EXPECT_EQ(AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, state_); 357 EXPECT_EQ(AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, state_);
317 EXPECT_TRUE(auto_enrollment_request().has_remainder()); 358 EXPECT_TRUE(auto_enrollment_request().has_remainder());
318 EXPECT_TRUE(auto_enrollment_request().has_modulus()); 359 EXPECT_TRUE(auto_enrollment_request().has_modulus());
319 EXPECT_EQ(GG_INT64_C(1) << i, auto_enrollment_request().modulus()); 360 EXPECT_EQ(GG_INT64_C(1) << i, auto_enrollment_request().modulus());
320 EXPECT_EQ(bottom62 % (GG_INT64_C(1) << i), 361 EXPECT_EQ(bottom62 % (GG_INT64_C(1) << i),
321 auto_enrollment_request().remainder()); 362 auto_enrollment_request().remainder());
322 VerifyCachedResult(false, i); 363 VerifyCachedResult(false, i);
364 EXPECT_FALSE(HasServerBackedState());
323 } 365 }
324 } 366 }
325 367
326 TEST_F(AutoEnrollmentClientTest, MoreThan32BitsUploaded) { 368 TEST_F(AutoEnrollmentClientTest, MoreThan32BitsUploaded) {
327 CreateClient(kStateKey, true, 10, 37); 369 CreateClient(kStateKey, true, 10, 37);
328 InSequence sequence; 370 InSequence sequence;
329 ServerWillReply(GG_INT64_C(1) << 37, false, false); 371 ServerWillReply(GG_INT64_C(1) << 37, false, false);
330 ServerWillReply(-1, true, true); 372 ServerWillReply(-1, true, true);
331 ServerWillSendState( 373 ServerWillSendState(
332 "example.com", 374 "example.com",
333 em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED); 375 em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED);
334 client_->Start(); 376 client_->Start();
335 EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); 377 EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_);
336 VerifyCachedResult(true, 37); 378 VerifyCachedResult(true, 37);
379 VerifyServerBackedState("example.com",
380 kDeviceStateRestoreModeReEnrollmentEnforced);
337 } 381 }
338 382
339 TEST_F(AutoEnrollmentClientTest, ReuseCachedDecision) { 383 TEST_F(AutoEnrollmentClientTest, ReuseCachedDecision) {
340 EXPECT_CALL(*service_, CreateJob(_, _)).Times(0); 384 EXPECT_CALL(*service_, CreateJob(_, _)).Times(0);
341 local_state_->SetUserPref(prefs::kShouldAutoEnroll, 385 local_state_->SetUserPref(prefs::kShouldAutoEnroll,
342 new base::FundamentalValue(true)); 386 new base::FundamentalValue(true));
343 local_state_->SetUserPref(prefs::kAutoEnrollmentPowerLimit, 387 local_state_->SetUserPref(prefs::kAutoEnrollmentPowerLimit,
344 new base::FundamentalValue(8)); 388 new base::FundamentalValue(8));
345 ServerWillSendState( 389 ServerWillSendState(
346 "example.com", 390 "example.com",
347 em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED); 391 em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED);
348 client_->Start(); 392 client_->Start();
349 EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); 393 EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_);
394 VerifyServerBackedState("example.com",
395 kDeviceStateRestoreModeReEnrollmentEnforced);
350 AutoEnrollmentClient::CancelAutoEnrollment(); 396 AutoEnrollmentClient::CancelAutoEnrollment();
351 client_->Start(); 397 client_->Start();
352 EXPECT_EQ(AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, state_); 398 EXPECT_EQ(AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, state_);
399 EXPECT_FALSE(HasServerBackedState());
353 } 400 }
354 401
355 TEST_F(AutoEnrollmentClientTest, RetryIfPowerLargerThanCached) { 402 TEST_F(AutoEnrollmentClientTest, RetryIfPowerLargerThanCached) {
356 local_state_->SetUserPref(prefs::kShouldAutoEnroll, 403 local_state_->SetUserPref(prefs::kShouldAutoEnroll,
357 new base::FundamentalValue(false)); 404 new base::FundamentalValue(false));
358 local_state_->SetUserPref(prefs::kAutoEnrollmentPowerLimit, 405 local_state_->SetUserPref(prefs::kAutoEnrollmentPowerLimit,
359 new base::FundamentalValue(8)); 406 new base::FundamentalValue(8));
360 CreateClient(kStateKey, true, 5, 10); 407 CreateClient(kStateKey, true, 5, 10);
361 ServerWillReply(-1, true, true); 408 ServerWillReply(-1, true, true);
362 ServerWillSendState( 409 ServerWillSendState(
363 "example.com", 410 "example.com",
364 em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED); 411 em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED);
365 client_->Start(); 412 client_->Start();
366 EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); 413 EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_);
414 VerifyServerBackedState("example.com",
415 kDeviceStateRestoreModeReEnrollmentEnforced);
367 } 416 }
368 417
369 TEST_F(AutoEnrollmentClientTest, NetworkChangeRetryAfterErrors) { 418 TEST_F(AutoEnrollmentClientTest, NetworkChangeRetryAfterErrors) {
370 ServerWillFail(DM_STATUS_TEMPORARY_UNAVAILABLE); 419 ServerWillFail(DM_STATUS_TEMPORARY_UNAVAILABLE);
371 client_->Start(); 420 client_->Start();
372 // Don't invoke the callback if there was a network failure. 421 // Don't invoke the callback if there was a network failure.
373 EXPECT_EQ(AUTO_ENROLLMENT_STATE_SERVER_ERROR, state_); 422 EXPECT_EQ(AUTO_ENROLLMENT_STATE_SERVER_ERROR, state_);
374 EXPECT_FALSE(HasCachedDecision()); 423 EXPECT_FALSE(HasCachedDecision());
424 EXPECT_FALSE(HasServerBackedState());
375 425
376 // The client doesn't retry if no new connection became available. 426 // The client doesn't retry if no new connection became available.
377 client_->OnNetworkChanged(net::NetworkChangeNotifier::CONNECTION_NONE); 427 client_->OnNetworkChanged(net::NetworkChangeNotifier::CONNECTION_NONE);
378 EXPECT_EQ(AUTO_ENROLLMENT_STATE_SERVER_ERROR, state_); 428 EXPECT_EQ(AUTO_ENROLLMENT_STATE_SERVER_ERROR, state_);
379 EXPECT_FALSE(HasCachedDecision()); 429 EXPECT_FALSE(HasCachedDecision());
430 EXPECT_FALSE(HasServerBackedState());
380 431
381 // Retry once the network is back. 432 // Retry once the network is back.
382 ServerWillReply(-1, true, true); 433 ServerWillReply(-1, true, true);
383 ServerWillSendState( 434 ServerWillSendState(
384 "example.com", 435 "example.com",
385 em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED); 436 em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED);
386 client_->OnNetworkChanged(net::NetworkChangeNotifier::CONNECTION_ETHERNET); 437 client_->OnNetworkChanged(net::NetworkChangeNotifier::CONNECTION_ETHERNET);
387 EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); 438 EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_);
388 EXPECT_TRUE(HasCachedDecision()); 439 EXPECT_TRUE(HasCachedDecision());
440 VerifyServerBackedState("example.com",
441 kDeviceStateRestoreModeReEnrollmentEnforced);
389 442
390 // Subsequent network changes don't trigger retries. 443 // Subsequent network changes don't trigger retries.
391 client_->OnNetworkChanged(net::NetworkChangeNotifier::CONNECTION_NONE); 444 client_->OnNetworkChanged(net::NetworkChangeNotifier::CONNECTION_NONE);
392 client_->OnNetworkChanged(net::NetworkChangeNotifier::CONNECTION_ETHERNET); 445 client_->OnNetworkChanged(net::NetworkChangeNotifier::CONNECTION_ETHERNET);
393 EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); 446 EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_);
394 EXPECT_TRUE(HasCachedDecision()); 447 EXPECT_TRUE(HasCachedDecision());
448 VerifyServerBackedState("example.com",
449 kDeviceStateRestoreModeReEnrollmentEnforced);
395 } 450 }
396 451
397 TEST_F(AutoEnrollmentClientTest, CancelAndDeleteSoonWithPendingRequest) { 452 TEST_F(AutoEnrollmentClientTest, CancelAndDeleteSoonWithPendingRequest) {
398 MockDeviceManagementJob* job = NULL; 453 MockDeviceManagementJob* job = NULL;
399 ServerWillReplyAsync(&job); 454 ServerWillReplyAsync(&job);
400 EXPECT_FALSE(job); 455 EXPECT_FALSE(job);
401 client_->Start(); 456 client_->Start();
402 ASSERT_TRUE(job); 457 ASSERT_TRUE(job);
403 EXPECT_EQ(AUTO_ENROLLMENT_STATE_PENDING, state_); 458 EXPECT_EQ(AUTO_ENROLLMENT_STATE_PENDING, state_);
404 459
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 EXPECT_EQ(AUTO_ENROLLMENT_STATE_PENDING, state_); 500 EXPECT_EQ(AUTO_ENROLLMENT_STATE_PENDING, state_);
446 } 501 }
447 502
448 TEST_F(AutoEnrollmentClientTest, CancelAndDeleteSoonAfterCompletion) { 503 TEST_F(AutoEnrollmentClientTest, CancelAndDeleteSoonAfterCompletion) {
449 ServerWillReply(-1, true, true); 504 ServerWillReply(-1, true, true);
450 ServerWillSendState( 505 ServerWillSendState(
451 "example.com", 506 "example.com",
452 em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED); 507 em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED);
453 client_->Start(); 508 client_->Start();
454 EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); 509 EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_);
510 EXPECT_TRUE(HasCachedDecision());
Joao da Silva 2014/10/22 18:22:38 Isn't this redundant given the VerifyServerBackedS
bartfab (slow) 2014/10/23 08:57:38 Eh, copypasta. Removed.
511 VerifyServerBackedState("example.com",
512 kDeviceStateRestoreModeReEnrollmentEnforced);
455 513
456 // The client will delete itself immediately if there are no pending 514 // The client will delete itself immediately if there are no pending
457 // requests. 515 // requests.
458 EXPECT_TRUE(base::MessageLoop::current()->IsIdleForTesting()); 516 EXPECT_TRUE(base::MessageLoop::current()->IsIdleForTesting());
459 client_.release()->CancelAndDeleteSoon(); 517 client_.release()->CancelAndDeleteSoon();
460 EXPECT_TRUE(base::MessageLoop::current()->IsIdleForTesting()); 518 EXPECT_TRUE(base::MessageLoop::current()->IsIdleForTesting());
461 } 519 }
462 520
463 TEST_F(AutoEnrollmentClientTest, CancelAndDeleteSoonAfterNetworkFailure) { 521 TEST_F(AutoEnrollmentClientTest, CancelAndDeleteSoonAfterNetworkFailure) {
464 ServerWillFail(DM_STATUS_TEMPORARY_UNAVAILABLE); 522 ServerWillFail(DM_STATUS_TEMPORARY_UNAVAILABLE);
(...skipping 10 matching lines...) Expand all
475 TEST_F(AutoEnrollmentClientTest, NetworkFailureThenRequireUpdatedModulus) { 533 TEST_F(AutoEnrollmentClientTest, NetworkFailureThenRequireUpdatedModulus) {
476 // This test verifies that if the first request fails due to a network 534 // This test verifies that if the first request fails due to a network
477 // problem then the second request will correctly handle an updated 535 // problem then the second request will correctly handle an updated
478 // modulus request from the server. 536 // modulus request from the server.
479 537
480 ServerWillFail(DM_STATUS_REQUEST_FAILED); 538 ServerWillFail(DM_STATUS_REQUEST_FAILED);
481 client_->Start(); 539 client_->Start();
482 // Callback should signal the connection error. 540 // Callback should signal the connection error.
483 EXPECT_EQ(AUTO_ENROLLMENT_STATE_CONNECTION_ERROR, state_); 541 EXPECT_EQ(AUTO_ENROLLMENT_STATE_CONNECTION_ERROR, state_);
484 EXPECT_FALSE(HasCachedDecision()); 542 EXPECT_FALSE(HasCachedDecision());
543 EXPECT_FALSE(HasServerBackedState());
485 Mock::VerifyAndClearExpectations(service_.get()); 544 Mock::VerifyAndClearExpectations(service_.get());
486 545
487 InSequence sequence; 546 InSequence sequence;
488 // The default client uploads 4 bits. Make the server ask for 5. 547 // The default client uploads 4 bits. Make the server ask for 5.
489 ServerWillReply(1 << 5, false, false); 548 ServerWillReply(1 << 5, false, false);
490 EXPECT_CALL(*service_, StartJob(_, _, _, _, _, _, _)); 549 EXPECT_CALL(*service_, StartJob(_, _, _, _, _, _, _));
491 // Then reply with a valid response and include the hash. 550 // Then reply with a valid response and include the hash.
492 ServerWillReply(-1, true, true); 551 ServerWillReply(-1, true, true);
493 EXPECT_CALL(*service_, StartJob(_, _, _, _, _, _, _)); 552 EXPECT_CALL(*service_, StartJob(_, _, _, _, _, _, _));
494 // State download triggers. 553 // State download triggers.
495 ServerWillSendState( 554 ServerWillSendState(
496 "example.com", 555 "example.com",
497 em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED); 556 em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED);
498 EXPECT_CALL(*service_, StartJob(_, _, _, _, _, _, _)); 557 EXPECT_CALL(*service_, StartJob(_, _, _, _, _, _, _));
499 558
500 // Trigger a network change event. 559 // Trigger a network change event.
501 client_->OnNetworkChanged(net::NetworkChangeNotifier::CONNECTION_ETHERNET); 560 client_->OnNetworkChanged(net::NetworkChangeNotifier::CONNECTION_ETHERNET);
502 EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); 561 EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_);
503 EXPECT_TRUE(HasCachedDecision()); 562 EXPECT_TRUE(HasCachedDecision());
563 VerifyServerBackedState("example.com",
564 kDeviceStateRestoreModeReEnrollmentEnforced);
504 Mock::VerifyAndClearExpectations(service_.get()); 565 Mock::VerifyAndClearExpectations(service_.get());
505 } 566 }
506 567
507 TEST_F(AutoEnrollmentClientTest, NoDeviceStateRetrieval) { 568 TEST_F(AutoEnrollmentClientTest, NoDeviceStateRetrieval) {
508 CreateClient(kStateKey, false, 4, 8); 569 CreateClient(kStateKey, false, 4, 8);
509 ServerWillReply(-1, true, true); 570 ServerWillReply(-1, true, true);
510 EXPECT_CALL(*service_, 571 EXPECT_CALL(*service_,
511 CreateJob(DeviceManagementRequestJob::TYPE_DEVICE_STATE_RETRIEVAL, 572 CreateJob(DeviceManagementRequestJob::TYPE_DEVICE_STATE_RETRIEVAL,
512 _)).Times(0); 573 _)).Times(0);
513 client_->Start(); 574 client_->Start();
514 EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); 575 EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_);
515 VerifyCachedResult(true, 8); 576 VerifyCachedResult(true, 8);
577 EXPECT_FALSE(HasServerBackedState());
516 } 578 }
517 579
518 } // namespace 580 } // namespace
519 } // namespace policy 581 } // namespace policy
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698