tests against api
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
This commit is contained in:
parent
e41ffe8fec
commit
77a6235e40
|
@ -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"
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
@ -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
|
Loading…
Reference in New Issue