|
@@ -1,112 +1,85 @@
|
|
|
-from types import ModuleType
|
|
|
-
|
|
|
from django.test import TestCase
|
|
|
|
|
|
from misago.acl.providers import PermissionProviders
|
|
|
from misago.conf import settings
|
|
|
|
|
|
|
|
|
-class TestType(object):
|
|
|
- pass
|
|
|
-
|
|
|
-
|
|
|
class PermissionProvidersTests(TestCase):
|
|
|
- def test_initialization(self):
|
|
|
- """providers manager is lazily initialized"""
|
|
|
+ def test_providers_are_not_loaded_on_container_init(self):
|
|
|
providers = PermissionProviders()
|
|
|
|
|
|
- self.assertTrue(providers._initialized is False)
|
|
|
- self.assertTrue(not providers._providers)
|
|
|
- self.assertTrue(not providers._providers_dict)
|
|
|
-
|
|
|
- # public api errors on non-loaded object
|
|
|
- with self.assertRaises(AssertionError):
|
|
|
- providers.get_obj_type_annotators(TestType())
|
|
|
-
|
|
|
- with self.assertRaises(AssertionError):
|
|
|
- providers.get_obj_type_serializers(TestType())
|
|
|
-
|
|
|
- with self.assertRaises(AssertionError):
|
|
|
- providers.list()
|
|
|
-
|
|
|
- self.assertTrue(providers._initialized is False)
|
|
|
- self.assertTrue(not providers._providers)
|
|
|
- self.assertTrue(not providers._providers_dict)
|
|
|
+ assert not providers._initialized
|
|
|
+ assert not providers._providers
|
|
|
+ assert not providers._annotators
|
|
|
+ assert not providers._user_acl_serializers
|
|
|
|
|
|
- # load initializes providers
|
|
|
+ def test_container_loads_providers(self):
|
|
|
providers = PermissionProviders()
|
|
|
providers.load()
|
|
|
|
|
|
- self.assertTrue(providers._initialized)
|
|
|
- self.assertTrue(providers._providers)
|
|
|
- self.assertTrue(providers._providers_dict)
|
|
|
+ assert providers._providers
|
|
|
+ assert providers._annotators
|
|
|
+ assert providers._user_acl_serializers
|
|
|
|
|
|
- def test_list(self):
|
|
|
- """providers manager list() returns iterable of tuples"""
|
|
|
+ def test_loading_providers_second_time_raises_runtime_error(self):
|
|
|
providers = PermissionProviders()
|
|
|
-
|
|
|
- # providers.list() throws before loading providers
|
|
|
- with self.assertRaises(AssertionError):
|
|
|
- providers.list()
|
|
|
-
|
|
|
providers.load()
|
|
|
|
|
|
- providers_list = providers.list()
|
|
|
+ with self.assertRaises(RuntimeError):
|
|
|
+ providers.load()
|
|
|
|
|
|
+ def test_container_returns_list_of_providers(self):
|
|
|
+ providers = PermissionProviders()
|
|
|
+ providers.load()
|
|
|
+
|
|
|
providers_setting = settings.MISAGO_ACL_EXTENSIONS
|
|
|
- self.assertEqual(len(providers_list), len(providers_setting))
|
|
|
-
|
|
|
- for extension, module in providers_list:
|
|
|
- self.assertTrue(isinstance(extension, str))
|
|
|
- self.assertEqual(type(module), ModuleType)
|
|
|
+ self.assertEqual(len(providers.list()), len(providers_setting))
|
|
|
|
|
|
- def test_dict(self):
|
|
|
- """providers manager dict() returns dict"""
|
|
|
+ def test_container_returns_dict_of_providers(self):
|
|
|
providers = PermissionProviders()
|
|
|
+ providers.load()
|
|
|
+
|
|
|
+ providers_setting = settings.MISAGO_ACL_EXTENSIONS
|
|
|
+ self.assertEqual(len(providers.dict()), len(providers_setting))
|
|
|
|
|
|
- # providers.dict() throws before loading providers
|
|
|
+ def test_accessing_providers_list_before_load_raises_assertion_error(self):
|
|
|
+ providers = PermissionProviders()
|
|
|
+ with self.assertRaises(AssertionError):
|
|
|
+ providers.list()
|
|
|
+
|
|
|
+ def test_accessing_providers_dict_before_load_raises_assertion_error(self):
|
|
|
+ providers = PermissionProviders()
|
|
|
with self.assertRaises(AssertionError):
|
|
|
providers.dict()
|
|
|
|
|
|
- providers.load()
|
|
|
-
|
|
|
- providers_dict = providers.dict()
|
|
|
-
|
|
|
- providers_setting = settings.MISAGO_ACL_EXTENSIONS
|
|
|
- self.assertEqual(len(providers_dict), len(providers_setting))
|
|
|
+ def test_getter_returns_registered_type_annotator(self):
|
|
|
+ class TestType(object):
|
|
|
+ pass
|
|
|
|
|
|
- for extension, module in providers_dict.items():
|
|
|
- self.assertTrue(isinstance(extension, str))
|
|
|
- self.assertEqual(type(module), ModuleType)
|
|
|
|
|
|
- def test_annotators(self):
|
|
|
- """its possible to register and get annotators"""
|
|
|
- def mock_annotator(*args):
|
|
|
+ def test_annotator():
|
|
|
pass
|
|
|
+
|
|
|
|
|
|
providers = PermissionProviders()
|
|
|
- providers.acl_annotator(TestType, mock_annotator)
|
|
|
+ providers.acl_annotator(TestType, test_annotator)
|
|
|
providers.load()
|
|
|
|
|
|
- # providers.acl_annotator() throws after loading providers
|
|
|
- with self.assertRaises(AssertionError):
|
|
|
- providers.acl_annotator(TestType, mock_annotator)
|
|
|
+ assert test_annotator in providers.get_obj_type_annotators(TestType())
|
|
|
|
|
|
- annotators_list = providers.get_obj_type_annotators(TestType())
|
|
|
- self.assertEqual(annotators_list[0], mock_annotator)
|
|
|
+ def test_container_returns_list_of_user_acl_serializers(self):
|
|
|
+ providers = PermissionProviders()
|
|
|
+ providers.load()
|
|
|
|
|
|
- def test_serializers(self):
|
|
|
- """its possible to register and get annotators"""
|
|
|
- def mock_serializer(*args):
|
|
|
+ assert providers.get_user_acl_serializers()
|
|
|
+
|
|
|
+ def test_getter_returns_registered_user_acl_serializer(self):
|
|
|
+ def test_user_acl_serializer():
|
|
|
pass
|
|
|
|
|
|
+
|
|
|
providers = PermissionProviders()
|
|
|
- providers.acl_serializer(TestType, mock_serializer)
|
|
|
+ providers.user_acl_serializer(test_user_acl_serializer)
|
|
|
providers.load()
|
|
|
|
|
|
- # providers.acl_serializer() throws after loading providers
|
|
|
- with self.assertRaises(AssertionError):
|
|
|
- providers.acl_serializer(TestType, mock_serializer)
|
|
|
-
|
|
|
- serializers_list = providers.get_obj_type_serializers(TestType())
|
|
|
- self.assertEqual(serializers_list[0], mock_serializer)
|
|
|
+ assert test_user_acl_serializer in providers.get_user_acl_serializers()
|