From fe6910473860feec4276e699d9adbd1dc08ccfff Mon Sep 17 00:00:00 2001 From: nicolas Date: Mon, 5 Nov 2018 13:53:47 -0800 Subject: [PATCH] Add domain support for specialized test login Some test servers require the domain parameter for login. This small change provides support for servers that require this additional login step. Change-Id: Ia9f94b687ee6d3318fa61ad3f446b21ed6cfea6a Closes-Bug: #1802343 --- openstack_dashboard/test/integration_tests/config.py | 3 +++ .../test/integration_tests/pages/loginpage.py | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/openstack_dashboard/test/integration_tests/config.py b/openstack_dashboard/test/integration_tests/config.py index d90f0c022f..3ca119b851 100644 --- a/openstack_dashboard/test/integration_tests/config.py +++ b/openstack_dashboard/test/integration_tests/config.py @@ -32,6 +32,9 @@ IdentityGroup = [ default='secretadmin', help="API key to use when authenticating.", secret=True), + cfg.StrOpt('domain', + default=None, + help="Domain name to use if required for login"), cfg.StrOpt('home_project', default='demo', help="Project to keep all objects belonging to a regular user." diff --git a/openstack_dashboard/test/integration_tests/pages/loginpage.py b/openstack_dashboard/test/integration_tests/pages/loginpage.py index 8358d35383..fd55183c77 100644 --- a/openstack_dashboard/test/integration_tests/pages/loginpage.py +++ b/openstack_dashboard/test/integration_tests/pages/loginpage.py @@ -21,6 +21,7 @@ from openstack_dashboard.test.integration_tests.pages.project.compute import \ class LoginPage(pageobject.PageObject): + _login_domain_field_locator = (by.By.ID, 'id_domain') _login_username_field_locator = (by.By.ID, 'id_username') _login_password_field_locator = (by.By.ID, 'id_password') _login_submit_button_locator = (by.By.CSS_SELECTOR, @@ -35,6 +36,10 @@ class LoginPage(pageobject.PageObject): return (self.is_the_current_page() and self._is_element_visible(*self._login_submit_button_locator)) + @property + def domain(self): + return self._get_elements(*self._login_domain_field_locator) + @property def username(self): return self._get_element(*self._login_username_field_locator) @@ -67,6 +72,8 @@ class LoginPage(pageobject.PageObject): self._press_enter_on_login_button) def _do_login(self, user, password, login_method): + if self.conf.identity.domain: + self.domain[0].send_keys(self.conf.identity.domain) if user == self.conf.identity.admin_username: if password is None: password = self.conf.identity.admin_password