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 <vector> | 5 #include <vector> |
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/callback.h" | 9 #include "base/callback.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
156 .Times(AnyNumber()) | 156 .Times(AnyNumber()) |
157 .WillRepeatedly(Return(false)); | 157 .WillRepeatedly(Return(false)); |
158 EXPECT_CALL(*mock_user_manager_, IsSessionStarted()) | 158 EXPECT_CALL(*mock_user_manager_, IsSessionStarted()) |
159 .Times(AnyNumber()) | 159 .Times(AnyNumber()) |
160 .WillRepeatedly(Return(false)); | 160 .WillRepeatedly(Return(false)); |
161 EXPECT_CALL(*mock_user_manager_, IsCurrentUserNew()) | 161 EXPECT_CALL(*mock_user_manager_, IsCurrentUserNew()) |
162 .Times(AnyNumber()) | 162 .Times(AnyNumber()) |
163 .WillRepeatedly(Return(false)); | 163 .WillRepeatedly(Return(false)); |
164 EXPECT_CALL(*mock_user_manager_, Shutdown()) | 164 EXPECT_CALL(*mock_user_manager_, Shutdown()) |
165 .Times(1); | 165 .Times(1); |
| 166 EXPECT_CALL(*mock_user_manager_, FindUser(_)) |
| 167 .Times(AnyNumber()) |
| 168 .WillRepeatedly(ReturnNull()); |
166 } | 169 } |
167 | 170 |
168 virtual void SetUpOnMainThread() override { | 171 virtual void SetUpOnMainThread() override { |
169 testing_profile_.reset(new TestingProfile()); | 172 testing_profile_.reset(new TestingProfile()); |
170 SetUpUserManager(); | 173 SetUpUserManager(); |
171 existing_user_controller_.reset( | 174 existing_user_controller_.reset( |
172 new ExistingUserController(mock_login_display_host_.get())); | 175 new ExistingUserController(mock_login_display_host_.get())); |
173 ASSERT_EQ(existing_user_controller(), existing_user_controller_.get()); | 176 ASSERT_EQ(existing_user_controller(), existing_user_controller_.get()); |
174 existing_user_controller_->Init(user_manager::UserList()); | 177 existing_user_controller_->Init(user_manager::UserList()); |
175 profile_prepared_cb_ = | 178 profile_prepared_cb_ = |
176 base::Bind(&ExistingUserController::OnProfilePrepared, | 179 base::Bind(&ExistingUserController::OnProfilePrepared, |
177 base::Unretained(existing_user_controller()), | 180 base::Unretained(existing_user_controller()), |
178 testing_profile_.get()); | 181 testing_profile_.get(), |
| 182 false); |
179 } | 183 } |
180 | 184 |
181 virtual void TearDownOnMainThread() override { | 185 virtual void TearDownOnMainThread() override { |
182 // ExistingUserController must be deleted before the thread is cleaned up: | 186 // ExistingUserController must be deleted before the thread is cleaned up: |
183 // If there is an outstanding login attempt when ExistingUserController is | 187 // If there is an outstanding login attempt when ExistingUserController is |
184 // deleted, its LoginPerformer instance will be deleted, which in turn | 188 // deleted, its LoginPerformer instance will be deleted, which in turn |
185 // deletes its OnlineAttemptHost instance. However, OnlineAttemptHost must | 189 // deletes its OnlineAttemptHost instance. However, OnlineAttemptHost must |
186 // be deleted on the UI thread. | 190 // be deleted on the UI thread. |
187 existing_user_controller_.reset(); | 191 existing_user_controller_.reset(); |
188 DevicePolicyCrosBrowserTest::InProcessBrowserTest::TearDownOnMainThread(); | 192 DevicePolicyCrosBrowserTest::InProcessBrowserTest::TearDownOnMainThread(); |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
225 // Mock URLFetcher. | 229 // Mock URLFetcher. |
226 MockURLFetcherFactory<SuccessFetcher> factory_; | 230 MockURLFetcherFactory<SuccessFetcher> factory_; |
227 | 231 |
228 base::Callback<void(void)> profile_prepared_cb_; | 232 base::Callback<void(void)> profile_prepared_cb_; |
229 | 233 |
230 private: | 234 private: |
231 DISALLOW_COPY_AND_ASSIGN(ExistingUserControllerTest); | 235 DISALLOW_COPY_AND_ASSIGN(ExistingUserControllerTest); |
232 }; | 236 }; |
233 | 237 |
234 IN_PROC_BROWSER_TEST_F(ExistingUserControllerTest, ExistingUserLogin) { | 238 IN_PROC_BROWSER_TEST_F(ExistingUserControllerTest, ExistingUserLogin) { |
235 // This is disabled twice: once right after signin but before checking for | |
236 // auto-enrollment, and again after doing an ownership status check. | |
237 EXPECT_CALL(*mock_login_display_, SetUIEnabled(false)) | 239 EXPECT_CALL(*mock_login_display_, SetUIEnabled(false)) |
238 .Times(2); | 240 .Times(1); |
239 UserContext user_context(kUsername); | 241 UserContext user_context(kUsername); |
240 user_context.SetKey(Key(kPassword)); | 242 user_context.SetKey(Key(kPassword)); |
241 user_context.SetUserIDHash(kUsername); | 243 user_context.SetUserIDHash(kUsername); |
242 EXPECT_CALL(*mock_login_utils_, CreateAuthenticator(_)) | 244 EXPECT_CALL(*mock_login_utils_, CreateAuthenticator(_)) |
243 .Times(1) | 245 .Times(1) |
244 .WillOnce(WithArg<0>(CreateAuthenticator(user_context))); | 246 .WillOnce(WithArg<0>(CreateAuthenticator(user_context))); |
245 EXPECT_CALL(*mock_login_utils_, PrepareProfile(user_context, _, _, _)) | 247 EXPECT_CALL(*mock_login_utils_, PrepareProfile(user_context, _, _, _)) |
246 .Times(1) | 248 .Times(1) |
247 .WillOnce(InvokeWithoutArgs(&profile_prepared_cb_, | 249 .WillOnce(InvokeWithoutArgs(&profile_prepared_cb_, |
248 &base::Callback<void(void)>::Run)); | 250 &base::Callback<void(void)>::Run)); |
249 EXPECT_CALL(*mock_login_utils_, | |
250 DoBrowserLaunch(testing_profile_.get(), | |
251 mock_login_display_host_.get())) | |
252 .Times(1); | |
253 EXPECT_CALL(*mock_login_display_, SetUIEnabled(true)) | 251 EXPECT_CALL(*mock_login_display_, SetUIEnabled(true)) |
254 .Times(1); | 252 .Times(1); |
255 EXPECT_CALL(*mock_login_display_host_, | 253 EXPECT_CALL(*mock_login_display_host_, |
256 StartWizardPtr(WizardController::kTermsOfServiceScreenName, NULL)) | 254 StartWizardPtr(WizardController::kTermsOfServiceScreenName, NULL)) |
257 .Times(0); | 255 .Times(0); |
258 EXPECT_CALL(*mock_user_manager_, IsCurrentUserNew()) | 256 EXPECT_CALL(*mock_user_manager_, IsCurrentUserNew()) |
259 .Times(AnyNumber()) | 257 .Times(AnyNumber()) |
260 .WillRepeatedly(Return(false)); | 258 .WillRepeatedly(Return(false)); |
261 existing_user_controller()->Login(user_context, SigninSpecifics()); | 259 existing_user_controller()->Login(user_context, SigninSpecifics()); |
262 content::RunAllPendingInMessageLoop(); | 260 content::RunAllPendingInMessageLoop(); |
(...skipping 24 matching lines...) Expand all Loading... |
287 existing_user_controller()->CompleteLogin(user_context); | 285 existing_user_controller()->CompleteLogin(user_context); |
288 content::RunAllPendingInMessageLoop(); | 286 content::RunAllPendingInMessageLoop(); |
289 } | 287 } |
290 | 288 |
291 IN_PROC_BROWSER_TEST_F(ExistingUserControllerTest, | 289 IN_PROC_BROWSER_TEST_F(ExistingUserControllerTest, |
292 NewUserDontAutoEnrollAfterSignIn) { | 290 NewUserDontAutoEnrollAfterSignIn) { |
293 EXPECT_CALL(*mock_login_display_host_, | 291 EXPECT_CALL(*mock_login_display_host_, |
294 StartWizardPtr(WizardController::kEnrollmentScreenName, | 292 StartWizardPtr(WizardController::kEnrollmentScreenName, |
295 _)) | 293 _)) |
296 .Times(0); | 294 .Times(0); |
297 EXPECT_CALL(*mock_login_display_host_, | |
298 StartWizardPtr(WizardController::kTermsOfServiceScreenName, | |
299 NULL)) | |
300 .Times(1); | |
301 UserContext user_context(kNewUsername); | 295 UserContext user_context(kNewUsername); |
302 user_context.SetKey(Key(kPassword)); | 296 user_context.SetKey(Key(kPassword)); |
303 user_context.SetUserIDHash(kNewUsername); | 297 user_context.SetUserIDHash(kNewUsername); |
304 EXPECT_CALL(*mock_login_utils_, CreateAuthenticator(_)) | 298 EXPECT_CALL(*mock_login_utils_, CreateAuthenticator(_)) |
305 .Times(1) | 299 .Times(1) |
306 .WillOnce(WithArg<0>(CreateAuthenticator(user_context))); | 300 .WillOnce(WithArg<0>(CreateAuthenticator(user_context))); |
307 base::Callback<void(void)> add_user_cb = | 301 base::Callback<void(void)> add_user_cb = |
308 base::Bind(&MockUserManager::AddUser, | 302 base::Bind(&MockUserManager::AddUser, |
309 base::Unretained(mock_user_manager_), | 303 base::Unretained(mock_user_manager_), |
310 kNewUsername); | 304 kNewUsername); |
311 EXPECT_CALL(*mock_login_utils_, PrepareProfile(user_context, _, _, _)) | 305 EXPECT_CALL(*mock_login_utils_, PrepareProfile(user_context, _, _, _)) |
312 .Times(1) | 306 .Times(1) |
313 .WillOnce(DoAll( | 307 .WillOnce(DoAll( |
314 InvokeWithoutArgs(&add_user_cb, | 308 InvokeWithoutArgs(&add_user_cb, |
315 &base::Callback<void(void)>::Run), | 309 &base::Callback<void(void)>::Run), |
316 InvokeWithoutArgs(&profile_prepared_cb_, | 310 InvokeWithoutArgs(&profile_prepared_cb_, |
317 &base::Callback<void(void)>::Run))); | 311 &base::Callback<void(void)>::Run))); |
318 EXPECT_CALL(*mock_login_display_host_.get(), OnCompleteLogin()) | 312 EXPECT_CALL(*mock_login_display_host_.get(), OnCompleteLogin()) |
319 .Times(1); | 313 .Times(1); |
320 EXPECT_CALL(*mock_user_manager_, IsCurrentUserNew()) | 314 EXPECT_CALL(*mock_user_manager_, IsCurrentUserNew()) |
321 .Times(AnyNumber()) | 315 .Times(AnyNumber()) |
322 .WillRepeatedly(Return(true)); | 316 .WillRepeatedly(Return(true)); |
323 | 317 |
324 // The order of these expected calls matters: the UI if first disabled | 318 // The order of these expected calls matters: the UI if first disabled |
325 // during the login sequence, and is enabled again after login completion. | 319 // during the login sequence, and is enabled again after login completion. |
326 Sequence uiEnabledSequence; | 320 Sequence uiEnabledSequence; |
327 // This is disabled twice: once right after signin but before checking for | 321 // This is disabled twice: once right after signin but before checking for |
328 // auto-enrollment, and again after doing an ownership status check. | 322 // auto-enrollment, and again after doing an ownership status check. |
329 EXPECT_CALL(*mock_login_display_, SetUIEnabled(false)) | 323 EXPECT_CALL(*mock_login_display_, SetUIEnabled(false)) |
330 .Times(2) | 324 .Times(1) |
331 .InSequence(uiEnabledSequence); | 325 .InSequence(uiEnabledSequence); |
332 EXPECT_CALL(*mock_login_display_, SetUIEnabled(true)) | 326 EXPECT_CALL(*mock_login_display_, SetUIEnabled(true)) |
333 .Times(1) | 327 .Times(1) |
334 .InSequence(uiEnabledSequence); | 328 .InSequence(uiEnabledSequence); |
335 | 329 |
336 existing_user_controller()->CompleteLogin(user_context); | 330 existing_user_controller()->CompleteLogin(user_context); |
337 content::RunAllPendingInMessageLoop(); | 331 content::RunAllPendingInMessageLoop(); |
338 } | 332 } |
339 | 333 |
340 MATCHER_P(HasDetails, expected, "") { | 334 MATCHER_P(HasDetails, expected, "") { |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
430 void ExpectSuccessfulLogin(const UserContext& user_context) { | 424 void ExpectSuccessfulLogin(const UserContext& user_context) { |
431 EXPECT_CALL(*mock_login_display_, SetUIEnabled(false)) | 425 EXPECT_CALL(*mock_login_display_, SetUIEnabled(false)) |
432 .Times(AnyNumber()); | 426 .Times(AnyNumber()); |
433 EXPECT_CALL(*mock_login_utils_, CreateAuthenticator(_)) | 427 EXPECT_CALL(*mock_login_utils_, CreateAuthenticator(_)) |
434 .Times(1) | 428 .Times(1) |
435 .WillOnce(WithArg<0>(CreateAuthenticator(user_context))); | 429 .WillOnce(WithArg<0>(CreateAuthenticator(user_context))); |
436 EXPECT_CALL(*mock_login_utils_, PrepareProfile(user_context, _, _, _)) | 430 EXPECT_CALL(*mock_login_utils_, PrepareProfile(user_context, _, _, _)) |
437 .Times(1) | 431 .Times(1) |
438 .WillOnce(InvokeWithoutArgs(&profile_prepared_cb_, | 432 .WillOnce(InvokeWithoutArgs(&profile_prepared_cb_, |
439 &base::Callback<void(void)>::Run)); | 433 &base::Callback<void(void)>::Run)); |
440 EXPECT_CALL(*mock_login_utils_, | |
441 DoBrowserLaunch(testing_profile_.get(), | |
442 mock_login_display_host_.get())) | |
443 .Times(1); | |
444 EXPECT_CALL(*mock_login_display_, SetUIEnabled(true)) | 434 EXPECT_CALL(*mock_login_display_, SetUIEnabled(true)) |
445 .Times(1); | 435 .Times(1); |
446 EXPECT_CALL(*mock_login_display_host_, | 436 EXPECT_CALL(*mock_login_display_host_, |
447 StartWizardPtr(WizardController::kTermsOfServiceScreenName, | 437 StartWizardPtr(WizardController::kTermsOfServiceScreenName, |
448 NULL)) | 438 NULL)) |
449 .Times(0); | 439 .Times(0); |
450 } | 440 } |
451 | 441 |
452 void SetAutoLoginPolicy(const std::string& username, int delay) { | 442 void SetAutoLoginPolicy(const std::string& username, int delay) { |
453 // Wait until ExistingUserController has finished auto-login | 443 // Wait until ExistingUserController has finished auto-login |
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
681 // First run propagates public accounts and stores them in Local State. | 671 // First run propagates public accounts and stores them in Local State. |
682 } | 672 } |
683 | 673 |
684 // See http://crbug.com/393704; flaky. | 674 // See http://crbug.com/393704; flaky. |
685 IN_PROC_BROWSER_TEST_F(ExistingUserControllerPublicSessionTest, | 675 IN_PROC_BROWSER_TEST_F(ExistingUserControllerPublicSessionTest, |
686 DISABLED_TestLoadingPublicUsersFromLocalState) { | 676 DISABLED_TestLoadingPublicUsersFromLocalState) { |
687 // Second run loads list of public accounts from Local State. | 677 // Second run loads list of public accounts from Local State. |
688 } | 678 } |
689 | 679 |
690 } // namespace chromeos | 680 } // namespace chromeos |
OLD | NEW |