Skip to content

Commit fb792e4

Browse files
Merge pull request #1697 from atlassian/confluence/websudo-selenium
confluence/websudo-selenium
2 parents 242dbef + 357ad91 commit fb792e4

File tree

3 files changed

+35
-2
lines changed

3 files changed

+35
-2
lines changed

app/extension/confluence/extension_ui.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
from selenium_ui.base_page import BasePage
66
from selenium_ui.conftest import print_timing
7-
from selenium_ui.confluence.pages.pages import Login, AllUpdates
7+
from selenium_ui.confluence.pages.pages import Login, AllUpdates, AdminPage
88
from util.conf import CONFLUENCE_SETTINGS
99

1010

@@ -29,6 +29,9 @@ def app_specific_action(webdriver, datasets):
2929
# login_page.first_user_setup()
3030
# all_updates_page = AllUpdates(webdriver)
3131
# all_updates_page.wait_for_page_loaded()
32+
# # uncomment below line to do web_sudo and authorise access to admin pages
33+
# # AdminPage(webdriver).go_to(password=password)
34+
#
3235
# app_specific_user_login(username='admin', password='admin')
3336
# measure()
3437

app/selenium_ui/confluence/pages/pages.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from selenium_ui.base_page import BasePage
44

55
from selenium_ui.confluence.pages.selectors import UrlManager, LoginPageLocators, AllUpdatesLocators, PopupLocators,\
6-
PageLocators, DashboardLocators, TopPanelLocators, EditorLocators, LogoutLocators, XsrfTokenLocators
6+
PageLocators, DashboardLocators, TopPanelLocators, EditorLocators, LogoutLocators, XsrfTokenLocators, AdminLocators
77

88

99
class Login(BasePage):
@@ -176,3 +176,22 @@ def save_edited_page(self):
176176
self.wait_until_invisible(EditorLocators.save_spinner)
177177
self.wait_until_any_ec_presented(selectors=[PageLocators.page_title,
178178
EditorLocators.confirm_publishing_button])
179+
180+
181+
class AdminPage(BasePage):
182+
page_url = AdminLocators.admin_system_page_url
183+
page_loaded_selector = AdminLocators.login_form
184+
185+
def is_websudo(self):
186+
return True if self.get_elements(AdminLocators.web_sudo_password) else False
187+
188+
def do_websudo(self, password):
189+
self.wait_until_clickable(AdminLocators.web_sudo_password).send_keys(password)
190+
self.wait_until_clickable(AdminLocators.web_sudo_submit_btn).click()
191+
self.wait_until_visible(AdminLocators.edit_baseurl)
192+
193+
def go_to(self, password=None):
194+
super().go_to()
195+
self.wait_for_page_loaded()
196+
if self.is_websudo():
197+
self.do_websudo(password)

app/selenium_ui/confluence/pages/selectors.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ def __init__(self, page_id=None):
1111
self.dashboard_params = '/dashboard.action#all-updates'
1212
self.edit_page_params = f'/pages/editpage.action?pageId={page_id}'
1313
self.logout_params = "/logout.action"
14+
self.admin_system_params = f"/admin/viewgeneralconfig.action"
1415

1516
def login_url(self):
1617
return f"{self.host}{self.login_params}"
@@ -27,6 +28,9 @@ def edit_page_url(self):
2728
def logout_url(self):
2829
return f"{self.host}{self.logout_params}"
2930

31+
def admin_system_url(self):
32+
return f"{self.host}{self.admin_system_params}"
33+
3034

3135
class PopupLocators:
3236
popup_selectors = [
@@ -110,3 +114,10 @@ class LogoutLocators:
110114

111115
class XsrfTokenLocators:
112116
xsrf_token = (By.ID, "atlassian-token")
117+
118+
class AdminLocators:
119+
admin_system_page_url = UrlManager().admin_system_url()
120+
web_sudo_password = (By.ID, 'password')
121+
web_sudo_submit_btn = (By.ID, 'authenticateButton')
122+
login_form = (By.ID, 'login-container')
123+
edit_baseurl = (By.ID, 'editbaseurl')

0 commit comments

Comments
 (0)