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
54 self.grp_haute_direction
55 self.grp_service_utilisateurs
59 self.poste_cnf_ngaoundere
66 0@test.auf: self.employe_cnf_ngaoundere
67 1@test.auf: self.employe_cnf_bangui
68 2@test.auf: self.employe_bap_bureau
69 3@test.auf: self.employe_bap_ifi
77 self.dossier_cnf_ngaoundere
78 self.dossier_cnf_bangui
79 self.dossier_bap_bureau
87 self
.devise_cad
= rh
.Devise(code
="CAD", nom
="CAD")
88 self
.devise_cad
.save()
93 self
.classement_p_5_0
= rh
.Classement(type="P", echelon
=5, degre
=1, coefficient
=5.01)
94 self
.classement_p_5_0
.save()
96 self
.classement_p_5_10
= rh
.Classement(type="P", echelon
=5, degre
=10, coefficient
=5.10)
97 self
.classement_p_5_10
.save()
102 self
.srv_info
= rh
.Service(nom
="info")
108 self
.cat_emploi_pro
= rh
.CategorieEmploi(nom
="pro")
109 self
.cat_emploi_pro
.save()
114 self
.famille_cadre
= rh
.FamilleProfessionnelle(nom
="cadre")
115 self
.famille_cadre
.save()
120 self
.type_poste_tech
= rh
.TypePoste(nom
="tech",
121 categorie_emploi
=self
.cat_emploi_pro
,
122 famille_professionnelle
=self
.famille_cadre
)
123 self
.type_poste_tech
.save()
128 self
.grp_correspondants_rh
= Group(name
=groups
.CORRESPONDANT_RH
)
129 self
.grp_correspondants_rh
.save()
131 self
.grp_administrateurs
= Group(name
=groups
.ADMINISTRATEURS
)
132 self
.grp_administrateurs
.save()
134 self
.grp_directeurs_bureau
= Group(name
=groups
.DIRECTEUR_DE_BUREAU
)
135 self
.grp_directeurs_bureau
.save()
137 self
.grp_drh
= Group(name
=groups
.DRH_NIVEAU_1
)
140 self
.grp_drh2
= Group(name
=groups
.DRH_NIVEAU_2
)
143 self
.grp_accior
= Group(name
=groups
.ACCIOR
)
144 self
.grp_accior
.save()
146 self
.grp_abf
= Group(name
=groups
.ABF
)
149 self
.grp_finance
= Group(name
=groups
.FINANCE
)
150 self
.grp_finance
.save()
152 self
.grp_haute_direction
= Group(name
=groups
.HAUTE_DIRECTION
)
153 self
.grp_haute_direction
.save()
155 self
.grp_service_utilisateurs
= Group(name
=groups
.SERVICE_UTILISATEURS
)
156 self
.grp_service_utilisateurs
.save()
158 self
.password
= "0000"
159 self
.today
= datetime
.datetime
.now()
160 self
.tomorrow
= self
.today
+ datetime
.timedelta(days
=1)
162 #########################
163 # Régions / Implantations
164 #########################
165 self
.REGION_ACGL
= ref
.Region
.objects
.get(id=1)
166 self
.ZA_ACGL
= ref
.ZoneAdministrative
.objects
.get(code
=u
'ACGL')
167 self
.IMPLANTATION_ACGL_CNF_NGAOUNDERE
= ref
.Implantation
.objects
.get(id=90)
168 self
.IMPLANTATION_ACGL_CNF_BANGUI
= ref
.Implantation
.objects
.get(id=85)
170 self
.REGION_BAP
= ref
.Region
.objects
.get(id=4)
171 self
.ZA_BAP
= ref
.ZoneAdministrative
.objects
.get(code
=u
'AP')
172 self
.IMPLANTATION_BAP_BUREAU
= ref
.Implantation
.objects
.get(id=51)
173 self
.IMPLANTATION_BAP_IFI
= ref
.Implantation
.objects
.get(id=55)
178 self
.vp_cad_ngaoundere_2012
= rh
.ValeurPoint(valeur
=1000.1,
179 devise
=self
.devise_cad
,
180 implantation
=self
.IMPLANTATION_ACGL_CNF_NGAOUNDERE
,
182 self
.vp_cad_ngaoundere_2012
.save()
189 self
.employe_cnf_ngaoundere
= rh
.Employe(
194 self
.employe_cnf_ngaoundere
.save()
195 self
.employe_cnf_bangui
= rh
.Employe(
200 self
.employe_cnf_bangui
.save()
201 self
.employe_bap_bureau
= rh
.Employe(
206 self
.employe_bap_bureau
.save()
207 self
.employe_bap_ifi
= rh
.Employe(
212 self
.employe_bap_ifi
.save()
217 self
.poste_cnf_ngaoundere
= rh
.Poste(nom
="poste à NGAOUNDERE",
218 implantation
=self
.IMPLANTATION_ACGL_CNF_NGAOUNDERE
)
220 self
.poste_cnf_bangui
= rh
.Poste(nom
="poste à BANGUI",
221 implantation
=self
.IMPLANTATION_ACGL_CNF_BANGUI
)
223 self
.poste_cnf_ngaoundere
.save()
224 self
.poste_cnf_bangui
.save()
226 self
.dossier_cnf_ngaoundere
= rh
.Dossier(poste
=self
.poste_cnf_ngaoundere
,
227 employe
=self
.employe_cnf_ngaoundere
, date_debut
=self
.today
)
228 self
.dossier_cnf_bangui
= rh
.Dossier(poste
=self
.poste_cnf_bangui
,
229 employe
=self
.employe_cnf_bangui
, date_debut
=self
.today
)
231 self
.dossier_cnf_ngaoundere
.save()
232 self
.dossier_cnf_bangui
.save()
237 self
.poste_bap_bureau
= rh
.Poste(nom
="poste au Bureau BAP",
238 implantation
=self
.IMPLANTATION_BAP_BUREAU
)
239 self
.poste_bap_ifi
= rh
.Poste(nom
="poste à l'IFI",
240 implantation
=self
.IMPLANTATION_BAP_IFI
)
242 self
.poste_bap_bureau
.save()
243 self
.poste_bap_ifi
.save()
245 self
.dossier_bap_bureau
= rh
.Dossier(poste
=self
.poste_bap_bureau
,
246 employe
=self
.employe_bap_bureau
, date_debut
=self
.today
)
247 self
.dossier_bap_ifi
= rh
.Dossier(poste
=self
.poste_bap_ifi
,
248 employe
=self
.employe_bap_ifi
, date_debut
=self
.today
)
250 self
.dossier_bap_bureau
.save()
251 self
.dossier_bap_ifi
.save()
257 for idx
, e
in enumerate(rh
.Employe
.objects
.all().order_by('id')):
258 email
= u
"%s@test.auf" % idx
259 u
= User(first_name
=e
.prenom
,
264 u
.set_password(self
.password
)
267 # on le porte dans le référentiel employé
268 ref_e
= ref
.Employe(id=u
.id,
269 nom
=e
.nom
, prenom
=e
.prenom
,
270 implantation
=e
.dossier_principal().poste
.implantation
,
271 implantation_physique
=e
.dossier_principal().poste
.implantation
,
272 service
=ref
.Service
.objects
.get(id=1))
275 # on le porte dans le référentiel auth
276 ref
.Authentification(id=ref_e
, courriel
=u
.email
).save()
278 def _clean_refs(self
):
279 courriels
= [u
"%s@test.auf" % idx
for idx
, e
in
280 enumerate(rh
.Employe
.objects
.all())]
281 ref
.Employe
.objects
.filter(courriel__in
=courriels
).delete()
282 ref
.Authentification
.objects
.filter(courriel__in
=courriels
).delete()
287 def _test_acces_ok(self
, url
):
288 response
= self
.client
.get(url
, follow
=True)
289 self
.assertEqual(response
.status_code
, 200)
290 self
.assertEqual('next' in response
.context
, False)
292 def _test_acces_ko(self
, url
):
293 response
= self
.client
.get(url
, follow
=True)
294 is_ko
= response
.status_code
in (403, 404) or \
295 'next' in response
.context
or \
296 'next' in response
.context
['request'].GET
.keys() or \
297 SAML_REDIRECT_FIELD_NAME
in response
.context
['request'].GET
.keys()
299 self
.assertEqual(is_ko
, True)
301 def _test_anonyme(self
):
304 def _test_correspondant_rh(self
, email
="0@test.auf"):
305 u
= User
.objects
.get(email
=email
)
306 self
.grp_correspondants_rh
.user_set
.add(u
)
307 self
.grp_correspondants_rh
.save()
309 credentials
= {'username': email
, 'password': self
.password
}
310 self
.assertTrue(self
.client
.login(**credentials
), "login failed")
312 def _test_administrateur_regional(self
, email
="0@test.auf"):
313 u
= User
.objects
.get(email
=email
)
314 self
.grp_administrateurs
.user_set
.add(u
)
315 self
.grp_administrateurs
.save()
317 credentials
= {'username': email
, 'password': self
.password
}
318 self
.assertTrue(self
.client
.login(**credentials
), "login failed")
320 def _test_directeur_bureau(self
, email
="0@test.auf"):
321 u
= User
.objects
.get(email
=email
)
322 self
.grp_directeurs_bureau
.user_set
.add(u
)
323 self
.grp_directeurs_bureau
.save()
325 credentials
= {'username': email
, 'password': self
.password
}
326 self
.assertTrue(self
.client
.login(**credentials
), "login failed")
331 u
= User
.objects
.get(email
=email
)
332 self
.grp_drh
.user_set
.add(u
)
335 credentials
= {'username': email
, 'password': self
.password
}
336 self
.assertTrue(self
.client
.login(**credentials
), "login failed")
338 def _test_drh2(self
):
341 u
= User
.objects
.get(email
=email
)
342 self
.grp_drh2
.user_set
.add(u
)
345 credentials
= {'username': email
, 'password': self
.password
}
346 self
.assertTrue(self
.client
.login(**credentials
), "login failed")
348 def _test_grp_accior(self
):
351 u
= User
.objects
.get(email
=email
)
352 self
.grp_accior
.user_set
.add(u
)
353 self
.grp_accior
.save()
355 credentials
= {'username': email
, 'password': self
.password
}
356 self
.assertTrue(self
.client
.login(**credentials
), "login failed")
358 def _test_grp_abf(self
):
361 u
= User
.objects
.get(email
=email
)
362 self
.grp_abf
.user_set
.add(u
)
365 credentials
= {'username': email
, 'password': self
.password
}
366 self
.assertTrue(self
.client
.login(**credentials
), "login failed")
368 def _test_grp_finance(self
):
371 u
= User
.objects
.get(email
=email
)
372 self
.grp_finance
.user_set
.add(u
)
373 self
.grp_finance
.save()
375 credentials
= {'username': email
, 'password': self
.password
}
376 self
.assertTrue(self
.client
.login(**credentials
), "login failed")
378 def _test_grp_haute_direction(self
):
381 u
= User
.objects
.get(email
=email
)
382 self
.grp_haute_direction
.user_set
.add(u
)
383 self
.grp_haute_direction
.save()
385 credentials
= {'username': email
, 'password': self
.password
}
386 self
.assertTrue(self
.client
.login(**credentials
), "login failed")
388 def _test_grp_service_utilisateurs(self
):
391 u
= User
.objects
.get(email
=email
)
392 self
.grp_service_utilisateurs
.user_set
.add(u
)
393 self
.grp_service_utilisateurs
.save()
395 credentials
= {'username': email
, 'password': self
.password
}
396 self
.assertTrue(self
.client
.login(**credentials
), "login failed")