|
1 | 1 | import mock |
2 | 2 | import pytest |
3 | 3 |
|
4 | | -from hcloud.actions.client import ActionsClient |
| 4 | +from hcloud.actions.client import ActionsClient, BoundAction |
| 5 | +from hcloud.actions.domain import Action, ActionFailedException, ActionTimeoutException |
| 6 | + |
| 7 | + |
| 8 | +class TestBoundAction(object): |
| 9 | + @pytest.fixture() |
| 10 | + def bound_running_action(self, mocked_requests): |
| 11 | + return BoundAction(client=ActionsClient(client=mocked_requests), data=dict(id=14, status=Action.STATUS_RUNNING)) |
| 12 | + |
| 13 | + def test_wait_until_finished(self, bound_running_action, mocked_requests, running_action, successfully_action): |
| 14 | + mocked_requests.request.side_effect = [running_action, successfully_action] |
| 15 | + bound_running_action.wait_until_finished() |
| 16 | + assert bound_running_action.status == "success" |
| 17 | + assert mocked_requests.request.call_count == 2 |
| 18 | + |
| 19 | + def test_wait_until_finished_with_error(self, bound_running_action, mocked_requests, running_action, failed_action): |
| 20 | + mocked_requests.request.side_effect = [running_action, failed_action] |
| 21 | + with pytest.raises(ActionFailedException) as exception_info: |
| 22 | + bound_running_action.wait_until_finished() |
| 23 | + |
| 24 | + assert bound_running_action.status == "error" |
| 25 | + assert exception_info.value.action.id == 2 |
| 26 | + |
| 27 | + def test_wait_until_finished_max_retries(self, bound_running_action, mocked_requests, running_action, successfully_action): |
| 28 | + mocked_requests.request.side_effect = [running_action, running_action, successfully_action] |
| 29 | + with pytest.raises(ActionTimeoutException) as exception_info: |
| 30 | + bound_running_action.wait_until_finished(max_retries=1) |
| 31 | + |
| 32 | + assert bound_running_action.status == "running" |
| 33 | + assert exception_info.value.action.id == 2 |
| 34 | + assert mocked_requests.request.call_count == 1 |
5 | 35 |
|
6 | 36 |
|
7 | 37 | class TestActionsClient(object): |
|
0 commit comments