mirror of
https://github.com/peeringdb/peeringdb.git
synced 2024-05-11 05:55:09 +00:00
* Add export tool to https://peeringdb.com/cp/peeringdb_server #586 * IX-F importer fails on nulled ipv4 / ipv6 properties in vlan_list entries #1244 * Adding a POC must require an email address or phone number #1044 * Selenium tests * ping django-peeringdb and rdap and poetry relock * linting * linting * remove selenium tests cruft * comment out django-peeringdb and search data mounts * regen docs
121 lines
4.0 KiB
Python
121 lines
4.0 KiB
Python
import time
|
|
|
|
import pytest
|
|
import selenium.webdriver.support.expected_conditions as EC
|
|
from helper import login
|
|
from selenium.common.exceptions import NoSuchElementException
|
|
from selenium.webdriver.common.by import By
|
|
from selenium.webdriver.support.wait import WebDriverWait
|
|
|
|
|
|
@pytest.mark.key("test-writes")
|
|
@pytest.mark.lvl("unverified")
|
|
def test_add_api_key(config, driver):
|
|
driver.get(config["url"] + "/profile")
|
|
try:
|
|
num_of_keys = len(
|
|
driver.find_elements(
|
|
By.CSS_SELECTOR, '.api-keys div[data-edit-component="list"] div.row'
|
|
)
|
|
)
|
|
except NoSuchElementException:
|
|
num_of_keys = 0
|
|
|
|
time.sleep(5)
|
|
# add api key
|
|
driver.find_element(
|
|
By.CSS_SELECTOR, '.api-keys div[data-edit-name="name"] input'
|
|
).send_keys(config["test_add_api_key"]["description"])
|
|
driver.find_element(By.CSS_SELECTOR, '.api-keys a[data-edit-action="add"]').click()
|
|
|
|
# check if api key added to list
|
|
assert WebDriverWait(driver, 5).until(
|
|
EC.presence_of_element_located(
|
|
(By.CSS_SELECTOR, ".api-keys #api-key-popin-frame div.alert-success")
|
|
)
|
|
)
|
|
assert num_of_keys + 1 == len(
|
|
driver.find_elements(
|
|
By.CSS_SELECTOR, '.api-keys div[data-edit-component="list"] div.row'
|
|
)
|
|
)
|
|
|
|
|
|
@pytest.mark.key("test-writes")
|
|
@pytest.mark.lvl("unverified")
|
|
def test_delete_api_key(config, driver):
|
|
# deletes an existing api key
|
|
driver.get(config["url"] + "/profile")
|
|
try:
|
|
num_of_keys = len(
|
|
driver.find_elements(
|
|
By.CSS_SELECTOR, '.api-keys div[data-edit-component="list"] div.row'
|
|
)
|
|
)
|
|
except NoSuchElementException:
|
|
num_of_keys = 0
|
|
|
|
# remove key
|
|
description = config["test_delete_api_key"]["description"]
|
|
key_revoke_btn = driver.find_element(By.CSS_SELECTOR, ".api-keys").find_element(
|
|
By.XPATH,
|
|
'//div[@data-edit-component="list"]'
|
|
+ f'//span[@data-edit-name="name"][normalize-space()="{description}"]'
|
|
+ '/../following-sibling::div/a[@data-edit-action="revoke"]',
|
|
)
|
|
key_revoke_btn.click()
|
|
WebDriverWait(driver, 10).until(EC.alert_is_present()).accept()
|
|
|
|
# check if key removed from list
|
|
assert WebDriverWait(driver, 5).until(EC.invisibility_of_element(key_revoke_btn))
|
|
assert num_of_keys - 1 == len(
|
|
driver.find_elements(
|
|
By.CSS_SELECTOR, '.api-keys div[data-edit-component="list"] div.row'
|
|
)
|
|
)
|
|
|
|
|
|
@pytest.mark.key("test-writes")
|
|
@pytest.mark.lvl("unverified")
|
|
def test_change_password(config, driver, account_credentials):
|
|
driver.get(config["url"] + "/profile")
|
|
|
|
old_password = account_credentials["password"]
|
|
new_password = config["test_change_password"]["password"]
|
|
change_password(driver, old_password, new_password)
|
|
|
|
# check for success message
|
|
assert WebDriverWait(driver, 5).until(
|
|
EC.visibility_of_element_located(
|
|
(By.CSS_SELECTOR, "#form-change-password #password-change-success")
|
|
)
|
|
)
|
|
|
|
# change password back
|
|
driver.get(config["url"])
|
|
login(driver, account_credentials["username"], new_password)
|
|
driver.get(config["url"] + "/profile")
|
|
change_password(driver, new_password, old_password)
|
|
|
|
# check for success message
|
|
WebDriverWait(driver, 5).until(
|
|
EC.visibility_of_element_located(
|
|
(By.CSS_SELECTOR, "#form-change-password #password-change-success")
|
|
)
|
|
)
|
|
|
|
|
|
def change_password(driver, old_password, new_password):
|
|
driver.find_element(
|
|
By.CSS_SELECTOR, '#form-change-password input[data-edit-name="password_c"]'
|
|
).send_keys(old_password)
|
|
driver.find_element(
|
|
By.CSS_SELECTOR, '#form-change-password input[data-edit-name="password"]'
|
|
).send_keys(new_password)
|
|
driver.find_element(
|
|
By.CSS_SELECTOR, '#form-change-password input[data-edit-name="password_v"]'
|
|
).send_keys(new_password)
|
|
driver.find_element(
|
|
By.CSS_SELECTOR, '#form-change-password a.btn[data-edit-action="submit"]'
|
|
).click()
|