tests against api

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
This commit is contained in:
microwavedcola1 2021-09-26 14:32:13 +02:00
parent e41ffe8fec
commit 77a6235e40
3 changed files with 91 additions and 8 deletions

View File

@ -33,10 +33,10 @@ def delayed(seconds):
class MangoServiceV3Client:
def __init__(self, timeout):
def __init__(self, base_url, timeout):
self.timeout = timeout if timeout else 10.0
if "BASE_URL" in os.environ:
self.BASE_URL = f"{os.environ['BASE_URL']}/api"
if base_url:
self.BASE_URL = base_url
else:
self.BASE_URL = "http://localhost:3000/api"

View File

@ -6,7 +6,7 @@ from mango_service_v3_py.dtos import PlaceOrder
@pytest.fixture
def mango_service_v3_client():
return MangoServiceV3Client(timeout=60.0)
return MangoServiceV3Client("http://localhost:3001/api", timeout=60.0)
@pytest.fixture(autouse=True)
@ -36,10 +36,23 @@ def place_order(mango_service_v3_client, market):
)
testdata = [("BTC-PERP"), ("BTC/USDC")]
SPOT_AND_PERP_MARKETS = [("BTC-PERP"), ("BTC-SPOT")]
PERP_MARKET = [("BTC-PERP")]
@pytest.mark.parametrize("market", testdata)
@pytest.mark.parametrize("market", PERP_MARKET)
def test_get_positions(mango_service_v3_client, market):
positions = mango_service_v3_client.get_open_positions()
assert len(positions) > 0
@pytest.mark.parametrize("market", SPOT_AND_PERP_MARKETS)
def test_get_balances(mango_service_v3_client, market):
balances = mango_service_v3_client.get_balances()
assert len(balances) > 0
@pytest.mark.parametrize("market", SPOT_AND_PERP_MARKETS)
def test_place_order(mango_service_v3_client, market):
mango_service_v3_client.cancel_all_orders()
place_order(mango_service_v3_client, market)
@ -47,12 +60,13 @@ def test_place_order(mango_service_v3_client, market):
assert len(orders) == 1
order = orders[0]
print(order)
assert order.market == market
assert order.price == 20000
assert order.size == 0.0001
@pytest.mark.parametrize("market", testdata)
@pytest.mark.parametrize("market", SPOT_AND_PERP_MARKETS)
def test_cancel_order_by_order_id(mango_service_v3_client, market):
place_order(mango_service_v3_client, market)
@ -64,7 +78,7 @@ def test_cancel_order_by_order_id(mango_service_v3_client, market):
assert len(orders) == 0
@pytest.mark.parametrize("market", testdata)
@pytest.mark.parametrize("market", SPOT_AND_PERP_MARKETS)
def test_cancel_order_by_client_id(mango_service_v3_client, market):
place_order(mango_service_v3_client, market)

69
py/test-mainnet.py Normal file
View File

@ -0,0 +1,69 @@
import pytest
from mango_service_v3_py.api import MangoServiceV3Client
from mango_service_v3_py.dtos import PlaceOrder
# Note: some endpoints only return useful data for mainnet, this is because the REST API service rely on
# other off chain REST services which only serve data for mainnet
@pytest.fixture
def mango_service_v3_client():
return MangoServiceV3Client("http://localhost:3000/api", timeout=60.0)
@pytest.fixture(autouse=True)
def run_around_tests(mango_service_v3_client):
# cleanup
mango_service_v3_client.cancel_all_orders()
orders = mango_service_v3_client.get_orders()
assert len(orders) == 0
yield
# teardown
assert True
def place_order(mango_service_v3_client, market):
mango_service_v3_client.place_order(
PlaceOrder(
market=market,
side="buy",
price=20000,
type="limit",
size=0.0001,
reduce_only=False,
ioc=False,
post_only=False,
client_id=123,
)
)
SPOT_AND_PERP_MARKETS = [("BTC-PERP"), ("BTC-SPOT")]
PERP_MARKET = [("BTC-PERP")]
@pytest.mark.parametrize("market", SPOT_AND_PERP_MARKETS)
def test_get_markets(mango_service_v3_client, market):
markets = mango_service_v3_client.get_markets()
assert len(markets) > 0
@pytest.mark.parametrize("market", SPOT_AND_PERP_MARKETS)
def test_get_candles(mango_service_v3_client, market):
candles = mango_service_v3_client.get_candles(market, 60, 1625922900, 1631214960)
print(candles)
assert len(candles) > 0
@pytest.mark.parametrize("market", SPOT_AND_PERP_MARKETS)
def test_get_orderbook(mango_service_v3_client, market):
ob = mango_service_v3_client.get_orderboook(market)
assert len(ob.asks) > 0
assert len(ob.bids) > 0
@pytest.mark.parametrize("market", SPOT_AND_PERP_MARKETS)
def test_get_trades(mango_service_v3_client, market):
trades = mango_service_v3_client.get_trades(market)
assert len(trades) > 0