From a49e697e45a0c7a678a852f0c9215bd7a3fa24bf Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sat, 4 Jun 2022 21:09:37 -0400 Subject: [PATCH 1/3] Add test capturing need for an alternate keyring with an alternate keychain. --- tests/backends/test_macOS.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/backends/test_macOS.py b/tests/backends/test_macOS.py index 5cbbad6a..4a9c9ec9 100644 --- a/tests/backends/test_macOS.py +++ b/tests/backends/test_macOS.py @@ -12,3 +12,9 @@ class Test_macOSKeychain(BackendBasicTests): def init_keyring(self): return macOS.Keyring() + + @pytest.mark.xfail + def test_alternate_keychain(self): + alt = self.keyring.with_keychain('abcd') + assert alt.keychain == 'abcd' + assert self.keyring.keychain is None From 4a1be857340e511e86db70a8ecb6d128eb3425f1 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sat, 4 Jun 2022 21:17:44 -0400 Subject: [PATCH 2/3] Add support for getting another Keyring with an alternate keychain. Fixes #579. --- keyring/backends/macOS/__init__.py | 5 +++++ tests/backends/test_macOS.py | 3 +-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/keyring/backends/macOS/__init__.py b/keyring/backends/macOS/__init__.py index ca91bc98..e69b6ae9 100644 --- a/keyring/backends/macOS/__init__.py +++ b/keyring/backends/macOS/__init__.py @@ -66,3 +66,8 @@ def delete_password(self, service, username): raise PasswordDeleteError( "Can't delete password in keychain: " "{}".format(e) ) + + def with_keychain(self, keychain): + alt = Keyring() + alt.keychain = keychain + return alt diff --git a/tests/backends/test_macOS.py b/tests/backends/test_macOS.py index 4a9c9ec9..2965c478 100644 --- a/tests/backends/test_macOS.py +++ b/tests/backends/test_macOS.py @@ -13,8 +13,7 @@ class Test_macOSKeychain(BackendBasicTests): def init_keyring(self): return macOS.Keyring() - @pytest.mark.xfail def test_alternate_keychain(self): alt = self.keyring.with_keychain('abcd') assert alt.keychain == 'abcd' - assert self.keyring.keychain is None + assert self.keyring.keychain != 'abcd' From faacdb62700c0ea30b2baccc1818fc50d6815b8d Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sat, 4 Jun 2022 21:19:30 -0400 Subject: [PATCH 3/3] Update changelog. --- CHANGES.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES.rst b/CHANGES.rst index 500626c4..a7b94d5b 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -2,6 +2,8 @@ v23.6.0 ------- * #575: Only require ``importlib_metadata`` on older Pythons. +* #579: Add ``.with_keychain`` method on macOS for easy reference + to alternate keychains. v23.5.1 -------