summaryrefslogtreecommitdiffstats
path: root/keystone/tests/test_drivers.py
diff options
context:
space:
mode:
Diffstat (limited to 'keystone/tests/test_drivers.py')
-rw-r--r--keystone/tests/test_drivers.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/keystone/tests/test_drivers.py b/keystone/tests/test_drivers.py
new file mode 100644
index 00000000..c83c1a89
--- /dev/null
+++ b/keystone/tests/test_drivers.py
@@ -0,0 +1,57 @@
+import inspect
+import unittest2 as unittest
+
+from keystone import assignment
+from keystone import catalog
+from keystone import exception
+from keystone import identity
+from keystone import policy
+from keystone import token
+
+
+class TestDrivers(unittest.TestCase):
+ """Asserts that drivers are written as expected.
+
+ Public methods on drivers should raise keystone.exception.NotImplemented,
+ which renders to the API as a HTTP 501 Not Implemented.
+
+ """
+
+ def assertMethodNotImplemented(self, f):
+ """Asserts that a given method raises 501 Not Implemented.
+
+ Provides each argument with a value of None, ignoring optional
+ arguments.
+ """
+ args = inspect.getargspec(f).args
+ args.remove('self')
+ kwargs = dict(zip(args, [None] * len(args)))
+ with self.assertRaises(exception.NotImplemented):
+ f(**kwargs)
+
+ def assertInterfaceNotImplemented(self, interface):
+ """Public methods on an interface class should not be implemented."""
+ for name in dir(interface):
+ method = getattr(interface, name)
+ if name[0] != '_' and callable(method):
+ self.assertMethodNotImplemented(method)
+
+ def test_assignment_driver_unimplemented(self):
+ interface = assignment.Driver()
+ self.assertInterfaceNotImplemented(interface)
+
+ def test_catalog_driver_unimplemented(self):
+ interface = catalog.Driver()
+ self.assertInterfaceNotImplemented(interface)
+
+ def test_identity_driver_unimplemented(self):
+ interface = identity.Driver()
+ self.assertInterfaceNotImplemented(interface)
+
+ def test_policy_driver_unimplemented(self):
+ interface = policy.Driver()
+ self.assertInterfaceNotImplemented(interface)
+
+ def test_token_driver_unimplemented(self):
+ interface = token.Driver()
+ self.assertInterfaceNotImplemented(interface)