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

152 lines
4.7 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright (c) 2023-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 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"
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")
amt_from = driver.find_element(By.NAME, "amt_from")
amt_to = driver.find_element(By.NAME, "amt_to")
rate = driver.find_element(By.ID, "rate")
amt_from.send_keys("1")
amt_to.send_keys("2")
amt_from.click()
time.sleep(0.5)
rate_value = rate.get_attribute("value")
assert float(rate_value) == 2.0
rate.clear()
rate.send_keys("3")
amt_from.click()
time.sleep(0.5)
amt_to_value = amt_to.get_attribute("value")
assert float(amt_to_value) == 3.0
amt_from.clear()
amt_from.send_keys("2")
amt_to.click()
time.sleep(0.5)
amt_to_value = amt_to.get_attribute("value")
assert float(amt_to_value) == 6.0
amt_from.clear()
amt_to.clear()
rate.clear()
amt_to.send_keys("2")
rate.send_keys("2")
amt_to.click()
time.sleep(0.2)
amt_from_value = amt_from.get_attribute("value")
assert float(amt_from_value) == 1.0
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()