Skip to content
Snippets Groups Projects

Adaptation to Gitlab 10.2 tokens management

Merged Georges Racinet requested to merge topic/default/gitlab-10-2 into branch/default
1 file
+ 14
21
Compare changes
  • Side-by-side
  • Inline
+ 14
21
import selenium.webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.expected_conditions import alert_is_present
from .user import default_password, User
ROOT_PASSWORD = 'p4s5w0rd'
@@ -22,29 +20,27 @@ def initialize_root(driver, heptapod):
def generate_private_token(driver, heptapod, user):
"""Generate a private token for already logged in user.
"""
driver.get(heptapod.url + '/profile/account')
elem = driver.find_element_by_xpath(
'//a[@href="/profile/reset_private_token"]')
elem.click()
WebDriverWait(driver, 10).until(lambda _: alert_is_present())
alert = driver.switch_to_alert()
alert.accept()
driver.get(heptapod.url + '/profile/personal_access_tokens')
name_elt = driver.find_element_by_xpath(
'//input[@name="personal_access_token[name]"]')
name_elt.send_keys("heptapod-tests")
for scope in driver.find_elements_by_xpath('//input[@type="checkbox"]'):
scope.click()
submit = driver.find_element_by_xpath('//input[@type="submit"]')
submit.click()
account_page_retrieve_private_token(driver, heptapod, user)
def account_page_retrieve_private_token(driver, heptapod, user):
"""While already on user's account_page, retrieve its private token."""
elem = driver.find_element_by_name('private-token')
"""Retrieve newly created private token, assuming we are on the right page.
"""
elem = driver.find_element_by_id('created-personal-access-token')
token = elem.get_attribute('value')
heptapod.users.setdefault(user, {})['token'] = token
def retrieve_private_token(driver, heptapod, user):
driver.get(heptapod.url + '/profile/account')
account_page_retrieve_private_token(driver, heptapod, user)
def sign_in_page_login(driver, heptapod, user, password=None):
"""Perform login as root, with webdriver already on the signin page.
@@ -71,7 +67,7 @@ def login_as_root(driver, heptapod):
return initialize_root(driver, heptapod)
sign_in_page_login(driver, heptapod, 'root', password=ROOT_PASSWORD)
retrieve_private_token(driver, heptapod, 'root')
generate_private_token(driver, heptapod, 'root')
def ensure_user(heptapod, name, password=None, fullname=None):
@@ -85,14 +81,11 @@ def ensure_user(heptapod, name, password=None, fullname=None):
if user is None:
user = User.create(heptapod, name,
password=password, fullname=fullname)
tokmeth = generate_private_token
else:
tokmeth = retrieve_private_token
options = selenium.webdriver.ChromeOptions()
options.add_argument('--headless')
driver = selenium.webdriver.Chrome(options=options)
driver.get(heptapod.url)
sign_in_page_login(driver, heptapod, name, password=password)
tokmeth(driver, heptapod, name)
generate_private_token(driver, heptapod, name)
return user, driver
Loading