--- /dev/null
+# -*- 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")
--- /dev/null
+# -*- 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)