Files
basicswap/tests/basicswap/selenium/test_settings.py
T
2024-11-15 17:21:33 +02:00

153 lines
4.7 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright (c) 2022-2024 tecnovert
# Copyright (c) 2024 The Basicswap developers
# Distributed under the MIT software license, see the accompanying
# file LICENSE or http://www.opensource.org/licenses/mit-license.php.
import json
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support.select import Select
from selenium.webdriver.support import expected_conditions as EC
from util import (
BSX_0_PORT,
click_option,
get_driver,
)
from basicswap.ui.page_offers import default_chart_api_key
def test_settings(driver):
base_url = f"http://localhost:{BSX_0_PORT}"
url = base_url + "/settings"
driver.get(url)
driver.find_element(By.ID, "general-tab").click()
wait = WebDriverWait(driver, 10)
btn_apply_general = wait.until(
EC.element_to_be_clickable((By.NAME, "apply_general"))
)
el = driver.find_element(By.NAME, "debugmode")
selected_option = Select(el).first_selected_option
assert selected_option.text == "True"
click_option(el, "False")
el = driver.find_element(By.NAME, "debugui")
selected_option = Select(el).first_selected_option
assert selected_option.text == "False"
click_option(el, "True")
btn_apply_general.click()
time.sleep(1)
settings_path_0 = "/tmp/test_persistent/client0/basicswap.json"
with open(settings_path_0) as fs:
settings = json.load(fs)
assert settings["debug"] is False
assert settings["debug_ui"] is True
el = driver.find_element(By.NAME, "showchart")
selected_option = Select(el).first_selected_option
assert selected_option.text == "True"
click_option(el, "False")
difficult_text = "`~!@#$%^&*()-_=+[{}]\\|;:'\",<>./? "
el = driver.find_element(By.NAME, "chartapikey")
el.clear()
el.send_keys(difficult_text)
btn_apply_chart = wait.until(EC.element_to_be_clickable((By.NAME, "apply_chart")))
btn_apply_chart.click()
time.sleep(1)
with open(settings_path_0) as fs:
settings = json.load(fs)
assert settings["show_chart"] is False
chart_api_key = bytes.fromhex(settings.get("chart_api_key_enc", "")).decode("utf-8")
assert chart_api_key == difficult_text
hex_text = default_chart_api_key
el = driver.find_element(By.NAME, "chartapikey")
el.clear()
el.send_keys(hex_text)
btn_apply_chart = wait.until(EC.element_to_be_clickable((By.NAME, "apply_chart")))
btn_apply_chart.click()
time.sleep(1)
el = driver.find_element(By.NAME, "chartapikey")
assert el.get_property("value") == hex_text
with open(settings_path_0) as fs:
settings = json.load(fs)
assert settings.get("chart_api_key") == hex_text
# Reset
btn_apply_general = wait.until(
EC.element_to_be_clickable((By.NAME, "apply_general"))
)
click_option(driver.find_element(By.NAME, "debugmode"), "True")
click_option(driver.find_element(By.NAME, "debugui"), "False")
btn_apply_general.click()
btn_apply_chart = wait.until(EC.element_to_be_clickable((By.NAME, "apply_chart")))
click_option(driver.find_element(By.NAME, "showchart"), "True")
btn_apply_chart.click()
time.sleep(1)
# Apply XMR settings with blank nodes list
driver.find_element(By.ID, "coins-tab").click()
btn_apply_monero = wait.until(EC.element_to_be_clickable((By.NAME, "apply_monero")))
el = driver.find_element(By.NAME, "remotedaemonurls_monero")
el.clear()
btn_apply_monero.click()
time.sleep(1)
with open(settings_path_0) as fs:
settings = json.load(fs)
assert len(settings["chainclients"]["monero"]["remote_daemon_urls"]) == 0
btn_apply_monero = wait.until(EC.element_to_be_clickable((By.NAME, "apply_monero")))
el = driver.find_element(By.NAME, "remotedaemonurls_monero")
el.clear()
el.send_keys("node.xmr.to:18081\nnode1.xmr.to:18082")
btn_apply_monero.click()
time.sleep(1)
with open(settings_path_0) as fs:
settings = json.load(fs)
remotedaemonurls = settings["chainclients"]["monero"]["remote_daemon_urls"]
assert len(remotedaemonurls) == 2
btn_apply_monero = wait.until(EC.element_to_be_clickable((By.NAME, "apply_monero")))
el = driver.find_element(By.NAME, "remotedaemonurls_monero")
el.clear()
btn_apply_monero.click()
time.sleep(1)
with open(settings_path_0) as fs:
settings = json.load(fs)
assert len(settings["chainclients"]["monero"]["remote_daemon_urls"]) == 0
print("Test Passed!")
def run_tests():
driver = get_driver()
try:
test_settings(driver)
finally:
driver.close()
if __name__ == "__main__":
run_tests()