Добавление пользовательского заголовка 'FOO' в Django Rest Framework APIClient
Для приложения, использующего SSO для входа в систему, я реализовал AuthBackend с Django Rest Framework. Этот пользовательский класс AuthBackend проверяет наличие X-USERID в заголовках и на основе этого возвращает экземпляр пользователя.
Я добавил классы разрешений в представления для проверки аутентифицированных пользователей. Чтобы добавить модульные тесты в код, APIClient должен позволить нам добавлять пользовательские заголовки типа {'FOO': 'BAR'}
Классом по умолчанию является APIClient Я пробовал следующее, но ни одно из них не работает:
class AccountsTests(APITestCase):
def test_user_is_authenticated(self):
...
headers = {'USERID': 'john.doe', 'FOO': 'BAR' }
self.client.get(url, headers) # Doesn't work
self.client.get(url, **headers) # Doesn't work
self.client.headers.update(headers) # Doesn't work
...
Мне удалось решить проблему, используя RequestsClient
следующим образом:
from rest_framework.test import RequestsClient
class AccountTests(APITestCase):
def setUp(self):
self.client = RequestsClient()
def test_user_is_authenticated(self):
...
headers = {'USERID': 'john.doe', 'FOO': 'BAR' }
self.client.headers.update(headers)
response = self.client.get(url)
...