77from httpx import Response
88from time_machine import TimeMachineFixture
99
10- from fastapi_cloud_cli .config import Settings
1110from fastapi_cloud_cli .utils .api import (
1211 STREAM_LOGS_MAX_RETRIES ,
1312 APIClient ,
1716)
1817from tests .utils import build_logs_response
1918
20- settings = Settings .get ()
21-
2219
2320@pytest .fixture
2421def client () -> httpx .Client :
@@ -31,15 +28,11 @@ def deployment_id() -> str:
3128 return "test-deployment-123"
3229
3330
34- api_mock = respx .mock (base_url = settings .base_api_url )
35-
36-
3731@pytest .fixture
38- def logs_route (deployment_id : str ) -> respx .Route :
39- return api_mock .get (f"/deployments/{ deployment_id } /build-logs" )
32+ def logs_route (respx_mock : respx . MockRouter , deployment_id : str ) -> respx .Route :
33+ return respx_mock .get (f"/deployments/{ deployment_id } /build-logs" )
4034
4135
42- @api_mock
4336def test_stream_build_logs_successful (
4437 logs_route : respx .Route ,
4538 client : APIClient ,
@@ -69,7 +62,6 @@ def test_stream_build_logs_successful(
6962 assert logs [2 ].type == "complete"
7063
7164
72- @api_mock
7365def test_stream_build_logs_failed (
7466 logs_route : respx .Route , client : APIClient , deployment_id : str
7567) -> None :
@@ -91,7 +83,6 @@ def test_stream_build_logs_failed(
9183
9284
9385@pytest .mark .parametrize ("terminal_type" , ["complete" , "failed" ])
94- @api_mock
9586def test_stream_build_logs_stop_after_terminal_state (
9687 logs_route : respx .Route ,
9788 client : APIClient ,
@@ -116,7 +107,6 @@ def test_stream_build_logs_stop_after_terminal_state(
116107 assert logs [1 ].type == terminal_type
117108
118109
119- @api_mock
120110def test_stream_build_logs_internal_messages_are_skipped (
121111 logs_route : respx .Route ,
122112 client : APIClient ,
@@ -140,7 +130,6 @@ def test_stream_build_logs_internal_messages_are_skipped(
140130 assert logs [1 ].type == "complete"
141131
142132
143- @api_mock
144133def test_stream_build_logs_malformed_json_is_skipped (
145134 logs_route : respx .Route , client : APIClient , deployment_id : str
146135) -> None :
@@ -161,7 +150,6 @@ def test_stream_build_logs_malformed_json_is_skipped(
161150 assert logs [1 ].type == "complete"
162151
163152
164- @api_mock
165153def test_stream_build_logs_unknown_log_type_is_skipped (
166154 logs_route : respx .Route , client : APIClient , deployment_id : str
167155) -> None :
@@ -188,7 +176,6 @@ def test_stream_build_logs_unknown_log_type_is_skipped(
188176 "network_error" ,
189177 [httpx .NetworkError , httpx .TimeoutException , httpx .RemoteProtocolError ],
190178)
191- @api_mock
192179def test_stream_build_logs_network_error_retry (
193180 logs_route : respx .Route ,
194181 client : APIClient ,
@@ -216,7 +203,6 @@ def test_stream_build_logs_network_error_retry(
216203 assert logs [0 ].message == "Success after retry"
217204
218205
219- @api_mock
220206def test_stream_build_logs_server_error_retry (
221207 logs_route : respx .Route , client : APIClient , deployment_id : str
222208) -> None :
@@ -237,7 +223,6 @@ def test_stream_build_logs_server_error_retry(
237223 assert logs [0 ].type == "complete"
238224
239225
240- @api_mock
241226def test_stream_build_logs_client_error_raises_immediately (
242227 logs_route : respx .Route , client : APIClient , deployment_id : str
243228) -> None :
@@ -247,7 +232,6 @@ def test_stream_build_logs_client_error_raises_immediately(
247232 list (client .stream_build_logs (deployment_id ))
248233
249234
250- @api_mock
251235def test_stream_build_logs_max_retries_exceeded (
252236 logs_route : respx .Route , client : APIClient , deployment_id : str
253237) -> None :
@@ -261,7 +245,6 @@ def test_stream_build_logs_max_retries_exceeded(
261245 list (client .stream_build_logs (deployment_id ))
262246
263247
264- @api_mock
265248def test_stream_build_logs_empty_lines_are_skipped (
266249 logs_route : respx .Route , client : APIClient , deployment_id : str
267250) -> None :
@@ -284,7 +267,6 @@ def test_stream_build_logs_empty_lines_are_skipped(
284267 assert logs [1 ].type == "complete"
285268
286269
287- @respx .mock (base_url = settings .base_api_url )
288270def test_stream_build_logs_continue_after_timeout (
289271 respx_mock : respx .MockRouter ,
290272 client : APIClient ,
@@ -328,7 +310,6 @@ def test_stream_build_logs_continue_after_timeout(
328310 assert next (logs ).type == "complete"
329311
330312
331- @api_mock
332313def test_stream_build_logs_connection_closed_without_complete_failed_or_timeout (
333314 logs_route : respx .Route , client : APIClient , deployment_id : str
334315) -> None :
@@ -348,7 +329,6 @@ def test_stream_build_logs_connection_closed_without_complete_failed_or_timeout(
348329 next (logs )
349330
350331
351- @api_mock
352332def test_stream_build_logs_retry_timeout (
353333 logs_route : respx .Route ,
354334 client : APIClient ,
0 commit comments