feat: defaults to NoOpProvider (#66)
* feat: defaults to NoOpProvider ensures a provider will always be returned Signed-off-by: Tom Carrio <tom@carrio.dev> * test: update for default provider being safe with default Signed-off-by: Tom Carrio <tom@carrio.dev> * chore: fix misspelling in test case Co-authored-by: Michael Beemer <beeme1mr@users.noreply.github.com> Signed-off-by: Tom Carrio <tom@carrio.dev> Signed-off-by: Tom Carrio <tom@carrio.dev> Co-authored-by: Michael Beemer <beeme1mr@users.noreply.github.com>
This commit is contained in:
parent
3e2c10212a
commit
9276d35798
|
|
@ -2,18 +2,15 @@ import typing
|
||||||
|
|
||||||
from open_feature.exception.exceptions import GeneralError
|
from open_feature.exception.exceptions import GeneralError
|
||||||
from open_feature.open_feature_client import OpenFeatureClient
|
from open_feature.open_feature_client import OpenFeatureClient
|
||||||
|
from open_feature.provider.no_op_provider import NoOpProvider
|
||||||
from open_feature.provider.provider import AbstractProvider
|
from open_feature.provider.provider import AbstractProvider
|
||||||
|
|
||||||
_provider: typing.Optional[AbstractProvider] = None
|
_provider: AbstractProvider = NoOpProvider()
|
||||||
|
|
||||||
|
|
||||||
def get_client(
|
def get_client(
|
||||||
name: typing.Optional[str] = None, version: typing.Optional[str] = None
|
name: typing.Optional[str] = None, version: typing.Optional[str] = None
|
||||||
) -> OpenFeatureClient:
|
) -> OpenFeatureClient:
|
||||||
if _provider is None:
|
|
||||||
raise GeneralError(
|
|
||||||
error_message="Provider not set. Call set_provider before using get_client"
|
|
||||||
)
|
|
||||||
return OpenFeatureClient(name=name, version=version, provider=_provider)
|
return OpenFeatureClient(name=name, version=version, provider=_provider)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,18 +6,16 @@ from open_feature.open_feature_api import get_client, get_provider, set_provider
|
||||||
from open_feature.provider.no_op_provider import NoOpProvider
|
from open_feature.provider.no_op_provider import NoOpProvider
|
||||||
|
|
||||||
|
|
||||||
def test_should_raise_exception_with_nop_client():
|
def test_should_not_raise_exception_with_noop_client():
|
||||||
# Given
|
# Given
|
||||||
|
# No provider has been set
|
||||||
# When
|
# When
|
||||||
with pytest.raises(GeneralError) as ge:
|
client = get_client(name="Default Provider", version="1.0")
|
||||||
get_client()
|
|
||||||
# Then
|
# Then
|
||||||
assert ge.value
|
assert client.name == "Default Provider"
|
||||||
assert (
|
assert client.version == "1.0"
|
||||||
ge.value.error_message
|
assert isinstance(client.provider, NoOpProvider)
|
||||||
== "Provider not set. Call set_provider before using get_client"
|
|
||||||
)
|
|
||||||
assert ge.value.error_code == ErrorCode.GENERAL
|
|
||||||
|
|
||||||
|
|
||||||
def test_should_return_open_feature_client_when_configured_correctly():
|
def test_should_return_open_feature_client_when_configured_correctly():
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue