Skip to content

Commit

Permalink
feat: reset default provider on clear_providers and add tests
Browse files Browse the repository at this point in the history
Signed-off-by: Federico Bond <federicobond@gmail.com>
  • Loading branch information
federicobond committed Feb 18, 2024
1 parent dde7bb1 commit 652d418
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 2 deletions.
4 changes: 2 additions & 2 deletions openfeature/provider/registry.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,9 @@ def get_default_provider(self) -> FeatureProvider:
return self._default_provider

def clear_providers(self) -> None:
for provider in self._providers.values():
provider.shutdown()
self.shutdown()
self._providers.clear()
self._default_provider = NoOpProvider()

def shutdown(self) -> None:
for provider in {self._default_provider, *self._providers.values()}:
Expand Down
18 changes: 18 additions & 0 deletions tests/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from openfeature.api import (
add_hooks,
clear_hooks,
clear_providers,
get_client,
get_evaluation_context,
get_hooks,
Expand Down Expand Up @@ -210,3 +211,20 @@ def test_shutdown_should_shutdown_every_registered_provider_once():
# Then
provider_1.shutdown.assert_called_once()
provider_2.shutdown.assert_called_once()


def test_clear_providers_shutdowns_every_provider_and_resets_default_provider():
# Given
provider_1 = MagicMock(spec=FeatureProvider)
provider_2 = MagicMock(spec=FeatureProvider)
set_provider(provider_1)
set_provider(provider_2, "foo")
set_provider(provider_2, "bar")

# When
clear_providers()

# Then
provider_1.shutdown.assert_called_once()
provider_2.shutdown.assert_called_once()
assert isinstance(get_client().provider, NoOpProvider)

0 comments on commit 652d418

Please sign in to comment.