passerelle/functests/toulouse_axel/test_toulouse_axel.py

206 lines
5.9 KiB
Python

import pprint
import requests
def test_link(conn, user):
print("Get update management dates")
url = conn + '/management_dates'
resp = requests.get(url)
resp.raise_for_status()
res = resp.json()
assert res['err'] == 0
pprint.pprint(res)
print('\n')
name_id = user['name_id']
url = conn + '/link?NameID=%s' % name_id
payload = {
'IDDUI': user['dui'],
'NOM': user['last_name'],
'PRENOM': user['first_name'],
'NAISSANCE': user['dob'],
}
print("Creating link with the following payload:")
pprint.pprint(payload)
resp = requests.post(url, json=payload)
resp.raise_for_status()
res = resp.json()
assert res['err'] == 0
pprint.pprint(res)
print('\n')
print("GET family info")
url = conn + '/family_info?NameID=%s' % name_id
resp = requests.get(url)
resp.raise_for_status()
data = resp.json()
assert res['err'] == 0
pprint.pprint(data)
print('\n')
# take family info and transform them into updatable data
payload = data['data']
# complete required fields
payload['N0TELEDOSSIER'] = '42'
payload['DROITALIMAGE'] = 'NON'
payload['REVENUS']['CHOIXREVENU'] = ''
# remove non editable fields
for key in [
'SITUATIONFAMILIALE',
'SITUATIONFAMILIALE_label',
'NBENFANTACTIF',
'NBRLACTIF',
'IDDUI',
'CODEMISEAJOUR',
'management_dates',
'annee_reference',
'annee_reference_label',
'annee_reference_short',
]:
payload.pop(key)
for key in [
'IDPERSONNE',
'NOM',
'PRENOM',
'NOMJEUNEFILLE',
'DATENAISSANCE',
'CIVILITE',
'INDICATEURRL',
'CSP_label',
]:
if 'RL1' in payload:
payload['RL1'].pop(key)
if 'RL2' in payload:
payload['RL2'].pop(key)
for key in [
'MONTANTTOTAL',
'DATEVALIDITE',
'SFI',
'IREVENUS',
'RNF',
'NBENFANTSACHARGE',
'TYPEREGIME_label',
]:
payload['REVENUS'].pop(key, None)
for enfant in payload['ENFANT']:
for key in [
'id',
'text',
'NOM',
'DATENAISSANCE',
'SEXE',
'PRENOMPERE',
'PRENOMMERE',
'NOMPERE',
'NOMMERE',
'RATTACHEAUTREDUI',
'PRENOM',
'clae_cantine_current',
]:
enfant.pop(key)
enfant['AUTORISATIONURGENCEMEDICALE'] = 'OUI'
# manage contact fields
for contact in enfant.get('CONTACT', []):
contact.pop('id')
contact.pop('text')
contact.pop('LIENPARENTE_label')
if 'SANITAIRE' not in enfant:
continue
# manage handicap data (not the same schema)
handicap_fields = [
'AUTREDIFFICULTE',
'ECOLESPECIALISEE',
'INDICATEURAUXILIAIREVS',
'INDICATEURECOLE',
'INDICATEURHANDICAP',
'INDICATEURNOTIFMDPH',
]
enfant['SANITAIRE']['HANDICAP'] = {}
for key in handicap_fields:
enfant['SANITAIRE']['HANDICAP'][key] = enfant['SANITAIRE'].pop(key)
# manage allergie data (not the same schema)
if 'ALLERGIE' not in enfant['SANITAIRE']:
continue
new_allergie = {
'ASTHME': False,
'MEDICAMENTEUSES': False,
'ALIMENTAIRES': False,
'AUTRES': None,
}
for allergie in enfant['SANITAIRE']['ALLERGIE']:
if allergie['TYPE'] == 'AUTRES':
if allergie['ALLERGIQUE'] == 'OUI':
new_allergie['AUTRES'] = allergie['NOMALLERGIE']
continue
new_allergie[allergie['TYPE']] = allergie['ALLERGIQUE']
enfant['SANITAIRE']['ALLERGIE'] = new_allergie
# add partial update flags
flags = [
'maj:adresse',
'maj:rl1',
'maj:rl1_adresse_employeur',
'maj:rl2',
'maj:rl2_adresse_employeur',
'maj:revenus',
]
for i in range(0, 6):
flags += [
'maj:enfant_%s' % i,
'maj:enfant_%s_sanitaire' % i,
'maj:enfant_%s_sanitaire_medecin' % i,
'maj:enfant_%s_sanitaire_vaccin' % i,
'maj:enfant_%s_sanitaire_allergie' % i,
'maj:enfant_%s_sanitaire_handicap' % i,
'maj:enfant_%s_assurance' % i,
'maj:enfant_%s_contact' % i,
]
for key in flags:
payload[key] = True
print("Update family info with the following payload:")
pprint.pprint(payload)
url = conn + '/update_family_info?NameID=%s' % name_id
resp = requests.post(url, json=payload)
resp.raise_for_status()
res = resp.json()
assert res['err'] == 0
pprint.pprint(res)
print('\n')
print("GET children info")
url = conn + '/children_info?NameID=%s' % (name_id)
resp = requests.get(url)
resp.raise_for_status()
res = resp.json()
assert res['err'] == 0
pprint.pprint(res)
print('\n')
for child in data['data']['ENFANT']:
print("GET child info")
url = conn + '/child_info?NameID=%s&idpersonne=%s' % (name_id, child['IDPERSONNE'])
resp = requests.get(url)
resp.raise_for_status()
res = resp.json()
assert res['err'] == 0
pprint.pprint(res)
print('\n')
print("GET child contact info")
url = conn + '/child_contacts_info?NameID=%s&idpersonne=%s' % (name_id, child['IDPERSONNE'])
resp = requests.get(url)
resp.raise_for_status()
res = resp.json()
assert res['err'] == 0
pprint.pprint(res)
print('\n')
print("Deleting link")
url = conn + '/unlink?NameID=%s' % name_id
resp = requests.post(url)
resp.raise_for_status()
res = resp.json()
assert res['err'] == 0
pprint.pprint(res)
print('\n')