Unittest чувствительный_пост_параметр декоратор в представлении Джанго - PullRequest
0 голосов
/ 08 мая 2018

У меня есть возможность создавать новых пользователей в моем проекте django.

Я применяю декоратор @sensitive_post_parameters к этому представлению, чтобы убедиться, что пароль не зарегистрирован, если есть необработанное исключение или что-то подобное (как указано в комментариях в исходном коде https://docs.djangoproject.com/en/2.0/_modules/django/views/decorators/debug/).

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

Мне известно, что поскольку декоратор применяется к моей функции, я не могу проверить его непосредственно из тестов представления.

Но, например, с помощью декоратора @login_required я могу проверить его эффекты с помощью assertRedirects (как описано здесь Как проверить, украшен ли вид "login_required" (Django) ).

Я искал способ сделать это, но я не могу найти тот, который работает.

Я думал о чем-то вроде этого:

def test_senstive_post_parameters(self):
    request = RequestFactory().post('create_user', data={})
    my_sensitive_parameters = ['password']
    self.assertEqual(
        request.sensitive_post_parameters,
        my_senstive_parameters
    )

но это дает мне

AttributeError: 'WSGIRequest' object has no attribute 'sensitive_post_parameters'

Любая помощь будет принята с благодарностью. Даже это говорит мне, что я не должен пытаться проверить это, хотя мне бы очень хотелось, так как это кажется важным поведением, которое я должен удостовериться, что оно остается в моем коде, так как оно позже модифицируется.

1 Ответ

0 голосов
/ 08 мая 2018

Вы создали request, используя RequestFactory, но на самом деле вы его не использовали. Чтобы проверить эффект вашего представления, вам нужно импортировать представление и вызвать его.

from myapp.views import create_user

def test_senstive_post_parameters(self):
    request = RequestFactory().post('create_user', data={})
    response = create_user(request)
    my_sensitive_parameters = ['password']
    self.assertEqual(
        request.sensitive_post_parameters,
        my_senstive_parameters
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...