test_providers.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. # pylint: disable=protected-access
  2. from types import ModuleType
  3. from django.conf import settings
  4. from django.test import TestCase
  5. from django.utils import six
  6. from ..providers import PermissionProviders
  7. class TestType(object):
  8. pass
  9. class PermissionProvidersTests(TestCase):
  10. def test_initialization(self):
  11. """providers manager is lazily initialized"""
  12. providers = PermissionProviders()
  13. self.assertTrue(providers._initialized is False)
  14. self.assertTrue(not providers._providers)
  15. self.assertTrue(not providers._providers_dict)
  16. # list call initializes providers
  17. providers_list = providers.list()
  18. self.assertTrue(providers_list)
  19. self.assertTrue(providers._initialized)
  20. self.assertTrue(providers._providers)
  21. self.assertTrue(providers._providers_dict)
  22. # dict call initializes providers
  23. providers = PermissionProviders()
  24. providers_dict = providers.dict()
  25. self.assertTrue(providers_dict)
  26. self.assertTrue(providers._initialized)
  27. self.assertTrue(providers._providers)
  28. self.assertTrue(providers._providers_dict)
  29. def test_list(self):
  30. """providers manager list() returns iterable of tuples"""
  31. providers = PermissionProviders()
  32. providers_list = providers.list()
  33. providers_setting = settings.MISAGO_ACL_EXTENSIONS
  34. self.assertEqual(len(providers_list), len(providers_setting))
  35. for extension, module in providers_list:
  36. self.assertTrue(isinstance(extension, six.string_types))
  37. self.assertEqual(type(module), ModuleType)
  38. def test_dict(self):
  39. """providers manager dict() returns dict"""
  40. providers = PermissionProviders()
  41. providers_dict = providers.dict()
  42. providers_setting = settings.MISAGO_ACL_EXTENSIONS
  43. self.assertEqual(len(providers_dict), len(providers_setting))
  44. for extension, module in providers_dict.items():
  45. self.assertTrue(isinstance(extension, six.string_types))
  46. self.assertEqual(type(module), ModuleType)
  47. def test_annotators(self):
  48. """its possible to register and get annotators"""
  49. providers = PermissionProviders()
  50. def test_annotator(*args):
  51. pass
  52. providers.acl_annotator(TestType, test_annotator)
  53. annotators_list = providers.get_type_annotators(TestType())
  54. self.assertEqual(annotators_list[0], test_annotator)
  55. def test_serializers(self):
  56. """its possible to register and get annotators"""
  57. providers = PermissionProviders()
  58. def test_serializer(*args):
  59. pass
  60. providers.acl_serializer(TestType, test_serializer)
  61. serializers_list = providers.get_type_serializers(TestType())
  62. self.assertEqual(serializers_list[0], test_serializer)