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 № 1Selon 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.