Я пишу тесты для конечных точек, которые требуют аутентификации токена на предъявителя, но я получаю ошибки, пытаясь передать ошибки аутентификации в методы HTTP, такие как client.post(url,data,**auth_header)
Я пытался использовать client.login(username=username,password=pass)
и client.force_login(user=Users.objects.get(username='admin'))
, затем client.post(url,data)
Я также пробовал: client.post(url,data,**{'HTTP_AUTHORIZATION': 'Bearer {}'.format(token)})
, client.post(url,data,HTTP_AUTHORIZATION='Bearer {}'.format(token))
, который выводит обе трассировки стека
Я также пытался использовать вместо ключей AUTHORIZATION
, Authorization
, но я получал бы ошибку разрешений, которую отправляет конечная точка, если вы не аутентифицируетесь.
from django.test import TestCase
from django.test import Client
from django.contrib.auth.models import User
login = client.post('/api/users/login/',{'username':username,'password': password})
bearer = {'HTTP_AUTHORIZATION':'Bearer {}'.format(login.json()['access'])}
response = client.post(url, {'key':'value'}, **bearer)
Я ожидаю ответа json от ответа var и status_code 200 вместо этого. Я получаю либо трассировки стека, либо ошибку, возвращаемую из конечной точки, если вы не прошли аутентификацию.