delete employes
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Thu, 31 May 2012 20:17:54 +0000 (16:17 -0400)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Thu, 31 May 2012 20:17:54 +0000 (16:17 -0400)
project/rh/test/__init__.py [new file with mode: 0644]
project/rh/test/common.py [new file with mode: 0644]
project/rh/test/employe.py [new file with mode: 0644]

diff --git a/project/rh/test/__init__.py b/project/rh/test/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/project/rh/test/common.py b/project/rh/test/common.py
new file mode 100644 (file)
index 0000000..534c6e1
--- /dev/null
@@ -0,0 +1,256 @@
+# -*- coding: utf-8 -*-
+
+import datetime
+from django.contrib.auth.models import User
+from project.rh import groups
+from auf.django.references import models as ref
+from django.test import TestCase
+from project.rh import models as rh
+
+def fake_get_employe_from_user(user):
+    """
+    Pour les tests on ne peut pas changer la table d'autentification
+    """
+    print "GET EMPLOYE"
+    return ref.Employe.objects.get(id=user.id)
+
+import project.dae.utils
+project.dae.utils.get_employe_from_user = fake_get_employe_from_user
+
+class RhTest(TestCase):
+
+    def setUp(self):
+        """
+        POSTES
+        ======
+        self.poste_cnf_ngaoundere
+        self.poste_cnf_bangui
+        self.poste_bap_bureau
+        self.poste_bap_ifi
+
+        EMPLOYES
+        ========
+        self.employe_cnf_ngaoundere
+        self.employe_cnf_bangui
+        self.employe_bap_bureau
+        self.employe_bap_ifi
+
+        USERS DJANGO
+        ============
+        cf. EMPLOYES
+
+        DOSSIERS
+        ========
+        self.dossier_cnf_ngaoundere
+        self.dossier_cnf_bangui
+        self.dossier_bap_bureau
+        self.dossier_bap_ifi
+
+
+        """
+        self.password = "0000"
+        today = datetime.datetime.now()
+        #########################
+        # Régions / Implantations
+        #########################
+        self.REGION_ACGL = ref.Region.objects.get(id=1)
+        self.IMPLANTATION_ACGL_CNF_NGAOUNDERE = ref.Implantation.objects.get(id=90)
+        self.IMPLANTATION_ACGL_CNF_BANGUI = ref.Implantation.objects.get(id=85)
+
+        self.REGION_BAP = ref.Region.objects.get(id=4)
+        self.IMPLANTATION_BAP_BUREAU = ref.Implantation.objects.get(id=51)
+        self.IMPLANTATION_BAP_IFI = ref.Implantation.objects.get(id=55)
+
+
+        ##########
+        # Employés
+        ##########
+        self.employe_cnf_ngaoundere = rh.Employe(
+                nom="Employé",
+                prenom="ngaoundere",
+                )
+        self.employe_cnf_ngaoundere.save()
+        self.employe_cnf_bangui = rh.Employe(
+                nom="Employé",
+                prenom="bangui",
+                )
+        self.employe_cnf_bangui.save()
+        self.employe_bap_bureau = rh.Employe(
+                nom="Employé",
+                prenom="BAP bureau",
+                )
+        self.employe_bap_bureau.save()
+        self.employe_bap_ifi = rh.Employe(
+                nom="Employé",
+                prenom="BAP IFI",
+                )
+        self.employe_bap_ifi.save()
+
+        ######
+        # ACGL
+        ######
+        self.poste_cnf_ngaoundere = rh.Poste(nom="poste à NGAOUNDERE",
+                implantation=self.IMPLANTATION_ACGL_CNF_NGAOUNDERE)
+
+        self.poste_cnf_bangui = rh.Poste(nom="poste à BANGUI",
+                implantation=self.IMPLANTATION_ACGL_CNF_BANGUI)
+
+        self.poste_cnf_ngaoundere.save()
+        self.poste_cnf_bangui.save()
+
+        self.dossier_cnf_ngaoundere = rh.Dossier(poste=self.poste_cnf_ngaoundere,
+            employe=self.employe_cnf_ngaoundere, date_debut=today)
+        self.dossier_cnf_bangui = rh.Dossier(poste=self.poste_cnf_bangui,
+            employe=self.employe_cnf_bangui, date_debut=today)
+
+        self.dossier_cnf_ngaoundere.save()
+        self.dossier_cnf_bangui.save()
+
+        #####
+        # BAP
+        #####
+        self.poste_bap_bureau = rh.Poste(nom="poste au Bureau BAP",
+                implantation=self.IMPLANTATION_BAP_BUREAU)
+        self.poste_bap_ifi = rh.Poste(nom="poste à l'IFI",
+                implantation=self.IMPLANTATION_BAP_IFI)
+
+        self.poste_bap_bureau.save()
+        self.poste_bap_ifi.save()
+
+        self.dossier_bap_bureau = rh.Dossier(poste=self.poste_bap_bureau,
+            employe=self.employe_bap_bureau, date_debut=today)
+        self.dossier_bap_ifi = rh.Dossier(poste=self.poste_bap_ifi,
+            employe=self.employe_bap_ifi, date_debut=today)
+
+        self.dossier_bap_bureau.save()
+        self.dossier_bap_ifi.save()
+
+        ##############
+        # Users Django
+        ##############
+        
+        for idx, e in enumerate(rh.Employe.objects.all()):
+            email = u"%s@test.auf" % idx
+            u = User(first_name=e.prenom,
+                    is_staff=True,
+                    last_name=e.nom,
+                    username=email,
+                    email=email)
+            u.set_password(self.password)
+            u.save()
+            
+            # on le porte dans le référentiel employé
+            ref_e = ref.Employe(id=u.id,
+                    nom=e.nom, prenom=e.prenom,
+                    implantation=e.poste_principal().implantation,
+                    implantation_physique=e.poste_principal().implantation,
+                    service=ref.Service.objects.get(id=1))
+            ref_e.save()
+
+    def tearDown(self):
+        courriels = [u"%s@test.auf" % idx for idx, e in
+                enumerate(rh.Employe.objects.all())]
+        ref.Employe.objects.filter(courriel__in=courriels).delete()
+
+    def _test_acces_ok(self, url):
+        response = self.client.get(url, follow=True)
+        self.assertEqual(response.status_code, 200)
+        self.assertEqual('next' in response.context, False)
+
+    def _test_acces_ko(self, url):
+        response = self.client.get(url, follow=True)
+        is_ko = response.status_code == 403 or 'next' in response.context
+        self.assertEqual(is_ko, True)
+
+    def _test_anonyme(self):
+        pass
+
+    def _test_correspondant_rh(self):
+        email = "0@test.auf"
+        
+        u = User.objects.get(email=email)
+        groups.grp_correspondants_rh.user_set.add(u)
+        groups.grp_correspondants_rh.save()
+
+        credentials = {'username': email, 'password': self.password}
+        self.assertTrue(self.client.login(**credentials), "login failed")
+
+    def _test_administrateur_regional(self):
+        email = "0@test.auf"
+        
+        u = User.objects.get(email=email)
+        groups.grp_administrateurs.user_set.add(u)
+        groups.grp_administrateurs.save()
+
+        credentials = {'username': email, 'password': self.password}
+        self.assertTrue(self.client.login(**credentials), "login failed")
+
+    def _test_directeur_bureau(self):
+        email = "0@test.auf"
+        
+        u = User.objects.get(email=email)
+        groups.grp_directeurs_bureau.user_set.add(u)
+        groups.grp_directeurs_bureau.save()
+
+        credentials = {'username': email, 'password': self.password}
+        self.assertTrue(self.client.login(**credentials), "login failed")
+
+    def _test_drh(self):
+        email = "0@test.auf"
+        
+        u = User.objects.get(email=email)
+        groups.grp_drh.user_set.add(u)
+        groups.grp_drh.save()
+
+        credentials = {'username': email, 'password': self.password}
+        self.assertTrue(self.client.login(**credentials), "login failed")
+
+    def _test_drh2(self):
+        email = "0@test.auf"
+        
+        u = User.objects.get(email=email)
+        groups.grp_drh2.user_set.add(u)
+        groups.grp_drh2.save()
+
+        credentials = {'username': email, 'password': self.password}
+        self.assertTrue(self.client.login(**credentials), "login failed")
+
+    def _test_grp_accior(self):
+        email = "0@test.auf"
+        
+        u = User.objects.get(email=email)
+        groups.grp_accior.user_set.add(u)
+        groups.grp_accior.save()
+
+        credentials = {'username': email, 'password': self.password}
+        self.assertTrue(self.client.login(**credentials), "login failed")
+    
+    def _test_grp_abf(self):
+        email = "0@test.auf"
+        
+        u = User.objects.get(email=email)
+        groups.grp_abf.user_set.add(u)
+        groups.grp_abf.save()
+
+        credentials = {'username': email, 'password': self.password}
+        self.assertTrue(self.client.login(**credentials), "login failed")
+
+    def _test_grp_haute_direction(self):
+        email = "0@test.auf"
+        
+        u = User.objects.get(email=email)
+        groups.grp_haute_direction.user_set.add(u)
+        groups.grp_haute_direction.save()
+
+        credentials = {'username': email, 'password': self.password}
+        self.assertTrue(self.client.login(**credentials), "login failed")
+
+    def _test_grp_service_utilisateurs(self):
+        email = "0@test.auf"
+        
+        u = User.objects.get(email=email)
+        groups.grp_service_utilisateurs.user_set.add(u)
+        groups.grp_service_utilisateurs.save()
+
+        credentials = {'username': email, 'password': self.password}
+        self.assertTrue(self.client.login(**credentials), "login failed")
diff --git a/project/rh/test/employe.py b/project/rh/test/employe.py
new file mode 100644 (file)
index 0000000..b295a10
--- /dev/null
@@ -0,0 +1,161 @@
+# -*- coding: utf-8 -*-
+
+from django.core.urlresolvers import reverse
+from project.rh.test.common import RhTest
+
+class EmployeAddTest(RhTest):
+    """
+    Test l'ajout d'un employé
+    """
+    url = reverse('admin:rh_employe_add')
+
+    def test_anonyme(self):
+        """
+        Un anonyme ne peut pas créer d'employé
+        """
+        self._test_anonyme()
+        self._test_acces_ko(self.url)
+
+    def test_correspondant_rh(self):
+        """
+        Un correspodant RH peut ajouter un employé
+        """
+        self._test_correspondant_rh()
+        self._test_acces_ok(self.url)
+
+    def test_administrateur_regional(self):
+        """
+        Un administrateur peut ajouter un employé
+        """
+        self._test_administrateur_regional()
+        self._test_acces_ok(self.url)
+
+    def test_directeur_bureau(self):
+        """
+        Un directeur de bureau peut ajouter un employé
+        """
+        self._test_directeur_bureau()
+        self._test_acces_ok(self.url)
+
+    def test_drh(self):
+        """
+        Un DRH peut ajouter un employé
+        """
+        self._test_drh()
+        self._test_acces_ok(self.url)
+
+    def test_drh2(self):
+        """
+        Un DRH (2ieme niveau) peut ajouter un employé
+        """
+        self._test_drh2()
+        self._test_acces_ok(self.url)
+
+    def _test_grp_accior(self):
+        """
+        Un membre de l'ACCIOR ne peut pas ajouter un employé
+        """
+        self._test_grp_accior()
+        self._test_acces_ko(self.url)
+
+    def _test_grp_abf(self):
+        """
+        Un membre de l'ABF ne peut pas ajouter un employé
+        """
+        self._test_grp_abf(self)
+        self._test_acces_ko(self.url)
+
+    def _test_grp_haute_direction(self):
+        """
+        Un membre de la haute direction ne peut pas ajouter un employé
+        """
+        self._test_grp_haute_direction()
+        self._test_acces_ko(self.url)
+
+    def _test_grp_service_utilisateurs(self):
+        """
+        Un membre du groupe service utilisateur ne peut pas ajouter un employé
+        """
+        self._test_grp_service_utilisateurs()
+        self._test_acces_ko(self.url)
+
+
+class EmployeDeleteTest(RhTest):
+    """
+    Test la suppression d'un employé
+    """
+
+    def setUp(self):
+        super(EmployeDeleteTest, self).setUp()
+        self.url = reverse('admin:rh_employe_delete',
+                args=[self.employe_cnf_ngaoundere.id])
+
+    def test_anonyme(self):
+        """
+        Un anonyme ne peut pas supprimer un employé
+        """
+        self._test_anonyme()
+        self._test_acces_ko(self.url)
+
+    def test_correspondant_rh(self):
+        """
+        Un correspodant RH  ne peut pas supprimer un employé
+        """
+        self._test_correspondant_rh()
+        self._test_acces_ko(self.url)
+
+    def test_administrateur_regional(self):
+        """
+        Un administrateur  ne peut pas supprimer un employé
+        """
+        self._test_administrateur_regional()
+        self._test_acces_ko(self.url)
+
+    def test_directeur_bureau(self):
+        """
+        Un directeur de bureau  ne peut pas supprimer un employé
+        """
+        self._test_directeur_bureau()
+        self._test_acces_ko(self.url)
+
+    def test_drh(self):
+        """
+        Un DRH  peut supprimer un employé
+        """
+        self._test_drh()
+        self._test_acces_ok(self.url)
+
+    def test_drh2(self):
+        """
+        Un DRH (2ieme niveau) peut supprimer un employé
+        """
+        self._test_drh2()
+        self._test_acces_ok(self.url)
+
+    def _test_grp_accior(self):
+        """
+        Un membre de l'ACCIOR  ne peut pas supprimer un employé
+        """
+        self._test_grp_accior()
+        self._test_acces_ko(self.url)
+
+    def _test_grp_abf(self):
+        """
+        Un membre de l'ABF  ne peut pas supprimer un employé
+        """
+        self._test_grp_abf(self)
+        self._test_acces_ko(self.url)
+
+    def _test_grp_haute_direction(self):
+        """
+        Un membre de la haute direction  ne peut pas supprimer un employé
+        """
+        self._test_grp_haute_direction()
+        self._test_acces_ko(self.url)
+
+    def _test_grp_service_utilisateurs(self):
+        """
+        Un membre du groupe service utilisateur  ne peut pas supprimer un employé
+        """
+        self._test_grp_service_utilisateurs()
+        self._test_acces_ko(self.url)