summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Heimes <cheimes@redhat.com>2016-03-04 23:54:04 +0100
committerChristian Heimes <cheimes@redhat.com>2016-03-04 23:55:22 +0100
commit9e78f981e923c879033c26eebad0cb803d66b8d9 (patch)
treeb3239148d894136b4b3ad8ccd6c4bed3f5c49bb2
parentafb989113ee3816396a2c0f95ac1579b3a4c42c6 (diff)
downloadpki-9e78f981e923c879033c26eebad0cb803d66b8d9.tar.gz
pki-9e78f981e923c879033c26eebad0cb803d66b8d9.tar.xz
pki-9e78f981e923c879033c26eebad0cb803d66b8d9.zip
Make PKIInstance and PKISubsystem hashable
The upgrade uses instance and subsystem as keys for dicts.
-rw-r--r--base/server/python/pki/server/__init__.py6
-rw-r--r--tests/python/server/test_server.py15
2 files changed, 15 insertions, 6 deletions
diff --git a/base/server/python/pki/server/__init__.py b/base/server/python/pki/server/__init__.py
index abcce7167..114a6e461 100644
--- a/base/server/python/pki/server/__init__.py
+++ b/base/server/python/pki/server/__init__.py
@@ -115,7 +115,8 @@ class PKISubsystem(object):
self.instance < other.instance or
self_type < other_type)
- __hash__ = None
+ def __hash__(self):
+ return hash((self.name, self.instance, self.type))
def load(self):
self.config.clear()
@@ -424,7 +425,8 @@ class PKIInstance(object):
return (self.name < other.name or
self.type < other.type)
- __hash__ = None
+ def __hash__(self):
+ return hash((self.name, self.type))
def is_valid(self):
return os.path.exists(self.conf_dir)
diff --git a/tests/python/server/test_server.py b/tests/python/server/test_server.py
index 646e6826f..af540faa0 100644
--- a/tests/python/server/test_server.py
+++ b/tests/python/server/test_server.py
@@ -36,8 +36,12 @@ class PKIServerTests(unittest.TestCase):
self.assertFalse(ca != ca)
self.assertFalse(ca == ca9)
self.assertTrue(ca != ca9)
- with self.assertRaises(TypeError):
- hash(ca)
+ d = {ca: 1, ca9: 2}
+ self.assertEqual(sorted(d), [ca9, ca])
+ d.pop(ca9)
+ self.assertEqual(sorted(d), [ca])
+ self.assertIn(ca, d)
+ self.assertNotIn(ca9, d)
def test_subsystem(self):
ca = PKIInstance('ca')
@@ -53,8 +57,11 @@ class PKIServerTests(unittest.TestCase):
self.assertTrue(casub != krasub)
self.assertFalse(ca == casub)
self.assertTrue(ca != casub)
- with self.assertRaises(TypeError):
- hash(casub)
+ d = {casub: 1, krasub: 2}
+ self.assertEqual(sorted(d), [casub, krasub])
+ self.assertIn(casub, d)
+ d.pop(casub)
+ self.assertNotIn(casub, d)
if __name__ == '__main__':