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:
Tom Carrio 2022-12-27 21:40:20 -05:00 committed by GitHub
parent 3e2c10212a
commit 9276d35798
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 14 deletions

View File

@ -2,18 +2,15 @@ import typing
from open_feature.exception.exceptions import GeneralError
from open_feature.open_feature_client import OpenFeatureClient
from open_feature.provider.no_op_provider import NoOpProvider
from open_feature.provider.provider import AbstractProvider
_provider: typing.Optional[AbstractProvider] = None
_provider: AbstractProvider = NoOpProvider()
def get_client(
name: typing.Optional[str] = None, version: typing.Optional[str] = None
) -> 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)

View File

@ -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
def test_should_raise_exception_with_nop_client():
def test_should_not_raise_exception_with_noop_client():
# Given
# No provider has been set
# When
with pytest.raises(GeneralError) as ge:
get_client()
client = get_client(name="Default Provider", version="1.0")
# Then
assert ge.value
assert (
ge.value.error_message
== "Provider not set. Call set_provider before using get_client"
)
assert ge.value.error_code == ErrorCode.GENERAL
assert client.name == "Default Provider"
assert client.version == "1.0"
assert isinstance(client.provider, NoOpProvider)
def test_should_return_open_feature_client_when_configured_correctly():