test_providers.py 2.8 KB

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