Host-customized fork of https://github.com/tecnovert/basicswap/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
142 lines
4.5 KiB
142 lines
4.5 KiB
#!/usr/bin/env python3 |
|
# -*- coding: utf-8 -*- |
|
|
|
# Copyright (c) 2022-2023 tecnovert |
|
# 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 get_driver |
|
|
|
|
|
def test_settings(driver): |
|
base_url = 'http://localhost:12701' |
|
node2_url = 'http://localhost:12702' |
|
|
|
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') |
|
for option in el.find_elements(By.TAG_NAME, 'option'): |
|
if option.text == 'False': |
|
option.click() |
|
break |
|
|
|
el = driver.find_element(By.NAME, 'debugui') |
|
selected_option = Select(el).first_selected_option |
|
assert (selected_option.text == 'False') |
|
for option in el.find_elements(By.TAG_NAME, 'option'): |
|
if option.text == 'True': |
|
option.click() |
|
break |
|
|
|
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') |
|
for option in el.find_elements(By.TAG_NAME, 'option'): |
|
if option.text == 'False': |
|
option.click() |
|
break |
|
|
|
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 = 'cd7600e7b5fdd99c6f900673ff0ee8f64d6d4219a4bb87191ad4a2e3fc65d7f4' |
|
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) |
|
|
|
# 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 ('remote_daemon_urls' not in settings['chainclients']['monero']) |
|
|
|
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 ('remote_daemon_urls' not in settings['chainclients']['monero']) |
|
|
|
print('Test Passed!') |
|
|
|
|
|
def run_tests(): |
|
driver = get_driver() |
|
try: |
|
test_settings(driver) |
|
finally: |
|
driver.close() |
|
|
|
|
|
if __name__ == '__main__': |
|
run_tests()
|
|
|