|
|
|
#!/usr/bin/env python3
|
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
|
|
# Copyright (c) 2023-2024 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')
|
|
|
|
|
|
|
|
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()
|