Source code for permission.tests.test_utils.test_handlers

# coding=utf-8
"""
"""
__author__ = 'Alisue <lambdalisue@hashnote.net>'
from django.test import TestCase
from permission.tests.compatibility import MagicMock
from permission.tests.compatibility import override_settings
from permission.handlers import PermissionHandler
from permission.utils.handlers import PermissionHandlerRegistry

@override_settings(
    PERMISSION_DEFAULT_PERMISSION_HANDLER=PermissionHandler
)
[docs]class PermissionUtilsHandlersTestCase(TestCase):
[docs] def setUp(self): self.registry = PermissionHandlerRegistry() self.model = MagicMock() self.model._meta = MagicMock() self.model._meta.abstract = False self.handler = PermissionHandler
[docs] def test_register(self): self.registry.register(self.model, self.handler) self.assertTrue(self.model in self.registry._registry) self.assertTrue(isinstance(self.registry._registry[self.model], self.handler))
[docs] def test_register_without_specifing_handler(self): self.registry.register(self.model) self.assertTrue(self.model in self.registry._registry) self.assertTrue(isinstance(self.registry._registry[self.model], self.handler))
[docs] def test_register_with_abstract_model(self): from django.core.exceptions import ImproperlyConfigured abstract_model = MagicMock() abstract_model._meta = MagicMock() abstract_model._meta.abstract = True self.assertRaises(ImproperlyConfigured, self.registry.register, abstract_model, self.handler)
[docs] def test_register_duplicate(self): self.registry.register(self.model, self.handler) self.assertRaises(KeyError, self.registry.register, self.model, self.handler)
[docs] def test_register_permission_handler_instance(self): handler_instance = self.handler(self.model) self.assertRaises(AttributeError, self.registry.register, self.model, handler_instance)
[docs] def test_register_non_permission_handler(self): self.assertRaises(AttributeError, self.registry.register, self.model, self.__class__)
[docs] def test_unregister(self): self.registry.register(self.model, self.handler) self.registry.unregister(self.model) self.assertFalse(self.model in self.registry._registry)
[docs] def test_unregister_absence(self): self.assertRaises(KeyError, self.registry.unregister, self.model)
[docs] def test_get_handlers(self): results = self.registry.get_handlers() self.assertTrue(isinstance(results, tuple)) self.assertTrue(len(results) == 0) self.registry.register(self.model, self.handler) results = self.registry.get_handlers() self.assertTrue(isinstance(results, tuple)) self.assertTrue(len(results) == 1) self.assertTrue(isinstance(results[0], PermissionHandler))