/ / Comment utiliser l'authentification par jeton lors du test de l'API REST - python, django, testing, django-rest-framework, token

Comment utiliser l'authentification par jeton lors du test de l'API REST - python, django, testing, django-rest-framework, token

J'essaie de tester la demande d'API en utilisant des jetons. J'ai pu extraire le jeton mais j'ai du mal à trouver un moyen de l'utiliser.

Voici comment je reçois mon jeton:

@pytest.mark.django_db
class TestUserAPI(APITestCase):

def setUp(self):
self.created_user = UserFactory()
User.objects.create_user(username="test", password="pass1234")

def test_authentification(self):
request = self.client.post("http://localhost:8000/api/v1/auth/",
{
"username": "test",
"password": "pass1234"
})

TestUserAPI.token = request.data["token"]

assert request.status_code == 200

et voici comment je l'utilise:

def test_profile(self):
request = self.client.get("http://localhost:8000/api/v1/profile/",
TokenAuthentication = "token {}".format(TestUserAPI.token))

assert request.status_code == status.HTTP_200_OK

Cela me donne une erreur 401. Quelle est la bonne façon d'utiliser Token?

Réponses:

0 pour la réponse № 1

Selon Documentation le format d'en-tête correct est Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b


0 pour la réponse № 2

Selon la documentation officielle le jetonla clé doit être Authentification et le jeton doit être suivi de Token et d'un espace blanc. Dans votre code, changez le jeton {} en jeton {}. Si le problème persiste, essayez d'imprimer les en-têtes de requête que vous visualisez en imprimant request.META pour vérifier la clé.


0 pour la réponse № 3

La solution est simple et c’est grâce à mainexpérience des tests. La fonction test_profile n'enregistre pas qu'un jeton a été demandé dans la fonction test_authentification. J'ai donc dû les mettre tous les deux dans la fonction SetUp pour que le jeton soit enregistré pour chaque fonction de la classe.