mirror of
https://github.com/basicswap/basicswap.git
synced 2025-01-20 01:24:31 +00:00
152 lines
4.7 KiB
Python
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()
|