1 # -*- coding: utf-8 -*-
4 from auf
.django
.saml
.settings
import SAML_REDIRECT_FIELD_NAME
5 from django
.contrib
.auth
.models
import User
, Group
6 from project
import groups
7 from auf
.django
.references
import models
as ref
8 from django
.test
import TestCase
9 from project
.rh
import models
as rh
11 class RhTest(TestCase
):
22 self.classement_p_5_10
36 FAMILLE PROFESSIONNELLE
37 =======================
46 self.grp_correspondants_rh
47 self.grp_administrateurs
48 self.grp_directeurs_bureau
53 self.grp_haute_direction
54 self.grp_service_utilisateurs
58 self.poste_cnf_ngaoundere
65 0@test.auf: self.employe_cnf_ngaoundere
66 1@test.auf: self.employe_cnf_bangui
67 2@test.auf: self.employe_bap_bureau
68 3@test.auf: self.employe_bap_ifi
76 self.dossier_cnf_ngaoundere
77 self.dossier_cnf_bangui
78 self.dossier_bap_bureau
86 self
.devise_cad
= rh
.Devise(code
="CAD", nom
="CAD")
87 self
.devise_cad
.save()
92 self
.classement_p_5_0
= rh
.Classement(type="P", echelon
=5, degre
=1, coefficient
=5.01)
93 self
.classement_p_5_0
.save()
95 self
.classement_p_5_10
= rh
.Classement(type="P", echelon
=5, degre
=10, coefficient
=5.10)
96 self
.classement_p_5_10
.save()
101 self
.srv_info
= rh
.Service(nom
="info")
107 self
.cat_emploi_pro
= rh
.CategorieEmploi(nom
="pro")
108 self
.cat_emploi_pro
.save()
113 self
.famille_cadre
= rh
.FamilleProfessionnelle(nom
="cadre")
114 self
.famille_cadre
.save()
119 self
.type_poste_tech
= rh
.TypePoste(nom
="tech",
120 categorie_emploi
=self
.cat_emploi_pro
,
121 famille_professionnelle
=self
.famille_cadre
)
122 self
.type_poste_tech
.save()
127 self
.grp_correspondants_rh
= Group(name
=groups
.CORRESPONDANT_RH
)
128 self
.grp_correspondants_rh
.save()
130 self
.grp_administrateurs
= Group(name
=groups
.ADMINISTRATEURS
)
131 self
.grp_administrateurs
.save()
133 self
.grp_directeurs_bureau
= Group(name
=groups
.DIRECTEUR_DE_BUREAU
)
134 self
.grp_directeurs_bureau
.save()
136 self
.grp_drh
= Group(name
=groups
.DRH_NIVEAU_1
)
139 self
.grp_drh2
= Group(name
=groups
.DRH_NIVEAU_2
)
142 self
.grp_accior
= Group(name
=groups
.ACCIOR
)
143 self
.grp_accior
.save()
145 self
.grp_abf
= Group(name
=groups
.ABF
)
148 self
.grp_haute_direction
= Group(name
=groups
.HAUTE_DIRECTION
)
149 self
.grp_haute_direction
.save()
151 self
.grp_service_utilisateurs
= Group(name
=groups
.SERVICE_UTILISATEURS
)
152 self
.grp_service_utilisateurs
.save()
154 self
.password
= "0000"
155 self
.today
= datetime
.datetime
.now()
156 self
.tomorrow
= self
.today
+ datetime
.timedelta(days
=1)
158 #########################
159 # Régions / Implantations
160 #########################
161 self
.REGION_ACGL
= ref
.Region
.objects
.get(id=1)
162 self
.ZA_ACGL
= ref
.ZoneAdministrative
.objects
.get(code
=u
'ACGL')
163 self
.IMPLANTATION_ACGL_CNF_NGAOUNDERE
= ref
.Implantation
.objects
.get(id=90)
164 self
.IMPLANTATION_ACGL_CNF_BANGUI
= ref
.Implantation
.objects
.get(id=85)
166 self
.REGION_BAP
= ref
.Region
.objects
.get(id=4)
167 self
.ZA_BAP
= ref
.ZoneAdministrative
.objects
.get(code
=u
'AP')
168 self
.IMPLANTATION_BAP_BUREAU
= ref
.Implantation
.objects
.get(id=51)
169 self
.IMPLANTATION_BAP_IFI
= ref
.Implantation
.objects
.get(id=55)
174 self
.vp_cad_ngaoundere_2012
= rh
.ValeurPoint(valeur
=1000.1,
175 devise
=self
.devise_cad
,
176 implantation
=self
.IMPLANTATION_ACGL_CNF_NGAOUNDERE
,
178 self
.vp_cad_ngaoundere_2012
.save()
185 self
.employe_cnf_ngaoundere
= rh
.Employe(
190 self
.employe_cnf_ngaoundere
.save()
191 self
.employe_cnf_bangui
= rh
.Employe(
196 self
.employe_cnf_bangui
.save()
197 self
.employe_bap_bureau
= rh
.Employe(
202 self
.employe_bap_bureau
.save()
203 self
.employe_bap_ifi
= rh
.Employe(
208 self
.employe_bap_ifi
.save()
213 self
.poste_cnf_ngaoundere
= rh
.Poste(nom
="poste à NGAOUNDERE",
214 implantation
=self
.IMPLANTATION_ACGL_CNF_NGAOUNDERE
)
216 self
.poste_cnf_bangui
= rh
.Poste(nom
="poste à BANGUI",
217 implantation
=self
.IMPLANTATION_ACGL_CNF_BANGUI
)
219 self
.poste_cnf_ngaoundere
.save()
220 self
.poste_cnf_bangui
.save()
222 self
.dossier_cnf_ngaoundere
= rh
.Dossier(poste
=self
.poste_cnf_ngaoundere
,
223 employe
=self
.employe_cnf_ngaoundere
, date_debut
=self
.today
)
224 self
.dossier_cnf_bangui
= rh
.Dossier(poste
=self
.poste_cnf_bangui
,
225 employe
=self
.employe_cnf_bangui
, date_debut
=self
.today
)
227 self
.dossier_cnf_ngaoundere
.save()
228 self
.dossier_cnf_bangui
.save()
233 self
.poste_bap_bureau
= rh
.Poste(nom
="poste au Bureau BAP",
234 implantation
=self
.IMPLANTATION_BAP_BUREAU
)
235 self
.poste_bap_ifi
= rh
.Poste(nom
="poste à l'IFI",
236 implantation
=self
.IMPLANTATION_BAP_IFI
)
238 self
.poste_bap_bureau
.save()
239 self
.poste_bap_ifi
.save()
241 self
.dossier_bap_bureau
= rh
.Dossier(poste
=self
.poste_bap_bureau
,
242 employe
=self
.employe_bap_bureau
, date_debut
=self
.today
)
243 self
.dossier_bap_ifi
= rh
.Dossier(poste
=self
.poste_bap_ifi
,
244 employe
=self
.employe_bap_ifi
, date_debut
=self
.today
)
246 self
.dossier_bap_bureau
.save()
247 self
.dossier_bap_ifi
.save()
253 for idx
, e
in enumerate(rh
.Employe
.objects
.all().order_by('id')):
254 email
= u
"%s@test.auf" % idx
255 u
= User(first_name
=e
.prenom
,
260 u
.set_password(self
.password
)
263 # on le porte dans le référentiel employé
264 ref_e
= ref
.Employe(id=u
.id,
265 nom
=e
.nom
, prenom
=e
.prenom
,
266 implantation
=e
.dossier_principal().poste
.implantation
,
267 implantation_physique
=e
.dossier_principal().poste
.implantation
,
268 service
=ref
.Service
.objects
.get(id=1))
271 # on le porte dans le référentiel auth
272 ref
.Authentification(id=ref_e
, courriel
=u
.email
).save()
274 def _clean_refs(self
):
275 courriels
= [u
"%s@test.auf" % idx
for idx
, e
in
276 enumerate(rh
.Employe
.objects
.all())]
277 ref
.Employe
.objects
.filter(courriel__in
=courriels
).delete()
278 ref
.Authentification
.objects
.filter(courriel__in
=courriels
).delete()
283 def _test_acces_ok(self
, url
):
284 response
= self
.client
.get(url
, follow
=True)
285 self
.assertEqual(response
.status_code
, 200)
286 self
.assertEqual('next' in response
.context
, False)
288 def _test_acces_ko(self
, url
):
289 response
= self
.client
.get(url
, follow
=True)
290 is_ko
= response
.status_code
in (403, 404) or \
291 'next' in response
.context
or \
292 SAML_REDIRECT_FIELD_NAME
in response
.context
['request'].GET
.keys()
293 self
.assertEqual(is_ko
, True)
295 def _test_anonyme(self
):
298 def _test_correspondant_rh(self
, email
="0@test.auf"):
299 u
= User
.objects
.get(email
=email
)
300 self
.grp_correspondants_rh
.user_set
.add(u
)
301 self
.grp_correspondants_rh
.save()
303 credentials
= {'username': email
, 'password': self
.password
}
304 self
.assertTrue(self
.client
.login(**credentials
), "login failed")
306 def _test_administrateur_regional(self
, email
="0@test.auf"):
307 u
= User
.objects
.get(email
=email
)
308 self
.grp_administrateurs
.user_set
.add(u
)
309 self
.grp_administrateurs
.save()
311 credentials
= {'username': email
, 'password': self
.password
}
312 self
.assertTrue(self
.client
.login(**credentials
), "login failed")
314 def _test_directeur_bureau(self
, email
="0@test.auf"):
315 u
= User
.objects
.get(email
=email
)
316 self
.grp_directeurs_bureau
.user_set
.add(u
)
317 self
.grp_directeurs_bureau
.save()
319 credentials
= {'username': email
, 'password': self
.password
}
320 self
.assertTrue(self
.client
.login(**credentials
), "login failed")
325 u
= User
.objects
.get(email
=email
)
326 self
.grp_drh
.user_set
.add(u
)
329 credentials
= {'username': email
, 'password': self
.password
}
330 self
.assertTrue(self
.client
.login(**credentials
), "login failed")
332 def _test_drh2(self
):
335 u
= User
.objects
.get(email
=email
)
336 self
.grp_drh2
.user_set
.add(u
)
339 credentials
= {'username': email
, 'password': self
.password
}
340 self
.assertTrue(self
.client
.login(**credentials
), "login failed")
342 def _test_grp_accior(self
):
345 u
= User
.objects
.get(email
=email
)
346 self
.grp_accior
.user_set
.add(u
)
347 self
.grp_accior
.save()
349 credentials
= {'username': email
, 'password': self
.password
}
350 self
.assertTrue(self
.client
.login(**credentials
), "login failed")
352 def _test_grp_abf(self
):
355 u
= User
.objects
.get(email
=email
)
356 self
.grp_abf
.user_set
.add(u
)
359 credentials
= {'username': email
, 'password': self
.password
}
360 self
.assertTrue(self
.client
.login(**credentials
), "login failed")
362 def _test_grp_haute_direction(self
):
365 u
= User
.objects
.get(email
=email
)
366 self
.grp_haute_direction
.user_set
.add(u
)
367 self
.grp_haute_direction
.save()
369 credentials
= {'username': email
, 'password': self
.password
}
370 self
.assertTrue(self
.client
.login(**credentials
), "login failed")
372 def _test_grp_service_utilisateurs(self
):
375 u
= User
.objects
.get(email
=email
)
376 self
.grp_service_utilisateurs
.user_set
.add(u
)
377 self
.grp_service_utilisateurs
.save()
379 credentials
= {'username': email
, 'password': self
.password
}
380 self
.assertTrue(self
.client
.login(**credentials
), "login failed")