|
1 | 1 | import time
|
2 | 2 | from unittest import mock
|
3 | 3 |
|
| 4 | +import requests |
| 5 | + |
| 6 | +from flagsmith import Flagsmith |
4 | 7 | from flagsmith.polling_manager import EnvironmentDataPollingManager
|
5 | 8 |
|
6 | 9 |
|
@@ -35,3 +38,35 @@ def test_polling_manager_calls_update_environment_on_each_refresh():
|
35 | 38 | # for each subsequent refresh
|
36 | 39 | assert flagsmith.update_environment.call_count == 3
|
37 | 40 | polling_manager.stop()
|
| 41 | + |
| 42 | + |
| 43 | +def test_polling_manager_is_resilient_to_api_errors(mocker, server_api_key): |
| 44 | + # Given |
| 45 | + session_mock = mocker.patch("requests.Session") |
| 46 | + session_mock.get.return_value = mock.MagicMock(status_code=500) |
| 47 | + flagsmith = Flagsmith( |
| 48 | + environment_key=server_api_key, |
| 49 | + enable_local_evaluation=True, |
| 50 | + environment_refresh_interval_seconds=0.1, |
| 51 | + ) |
| 52 | + polling_manager = flagsmith.environment_data_polling_manager_thread |
| 53 | + |
| 54 | + # Then |
| 55 | + assert polling_manager.is_alive() |
| 56 | + polling_manager.stop() |
| 57 | + |
| 58 | + |
| 59 | +def test_polling_manager_is_resilient_to_request_exceptions(mocker, server_api_key): |
| 60 | + # Given |
| 61 | + session_mock = mocker.patch("requests.Session") |
| 62 | + session_mock.get.side_effect = requests.RequestException() |
| 63 | + flagsmith = Flagsmith( |
| 64 | + environment_key=server_api_key, |
| 65 | + enable_local_evaluation=True, |
| 66 | + environment_refresh_interval_seconds=0.1, |
| 67 | + ) |
| 68 | + polling_manager = flagsmith.environment_data_polling_manager_thread |
| 69 | + |
| 70 | + # Then |
| 71 | + assert polling_manager.is_alive() |
| 72 | + polling_manager.stop() |
0 commit comments