|
2 | 2 | from unittest import mock
|
3 | 3 |
|
4 | 4 | import requests
|
| 5 | +import responses |
5 | 6 | from pytest_mock import MockerFixture
|
6 | 7 |
|
7 | 8 | from flagsmith import Flagsmith
|
@@ -41,35 +42,50 @@ def test_polling_manager_calls_update_environment_on_each_refresh() -> None:
|
41 | 42 | polling_manager.stop()
|
42 | 43 |
|
43 | 44 |
|
| 45 | +@responses.activate() |
44 | 46 | def test_polling_manager_is_resilient_to_api_errors(
|
45 |
| - mocker: MockerFixture, server_api_key: str |
| 47 | + flagsmith: Flagsmith, |
| 48 | + environment_json: str, |
| 49 | + mocker: MockerFixture, |
| 50 | + server_api_key: str, |
46 | 51 | ) -> None:
|
47 | 52 | # Given
|
48 |
| - session_mock = mocker.patch("requests.Session") |
49 |
| - session_mock.get.return_value = mock.MagicMock(status_code=500) |
| 53 | + responses.add(method="GET", url=flagsmith.environment_url, body=environment_json) |
50 | 54 | flagsmith = Flagsmith(
|
51 | 55 | environment_key=server_api_key,
|
52 | 56 | enable_local_evaluation=True,
|
53 | 57 | environment_refresh_interval_seconds=0.1,
|
54 | 58 | )
|
| 59 | + |
| 60 | + responses.add(method="GET", url=flagsmith.environment_url, status=500) |
55 | 61 | polling_manager = flagsmith.environment_data_polling_manager_thread
|
56 | 62 |
|
57 | 63 | # Then
|
58 | 64 | assert polling_manager.is_alive()
|
59 | 65 | polling_manager.stop()
|
60 | 66 |
|
61 | 67 |
|
| 68 | +@responses.activate() |
62 | 69 | def test_polling_manager_is_resilient_to_request_exceptions(
|
63 |
| - mocker: MockerFixture, server_api_key: str |
| 70 | + flagsmith: Flagsmith, |
| 71 | + environment_json: str, |
| 72 | + mocker: MockerFixture, |
| 73 | + server_api_key: str, |
64 | 74 | ) -> None:
|
65 | 75 | # Given
|
66 |
| - session_mock = mocker.patch("requests.Session") |
67 |
| - session_mock.get.side_effect = requests.RequestException() |
| 76 | + responses.add(method="GET", url=flagsmith.environment_url, body=environment_json) |
68 | 77 | flagsmith = Flagsmith(
|
69 | 78 | environment_key=server_api_key,
|
70 | 79 | enable_local_evaluation=True,
|
71 | 80 | environment_refresh_interval_seconds=0.1,
|
72 | 81 | )
|
| 82 | + |
| 83 | + responses.add( |
| 84 | + method="GET", |
| 85 | + url=flagsmith.environment_url, |
| 86 | + body=requests.RequestException("Some exception"), |
| 87 | + status=500, |
| 88 | + ) |
73 | 89 | polling_manager = flagsmith.environment_data_polling_manager_thread
|
74 | 90 |
|
75 | 91 | # Then
|
|
0 commit comments