Добавление пользовательского заголовка '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)
        ...

Вернуться на верх