Я пишу несколько тестов для проверки соединения с моим API.
Я ввел идентификацию на месте с помощью токенов, и мне удалось получить токен для конкретного тестового пользователя с помощью:
token = Token.objects.get(user__username='testuser')
Я борюсь с тем, чтобы использовать этот токен для создания успешного запроса API, как этот:
client = APIClient(HTTP_AUTHORIZATION='Token ' + token.key)
response = client.get('/patientFull/1/',headers={'Authorization': 'Token ' + token.key})
Я искал много способов сделать эту работу, и этоВот некоторые способы, которыми я пытался это сделать:
response = requests.get('http://127.0.0.1:8000/patientFull/1/',headers={'Authorization': 'Token ' + token.key} )
client = APIClient()
client.credentials(HTTP_AUTHORIZATION='Token ' + token.key)
response = client.get('/patientFull/1/')
Тест - это простое утверждение, чтобы проверить, что ответ HTTP с сервера 200 OK.
Все эти способы возвращают 403HTTP-ответ.
вот полный код моего теста (я использую приборы для заполнения своей тестовой базы данных данными тестирования):
import json
import requests
from rest_framework.authtoken.models import Token
from rest_framework.test import APIRequestFactory, APITestCase, APIClient
class CustomerAPITestBack(APITestCase):
fixtures = ['new-fixtures.json']
def testDE(self):
token = Token.objects.get(user__username='jpmichel')
client = APIClient(HTTP_AUTHORIZATION='Token ' + token.key)
response = client.get('/patientFull/1/',headers={'Authorization': 'Token ' + token.key})
self.assertEqual(200, response.status_code)
Я настроил свой файл settings.py кактак для токенов:
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.BasicAuthentication',
'rest_framework.authentication.SessionAuthentication',
'PHCAdmin.authentication.tokenAuthentication.ExpiringTokenAuthentication',
),
'EXCEPTION_HANDLER': 'PHCAdmin.functions.pxlth_exception_handler',
}
REST_FRAMEWORK_EXPIRY_TIME = 12 # in hours
REST_FRAMEWORK_PASSWORD_RENEWALS = 90 # in days
Если я отключаю аутентификацию токена, этот тест проходит (GET возвращает 200 OK)
Как мне выполнить мой запрос GET, чтобы он использовалтокен для идентификации в качестве действительного пользователя и возвращает200 OK HTTP-ответ?