From a78880bc98c45603f45be4c184f2d75733bd34d1 Mon Sep 17 00:00:00 2001 From: tecnovert Date: Thu, 22 Feb 2024 01:44:25 +0200 Subject: [PATCH] Ensure remote_daemon_urls appears in settings if automatically_select_daemon is present. --- basicswap/basicswap.py | 10 +++--- bin/basicswap_run.py | 2 ++ tests/basicswap/selenium/test_settings.py | 38 ++++++++++++++--------- 3 files changed, 31 insertions(+), 19 deletions(-) diff --git a/basicswap/basicswap.py b/basicswap/basicswap.py index 8ed3a8e..008ef19 100644 --- a/basicswap/basicswap.py +++ b/basicswap/basicswap.py @@ -6401,13 +6401,15 @@ class BasicSwap(BaseApp): remotedaemonurls.add(url.strip()) if set(settings_cc.get('remote_daemon_urls', [])) != remotedaemonurls: - if len(remotedaemonurls) == 0 and 'remote_daemon_urls' in settings_cc: - del settings_cc['remote_daemon_urls'] - else: - settings_cc['remote_daemon_urls'] = list(remotedaemonurls) + settings_cc['remote_daemon_urls'] = list(remotedaemonurls) settings_changed = True suggest_reboot = True + # Ensure remote_daemon_urls appears in settings if automatically_select_daemon is present + if 'automatically_select_daemon' in settings_cc and 'remote_daemon_urls' not in settings_cc: + settings_cc['remote_daemon_urls'] = [] + settings_changed = True + if 'fee_priority' in data: new_fee_priority = data['fee_priority'] ensure(new_fee_priority >= 0 and new_fee_priority < 4, 'Invalid priority') diff --git a/bin/basicswap_run.py b/bin/basicswap_run.py index 5c169c1..f9e754a 100755 --- a/bin/basicswap_run.py +++ b/bin/basicswap_run.py @@ -149,6 +149,8 @@ def runClient(fp, data_dir, chain, start_only_coins): # Ensure daemons are stopped swap_client.stopDaemons() + # Settings may have been modified + settings = swap_client.settings try: # Try start daemons for c, v in settings['chainclients'].items(): diff --git a/tests/basicswap/selenium/test_settings.py b/tests/basicswap/selenium/test_settings.py index ee5b27e..a7fb909 100644 --- a/tests/basicswap/selenium/test_settings.py +++ b/tests/basicswap/selenium/test_settings.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- -# Copyright (c) 2022-2023 tecnovert +# Copyright (c) 2022-2024 tecnovert # Distributed under the MIT software license, see the accompanying # file LICENSE or http://www.opensource.org/licenses/mit-license.php. @@ -17,6 +17,13 @@ from util import get_driver from basicswap.ui.page_offers import default_chart_api_key +def click_option(el, option_text): + for option in el.find_elements(By.TAG_NAME, 'option'): + if option.text == option_text: + option.click() + break + + def test_settings(driver): base_url = 'http://localhost:12701' node2_url = 'http://localhost:12702' @@ -31,18 +38,12 @@ def test_settings(driver): 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 + click_option(el, 'False') 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 + click_option(el, 'True') btn_apply_general.click() time.sleep(1) @@ -57,10 +58,7 @@ def test_settings(driver): 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 + click_option(el, 'False') difficult_text = '`~!@#$%^&*()-_=+[{}]\\|;:\'",<>./? ' el = driver.find_element(By.NAME, 'chartapikey') @@ -94,6 +92,16 @@ def test_settings(driver): 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'))) @@ -104,7 +112,7 @@ def test_settings(driver): with open(settings_path_0) as fs: settings = json.load(fs) - assert ('remote_daemon_urls' not in settings['chainclients']['monero']) + 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') @@ -126,7 +134,7 @@ def test_settings(driver): with open(settings_path_0) as fs: settings = json.load(fs) - assert ('remote_daemon_urls' not in settings['chainclients']['monero']) + assert (len(settings['chainclients']['monero']['remote_daemon_urls']) == 0) print('Test Passed!')