test: add test for /markets endpoint
This commit is contained in:
@@ -7,7 +7,7 @@ from fastapi.exceptions import HTTPException
|
|||||||
|
|
||||||
from freqtrade import __version__
|
from freqtrade import __version__
|
||||||
from freqtrade.data.history import get_datahandler
|
from freqtrade.data.history import get_datahandler
|
||||||
from freqtrade.enums import CandleType, State, TradingMode
|
from freqtrade.enums import CandleType, RunMode, State, TradingMode
|
||||||
from freqtrade.exceptions import OperationalException
|
from freqtrade.exceptions import OperationalException
|
||||||
from freqtrade.rpc import RPC
|
from freqtrade.rpc import RPC
|
||||||
from freqtrade.rpc.api_server.api_pairlists import handleExchangePayload
|
from freqtrade.rpc.api_server.api_pairlists import handleExchangePayload
|
||||||
@@ -483,7 +483,7 @@ def markets(
|
|||||||
config=Depends(get_config),
|
config=Depends(get_config),
|
||||||
rpc: RPC | None = Depends(get_rpc_optional),
|
rpc: RPC | None = Depends(get_rpc_optional),
|
||||||
):
|
):
|
||||||
if not rpc:
|
if not rpc or config["runmode"] == RunMode.WEBSERVER:
|
||||||
# webserver mode
|
# webserver mode
|
||||||
config_loc = deepcopy(config)
|
config_loc = deepcopy(config)
|
||||||
handleExchangePayload(query, config_loc)
|
handleExchangePayload(query, config_loc)
|
||||||
|
|||||||
@@ -3009,3 +3009,55 @@ def test_api_download_data(botclient, mocker, tmp_path):
|
|||||||
assert response["job_category"] == "download_data"
|
assert response["job_category"] == "download_data"
|
||||||
assert response["status"] == "failed"
|
assert response["status"] == "failed"
|
||||||
assert response["error"] == "Download error"
|
assert response["error"] == "Download error"
|
||||||
|
|
||||||
|
|
||||||
|
def test_api_markets_live(botclient):
|
||||||
|
ftbot, client = botclient
|
||||||
|
|
||||||
|
rc = client_get(client, f"{BASE_URI}/markets")
|
||||||
|
assert_response(rc, 200)
|
||||||
|
response = rc.json()
|
||||||
|
assert "markets" in response
|
||||||
|
assert len(response["markets"]) >= 0
|
||||||
|
assert response["markets"]["XRP/USDT"] == {
|
||||||
|
"base": "XRP",
|
||||||
|
"quote": "USDT",
|
||||||
|
"symbol": "XRP/USDT",
|
||||||
|
"spot": True,
|
||||||
|
"swap": False,
|
||||||
|
}
|
||||||
|
|
||||||
|
assert "BTC/USDT" in response["markets"]
|
||||||
|
assert "XRP/BTC" in response["markets"]
|
||||||
|
|
||||||
|
rc = client_get(
|
||||||
|
client,
|
||||||
|
f"{BASE_URI}/markets?base=XRP",
|
||||||
|
)
|
||||||
|
assert_response(rc, 200)
|
||||||
|
response = rc.json()
|
||||||
|
assert "XRP/USDT" in response["markets"]
|
||||||
|
assert "XRP/BTC" in response["markets"]
|
||||||
|
|
||||||
|
assert "BTC/USDT" not in response["markets"]
|
||||||
|
|
||||||
|
|
||||||
|
def test_api_markets_webserver(botclient):
|
||||||
|
# Ensure webserver exchanges are reset
|
||||||
|
ApiBG.exchanges = {}
|
||||||
|
ftbot, client = botclient
|
||||||
|
# Test in webserver mode
|
||||||
|
ftbot.config["runmode"] = RunMode.WEBSERVER
|
||||||
|
|
||||||
|
rc = client_get(client, f"{BASE_URI}/markets?exchange=binance")
|
||||||
|
assert_response(rc, 200)
|
||||||
|
response = rc.json()
|
||||||
|
assert "markets" in response
|
||||||
|
assert len(response["markets"]) >= 0
|
||||||
|
assert response["exchange_id"] == "binance"
|
||||||
|
|
||||||
|
rc = client_get(client, f"{BASE_URI}/markets?exchange=hyperliquid")
|
||||||
|
assert_response(rc, 200)
|
||||||
|
|
||||||
|
assert "hyperliquid_spot" in ApiBG.exchanges
|
||||||
|
assert "binance_spot" in ApiBG.exchanges
|
||||||
|
|||||||
Reference in New Issue
Block a user