Как передать пользовательский токен для тестирования API в django rest framework? - PullRequest
1 голос
/ 13 июня 2019

Я пишу несколько тестов для проверки соединения с моим 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-ответ?

...