Merge 83370d814b into 32fdec1781
This commit is contained in:
commit
b64cb6a3d8
|
|
@ -1,5 +1,6 @@
|
||||||
import inspect
|
import inspect
|
||||||
import time
|
import time
|
||||||
|
import types
|
||||||
import uuid
|
import uuid
|
||||||
from concurrent.futures import ThreadPoolExecutor
|
from concurrent.futures import ThreadPoolExecutor
|
||||||
from unittest.mock import MagicMock
|
from unittest.mock import MagicMock
|
||||||
|
|
@ -242,7 +243,7 @@ def test_should_call_api_level_hooks(no_op_provider_client):
|
||||||
api_hook.after.assert_called_once()
|
api_hook.after.assert_called_once()
|
||||||
|
|
||||||
|
|
||||||
# Requirement 1.7.5
|
# Requirement 1.7.1, Requirement 1.7.3
|
||||||
def test_should_define_a_provider_status_accessor(no_op_provider_client):
|
def test_should_define_a_provider_status_accessor(no_op_provider_client):
|
||||||
# When
|
# When
|
||||||
status = no_op_provider_client.get_provider_status()
|
status = no_op_provider_client.get_provider_status()
|
||||||
|
|
@ -251,7 +252,23 @@ def test_should_define_a_provider_status_accessor(no_op_provider_client):
|
||||||
assert status == ProviderStatus.READY
|
assert status == ProviderStatus.READY
|
||||||
|
|
||||||
|
|
||||||
# Requirement 1.7.6
|
# Requirement 1.7.4
|
||||||
|
def test_provider_should_return_error_status_if_failed():
|
||||||
|
# Given
|
||||||
|
provider = NoOpProvider()
|
||||||
|
set_provider(provider)
|
||||||
|
client = get_client()
|
||||||
|
|
||||||
|
provider.emit_provider_error(ProviderEventDetails(error_code=ErrorCode.GENERAL))
|
||||||
|
|
||||||
|
# When
|
||||||
|
status = client.get_provider_status()
|
||||||
|
|
||||||
|
# Then
|
||||||
|
assert status == ProviderStatus.ERROR
|
||||||
|
|
||||||
|
|
||||||
|
# Requirement 1.7.6, Requirement 1.7.8
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_should_shortcircuit_if_provider_is_not_ready(
|
async def test_should_shortcircuit_if_provider_is_not_ready(
|
||||||
no_op_provider_client, monkeypatch
|
no_op_provider_client, monkeypatch
|
||||||
|
|
@ -281,7 +298,7 @@ async def test_should_shortcircuit_if_provider_is_not_ready(
|
||||||
spy_hook.finally_after.assert_called_once()
|
spy_hook.finally_after.assert_called_once()
|
||||||
|
|
||||||
|
|
||||||
# Requirement 1.7.7
|
# Requirement 1.7.5, Requirement 1.7.7
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_should_shortcircuit_if_provider_is_in_irrecoverable_error_state(
|
async def test_should_shortcircuit_if_provider_is_in_irrecoverable_error_state(
|
||||||
no_op_provider_client, monkeypatch
|
no_op_provider_client, monkeypatch
|
||||||
|
|
@ -311,6 +328,27 @@ async def test_should_shortcircuit_if_provider_is_in_irrecoverable_error_state(
|
||||||
spy_hook.finally_after.assert_called_once()
|
spy_hook.finally_after.assert_called_once()
|
||||||
|
|
||||||
|
|
||||||
|
# Requirement 1.7.9
|
||||||
|
def test_provider_should_return_not_ready_status_after_shutdown(monkeypatch):
|
||||||
|
# Given
|
||||||
|
provider = NoOpProvider()
|
||||||
|
set_provider(provider)
|
||||||
|
client = get_client()
|
||||||
|
|
||||||
|
def _shutdown(self) -> None:
|
||||||
|
self._status = ProviderStatus.NOT_READY
|
||||||
|
|
||||||
|
monkeypatch.setattr(provider, "shutdown", types.MethodType(_shutdown, provider))
|
||||||
|
|
||||||
|
# When
|
||||||
|
api.shutdown()
|
||||||
|
|
||||||
|
status = client.get_provider_status()
|
||||||
|
|
||||||
|
# Then
|
||||||
|
assert status == ProviderStatus.NOT_READY
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_should_run_error_hooks_if_provider_returns_resolution_with_error_code():
|
async def test_should_run_error_hooks_if_provider_returns_resolution_with_error_code():
|
||||||
# Given
|
# Given
|
||||||
|
|
@ -482,6 +520,34 @@ def test_provider_event_late_binding():
|
||||||
spy.provider_configuration_changed.assert_called_once_with(details)
|
spy.provider_configuration_changed.assert_called_once_with(details)
|
||||||
|
|
||||||
|
|
||||||
|
# Requirement 5.1.4, Requirement 5.1.5
|
||||||
|
def test_provider_event_handler_exception():
|
||||||
|
# Given
|
||||||
|
provider = NoOpProvider()
|
||||||
|
set_provider(provider)
|
||||||
|
|
||||||
|
spy = MagicMock()
|
||||||
|
|
||||||
|
client = get_client()
|
||||||
|
client.add_handler(ProviderEvent.PROVIDER_ERROR, spy.provider_error)
|
||||||
|
|
||||||
|
# When
|
||||||
|
provider.emit_provider_error(
|
||||||
|
ProviderEventDetails(error_code=ErrorCode.GENERAL, message="some_error")
|
||||||
|
)
|
||||||
|
|
||||||
|
# Then
|
||||||
|
spy.provider_error.assert_called_once_with(
|
||||||
|
EventDetails(
|
||||||
|
flags_changed=None,
|
||||||
|
message="some_error",
|
||||||
|
error_code=ErrorCode.GENERAL,
|
||||||
|
metadata={},
|
||||||
|
provider_name="No-op Provider",
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_client_handlers_thread_safety():
|
def test_client_handlers_thread_safety():
|
||||||
provider = NoOpProvider()
|
provider = NoOpProvider()
|
||||||
set_provider(provider)
|
set_provider(provider)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue