Chromium Code Reviews| Index: chrome/browser/chromeos/login/enterprise_enrollment_browsertest.cc |
| diff --git a/chrome/browser/chromeos/login/enterprise_enrollment_browsertest.cc b/chrome/browser/chromeos/login/enterprise_enrollment_browsertest.cc |
| index 2a75d861aff611e8ed7f695e293cbb24e5b3afb5..254723c5c712623b83caf82fc86343869dc46c07 100644 |
| --- a/chrome/browser/chromeos/login/enterprise_enrollment_browsertest.cc |
| +++ b/chrome/browser/chromeos/login/enterprise_enrollment_browsertest.cc |
| @@ -14,6 +14,8 @@ |
| #include "chrome/browser/chromeos/login/ui/login_display_host.h" |
| #include "chrome/browser/chromeos/login/wizard_controller.h" |
| #include "chrome/browser/chromeos/policy/enrollment_status_chromeos.h" |
| +#include "chromeos/dbus/dbus_thread_manager.h" |
| +#include "chromeos/dbus/upstart_client.h" |
| #include "content/public/test/test_utils.h" |
| using testing::_; |
| @@ -22,6 +24,20 @@ using testing::InvokeWithoutArgs; |
| namespace chromeos { |
| +namespace { |
| + |
| +const char ad_machine_name_input[] = |
|
achuithb
2017/02/27 16:03:47
Shouldn't this be kAdMachineNameInput? Same for re
Roman Sorokin (ftl)
2017/02/27 16:20:48
yeah, my bad.
|
| + "document.querySelector('#oauth-enroll-ad-join-ui /deep/ " |
| + "#machineNameInput')"; |
| +const char ad_username_input[] = |
| + "document.querySelector('#oauth-enroll-ad-join-ui /deep/ #userInput')"; |
| +const char ad_password_input[] = |
| + "document.querySelector('#oauth-enroll-ad-join-ui /deep/ #passwordInput')"; |
| +const char ad_test_realm[] = "ad_test_realm.com"; |
| +const char ad_test_user[] = "ad_test_user@ad_test_realm.com"; |
| + |
| +} // namespace |
| + |
| class EnterpriseEnrollmentTest : public LoginManagerTest { |
| public: |
| EnterpriseEnrollmentTest() |
| @@ -41,7 +57,7 @@ class EnterpriseEnrollmentTest : public LoginManagerTest { |
| } |
| using OnSetupEnrollmentHelper = |
| - void (*)(EnterpriseEnrollmentHelperMock* mock); |
| + std::function<void(EnterpriseEnrollmentHelperMock*)>; |
| // The given function will be executed when the next enrollment helper is |
| // created. |
| @@ -75,6 +91,28 @@ class EnterpriseEnrollmentTest : public LoginManagerTest { |
| "}));"); |
| } |
| + void SubmitActiveDirectoryCredentials(const std::string& machine_name, |
|
achuithb
2017/02/27 16:03:47
Function comment.
Roman Sorokin (ftl)
2017/02/27 16:20:49
Done.
|
| + const std::string& username, |
| + const std::string& password) { |
| + EXPECT_TRUE(IsStepDisplayed("ad-join")); |
| + js_checker().ExpectFalse(std::string(ad_machine_name_input) + ".hidden"); |
| + js_checker().ExpectFalse(std::string(ad_username_input) + ".hidden"); |
| + js_checker().ExpectFalse(std::string(ad_password_input) + ".hidden"); |
| + const std::string set_machine_name = |
| + std::string(ad_machine_name_input) + ".value = '" + machine_name + "'"; |
| + const std::string set_username = |
| + std::string(ad_username_input) + ".value = '" + username + "'"; |
| + const std::string set_password = |
| + std::string(ad_password_input) + ".value = '" + password + "'"; |
| + js_checker().ExecuteAsync(set_machine_name); |
| + js_checker().ExecuteAsync(set_username); |
| + js_checker().ExecuteAsync(set_password); |
| + js_checker().Evaluate( |
| + "document.querySelector('#oauth-enroll-ad-join-ui /deep/ " |
| + "#button').fire('tap')"); |
| + ExecutePendingJavaScript(); |
| + } |
| + |
| void DisableAttributePromptUpdate() { |
| AddEnrollmentSetupFunction( |
| [](EnterpriseEnrollmentHelperMock* enrollment_helper) { |
| @@ -103,6 +141,20 @@ class EnterpriseEnrollmentTest : public LoginManagerTest { |
| }); |
| } |
| + void SetupActiveDirectoryJoin() { |
|
achuithb
2017/02/27 16:03:47
Function comment
Roman Sorokin (ftl)
2017/02/27 16:20:49
Done.
|
| + AddEnrollmentSetupFunction([this]( |
| + EnterpriseEnrollmentHelperMock* enrollment_helper) { |
| + // Causes the attribute-prompt flow to activate. |
| + EXPECT_CALL(*enrollment_helper, EnrollUsingAuthCode("test_auth_code", _)) |
| + .WillOnce(InvokeWithoutArgs([this]() { |
| + this->enrollment_screen()->JoinDomain( |
| + base::BindOnce([](const std::string& realm) { |
| + EXPECT_EQ(ad_test_realm, realm); |
| + })); |
| + })); |
| + }); |
| + } |
| + |
| // Fills out the UI with device attribute information and submits it. |
| void SubmitAttributePromptUpdate() { |
| // Fill out the attribute prompt info and submit it. |
| @@ -229,4 +281,69 @@ IN_PROC_BROWSER_TEST_F(EnterpriseEnrollmentTest, |
| enrollment_screen()->enrollment_helper_.reset(); |
| } |
| +// Shows the enrollment screen and mocks the enrollment helper to show Active |
| +// Directory domain join screen. Verifies the domain join screen is displayed. |
| +// Submits Active Directory credentials. Verifies that the AuthpolicyClient |
| +// calls us back with the correct realm. |
| +IN_PROC_BROWSER_TEST_F(EnterpriseEnrollmentTest, |
| + TestActiveDirectoryEnrollment_Success) { |
| + ShowEnrollmentScreen(); |
| + DisableAttributePromptUpdate(); |
| + SetupActiveDirectoryJoin(); |
| + SubmitEnrollmentCredentials(); |
| + chromeos::DBusThreadManager::Get() |
| + ->GetUpstartClient() |
| + ->StartAuthPolicyService(); |
| + SubmitActiveDirectoryCredentials("machine_name", ad_test_user, "password"); |
|
achuithb
2017/02/27 16:03:47
Some more newlines in this test would help readabi
Roman Sorokin (ftl)
2017/02/27 16:20:49
Done.
|
| + EXPECT_FALSE(IsStepDisplayed("ad-join")); |
| + CompleteEnrollment(); |
| + // Verify that the success page is displayed. |
| + EXPECT_TRUE(IsStepDisplayed("success")); |
| + EXPECT_FALSE(IsStepDisplayed("error")); |
| + |
| + // We have to remove the enrollment_helper before the dtor gets called. |
| + enrollment_screen()->enrollment_helper_.reset(); |
| +} |
| + |
| +// Shows the enrollment screen and mocks the enrollment helper to show Active |
| +// Directory domain join screen. Verifies the domain join screen is displayed. |
| +// Submits Active Directory different incorrect credentials. Verifies that the |
| +// correct error is displayed. |
| +IN_PROC_BROWSER_TEST_F(EnterpriseEnrollmentTest, |
| + TestActiveDirectoryEnrollment_UIErrors) { |
| + ShowEnrollmentScreen(); |
| + SetupActiveDirectoryJoin(); |
| + SubmitEnrollmentCredentials(); |
| + chromeos::DBusThreadManager::Get() |
| + ->GetUpstartClient() |
| + ->StartAuthPolicyService(); |
| + |
| + // Checking error in case of empty password. Whether password is not empty |
| + // being checked in the UI. Machine name length is checked after that in the |
| + // authpolicyd. |
| + SubmitActiveDirectoryCredentials("too_long_machine_name", ad_test_user, ""); |
| + EXPECT_TRUE(IsStepDisplayed("ad-join")); |
| + js_checker().ExpectFalse(std::string(ad_machine_name_input) + ".isInvalid"); |
| + js_checker().ExpectFalse(std::string(ad_username_input) + ".isInvalid"); |
| + js_checker().ExpectTrue(std::string(ad_password_input) + ".isInvalid"); |
| + |
| + // Checking error in case of too long machine name. |
| + SubmitActiveDirectoryCredentials("too_long_machine_name", ad_test_user, |
| + "password"); |
| + EXPECT_TRUE(IsStepDisplayed("ad-join")); |
| + js_checker().ExpectTrue(std::string(ad_machine_name_input) + ".isInvalid"); |
| + js_checker().ExpectFalse(std::string(ad_username_input) + ".isInvalid"); |
| + js_checker().ExpectFalse(std::string(ad_password_input) + ".isInvalid"); |
| + |
| + // Checking error in case of bad username (without realm). |
| + SubmitActiveDirectoryCredentials("machine_name", "ad_test_user", "password"); |
| + EXPECT_TRUE(IsStepDisplayed("ad-join")); |
| + js_checker().ExpectFalse(std::string(ad_machine_name_input) + ".isInvalid"); |
| + js_checker().ExpectTrue(std::string(ad_username_input) + ".isInvalid"); |
| + js_checker().ExpectFalse(std::string(ad_password_input) + ".isInvalid"); |
| + |
| + // We have to remove the enrollment_helper before the dtor gets called. |
| + enrollment_screen()->enrollment_helper_.reset(); |
| +} |
| + |
| } // namespace chromeos |