#!/usr/bin/env python3 # -*- coding: utf-8 -*- # Copyright (c) 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 urllib.request import urlopen from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import Select from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from util import get_driver def test_offer(driver): node1_url = 'http://localhost:12701' node2_url = 'http://localhost:12702' driver.get(node1_url + '/newoffer') time.sleep(1) select = Select(driver.find_element(By.ID, 'coin_from')) select.select_by_visible_text('Bitcoin') select = Select(driver.find_element(By.ID, 'coin_to')) select.select_by_visible_text('Monero') driver.find_element(By.NAME, 'amt_from').send_keys('1') driver.find_element(By.NAME, 'amt_to').send_keys('2') driver.find_element(By.NAME, 'continue').click() WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'check_offer'))).click() WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'submit_offer'))).click() time.sleep(1) offer_link = driver.find_element(By.XPATH, "//a[contains(text(),'Sent Offer')]") offer1_id = offer_link.text.split(' ')[2] driver.get(node1_url + '/newoffer') time.sleep(1) select = Select(driver.find_element(By.ID, 'coin_from')) select.select_by_visible_text('Particl') select = Select(driver.find_element(By.ID, 'coin_to')) select.select_by_visible_text('Monero') driver.find_element(By.NAME, 'amt_from').send_keys('3') driver.find_element(By.NAME, 'amt_to').send_keys('4') driver.find_element(By.NAME, 'continue').click() WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'check_offer'))).click() WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'submit_offer'))).click() time.sleep(1) offer_link = driver.find_element(By.XPATH, "//a[contains(text(),'Sent Offer')]") offer2_id = offer_link.text.split(' ')[2] driver.get(node1_url + '/offer/' + offer1_id) WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'repeat_offer'))).click() WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'check_offer'))).click() WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'submit_offer'))).click() time.sleep(1) offer_link = driver.find_element(By.XPATH, "//a[contains(text(),'Sent Offer')]") offer3_id = offer_link.text.split(' ')[2] offer3_json = json.loads(urlopen(node1_url + '/json/offers/' + offer3_id).read())[0] assert (offer3_json['coin_from'] == 'Bitcoin') assert (offer3_json['coin_to'] == 'Monero') driver.get(node1_url + '/offer/' + offer2_id) WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'repeat_offer'))).click() time.sleep(1) # Add time for setupCustomSelect to fire WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'check_offer'))).click() WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'submit_offer'))).click() time.sleep(1) offer_link = driver.find_element(By.XPATH, "//a[contains(text(),'Sent Offer')]") offer4_id = offer_link.text.split(' ')[2] offer4_json = json.loads(urlopen(node1_url + '/json/offers/' + offer4_id).read())[0] assert (offer4_json['coin_from'] == 'Particl') assert (offer4_json['coin_to'] == 'Monero') print('Test Passed!') def run_tests(): driver = get_driver() try: test_offer(driver) finally: driver.close() if __name__ == '__main__': run_tests()