mirror of
https://github.com/peeringdb/peeringdb.git
synced 2024-05-11 05:55:09 +00:00
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
This commit is contained in:
120
selenium-tests/test_profile.py
Normal file
120
selenium-tests/test_profile.py
Normal file
@ -0,0 +1,120 @@
|
||||
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()
|
Reference in New Issue
Block a user