django tests - Проверка входа в систему и разрешений - PullRequest
0 голосов
/ 24 августа 2018

У меня есть следующие настройки: у меня есть представление и две возможные группы разрешений. Я хочу проверить, достижимо ли мое представление во всех возможных сценариях. Значение:

  • Не авторизован
  • Вы вошли в систему с неправильной группой
  • Вы вошли в систему с правильной группой

Мой контроль разрешений работает через Mixin:

class PermissionMixin(object):
    group_list = None

    def in_groups(self, u):
        if u.is_authenticated():
            if u.is_superuser or bool(u.groups.filter(name__in=self.group_list)):
                return True
        return False

    def dispatch(self, request, *args, **kwargs):
        if self.in_groups(request.user):
            return super(PermissionMixin, self).dispatch(request, *args, **kwargs)
        return render(request, '403.html', status=403)

Мои URL выглядят так:

url(r'^my-view/$', login_required(views.MyView.as_view()), name='my-view-view')

Когда я пытаюсь использовать тест RequestFactory, я всегда получаю статус 200 вместо 403 oder 302 (перенаправление на страницу входа):

self.factory = RequestFactory()
request = self.factory.get(reverse('my-view'))
request.user = AnonymousUser()
response = MyView.as_view()(request)
self.assertEqual(response.status_code, 302)

Когда я пытаюсь Client(), это работает, но обработка запроса занимает пару секунд. Когда я хочу проверить все свои представления, я хочу покончить с собой, ожидая CI-конвейера.

Есть идеи, почему RequestFactory работает некорректно? Или как я могу решить мою проблему?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...