passerelle/functests/toulouse_axel/test_toulouse_axel.py

164 lines
5.4 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']:
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', 'clae_cantine_next']:
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')