From ca38ef495cbb0af0d06957ed7eeb2b14ac4c5c7c Mon Sep 17 00:00:00 2001 From: real-yfprojects <62463991+real-yfprojects@users.noreply.github.com> Date: Sun, 3 Sep 2023 10:41:31 +0200 Subject: [PATCH] WIP erroneous backend tests --- tests/conftest.py | 18 ++++++++++++++++++ tests/utils/test_password_manager.py | 6 ++++++ 2 files changed, 24 insertions(+) diff --git a/tests/conftest.py b/tests/conftest.py index 0fcb1b1e055..4692d25f1bf 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -133,6 +133,19 @@ def delete_password(self, service: str, username: str | None) -> None: raise KeyringLocked() +from keyring import backends +from keyring.errors import KeyringError + + +class ErroneousBackend(backends.fail.Keyring): + @classmethod + def priority(cls) -> int: + return 42 + + def get_credential(self, service: str, username: str | None) -> Any: + raise KeyringError() + + @pytest.fixture() def dummy_keyring() -> DummyBackend: return DummyBackend() @@ -155,6 +168,11 @@ def with_locked_keyring() -> None: keyring.set_keyring(LockedBackend()) # type: ignore[no-untyped-call] +@pytest.fixture() +def with_erroneous_keyring() -> None: + keyring.set_keyring(ErroneousBackend()) # type: ignore[no-untyped-call] + + @pytest.fixture() def with_null_keyring() -> None: from keyring.backends.null import Keyring diff --git a/tests/utils/test_password_manager.py b/tests/utils/test_password_manager.py index c03470291b1..ac634000a03 100644 --- a/tests/utils/test_password_manager.py +++ b/tests/utils/test_password_manager.py @@ -235,6 +235,12 @@ def test_locked_keyring_should_be_available(with_locked_keyring: None) -> None: assert key_ring.is_available() +def test_erroneous_keyring_should_be_available(with_erroneous_keyring: None) -> None: + key_ring = PoetryKeyring("poetry") + + assert key_ring.is_available() + + def test_get_http_auth_from_environment_variables( environ: None, config: Config ) -> None: