|
|
@@ -156,6 +156,10 @@ def account_config_response(pos_mode: str) -> DummyResponse:
|
|
|
return DummyResponse({"code": "0", "msg": "", "data": [{"posMode": pos_mode}]})
|
|
|
|
|
|
|
|
|
+def malformed_account_config_response(pos_mode: object) -> DummyResponse:
|
|
|
+ return DummyResponse({"code": "0", "msg": "", "data": [{"posMode": pos_mode}]})
|
|
|
+
|
|
|
+
|
|
|
def leverage_response() -> DummyResponse:
|
|
|
return DummyResponse({"code": "0", "msg": "", "data": [{"lever": "2"}]})
|
|
|
|
|
|
@@ -563,6 +567,14 @@ def test_place_demo_order_fails_when_not_hedge_mode():
|
|
|
client.place_demo_order(symbol="BTC-USDT-SWAP", signal=market_long_signal(), margin_usdt=100)
|
|
|
|
|
|
|
|
|
+def test_ensure_hedge_mode_rejects_malformed_config_payload():
|
|
|
+ session = DummySession([malformed_account_config_response(pos_mode=None)])
|
|
|
+ client = OkxClient(config=sample_config(), session=session)
|
|
|
+
|
|
|
+ with pytest.raises(ValueError, match="okx response payload is invalid"):
|
|
|
+ client.ensure_hedge_mode()
|
|
|
+
|
|
|
+
|
|
|
def test_place_demo_order_validates_size_before_setting_leverage():
|
|
|
session = DummySession(
|
|
|
[
|