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.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)

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 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():