Модифицируйте тест django, чтобы пройти логин django-otp - PullRequest
3 голосов
/ 24 апреля 2019

Я использую django-otp.Вот веб-вид

enter image description here

вот мой urls.py

 path('user_login/', LoginView.as_view(template_name="user_login.html",
                                          authentication_form=SimpleOTPAuthenticationForm, redirect_authenticated_user=True), name='user_login')

Вот мой .html

        <form method="POST" class="form">
            {% csrf_token %}
            {% bootstrap_form form %}
            {% buttons %}
                <button type="submit" class="btn btn-primary">Login</button>
            {% endbuttons %}
        </form>

Вот мой файл forms.py

from django_otp.forms import OTPAuthenticationForm
from django import forms


class SimpleOTPAuthenticationForm(OTPAuthenticationForm):
    otp_device = forms.CharField(required=False, widget=forms.HiddenInput)
    otp_challenge = forms.CharField(required=False, widget=forms.HiddenInput)

Файл models.py:

from django.contrib.auth.models import AbstractUser


class ProjectUser(AbstractUser):

    def __str__(self):
        return self.username

Вот текущий тест для имени пользователя и пароля

class FormTest(TestCase):
    def setUp(self):
        self.credentials = {
            'username': 'testuser',
            'password': 'secret'}
        ProjectUser.objects.create_user(**self.credentials)

    def test_user_password_otp_true(self):
        response = self.client.post('/user_login/', self.credentials, follow=True)
        self.assertTrue(response.context['user'].is_active)

Как изменить тест для прохождения OTP вместе с именем пользователя и паролем?

Вот ссылка на документы

номер строки проверки60 в этом коде -> Вот ссылка на тест, который они используют

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