1
0
mirror of https://github.com/peeringdb/peeringdb.git synced 2024-05-11 05:55:09 +00:00
Files
peeringdb-peeringdb/selenium-tests/test_profile.py
Stefan Pratter 2ee1220c58 Support 202209 (#1259)
* 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
2022-10-11 07:45:07 -05:00

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()