Как передать токены носителя аутентификации в методы HTTP в django.test.Client? - PullRequest
0 голосов
/ 17 января 2019

Я пишу тесты для конечных точек, которые требуют аутентификации токена на предъявителя, но я получаю ошибки, пытаясь передать ошибки аутентификации в методы 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 вместо этого. Я получаю либо трассировки стека, либо ошибку, возвращаемую из конечной точки, если вы не прошли аутентификацию.

...