Spaces:
Sleeping
Sleeping
| from __future__ import annotations | |
| import asyncio | |
| import importlib.util | |
| from pathlib import Path | |
| import pytest | |
| import trading.futures_execution as futures_execution | |
| from trading.domain.schema import apply_migrations | |
| def _db(tmp_path, monkeypatch): | |
| monkeypatch.setenv("HERMES_HOME", str(tmp_path)) | |
| monkeypatch.setenv("TRADING_MODE", "paper") | |
| monkeypatch.setenv("HERMES_EXECUTION_ENABLED", "true") | |
| ok, messages = apply_migrations() | |
| assert ok, messages | |
| def _load_audit_module(): | |
| path = Path(__file__).parents[2] / "scripts" / "audit_execution_client_paths.py" | |
| spec = importlib.util.spec_from_file_location("execution_client_path_audit", path) | |
| module = importlib.util.module_from_spec(spec) | |
| assert spec and spec.loader | |
| spec.loader.exec_module(module) | |
| return module | |
| def test_static_client_routing_audit_has_zero_findings(): | |
| assert _load_audit_module().audit() == [] | |
| def test_retired_raw_entry_api_fails_closed_without_position_mutation(): | |
| with pytest.raises(futures_execution.TradingError, match="approved-plan execution API"): | |
| asyncio.run(futures_execution.execute_futures_position( | |
| symbol="BTCUSDT", side="long", leverage=3, size=1.0, | |
| stop_loss=95.0, take_profit=110.0, | |
| orderbook={"asks": [[100.0, 100.0]], "bids": [[99.0, 100.0]]}, | |
| )) | |
| assert asyncio.run(futures_execution.get_futures_positions())["positions"] == [] | |