blob: 55a2b246a0b0c0773e6b2fdd841ab953509e14e7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
"""Tests for Alpaca API client."""
from unittest.mock import AsyncMock, MagicMock
import pytest
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()
|