"""Tests for Alpaca API client.""" import pytest from unittest.mock import AsyncMock, MagicMock from shared.alpaca import AlpacaClient @pytest.fixture def client(): return AlpacaClient(api_key="test-key", api_secret="test-secret", paper=True) def test_client_uses_paper_url(client): assert "paper" in client._base_url def test_client_uses_live_url(): c = AlpacaClient(api_key="k", api_secret="s", paper=False) assert "paper" not in c._base_url def test_client_headers(client): h = client.headers assert h["APCA-API-KEY-ID"] == "test-key" assert h["APCA-API-SECRET-KEY"] == "test-secret" @pytest.mark.asyncio async def test_get_buying_power(client): mock_response = AsyncMock() mock_response.status = 200 mock_response.json = AsyncMock(return_value={"buying_power": "10000.00"}) mock_response.__aenter__ = AsyncMock(return_value=mock_response) mock_response.__aexit__ = AsyncMock(return_value=False) mock_session = MagicMock() mock_session.closed = False mock_session.request = MagicMock(return_value=mock_response) mock_session.close = AsyncMock() client._session = mock_session result = await client.get_buying_power() from decimal import Decimal assert result == Decimal("10000.00") await client.close() @pytest.mark.asyncio async def test_submit_moc_order(client): mock_response = AsyncMock() mock_response.status = 200 mock_response.json = AsyncMock(return_value={"id": "order-1", "status": "accepted"}) mock_response.__aenter__ = AsyncMock(return_value=mock_response) mock_response.__aexit__ = AsyncMock(return_value=False) mock_session = MagicMock() mock_session.closed = False mock_session.request = MagicMock(return_value=mock_response) mock_session.close = AsyncMock() client._session = mock_session result = await client.submit_moc_order("AAPL", qty=10, side="buy") assert result["id"] == "order-1" # Verify the request was made with correct params call_args = mock_session.request.call_args assert call_args[0][0] == "POST" await client.close()