Как проверить успешное получение токена с помощью jwt - PullRequest
0 голосов
/ 13 июля 2020

Я использую django rest simple jwt, и я хотел протестировать простой вход и проверить данные ответа для токена и других пользовательских данных.

Итак, я попытался с APITestCase создать пользователя а затем попробуйте войти в систему с теми же учетными данными.

Результатом будет 401 вместо 200 с токеном в данных ответа.

Вот мой упрощенный тестовый пример:

from rest_framework.test import APITestCase
from django.contrib.auth import get_user_model

# Create your tests here.
User = get_user_model()

class UserAuthTestCase(APITestCase):
    username = "someuser"
    password = "1234pass"


    def setUp(self):
        self.user = User.objects.create(
            username=self.username,
            password=self.password
        )

    def test_successful_login_gives_200(self):
        response = self.client.post(
            '/auth/token/',
            {
                'username': self.username,
                'password': self.password
            },
            format='json'
        )
        self.assertEqual(response.status_code, 200)

Остальная конфигурация фреймворка настроена на использование только аутентификации simplejwt.

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    )
}

1 Ответ

1 голос
/ 14 июля 2020

При создании User с User.objects.create вы устанавливаете пароль без хеширования , поэтому, когда вы позже попытаетесь аутентифицировать пользователя, вы в конечном итоге сравните значение хешированного пароля с необработанным нехешированным паролем в база данных. Используйте User.objects.create_user, который обрабатывает хеширование путем внутреннего вызова set_password.

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