Тестирование защищенного представления - обработка ответа PermissionDenied - PullRequest
0 голосов
/ 22 апреля 2019

Я пытаюсь проверить защищенный вид. Неаутентифицированные пользователи перенаправляются на страницу входа. Когда я запускаю тест, он поднимает django.cose.exceptions.PermissionDenied, что нормально, но как я могу написать его, не получая ошибки, и как я могу проверить правильность перенаправления?

Вот что я сделал.


class TestProtectedRegistrationListView:
    """
    Verify registration views are protected from unauthenticated access.
    """

    def test_access_url(
        self, user: settings.AUTH_USER_MODEL, request_factory: RequestFactory
    ):
        view = RegistrationListView.as_view()
        request = request_factory.get("/admin_staff/registrations")
        request.user = user
        resp = view(request)
        assert resp == PermissionDenied

1 Ответ

0 голосов
/ 25 апреля 2019

Вот решение, которое заинтересовало (справедливо предложенное @wencakisa):


def test_authenticated_non_staff(self, rf):
    req = rf.get(reverse("dashboard.staff:lang-create"))
    user = UserFactory()
    assert False is user.is_staff
    req.user = user

    with pytest.raises(PermissionDenied):
        views.LangCreateView.as_view()(req)

Для воспоминаний и для ответа на мой собственный глупый комментарий, тестирование ответа status_codeне имеет никакого смысла, так как мы подняли исключение исключений.

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