| 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 "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/command_line.h" |
| 6 #include "base/compiler_specific.h" | 7 #include "base/compiler_specific.h" |
| 7 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
| 8 #include "chrome/browser/chromeos/cros/cros_in_process_browser_test.h" | 9 #include "chrome/browser/chromeos/cros/cros_in_process_browser_test.h" |
| 9 #include "chrome/browser/chromeos/cros/cros_mock.h" | 10 #include "chrome/browser/chromeos/cros/cros_mock.h" |
| 10 #include "chrome/browser/chromeos/cros/mock_cryptohome_library.h" | 11 #include "chrome/browser/chromeos/cros/mock_cryptohome_library.h" |
| 11 #include "chrome/browser/chromeos/cros/mock_network_library.h" | 12 #include "chrome/browser/chromeos/cros/mock_network_library.h" |
| 12 #include "chrome/browser/chromeos/login/existing_user_controller.h" | 13 #include "chrome/browser/chromeos/login/existing_user_controller.h" |
| 13 #include "chrome/browser/chromeos/login/helper.h" | 14 #include "chrome/browser/chromeos/login/helper.h" |
| 14 #include "chrome/browser/chromeos/login/login_display.h" | 15 #include "chrome/browser/chromeos/login/login_display.h" |
| 15 #include "chrome/browser/chromeos/login/login_display_host.h" | 16 #include "chrome/browser/chromeos/login/login_display_host.h" |
| 16 #include "chrome/browser/chromeos/login/login_performer.h" | 17 #include "chrome/browser/chromeos/login/login_performer.h" |
| 17 #include "chrome/browser/chromeos/login/login_status_consumer.h" | 18 #include "chrome/browser/chromeos/login/login_status_consumer.h" |
| 18 #include "chrome/browser/chromeos/login/login_utils.h" | 19 #include "chrome/browser/chromeos/login/login_utils.h" |
| 19 #include "chrome/browser/chromeos/login/mock_authenticator.h" | 20 #include "chrome/browser/chromeos/login/mock_authenticator.h" |
| 20 #include "chrome/browser/chromeos/login/mock_login_utils.h" | 21 #include "chrome/browser/chromeos/login/mock_login_utils.h" |
| 21 #include "chrome/browser/chromeos/login/mock_url_fetchers.h" | 22 #include "chrome/browser/chromeos/login/mock_url_fetchers.h" |
| 22 #include "chrome/browser/chromeos/login/mock_user_manager.h" | 23 #include "chrome/browser/chromeos/login/mock_user_manager.h" |
| 23 #include "chrome/browser/chromeos/login/wizard_controller.h" | 24 #include "chrome/browser/chromeos/login/wizard_controller.h" |
| 25 #include "chrome/common/chrome_switches.h" |
| 24 #include "chrome/common/net/gaia/mock_url_fetcher_factory.h" | 26 #include "chrome/common/net/gaia/mock_url_fetcher_factory.h" |
| 25 #include "chrome/test/base/testing_profile.h" | 27 #include "chrome/test/base/testing_profile.h" |
| 26 #include "chrome/test/base/ui_test_utils.h" | 28 #include "chrome/test/base/ui_test_utils.h" |
| 27 #include "chromeos/dbus/mock_dbus_thread_manager.h" | 29 #include "chromeos/dbus/mock_dbus_thread_manager.h" |
| 28 #include "chromeos/dbus/mock_session_manager_client.h" | 30 #include "chromeos/dbus/mock_session_manager_client.h" |
| 29 #include "grit/generated_resources.h" | 31 #include "grit/generated_resources.h" |
| 30 #include "testing/gmock/include/gmock/gmock.h" | 32 #include "testing/gmock/include/gmock/gmock.h" |
| 31 #include "testing/gtest/include/gtest/gtest.h" | 33 #include "testing/gtest/include/gtest/gtest.h" |
| 32 #include "ui/base/l10n/l10n_util.h" | 34 #include "ui/base/l10n/l10n_util.h" |
| 33 | 35 |
| 34 namespace chromeos { | 36 namespace chromeos { |
| 35 | 37 |
| 36 using ::testing::AnyNumber; | 38 using ::testing::AnyNumber; |
| 39 using ::testing::AnyOf; |
| 37 using ::testing::InvokeWithoutArgs; | 40 using ::testing::InvokeWithoutArgs; |
| 38 using ::testing::Return; | 41 using ::testing::Return; |
| 39 using ::testing::ReturnNull; | 42 using ::testing::ReturnNull; |
| 40 using ::testing::WithArg; | 43 using ::testing::WithArg; |
| 41 using ::testing::_; | 44 using ::testing::_; |
| 42 | 45 |
| 43 const char kUsername[] = "test_user@gmail.com"; | 46 const char kUsername[] = "test_user@gmail.com"; |
| 44 const char kNewUsername[] = "test_new_user@gmail.com"; | 47 const char kNewUsername[] = "test_new_user@gmail.com"; |
| 45 const char kPassword[] = "test_password"; | 48 const char kPassword[] = "test_password"; |
| 46 | 49 |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 128 EXPECT_CALL(*mock_cryptohome_library_, IsMounted()) | 131 EXPECT_CALL(*mock_cryptohome_library_, IsMounted()) |
| 129 .Times(AnyNumber()) | 132 .Times(AnyNumber()) |
| 130 .WillRepeatedly(Return(true)); | 133 .WillRepeatedly(Return(true)); |
| 131 | 134 |
| 132 mock_login_utils_ = new MockLoginUtils(); | 135 mock_login_utils_ = new MockLoginUtils(); |
| 133 LoginUtils::Set(mock_login_utils_); | 136 LoginUtils::Set(mock_login_utils_); |
| 134 EXPECT_CALL(*mock_login_utils_, PrewarmAuthentication()) | 137 EXPECT_CALL(*mock_login_utils_, PrewarmAuthentication()) |
| 135 .Times(AnyNumber()); | 138 .Times(AnyNumber()); |
| 136 EXPECT_CALL(*mock_login_utils_, StopBackgroundFetchers()) | 139 EXPECT_CALL(*mock_login_utils_, StopBackgroundFetchers()) |
| 137 .Times(AnyNumber()); | 140 .Times(AnyNumber()); |
| 141 EXPECT_CALL(*mock_login_utils_, DelegateDeleted(_)) |
| 142 .Times(1); |
| 138 | 143 |
| 139 mock_login_display_host_.reset(new MockLoginDisplayHost()); | 144 mock_login_display_host_.reset(new MockLoginDisplayHost()); |
| 140 | 145 |
| 146 EXPECT_CALL(*mock_user_manager_.user_manager(), InitializeWallpaper()) |
| 147 .Times(1); |
| 141 EXPECT_CALL(*mock_user_manager_.user_manager(), IsKnownUser(kUsername)) | 148 EXPECT_CALL(*mock_user_manager_.user_manager(), IsKnownUser(kUsername)) |
| 142 .Times(AnyNumber()) | 149 .Times(AnyNumber()) |
| 143 .WillRepeatedly(Return(true)); | 150 .WillRepeatedly(Return(true)); |
| 144 EXPECT_CALL(*mock_user_manager_.user_manager(), IsKnownUser(kNewUsername)) | 151 EXPECT_CALL(*mock_user_manager_.user_manager(), IsKnownUser(kNewUsername)) |
| 145 .Times(AnyNumber()) | 152 .Times(AnyNumber()) |
| 146 .WillRepeatedly(Return(false)); | 153 .WillRepeatedly(Return(false)); |
| 147 EXPECT_CALL(*mock_user_manager_.user_manager(), IsUserLoggedIn()) | 154 EXPECT_CALL(*mock_user_manager_.user_manager(), IsUserLoggedIn()) |
| 148 .Times(AnyNumber()) | 155 .Times(AnyNumber()) |
| 149 .WillRepeatedly(Return(false)); | 156 .WillRepeatedly(Return(false)); |
| 150 EXPECT_CALL(*mock_user_manager_.user_manager(), IsLoggedInAsGuest()) | 157 EXPECT_CALL(*mock_user_manager_.user_manager(), IsLoggedInAsGuest()) |
| 151 .Times(AnyNumber()) | 158 .Times(AnyNumber()) |
| 152 .WillRepeatedly(Return(false)); | 159 .WillRepeatedly(Return(false)); |
| 153 EXPECT_CALL(*mock_user_manager_.user_manager(), IsLoggedInAsDemoUser()) | 160 EXPECT_CALL(*mock_user_manager_.user_manager(), IsLoggedInAsDemoUser()) |
| 154 .Times(AnyNumber()) | 161 .Times(AnyNumber()) |
| 155 .WillRepeatedly(Return(false)); | 162 .WillRepeatedly(Return(false)); |
| 156 EXPECT_CALL(*mock_user_manager_.user_manager(), IsSessionStarted()) | 163 EXPECT_CALL(*mock_user_manager_.user_manager(), IsSessionStarted()) |
| 157 .Times(AnyNumber()) | 164 .Times(AnyNumber()) |
| 158 .WillRepeatedly(Return(false)); | 165 .WillRepeatedly(Return(false)); |
| 159 | 166 |
| 160 // |mock_login_display_| is owned by the ExistingUserController, which calls | 167 // |mock_login_display_| is owned by the ExistingUserController, which calls |
| 161 // CreateLoginDisplay() on the |mock_login_display_host_| to get it. | 168 // CreateLoginDisplay() on the |mock_login_display_host_| to get it. |
| 162 mock_login_display_ = new MockLoginDisplay(); | 169 mock_login_display_ = new MockLoginDisplay(); |
| 163 EXPECT_CALL(*mock_login_display_host_.get(), CreateLoginDisplay(_)) | 170 EXPECT_CALL(*mock_login_display_host_.get(), CreateLoginDisplay(_)) |
| 164 .Times(1) | 171 .Times(1) |
| 165 .WillOnce(Return(mock_login_display_)); | 172 .WillOnce(Return(mock_login_display_)); |
| 166 EXPECT_CALL(*mock_login_display_host_.get(), GetNativeWindow()) | 173 EXPECT_CALL(*mock_login_display_host_.get(), GetNativeWindow()) |
| 167 .Times(1) | 174 .Times(1) |
| 168 .WillOnce(ReturnNull()); | 175 .WillOnce(ReturnNull()); |
| 176 EXPECT_CALL(*mock_login_display_host_.get(), OnPreferencesChanged()) |
| 177 .Times(1); |
| 169 EXPECT_CALL(*mock_login_display_, Init(_, false, true, true)) | 178 EXPECT_CALL(*mock_login_display_, Init(_, false, true, true)) |
| 170 .Times(1); | 179 .Times(1); |
| 171 } | 180 } |
| 172 | 181 |
| 182 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { |
| 183 command_line->AppendSwitch(switches::kLoginManager); |
| 184 } |
| 185 |
| 173 virtual void SetUpOnMainThread() OVERRIDE { | 186 virtual void SetUpOnMainThread() OVERRIDE { |
| 174 testing_profile_.reset(new TestingProfile()); | 187 testing_profile_.reset(new TestingProfile()); |
| 175 existing_user_controller_.reset( | 188 existing_user_controller_.reset( |
| 176 new ExistingUserController(mock_login_display_host_.get())); | 189 new ExistingUserController(mock_login_display_host_.get())); |
| 177 ASSERT_EQ(existing_user_controller(), existing_user_controller_.get()); | 190 ASSERT_EQ(existing_user_controller(), existing_user_controller_.get()); |
| 178 existing_user_controller_->Init(UserList()); | 191 existing_user_controller_->Init(UserList()); |
| 179 profile_prepared_cb_ = | 192 profile_prepared_cb_ = |
| 180 base::Bind(&ExistingUserController::OnProfilePrepared, | 193 base::Bind(&ExistingUserController::OnProfilePrepared, |
| 181 base::Unretained(existing_user_controller()), | 194 base::Unretained(existing_user_controller()), |
| 182 testing_profile_.get()); | 195 testing_profile_.get()); |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 254 DoBrowserLaunch(testing_profile_.get(), | 267 DoBrowserLaunch(testing_profile_.get(), |
| 255 mock_login_display_host_.get())) | 268 mock_login_display_host_.get())) |
| 256 .Times(1); | 269 .Times(1); |
| 257 EXPECT_CALL(*mock_login_display_, OnLoginSuccess(kUsername)) | 270 EXPECT_CALL(*mock_login_display_, OnLoginSuccess(kUsername)) |
| 258 .Times(1); | 271 .Times(1); |
| 259 EXPECT_CALL(*mock_login_display_, OnFadeOut()) | 272 EXPECT_CALL(*mock_login_display_, OnFadeOut()) |
| 260 .Times(1); | 273 .Times(1); |
| 261 EXPECT_CALL(*mock_login_display_host_, | 274 EXPECT_CALL(*mock_login_display_host_, |
| 262 StartWizard(WizardController::kUserImageScreenName, NULL)) | 275 StartWizard(WizardController::kUserImageScreenName, NULL)) |
| 263 .Times(0); | 276 .Times(0); |
| 277 EXPECT_CALL(*mock_user_manager_.user_manager(), IsCurrentUserNew()) |
| 278 .Times(AnyNumber()) |
| 279 .WillRepeatedly(Return(false)); |
| 264 existing_user_controller()->Login(kUsername, kPassword); | 280 existing_user_controller()->Login(kUsername, kPassword); |
| 265 ui_test_utils::RunAllPendingInMessageLoop(); | 281 ui_test_utils::RunAllPendingInMessageLoop(); |
| 266 } | 282 } |
| 267 | 283 |
| 268 IN_PROC_BROWSER_TEST_F(ExistingUserControllerTest, | 284 IN_PROC_BROWSER_TEST_F(ExistingUserControllerTest, |
| 269 MAYBE_AutoEnrollAfterSignIn) { | 285 MAYBE_AutoEnrollAfterSignIn) { |
| 270 EXPECT_CALL(*mock_login_display_host_, | 286 EXPECT_CALL(*mock_login_display_host_, |
| 271 StartWizard(WizardController::kEnterpriseEnrollmentScreenName, _)) | 287 StartWizard(WizardController::kEnterpriseEnrollmentScreenName, _)) |
| 272 .Times(1); | 288 .Times(1); |
| 273 EXPECT_CALL(*mock_login_display_, OnFadeOut()) | 289 EXPECT_CALL(*mock_login_display_, OnFadeOut()) |
| 274 .Times(1); | 290 .Times(1); |
| 275 EXPECT_CALL(*mock_login_display_host_.get(), OnCompleteLogin()) | 291 EXPECT_CALL(*mock_login_display_host_.get(), OnCompleteLogin()) |
| 276 .Times(1); | 292 .Times(1); |
| 293 EXPECT_CALL(*mock_user_manager_.user_manager(), IsCurrentUserNew()) |
| 294 .Times(AnyNumber()) |
| 295 .WillRepeatedly(Return(false)); |
| 277 existing_user_controller()->DoAutoEnrollment(); | 296 existing_user_controller()->DoAutoEnrollment(); |
| 278 existing_user_controller()->CompleteLogin(kUsername, kPassword); | 297 existing_user_controller()->CompleteLogin(kUsername, kPassword); |
| 279 ui_test_utils::RunAllPendingInMessageLoop(); | 298 ui_test_utils::RunAllPendingInMessageLoop(); |
| 280 } | 299 } |
| 281 | 300 |
| 282 IN_PROC_BROWSER_TEST_F(ExistingUserControllerTest, | 301 IN_PROC_BROWSER_TEST_F(ExistingUserControllerTest, |
| 283 MAYBE_NewUserDontAutoEnrollAfterSignIn) { | 302 MAYBE_NewUserDontAutoEnrollAfterSignIn) { |
| 284 EXPECT_CALL(*mock_login_display_host_, | 303 EXPECT_CALL(*mock_login_display_host_, |
| 285 StartWizard(WizardController::kEnterpriseEnrollmentScreenName, _)) | 304 StartWizard(WizardController::kEnterpriseEnrollmentScreenName, _)) |
| 286 .Times(0); | 305 .Times(0); |
| 287 // That will be sign in of a new user and (legacy) registration screen is | 306 // That will be sign in of a new user and (legacy) registration screen is |
| 288 // activated. In a real WizardController instance that is immediately switched | 307 // activated. In a real WizardController instance that is immediately switched |
| 289 // to image screen but this tests uses MockLoginDisplayHost instead. | 308 // to image screen but this tests uses MockLoginDisplayHost instead. |
| 290 EXPECT_CALL(*mock_login_display_host_, | 309 EXPECT_CALL(*mock_login_display_host_, |
| 291 StartWizard(WizardController::kRegistrationScreenName, _)) | 310 StartWizard(AnyOf(WizardController::kRegistrationScreenName, |
| 311 WizardController::kUserImageScreenName), _)) |
| 292 .Times(1); | 312 .Times(1); |
| 293 EXPECT_CALL(*mock_login_utils_, CreateAuthenticator(_)) | 313 EXPECT_CALL(*mock_login_utils_, CreateAuthenticator(_)) |
| 294 .Times(1) | 314 .Times(1) |
| 295 .WillOnce(WithArg<0>(Invoke(CreateAuthenticatorNewUser))); | 315 .WillOnce(WithArg<0>(Invoke(CreateAuthenticatorNewUser))); |
| 296 EXPECT_CALL(*mock_login_utils_, | 316 EXPECT_CALL(*mock_login_utils_, |
| 297 PrepareProfile(kNewUsername, _, kPassword, false, _, _, _)) | 317 PrepareProfile(kNewUsername, _, kPassword, false, _, _, _)) |
| 298 .Times(1) | 318 .Times(1) |
| 299 .WillOnce(InvokeWithoutArgs(&profile_prepared_cb_, | 319 .WillOnce(InvokeWithoutArgs(&profile_prepared_cb_, |
| 300 &base::Callback<void(void)>::Run)); | 320 &base::Callback<void(void)>::Run)); |
| 301 EXPECT_CALL(*mock_login_display_, OnLoginSuccess(kNewUsername)) | 321 EXPECT_CALL(*mock_login_display_, OnLoginSuccess(kNewUsername)) |
| 302 .Times(1); | 322 .Times(1); |
| 303 EXPECT_CALL(*mock_login_display_, OnFadeOut()) | 323 EXPECT_CALL(*mock_login_display_, OnFadeOut()) |
| 304 .Times(1); | 324 .Times(1); |
| 305 EXPECT_CALL(*mock_login_display_host_.get(), OnCompleteLogin()) | 325 EXPECT_CALL(*mock_login_display_host_.get(), OnCompleteLogin()) |
| 306 .Times(1); | 326 .Times(1); |
| 327 EXPECT_CALL(*mock_user_manager_.user_manager(), IsCurrentUserNew()) |
| 328 .Times(AnyNumber()) |
| 329 .WillRepeatedly(Return(true)); |
| 307 existing_user_controller()->CompleteLogin(kNewUsername, kPassword); | 330 existing_user_controller()->CompleteLogin(kNewUsername, kPassword); |
| 308 ui_test_utils::RunAllPendingInMessageLoop(); | 331 ui_test_utils::RunAllPendingInMessageLoop(); |
| 309 } | 332 } |
| 310 | 333 |
| 311 } // namespace chromeos | 334 } // namespace chromeos |
| OLD | NEW |