%PDF- %PDF-
Direktori : /usr/lib/python3/dist-packages/keyring/tests/backends/ |
Current File : //usr/lib/python3/dist-packages/keyring/tests/backends/test_kwallet.py |
import unittest from keyring.backends import kwallet from ..test_backend import BackendBasicTests @unittest.skipUnless(kwallet.DBusKeyring.viable, "KWallet5 unavailable") class DBusKWalletTestCase(BackendBasicTests, unittest.TestCase): # Remove '@' from service name as this is not supported in service names # '@' will cause troubles during migration of kwallet entries DIFFICULT_CHARS = BackendBasicTests.DIFFICULT_CHARS.replace('@', '') def init_keyring(self): return kwallet.DBusKeyring() def tearDown(self): for item in self.credentials_created: # Suppress errors, as only one pre/post migration item will be # present try: self.keyring.delete_password(*item) except BaseException: pass # TODO Remove empty folders created during tests def set_password(self, service, username, password, old_format=False): # set the password and save the result so the test runner can clean # up after if necessary. self.credentials_created.add((service, username)) if old_format: username = username + '@' + service service = 'Python' super( DBusKWalletTestCase, self).set_password( service, username, password) def check_set_get(self, service, username, password): keyring = self.keyring # for the non-existent password self.assertEqual(keyring.get_password(service, username), None) # common usage self.set_password(service, username, password, True) # re-init keyring to force migration self.keyring = keyring = self.init_keyring() ret_password = keyring.get_password(service, username) self.assertEqual( ret_password, password, "Incorrect password for username: '%s' " "on service: '%s'. '%s' != '%s'" % (service, username, ret_password, password)) # for the empty password self.set_password(service, username, "", True) # re-init keyring to force migration self.keyring = keyring = self.init_keyring() ret_password = keyring.get_password(service, username) self.assertEqual( ret_password, "", "Incorrect password for username: '%s' " "on service: '%s'. '%s' != '%s'" % (service, username, ret_password, "")) ret_password = keyring.get_password('Python', username + '@' + service) self.assertEqual( ret_password, None, "Not 'None' password returned for username: '%s' " "on service: '%s'. '%s' != '%s'. Passwords from old " "folder should be deleted during migration." % (service, username, ret_password, None)) @unittest.skipUnless(kwallet.DBusKeyringKWallet4.viable, "KWallet4 unavailable") class DBusKWallet4TestCase(DBusKWalletTestCase): def init_keyring(self): return kwallet.DBusKeyringKWallet4()