Ich habe einen Viewset/Router mit Django-Rest-Framework, um einen API-Endpunkt zu definieren. Die Viewset wird als solche definiert:Testen eines API-Endpunkts mit Django-rest-framework mit Django-oauth-toolkit zur Authentifizierung
class DocumentViewSet(viewsets.ModelViewSet):
permission_classes = [permissions.IsAuthenticated, TokenHasReadWriteScope]
model = Document
Und der Router als
router = DefaultRouter()
router.register(r'documents', viewsets.DocumentViewSet)
mit URL-Muster url(r'^api/', include(router.urls))
definiert ich diesen Endpunkt im Browser treffen kann/durch curl ganz gut, indem sie das richtige Zugriffstoken und es für die Autorisierung verwenden. Es ist jedoch nicht klar, wie Tests für diesen Endpunkt geschrieben werden.
Hier ist, was ich versucht habe:
class DocumentAPITests(APITestCase):
def test_get_all_documents(self):
user = User.objects.create_user('test', '[email protected]', 'test')
client = APIClient()
client.credentials(username="test", password="test")
response = client.get("/api/documents/")
self.assertEqual(response.status_code, 200)
Dies scheitert mit einer HTTP-401-Antwort vom client.get()
Anruf. Was ist der richtige Weg, um einen API-Endpunkt in DRF mit django-oauth-toolkit für die oauth2-Authentifizierung zu testen?
Das ist das Ticket. Ich habe die Erstellung des Zugriffstokens vermisst + es war nicht klar, wie das Token in die Anfrage zu injizieren ist. Vielen Dank! – Jim
Das war genau das, wonach ich suchte. Vielen Dank! – DanXPrado