1

Je mis en place un test unitaire en tant que tel:Obtenir utilisateur connecté avec django-auth sociale

class UserViewTests(TestCase): 
    def setUp(self): 
     self.user_passwords = '123456' 
     self.user1 = User.objects.create(username='Bobby Johnson', password=self.user_passwords) 

    ... 

    def test_view_user(self): 
     """ 
     Check that you can view a user's information correctly in their profile 
     """ 
     response = self.client.get(reverse('login')) 
     self.assertContains(response, "You're not logged in yet", status_code=200) 
     self.client.login(username=self.user1.username, password=self.user_passwords) 
     response = self.client.get(reverse('login')) 
     self.assertContains(response, "You've logged in already", status_code=200) 

Seule la dernière échoue assertion, et remplacer « Vous avez déjà connecté » avec « Vous êtes pas encore connecté "dans cette dernière assertion fait passer le test, il semble donc que ma connexion a échoué. Je suppose que c'est parce que j'utilise django-social-auth pour autoriser les connexions OpenId.

Comment puis-je obtenir que les tests unitaires pensent que mon utilisateur s'est connecté, de sorte que user.is_authenticated est vrai? Je veux juste tester que mes vues s'affichent correctement lorsqu'un utilisateur est connecté par rapport à un autre, et ne se soucient pas particulièrement du test d'unité que la connexion fonctionne réellement.

Répondre

1
self.user1 = User.objects.create(username='Bobby Johnson', password=self.user_passwords) 

devrait être:

self.user1 = User.objects.create_user(username='Bobby Johnson', password=self.user_passwords) 

Sinon, le mot de passe est crypté et un est pas utilisable. Vous aurez également besoin de django.contrib.auth.backends.ModelBackend dans votre backend d'authentification.


Ensuite,

self.client.login(username=self.user1.username, password=self.user_passwords) 

va travailler juste.

Questions connexes