Skip to content

Commit 23e622a

Browse files
authored
Merge pull request #3359 from ales-erjavec/fixes/credentials-test
[FIX] Use minimal keyring implementation for tests
2 parents dec74fb + 4b6fe5d commit 23e622a

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
lines changed

Orange/widgets/tests/test_credentials.py

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,42 @@
11
import unittest
22
from unittest.mock import patch
33

4+
import keyring
5+
import keyring.errors
6+
import keyring.backend
7+
48
from Orange.widgets.credentials import CredentialManager
59

610

11+
# minimal in-memory keyring implementation so the test is not dependent on
12+
# the system config/services.
13+
class Keyring(keyring.backend.KeyringBackend):
14+
priority = 0
15+
16+
def __init__(self):
17+
self.__store = {}
18+
19+
def set_password(self, service, username, password=None):
20+
self.__store[(service, username)] = password
21+
22+
def get_password(self, service, username):
23+
return self.__store.get((service, username), None)
24+
25+
def delete_password(self, service, username):
26+
try:
27+
del self.__store[service, username]
28+
except KeyError:
29+
raise keyring.errors.PasswordDeleteError()
30+
31+
732
class TestCredentialManager(unittest.TestCase):
833
def setUp(self):
34+
self._ring = keyring.get_keyring()
35+
keyring.set_keyring(Keyring())
936
self.cm = CredentialManager('Orange')
10-
self.cm.key = "Foo"
37+
38+
def tearDown(self):
39+
keyring.set_keyring(self._ring)
1140

1241
def test_credential_manager(self):
1342
cm = CredentialManager('Orange')

requirements-core.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
pip>=9.0
2-
numpy>=1.9.0
2+
numpy>=1.13.0
33
scipy>=0.16.1
44
scikit-learn>=0.18.1
55
bottleneck>=1.0.0

0 commit comments

Comments
 (0)