Browse Source

travail sur les tests

Fabs 11 years ago
parent
commit
ae2b0c88d7
3 changed files with 92 additions and 14 deletions
  1. 3 0
      coin/members/models.py
  2. 87 12
      coin/members/tests.py
  3. 2 2
      coin/templates/base.html

+ 3 - 0
coin/members/models.py

@@ -8,7 +8,9 @@ from django.dispatch import receiver
 from south.modelsinspector import add_ignored_fields
 import datetime
 from django.core import exceptions
+import logging
 
+logger = logging.getLogger('fabs')
 
 class LdapUser(ldapdb.models.Model):
     base_dn = "ou=users,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR" #TODO déplacer dans settings.py
@@ -73,6 +75,7 @@ class Member(models.Model):
             return None
     
     def change_password(self,new_password):        
+        #~ logger.debug('Member change password %s' % new_password)
         ldap_user = LdapUser.objects.get(pk=self.ldap_cn)
         ldap_user.password = new_password
         ldap_user.save()

+ 87 - 12
coin/members/tests.py

@@ -1,16 +1,91 @@
-"""
-This file demonstrates writing tests using the unittest module. These will pass
-when you run "manage.py test".
+# -*- coding: utf-8 -*-
+import os
+from django.test import TestCase, Client
+from coin.members.models import Member, LdapUser
+import logging
 
-Replace this with more appropriate tests for your application.
-"""
+logger = logging.getLogger('fabs')
 
-from django.test import TestCase
-
-
-class SimpleTest(TestCase):
-    def test_basic_addition(self):
+class MemberTests(TestCase):
+        
+    def test_when_creating_member_a_ldapuser_is_also_created_with_same_data(self):
+        """
+        Test que lors de la création d'un nouveau membre, une entrée correspondante est bien créer dans le LDAP et qu'elle contient les même données
+        Cela concerne le nom et le prénom
         """
-        Tests that 1 + 1 always equals 2.
+        #~ Créé un membre
+        first_name = u'Gérard';
+        last_name = u'Majax';
+        ldap_cn =  self.get_random_ldap_cn()
+        member = Member(first_name = first_name,
+                        last_name = last_name,
+                        ldap_cn = ldap_cn)
+        member.save()
+        
+        #~ Récupère l'utilisateur LDAP et fait les tests
+        ldap_user = LdapUser.objects.get(pk=ldap_cn)
+        
+        self.assertEqual(ldap_user.first_name, first_name)
+        self.assertEqual(ldap_user.last_name, last_name)
+        self.assertEqual(ldap_user.pk, ldap_cn)
+        
+        member.delete();
+        ldap_user.delete();
+    
+    def test_when_modifiying_member_corresponding_ldap_user_is_also_modified_with_same_data(self):
         """
-        self.assertEqual(1 + 1, 2)
+        Test que lorsque l'on modifie un membre, l'utilisateur LDAP correspondant est bien modifié
+        Cela concerne le no met le prénom
+        """
+        #~ Créé un membre
+        first_name = u'Ronald';
+        last_name = u'Mac Donald';
+        ldap_cn =  self.get_random_ldap_cn()
+        member = Member(first_name = first_name, last_name = last_name, ldap_cn = ldap_cn)
+        member.save()
+        
+        #~  Le modifie
+        new_first_name = u'José';
+        new_last_name = u'Bové';
+        member.first_name = new_first_name
+        member.last_name = new_last_name
+        member.save()
+        
+        #~ Récupère l'utilisateur LDAP et fait les tests
+        ldap_user = LdapUser.objects.get(pk=ldap_cn)
+        
+        self.assertEqual(ldap_user.first_name, new_first_name)
+        self.assertEqual(ldap_user.last_name, new_last_name)
+
+        member.delete();
+        ldap_user.delete();
+    
+    def test_change_password_and_auth(self):
+        ldap_cn = self.get_random_ldap_cn()
+        password = "MotDePasseTest"
+        logger.debug(ldap_cn)
+         #~ Créé un membre
+        member = Member(first_name = u'Passe-partout', last_name = u'Du fort Boyard', ldap_cn = ldap_cn)
+        member.save()
+        
+        
+        
+        #~ Récupère l'utilisateur LDAP
+        ldap_user = LdapUser.objects.get(pk=ldap_cn)
+        #~ logger.debug('Ask member to change password');
+        
+        #~ Change son mot de passe
+        member.change_password(password)
+        #~ ldap_user.password = password
+        #~ ldap_user.save()
+        #~ 
+        #~ Test l'authentification
+        logger.debug(ldap_cn)
+        c = Client()
+        self.assertEqual(c.login(username=ldap_cn, password=password), True)
+        
+        member.delete();
+        #~ ldap_user.delete();
+        
+    def get_random_ldap_cn(self):
+        return 'coin_test_' + os.urandom(8).encode('hex');

+ 2 - 2
coin/templates/base.html

@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
     <link rel="stylesheet" href="style.css" />
-    <title>{% block title %}My amazing site{% endblock %}</title>
+    <title>{% block title %}COIN ☺{% endblock %}</title>
 </head>
 
 <body>
@@ -19,4 +19,4 @@
         {% block content %}{% endblock %}
     </div>
 </body>
-</html>
+</html>