Skip to content

Commit 9df798f

Browse files
authored
Fix no returned states in request (#50)
1 parent 2b005da commit 9df798f

File tree

3 files changed

+65
-8
lines changed

3 files changed

+65
-8
lines changed

src/python_opensky/opensky.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -143,10 +143,13 @@ async def get_states(
143143

144144
data = await self._request("states/all", data=params)
145145

146-
data = {
147-
**data,
148-
"states": [self._convert_state(state) for state in data["states"]],
149-
}
146+
if data["states"] is None:
147+
data["states"] = []
148+
else:
149+
data = {
150+
**data,
151+
"states": [self._convert_state(state) for state in data["states"]],
152+
}
150153

151154
self._register_credit_usage(credit_cost)
152155

@@ -162,10 +165,13 @@ async def get_own_states(self, time: int = 0) -> StatesResponse:
162165

163166
data = await self._request("states/own", data=params)
164167

165-
data = {
166-
**data,
167-
"states": [self._convert_state(state) for state in data["states"]],
168-
}
168+
if data["states"] is None:
169+
data["states"] = []
170+
else:
171+
data = {
172+
**data,
173+
"states": [self._convert_state(state) for state in data["states"]],
174+
}
169175

170176
return StatesResponse.parse_obj(data)
171177

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"states": null,
3+
"time": 1683488744
4+
}

tests/test_states.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,29 @@ async def test_states(
6464
await opensky.close()
6565

6666

67+
async def test_unavailable_states(
68+
aresponses: ResponsesMockServer,
69+
) -> None:
70+
"""Test retrieving no states."""
71+
aresponses.add(
72+
OPENSKY_URL,
73+
"/api/states/all",
74+
"GET",
75+
aresponses.Response(
76+
status=200,
77+
headers={"Content-Type": "application/json"},
78+
text=load_fixture("unavailable_states.json"),
79+
),
80+
)
81+
async with aiohttp.ClientSession() as session:
82+
opensky = OpenSky(session=session)
83+
response: StatesResponse = await opensky.get_states()
84+
assert response.states is not None
85+
assert len(response.states) == 0
86+
assert response.time == 1683488744
87+
await opensky.close()
88+
89+
6790
async def test_own_states(
6891
aresponses: ResponsesMockServer,
6992
) -> None:
@@ -87,6 +110,30 @@ async def test_own_states(
87110
await opensky.close()
88111

89112

113+
async def test_unavailable_own_states(
114+
aresponses: ResponsesMockServer,
115+
) -> None:
116+
"""Test retrieving no own states."""
117+
aresponses.add(
118+
OPENSKY_URL,
119+
"/api/states/own",
120+
"GET",
121+
aresponses.Response(
122+
status=200,
123+
headers={"Content-Type": "application/json"},
124+
text=load_fixture("unavailable_states.json"),
125+
),
126+
)
127+
async with aiohttp.ClientSession() as session:
128+
opensky = OpenSky(session=session)
129+
opensky.authenticate(BasicAuth(login="test", password="test"))
130+
response: StatesResponse = await opensky.get_own_states()
131+
assert response.states is not None
132+
assert len(response.states) == 0
133+
assert response.time == 1683488744
134+
await opensky.close()
135+
136+
90137
async def test_states_with_bounding_box(
91138
aresponses: ResponsesMockServer,
92139
) -> None:

0 commit comments

Comments
 (0)