Source code for permission.tests.test_decorators.utils

# coding=utf-8
"""
"""
__author__ = 'Alisue <lambdalisue@hashnote.net>'
from django.db.models import Model
from django.http import HttpRequest
from django.http import HttpResponse
from permission.handlers import PermissionHandler
from permission.tests.compatibility import MagicMock


[docs]def create_mock_class(name, base, instance=None): instance = instance or MagicMock() mock_class = MagicMock(name=name, return_value=instance) mock_class.__bases__ = (type, base) mock_class.__class__ = type return mock_class
[docs]def create_mock_handler(): instance = MagicMock(**{ 'has_perm.return_value': False, 'get_permissions.return_value': [ 'permission.add_article', ], }) handler = create_mock_class('MockPermissionHandler', base=PermissionHandler, instance=instance) return handler
[docs]def create_mock_request(mock_permission_handler): request = MagicMock(spec=HttpRequest) request.build_absolute_uri = MagicMock(return_value="/") request.META = MagicMock() request.user = MagicMock(**{ 'is_active.return_value': True, 'is_authenticated.return_value': True, 'has_perm.side_effect': mock_permission_handler.has_perm, }) return request
[docs]def create_mock_view_func(): response = MagicMock(spec=HttpResponse) function = MagicMock(return_value=response) return function
[docs]def create_mock_view_class(view_func): from django.views.generic import View view_class = type('MockView', (View,), {}) view_class.dispatch = view_func return view_class
[docs]def create_mock_model(): instance = MagicMock() model = MagicMock(name='MockModel') model.__bases__ = (type,) model.__class__ = type model._meta = MagicMock(**{ 'abstract': False, }) return model
[docs]def create_mock_queryset(obj): from django.db.models.query import QuerySet from django.core.exceptions import ObjectDoesNotExist def get_side_effect(*args, **kwargs): if kwargs.get('pk', None) == 1: return obj if kwargs.get('title', None) == 'permission_test_article1': return obj if kwargs.get('title__exact', None) == 'permission_test_article1': return obj raise queryset.model.DoesNotEixst queryset = MagicMock(spec=QuerySet, **{ 'get.side_effect': get_side_effect, }) queryset.model = MagicMock() queryset.model.DoesNotEixst = ObjectDoesNotExist queryset.model._meta = MagicMock(object_name='MockQuerysetModel') return queryset