nykergoto’s blog

機械学習とpythonをメインに

JWT でのログインができるかどうかを確認するテスト

Django Rest Framework + allauth 使用時に JWT での Login ができているかどうかを念の為確認するテスト。

import pytest
from django.urls import reverse

from atma.shops.models import Shop
from .factories import UserFactory

@pytest.mark.django_db
def test_authorized_by_jwt(client):
    """Json Web Token で login できる"""
    user = UserFactory()  # type: User
    user.set_password('hogehoge')
    user.save()

    url = reverse('accounts_me')
    res = client.get(url)
    assert res.status_code == 401, res.json()

    auth_url = reverse('rest_login')
    res = client.post(auth_url, data={'email': user.email, 'password': 'hogehoge'})
    assert res.status_code == 200, res.json()

    jwt_token = res.json().get('accessToken', None)
    assert jwt_token is not None

    header = {'HTTP_AUTHORIZATION': 'JWT {}'.format(jwt_token)}
    res = client.get(url, **header)

    assert res.status_code == 200, res.json()
  • パスワードの設定は user.set_password で行なう
  • header を kwrgs で渡す
  • "HTTP_AUTHORIZATION" を key にする

の3点がポイント