Ответ 1
Когда вы пишете тесты, вы должны стремиться извлечь все, что вы не тестируете из самого теста, обычно помещая любой код установки в метод setUp
теста. В случае тестов API с OAuth это обычно включает в себя тестовый пользователь, приложение OAuth и токен активного доступа.
Для django-oauth-toolkit
и других приложений Django я всегда рекомендую посмотреть тесты, чтобы посмотреть, как они это делают. Это позволяет избежать ненужных вызовов API, особенно для многочастных процессов, таких как OAuth, и создавать только несколько требуемых объектов модели.
def setUp(self):
self.test_user = UserModel.objects.create_user("test_user", "[email protected]", "123456")
self.application = Application(
name="Test Application",
redirect_uris="http://localhost",
user=self.test_user,
client_type=Application.CLIENT_CONFIDENTIAL,
authorization_grant_type=Application.GRANT_AUTHORIZATION_CODE,
)
self.application.save()
def test_revoke_access_token(self):
from datetime import datetime
from django.utils import timezone
tok = AccessToken.objects.create(
user=self.test_user, token='1234567890',
application=self.application, scope='read write',
expires=timezone.now() + datetime.timedelta(days=1)
)
Оттуда вам просто нужно пройти аутентификацию, используя созданный токен. Вы можете сделать это с помощью ввода заголовка Authorization
, или вы можете использовать метод force_authenticate
по Django REST Framework.