tests.py 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. # -*- coding: utf-8 -*-
  2. import os
  3. from django.test import TestCase, Client
  4. from coin.members.models import Member, LdapUser
  5. import logging
  6. logger = logging.getLogger('fabs')
  7. class MemberTests(TestCase):
  8. def test_when_creating_member_a_ldapuser_is_also_created_with_same_data(self):
  9. """
  10. Test que lors de la création d'un nouveau membre, une entrée
  11. correspondante est bien créer dans le LDAP et qu'elle contient
  12. les même données.
  13. Cela concerne le nom et le prénom
  14. """
  15. #~ Créé un membre
  16. first_name = u'Gérard';
  17. last_name = u'Majax';
  18. ldap_cn = self.get_random_ldap_cn()
  19. member = Member(first_name = first_name,
  20. last_name = last_name,
  21. ldap_cn = ldap_cn)
  22. member.save()
  23. #~ Récupère l'utilisateur LDAP et fait les tests
  24. ldap_user = LdapUser.objects.get(pk=ldap_cn)
  25. self.assertEqual(ldap_user.first_name, first_name)
  26. self.assertEqual(ldap_user.last_name, last_name)
  27. self.assertEqual(ldap_user.pk, ldap_cn)
  28. member.delete();
  29. ldap_user.delete();
  30. def test_when_modifiying_member_corresponding_ldap_user_is_also_modified_with_same_data(self):
  31. """
  32. Test que lorsque l'on modifie un membre, l'utilisateur LDAP
  33. correspondant est bien modifié
  34. Cela concerne le no met le prénom
  35. """
  36. #~ Créé un membre
  37. first_name = u'Ronald';
  38. last_name = u'Mac Donald';
  39. ldap_cn = self.get_random_ldap_cn()
  40. member = Member(first_name = first_name, last_name = last_name, ldap_cn = ldap_cn)
  41. member.save()
  42. #~ Le modifie
  43. new_first_name = u'José';
  44. new_last_name = u'Bové';
  45. member.first_name = new_first_name
  46. member.last_name = new_last_name
  47. member.save()
  48. #~ Récupère l'utilisateur LDAP et fait les tests
  49. ldap_user = LdapUser.objects.get(pk=ldap_cn)
  50. self.assertEqual(ldap_user.first_name, new_first_name)
  51. self.assertEqual(ldap_user.last_name, new_last_name)
  52. member.delete();
  53. ldap_user.delete();
  54. def test_change_password_and_auth(self):
  55. ldap_cn = self.get_random_ldap_cn()
  56. password = "MotDePasseTest"
  57. logger.debug(ldap_cn)
  58. #~ Créé un membre
  59. member = Member(first_name = u'Passe-partout', last_name = u'Du fort Boyard', ldap_cn = ldap_cn)
  60. member.save()
  61. #~ Récupère l'utilisateur LDAP
  62. ldap_user = LdapUser.objects.get(pk=ldap_cn)
  63. #~ logger.debug('Ask member to change password');
  64. #~ Change son mot de passe
  65. member.change_password(password)
  66. #~ ldap_user.password = password
  67. #~ ldap_user.save()
  68. #~
  69. #~ Test l'authentification
  70. # logger.debug(ldap_cn)
  71. c = Client()
  72. # TODO : Ce test échoue systématiquement, voir pourquoi
  73. self.assertEqual(c.login(username=ldap_cn, password=password), True)
  74. member.delete();
  75. ldap_user.delete();
  76. def get_random_ldap_cn(self):
  77. return 'coin_test_' + os.urandom(8).encode('hex');