Index: chrome/browser/chromeos/login/existing_user_controller_browsertest.cc |
diff --git a/chrome/browser/chromeos/login/existing_user_controller_browsertest.cc b/chrome/browser/chromeos/login/existing_user_controller_browsertest.cc |
index 3ea594b057ee2c30140cd5a45e63d916b2c07e71..1dd4d53067e34a8b1171f4898cbb3c7100f7b517 100644 |
--- a/chrome/browser/chromeos/login/existing_user_controller_browsertest.cc |
+++ b/chrome/browser/chromeos/login/existing_user_controller_browsertest.cc |
@@ -78,6 +78,7 @@ const char kGaiaID[] = "12345"; |
const char kUsername[] = "test_user@gmail.com"; |
const char kSupervisedUserID[] = "supervised_user@locally-managed.localhost"; |
const char kPassword[] = "test_password"; |
+const char kActiveDirectoryRealm[] = "active.directory.realm"; |
const char kPublicSessionUserEmail[] = "public_session_user@localhost"; |
const int kAutoLoginNoDelay = 0; |
@@ -230,23 +231,25 @@ class ExistingUserControllerTest : public policy::DevicePolicyCrosBrowserTest { |
// Mock URLFetcher. |
MockURLFetcherFactory<SuccessFetcher> factory_; |
- const AccountId account_id_ = |
+ const AccountId gaia_account_id_ = |
AccountId::FromUserEmailGaiaId(kUsername, kGaiaID); |
+ const AccountId ad_account_id_ = |
+ AccountId::AdFromUserEmailObjGuid(kUsername, kGaiaID); |
private: |
DISALLOW_COPY_AND_ASSIGN(ExistingUserControllerTest); |
}; |
IN_PROC_BROWSER_TEST_F(ExistingUserControllerTest, PRE_ExistingUserLogin) { |
- RegisterUser(account_id_.GetUserEmail()); |
+ RegisterUser(gaia_account_id_.GetUserEmail()); |
} |
IN_PROC_BROWSER_TEST_F(ExistingUserControllerTest, DISABLED_ExistingUserLogin) { |
EXPECT_CALL(*mock_login_display_, SetUIEnabled(false)) |
.Times(2); |
- UserContext user_context(account_id_); |
+ UserContext user_context(gaia_account_id_); |
user_context.SetKey(Key(kPassword)); |
- user_context.SetUserIDHash(account_id_.GetUserEmail()); |
+ user_context.SetUserIDHash(gaia_account_id_.GetUserEmail()); |
test::UserSessionManagerTestApi session_manager_test_api( |
UserSessionManager::GetInstance()); |
session_manager_test_api.InjectStubUserContext(user_context); |
@@ -297,9 +300,9 @@ void ExistingUserControllerUntrustedTest::SetUpSessionManager() { |
IN_PROC_BROWSER_TEST_F(ExistingUserControllerUntrustedTest, |
ExistingUserLoginForbidden) { |
- UserContext user_context(account_id_); |
+ UserContext user_context(gaia_account_id_); |
user_context.SetKey(Key(kPassword)); |
- user_context.SetUserIDHash(account_id_.GetUserEmail()); |
+ user_context.SetUserIDHash(gaia_account_id_.GetUserEmail()); |
existing_user_controller()->Login(user_context, SigninSpecifics()); |
} |
@@ -311,9 +314,9 @@ IN_PROC_BROWSER_TEST_F(ExistingUserControllerUntrustedTest, |
#endif |
IN_PROC_BROWSER_TEST_F(ExistingUserControllerUntrustedTest, |
MAYBE_NewUserLoginForbidden) { |
- UserContext user_context(account_id_); |
+ UserContext user_context(gaia_account_id_); |
user_context.SetKey(Key(kPassword)); |
- user_context.SetUserIDHash(account_id_.GetUserEmail()); |
+ user_context.SetUserIDHash(gaia_account_id_.GetUserEmail()); |
existing_user_controller()->CompleteLogin(user_context); |
} |
@@ -328,7 +331,7 @@ IN_PROC_BROWSER_TEST_F(ExistingUserControllerUntrustedTest, |
SupervisedUserLoginForbidden) { |
UserContext user_context(AccountId::FromUserEmail(kSupervisedUserID)); |
user_context.SetKey(Key(kPassword)); |
- user_context.SetUserIDHash(account_id_.GetUserEmail()); |
+ user_context.SetUserIDHash(gaia_account_id_.GetUserEmail()); |
existing_user_controller()->Login(user_context, SigninSpecifics()); |
} |
@@ -339,7 +342,8 @@ IN_PROC_BROWSER_TEST_F(ExistingUserControllerUntrustedTest, |
SupervisedUserCreationScreen supervised_user_creation_screen( |
&mock_base_screen_delegate, &supervised_user_creation_screen_handler); |
- supervised_user_creation_screen.AuthenticateManager(account_id_, kPassword); |
+ supervised_user_creation_screen.AuthenticateManager(gaia_account_id_, |
+ kPassword); |
} |
MATCHER_P(HasDetails, expected, "") { |
@@ -597,7 +601,7 @@ IN_PROC_BROWSER_TEST_F(ExistingUserControllerPublicSessionTest, |
IN_PROC_BROWSER_TEST_F(ExistingUserControllerPublicSessionTest, |
DISABLED_LoginStopsAutoLogin) { |
// Set up mocks to check login success. |
- UserContext user_context(account_id_); |
+ UserContext user_context(gaia_account_id_); |
user_context.SetKey(Key(kPassword)); |
user_context.SetUserIDHash(user_context.GetAccountId().GetUserEmail()); |
ExpectSuccessfulLogin(user_context); |
@@ -632,7 +636,7 @@ IN_PROC_BROWSER_TEST_F(ExistingUserControllerPublicSessionTest, |
GuestModeLoginStopsAutoLogin) { |
EXPECT_CALL(*mock_login_display_, SetUIEnabled(false)) |
.Times(2); |
- UserContext user_context(account_id_); |
+ UserContext user_context(gaia_account_id_); |
user_context.SetKey(Key(kPassword)); |
test::UserSessionManagerTestApi session_manager_test_api( |
UserSessionManager::GetInstance()); |
@@ -661,7 +665,7 @@ IN_PROC_BROWSER_TEST_F(ExistingUserControllerPublicSessionTest, |
IN_PROC_BROWSER_TEST_F(ExistingUserControllerPublicSessionTest, |
CompleteLoginStopsAutoLogin) { |
// Set up mocks to check login success. |
- UserContext user_context(account_id_); |
+ UserContext user_context(gaia_account_id_); |
user_context.SetKey(Key(kPassword)); |
user_context.SetUserIDHash(user_context.GetAccountId().GetUserEmail()); |
ExpectSuccessfulLogin(user_context); |
@@ -733,7 +737,7 @@ IN_PROC_BROWSER_TEST_F(ExistingUserControllerPublicSessionTest, |
// Check that the attempt to start a public session fails with an error. |
ExpectLoginFailure(); |
- UserContext user_context(account_id_); |
+ UserContext user_context(gaia_account_id_); |
user_context.SetKey(Key(kPassword)); |
user_context.SetUserIDHash(user_context.GetAccountId().GetUserEmail()); |
existing_user_controller()->Login(user_context, SigninSpecifics()); |
@@ -764,4 +768,81 @@ IN_PROC_BROWSER_TEST_F(ExistingUserControllerPublicSessionTest, |
// Second run loads list of public accounts from Local State. |
} |
+class ExistingUserControllerActiveDirectoryTest |
+ : public ExistingUserControllerTest { |
+ public: |
+ ExistingUserControllerActiveDirectoryTest() = default; |
+ |
+ // Overriden from DevicePolicyCrosBrowserTest: |
+ void MarkOwnership() override { |
+ policy::DevicePolicyCrosTestHelper::MarkAsActiveDirectoryEnterpriseOwned( |
+ kActiveDirectoryRealm); |
+ } |
+ |
+ // Overriden from ExistingUserControllerTest: |
+ void SetUpInProcessBrowserTestFixture() override { |
+ RefreshDevicePolicy(); |
+ ExistingUserControllerTest::SetUpInProcessBrowserTestFixture(); |
+ } |
+ |
+ protected: |
+ void ExpectLoginFailure() { |
+ EXPECT_CALL(*mock_login_display_, SetUIEnabled(false)).Times(2); |
+ EXPECT_CALL(*mock_login_display_, |
+ ShowError(IDS_LOGIN_ERROR_GOOGLE_ACCOUNT_NOT_ALLOWED, 1, |
+ HelpAppLauncher::HELP_CANT_ACCESS_ACCOUNT)) |
+ .Times(1); |
+ EXPECT_CALL(*mock_login_display_, SetUIEnabled(true)).Times(1); |
+ } |
+ void ExpectLoginSuccess() { |
+ EXPECT_CALL(*mock_login_display_, SetUIEnabled(false)).Times(2); |
+ EXPECT_CALL(*mock_login_display_, SetUIEnabled(true)).Times(1); |
+ EXPECT_CALL(*mock_login_display_host_, OnCompleteLogin()).Times(1); |
+ } |
+}; |
+ |
+// Tests that Active Directory online login succeeds on the Active Directory |
+// managed device. |
+IN_PROC_BROWSER_TEST_F(ExistingUserControllerActiveDirectoryTest, |
+ ActiveDirectoryOnlineLogin_Success) { |
+ ExpectLoginSuccess(); |
+ UserContext user_context(ad_account_id_); |
+ user_context.SetKey(Key(kPassword)); |
+ user_context.SetUserIDHash(ad_account_id_.GetUserEmail()); |
+ user_context.SetAuthFlow(UserContext::AUTH_FLOW_ACTIVE_DIRECTORY); |
+ user_context.SetUserType(user_manager::UserType::USER_TYPE_ACTIVE_DIRECTORY); |
+ content::WindowedNotificationObserver profile_prepared_observer( |
+ chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED, |
+ content::NotificationService::AllSources()); |
+ existing_user_controller()->CompleteLogin(user_context); |
+ |
+ profile_prepared_observer.Wait(); |
+ base::ThreadTaskRunnerHandle::Get()->PostTask( |
+ FROM_HERE, base::Bind(&ClearNotifications)); |
+ content::RunAllPendingInMessageLoop(); |
+} |
+ |
+// Tests that Active Directory offline login fails on the Active Directory |
+// managed device. |
+IN_PROC_BROWSER_TEST_F(ExistingUserControllerActiveDirectoryTest, |
+ ActiveDirectoryOfflineLogin_Failure) { |
+ ExpectLoginFailure(); |
+ UserContext user_context(ad_account_id_); |
+ user_context.SetKey(Key(kPassword)); |
+ user_context.SetUserIDHash(ad_account_id_.GetUserEmail()); |
+ user_context.SetUserType(user_manager::UserType::USER_TYPE_ACTIVE_DIRECTORY); |
+ existing_user_controller()->Login(user_context, SigninSpecifics()); |
+} |
+ |
+// Tests that Gaia login fails on the Active Directory managed device. |
+IN_PROC_BROWSER_TEST_F(ExistingUserControllerActiveDirectoryTest, |
+ GAIAAccountLogin_Failure) { |
+ ExpectLoginFailure(); |
+ EXPECT_CALL(*mock_login_display_host_, OnCompleteLogin()).Times(1); |
+ UserContext user_context(gaia_account_id_); |
+ user_context.SetKey(Key(kPassword)); |
+ user_context.SetUserIDHash(gaia_account_id_.GetUserEmail()); |
+ existing_user_controller()->CompleteLogin(user_context); |
+} |
+ |
} // namespace chromeos |