0002-toulouse_axel-update-family-endpoint-38124.patch
functests/toulouse_axel/test_toulouse_axel.py | ||
---|---|---|
24 | 24 |
url = conn + '/family_info?NameID=%s' % name_id |
25 | 25 |
resp = requests.get(url) |
26 | 26 |
resp.raise_for_status() |
27 |
data = resp.json() |
|
28 |
assert res['err'] == 0 |
|
29 |
pprint.pprint(data) |
|
30 |
print('\n') |
|
31 | ||
32 |
payload = data['data'] |
|
33 |
for key in ['SITUATIONFAMILIALE', 'NBENFANTACTIF', 'NBRLACTIF', 'IDDUI', 'CODEMISEAJOUR']: |
|
34 |
payload.pop(key) |
|
35 |
payload['N0TELEDOSSIER'] = '42' |
|
36 |
payload['DROITALIMAGE'] = 'NON' |
|
37 |
for key in ['MONTANTTOTAL', 'DATEVALIDITE', 'SFI', 'IREVENUS', 'RNF']: |
|
38 |
payload['REVENUS'].pop(key) |
|
39 |
payload['REVENUS']['CHOIXREVENU'] = '' |
|
40 |
for enfant in payload['ENFANT']: |
|
41 |
for key in ['NOM', 'DATENAISSANCE', 'SEXE', 'PRENOMPERE', 'PRENOMMERE', 'NOMPERE', 'NOMMERE', 'RATTACHEAUTREDUI', 'PRENOM']: |
|
42 |
enfant.pop(key) |
|
43 |
enfant['AUTORISATIONURGENCEMEDICALE'] = 'OUI' |
|
44 | ||
45 |
print("Update family info with the following payload:") |
|
46 |
pprint.pprint(payload) |
|
47 |
url = conn + '/update_family_info?NameID=%s' % name_id |
|
48 |
resp = requests.post(url, json=payload) |
|
49 |
resp.raise_for_status() |
|
27 | 50 |
res = resp.json() |
28 | 51 |
assert res['err'] == 0 |
29 | 52 |
pprint.pprint(res) |
30 | 53 |
print('\n') |
31 | 54 | |
32 |
data = res |
|
33 | 55 |
for child in data['data']['ENFANT']: |
34 | 56 |
print("GET child info") |
35 | 57 |
url = conn + '/child_info?NameID=%s&idpersonne=%s' % (name_id, child['IDPERSONNE']) |
passerelle/contrib/toulouse_axel/models.py | ||
---|---|---|
143 | 143 | |
144 | 144 |
def __call__(self, resource, request_data): |
145 | 145 |
client = resource.soap_client() |
146 | ||
146 | 147 |
serialized_request = ET.tostring( |
147 | 148 |
self.request_converter.encode(request_data)) |
149 |
try: |
|
150 |
self.request_converter.xml_schema.validate(serialized_request) |
|
151 |
except xmlschema.XMLSchemaValidationError as e: |
|
152 |
raise AxelError('invalid request', str(e)) |
|
153 | ||
148 | 154 |
result = client.service.getData( |
149 | 155 |
self.operation, |
150 | 156 |
force_text(serialized_request), |
... | ... | |
158 | 164 |
try: |
159 | 165 |
return self.response_converter.decode(ET.fromstring(result)) |
160 | 166 |
except xmlschema.XMLSchemaValidationError as e: |
161 |
raise AxelError('invalid response', e)
|
|
167 |
raise AxelError('invalid response', str(e))
|
|
162 | 168 | |
163 | 169 | |
164 | 170 |
ref_verif_dui = Operation('RefVerifDui') |
165 | 171 |
ref_famille_dui = Operation('RefFamilleDui') |
172 |
form_maj_famille_dui = Operation('FormMajFamilleDui') |
|
166 | 173 |
ref_facture_a_payer = Operation('RefFactureAPayer') |
167 | 174 |
ref_facture_pdf = Operation('RefFacturePDF', prefix='') |
168 | 175 | |
... | ... | |
188 | 195 |
LINK_SCHEMA['properties'].pop('IDPERSONNE') |
189 | 196 |
LINK_SCHEMA['required'].remove('IDPERSONNE') |
190 | 197 | |
198 |
UPDATE_FAMILY_SCHEMA = copy.deepcopy( |
|
199 |
form_maj_famille_dui.request_schema['properties']['PORTAIL']['properties']['DUI']) |
|
200 |
UPDATE_FAMILY_SCHEMA['properties'].pop('IDDUI') |
|
201 |
UPDATE_FAMILY_SCHEMA['properties'].pop('DATEDEMANDE') |
|
202 |
UPDATE_FAMILY_SCHEMA['properties'].pop('QUIACTUALISEDUI') |
|
203 |
UPDATE_FAMILY_SCHEMA['required'].remove('IDDUI') |
|
204 |
UPDATE_FAMILY_SCHEMA['required'].remove('DATEDEMANDE') |
|
205 |
UPDATE_FAMILY_SCHEMA['required'].remove('QUIACTUALISEDUI') |
|
206 |
UPDATE_FAMILY_SCHEMA['unflatten'] = True |
|
207 | ||
191 | 208 |
@endpoint( |
192 | 209 |
description=_('Lock a resource'), |
193 | 210 |
perm='can_access', |
... | ... | |
318 | 335 | |
319 | 336 |
raise APIError('Child not found', err='not-found') |
320 | 337 | |
338 |
@endpoint( |
|
339 |
description=_("Update information about user's family"), |
|
340 |
perm='can_access', |
|
341 |
parameters={ |
|
342 |
'NameID': {'description': _('Publik ID')}, |
|
343 |
}, |
|
344 |
post={ |
|
345 |
'request_body': { |
|
346 |
'schema': { |
|
347 |
'application/json': UPDATE_FAMILY_SCHEMA, |
|
348 |
} |
|
349 |
} |
|
350 |
}) |
|
351 |
def update_family_info(self, request, NameID, post_data): |
|
352 |
try: |
|
353 |
link = self.link_set.get(name_id=NameID) |
|
354 |
except Link.DoesNotExist: |
|
355 |
raise APIError('Person not found', err='not-found') |
|
356 | ||
357 |
post_data['IDDUI'] = link.dui |
|
358 |
post_data['DATEDEMANDE'] = datetime.date.today().strftime('%Y-%m-%d') |
|
359 |
if 'RL2' in post_data and post_data['RL2'].get('IDPERSONNE') == link.person_id: |
|
360 |
post_data['QUIACTUALISEDUI'] = '2' |
|
361 |
else: |
|
362 |
post_data['QUIACTUALISEDUI'] = '1' |
|
363 |
try: |
|
364 |
form_maj_famille_dui(self, {'PORTAIL': {'DUI': post_data}}) |
|
365 |
except AxelError as e: |
|
366 |
raise APIError('Axel error: %s' % e, err='error', data={'error_post_data': post_data}) |
|
367 | ||
368 |
return {'updated': True, 'dui': link.dui, 'post_data': post_data} |
|
369 | ||
321 | 370 |
def get_invoices(self, name_id, error_status=200): |
322 | 371 |
link = self.get_link(name_id, error_status=error_status) |
323 | 372 |
try: |
passerelle/contrib/toulouse_axel/xsd/Dui/Q_FormMajFamilleDui.xsd | ||
---|---|---|
1 |
<?xml version="1.0" encoding="utf-8" ?> |
|
2 |
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:all="urn:AllAxelTypes" xmlns:adr="urn:AdresseDui"> |
|
3 | ||
4 |
<xsd:import schemaLocation="../AllAxelTypes.xsd" namespace="urn:AllAxelTypes" /> |
|
5 |
|
|
6 |
<xsd:import schemaLocation="./AdresseDui.xsd" namespace="urn:AdresseDui" /> |
|
7 | ||
8 |
<xsd:include schemaLocation="./ResponsableDui.xsd"/> |
|
9 |
|
|
10 |
<xsd:include schemaLocation="./ContactDui.xsd"/> |
|
11 |
|
|
12 |
<xsd:include schemaLocation="./AssuranceDui.xsd"/> |
|
13 |
|
|
14 |
<xsd:include schemaLocation="./FicheSanitaireDui.xsd"/> |
|
15 | ||
16 |
<xsd:simpleType name="N0TELEDOSSIERType"> |
|
17 |
<xsd:restriction base="xsd:string"> |
|
18 |
<xsd:minLength value="1" /> |
|
19 |
<xsd:maxLength value="12" /> |
|
20 |
</xsd:restriction> |
|
21 |
</xsd:simpleType> |
|
22 |
|
|
23 |
<xsd:simpleType name="QUIACTUALISEDUIType"> |
|
24 |
<xsd:restriction base="xsd:string"> |
|
25 |
<xsd:enumeration value="1" /> |
|
26 |
<xsd:enumeration value="2" /> |
|
27 |
</xsd:restriction> |
|
28 |
</xsd:simpleType> |
|
29 |
|
|
30 |
<xsd:simpleType name="TYPEREGIMEType"> |
|
31 |
<xsd:restriction base="xsd:string"> |
|
32 |
<xsd:enumeration value="" /> |
|
33 |
<xsd:enumeration value="GENE" /> |
|
34 |
<xsd:enumeration value="ZAU" /> |
|
35 |
<xsd:enumeration value="MSA" /> |
|
36 |
</xsd:restriction> |
|
37 |
</xsd:simpleType> |
|
38 |
|
|
39 |
<xsd:simpleType name="NUMEROCAFType"> |
|
40 |
<xsd:restriction base="xsd:string"> |
|
41 |
<xsd:minLength value="0" /> |
|
42 |
<xsd:maxLength value="7" /> |
|
43 |
</xsd:restriction> |
|
44 |
</xsd:simpleType> |
|
45 |
|
|
46 |
<xsd:simpleType name="ALLOCATAIREType"> |
|
47 |
<xsd:restriction base="xsd:string"> |
|
48 |
<xsd:enumeration value="" /> |
|
49 |
<xsd:enumeration value="1" /> |
|
50 |
<xsd:enumeration value="2" /> |
|
51 |
</xsd:restriction> |
|
52 |
</xsd:simpleType> |
|
53 | ||
54 |
<xsd:simpleType name="CHOIXREVENUType"> |
|
55 |
<xsd:restriction base="xsd:string"> |
|
56 |
<xsd:enumeration value="" /> |
|
57 |
<xsd:enumeration value="rnf" /> |
|
58 |
<xsd:enumeration value="cafprooui" /> |
|
59 |
<xsd:enumeration value="RNF" /> |
|
60 |
<xsd:enumeration value="CAFPROOUI" /> |
|
61 |
</xsd:restriction> |
|
62 |
</xsd:simpleType> |
|
63 |
|
|
64 |
<xsd:complexType name="REVENUSType"> |
|
65 |
<xsd:sequence> |
|
66 |
<xsd:element ref="TYPEREGIME" /> |
|
67 |
<xsd:element ref="NUMEROCAF" /> |
|
68 |
<xsd:element ref="ALLOCATAIRE" /> |
|
69 |
<xsd:element ref="CHOIXREVENU" /> |
|
70 |
<xsd:element ref="NBENFANTSACHARGE" /> |
|
71 |
</xsd:sequence> |
|
72 |
</xsd:complexType> |
|
73 |
|
|
74 |
<xsd:complexType name="ENFANTType"> |
|
75 |
<xsd:sequence> |
|
76 |
<xsd:element ref="IDPERSONNE" /> |
|
77 |
<xsd:element ref="AUTORISATIONURGENCEMEDICALE" /> |
|
78 |
<xsd:element ref="ASSURANCE" minOccurs="0" maxOccurs="1"/> |
|
79 |
<xsd:element ref="SANITAIRE" minOccurs="0" maxOccurs="1"/> |
|
80 |
<xsd:element ref="CONTACT" minOccurs="0" maxOccurs="3"/> |
|
81 |
</xsd:sequence> |
|
82 |
</xsd:complexType> |
|
83 |
|
|
84 |
<xsd:complexType name="DUIType"> |
|
85 |
<xsd:sequence> |
|
86 |
<xsd:element ref="DATEDEMANDE" /> |
|
87 |
<xsd:element ref="N0TELEDOSSIER" /> |
|
88 |
<xsd:element ref="IDDUI" /> |
|
89 |
<xsd:element ref="QUIACTUALISEDUI" /> |
|
90 |
<xsd:element ref="DROITALIMAGE" /> |
|
91 |
<xsd:element ref="REACTUALISATIONENLIGNE" /> |
|
92 |
<xsd:element ref="DEMATFACTURES" /> |
|
93 |
<xsd:element ref="ADRESSE" minOccurs="1" maxOccurs="1"/> |
|
94 |
<xsd:element ref="TELFIXE" /> |
|
95 |
<xsd:element ref="RL1" minOccurs="0" maxOccurs="1"/> |
|
96 |
<xsd:element ref="RL2" minOccurs="0" maxOccurs="1"/> |
|
97 |
<xsd:element ref="ENFANT" minOccurs="0" maxOccurs="6"/> |
|
98 |
<xsd:element ref="REVENUS" minOccurs="0" maxOccurs="1"/> |
|
99 |
</xsd:sequence> |
|
100 |
</xsd:complexType> |
|
101 |
|
|
102 |
<xsd:complexType name="PORTAILType"> |
|
103 |
<xsd:sequence> |
|
104 |
<xsd:element ref="DUI"/> |
|
105 |
</xsd:sequence> |
|
106 |
</xsd:complexType> |
|
107 |
|
|
108 |
<xsd:element name="DATEDEMANDE" type="all:DATEType"/> |
|
109 |
<xsd:element name="N0TELEDOSSIER" type="N0TELEDOSSIERType"/> |
|
110 |
<xsd:element name="IDDUI" type="all:IDENTREQUIREDType"/> |
|
111 |
<xsd:element name="QUIACTUALISEDUI" type="QUIACTUALISEDUIType"/> |
|
112 |
<xsd:element name="DROITALIMAGE" type="all:OUINONREQUIREDType"/> |
|
113 |
<xsd:element name="REACTUALISATIONENLIGNE" type="all:OUINONREQUIREDType"/> |
|
114 |
<xsd:element name="DEMATFACTURES" type="all:OUINONREQUIREDType"/> |
|
115 |
<xsd:element name="ADRESSE" type="adr:ADRESSEType"/> |
|
116 |
<xsd:element name="TELFIXE" type="all:TELType"/> |
|
117 |
<xsd:element name="RL1" type="RESPONSABLE1Type"/> |
|
118 |
<xsd:element name="RL2" type="RESPONSABLE2Type"/> |
|
119 |
<xsd:element name="ENFANT" type="ENFANTType"/> |
|
120 |
<xsd:element name="REVENUS" type="REVENUSType"/> |
|
121 |
|
|
122 |
<xsd:element name="IDPERSONNE" type="all:IDENTREQUIREDType"/> |
|
123 |
<xsd:element name="AUTORISATIONURGENCEMEDICALE" type="all:OUINONREQUIREDType"/> |
|
124 |
<xsd:element name="ASSURANCE" type="ASSURANCEType"/> |
|
125 |
<xsd:element name="SANITAIRE" type="SANITAIREType"/> |
|
126 |
<xsd:element name="CONTACT" type="CONTACTType"/> |
|
127 |
|
|
128 |
<xsd:element name="TYPEREGIME" type="TYPEREGIMEType"/> |
|
129 |
<xsd:element name="NUMEROCAF" type="NUMEROCAFType"/> |
|
130 |
<xsd:element name="ALLOCATAIRE" type="ALLOCATAIREType"/> |
|
131 |
<xsd:element name="CHOIXREVENU" type="CHOIXREVENUType"/> |
|
132 |
<xsd:element name="NBENFANTSACHARGE" type="all:unsignedInt-or-empty"/> |
|
133 |
|
|
134 |
<xsd:element name="DUI" type="DUIType"/> |
|
135 |
|
|
136 |
<xsd:element name="PORTAIL" type="PORTAILType"/> |
|
137 |
</xsd:schema> |
passerelle/contrib/toulouse_axel/xsd/Dui/R_FormMajFamilleDui.xsd | ||
---|---|---|
1 |
<?xml version="1.0" encoding="utf-8" ?> |
|
2 |
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> |
|
3 | ||
4 |
<xsd:redefine schemaLocation="../R_ShemaResultat.xsd"> |
|
5 |
<xsd:simpleType name="TYPEType"> |
|
6 |
<xsd:restriction base="TYPEType"> |
|
7 |
<xsd:enumeration value="FormMajFamilleDui" /> |
|
8 |
</xsd:restriction> |
|
9 |
</xsd:simpleType> |
|
10 |
|
|
11 |
<xsd:complexType name="PORTAILType"> |
|
12 |
<xsd:complexContent> |
|
13 |
<xsd:extension base="PORTAILType"> |
|
14 |
<xsd:sequence> |
|
15 |
<xsd:element name="DUI" type="xsd:string" minOccurs="0"/> |
|
16 |
</xsd:sequence> |
|
17 |
</xsd:extension> |
|
18 |
</xsd:complexContent> |
|
19 |
</xsd:complexType> |
|
20 |
</xsd:redefine> |
|
21 |
</xsd:schema> |
tests/data/toulouse_axel/flat_update_family_info.json | ||
---|---|---|
1 |
{ |
|
2 |
"ADRESSE/CODEINSEEVILLE": "", |
|
3 |
"ADRESSE/CODEPOSTAL": "31400", |
|
4 |
"ADRESSE/COMPLEMENT1": "foo", |
|
5 |
"ADRESSE/COMPLEMENT2": "", |
|
6 |
"ADRESSE/COMPLEMENTVOIE": "", |
|
7 |
"ADRESSE/NUMEROSTI": "1234", |
|
8 |
"ADRESSE/NUMVOIE": "42", |
|
9 |
"ADRESSE/VILLE": "TOULOUSE", |
|
10 |
"ADRESSE/VOIE": "RUE bar", |
|
11 |
"DEMATFACTURES": "NON", |
|
12 |
"DROITALIMAGE": "NON", |
|
13 |
"ENFANT/0/ASSURANCE/DATEFIN": "2020-12-31", |
|
14 |
"ENFANT/0/ASSURANCE/NOM": "foo", |
|
15 |
"ENFANT/0/ASSURANCE/NUMERO": "1234", |
|
16 |
"ENFANT/0/AUTORISATIONURGENCEMEDICALE": "OUI", |
|
17 |
"ENFANT/0/CONTACT/0/CHERCHERLENFANT": "OUI", |
|
18 |
"ENFANT/0/CONTACT/0/ENCASURGENCE": "OUI", |
|
19 |
"ENFANT/0/CONTACT/0/LIENPARENTE": "", |
|
20 |
"ENFANT/0/CONTACT/0/NOM": "foo", |
|
21 |
"ENFANT/0/CONTACT/0/PRENOM": "foo", |
|
22 |
"ENFANT/0/CONTACT/0/TELFIXE": "0505050505", |
|
23 |
"ENFANT/0/CONTACT/0/TELPORTABLE": "0606060606", |
|
24 |
"ENFANT/0/CONTACT/1/CHERCHERLENFANT": "OUI", |
|
25 |
"ENFANT/0/CONTACT/1/ENCASURGENCE": "OUI", |
|
26 |
"ENFANT/0/CONTACT/1/LIENPARENTE": "", |
|
27 |
"ENFANT/0/CONTACT/1/NOM": "foo", |
|
28 |
"ENFANT/0/CONTACT/1/PRENOM": "foo", |
|
29 |
"ENFANT/0/CONTACT/1/TELFIXE": "0505050505", |
|
30 |
"ENFANT/0/CONTACT/1/TELPORTABLE": "0606060606", |
|
31 |
"ENFANT/0/CONTACT/2/CHERCHERLENFANT": "OUI", |
|
32 |
"ENFANT/0/CONTACT/2/ENCASURGENCE": "OUI", |
|
33 |
"ENFANT/0/CONTACT/2/LIENPARENTE": "", |
|
34 |
"ENFANT/0/CONTACT/2/NOM": "foo", |
|
35 |
"ENFANT/0/CONTACT/2/PRENOM": "foo", |
|
36 |
"ENFANT/0/CONTACT/2/TELFIXE": "0505050505", |
|
37 |
"ENFANT/0/CONTACT/2/TELPORTABLE": "0606060606", |
|
38 |
"ENFANT/0/IDPERSONNE": "4242", |
|
39 |
"ENFANT/0/SANITAIRE/ALLERGIE/0/ALLERGIQUE": "OUI", |
|
40 |
"ENFANT/0/SANITAIRE/ALLERGIE/0/NOMALLERGIE": "", |
|
41 |
"ENFANT/0/SANITAIRE/ALLERGIE/0/TYPE": "ASTHME", |
|
42 |
"ENFANT/0/SANITAIRE/ALLERGIE/1/ALLERGIQUE": "OUI", |
|
43 |
"ENFANT/0/SANITAIRE/ALLERGIE/1/NOMALLERGIE": "", |
|
44 |
"ENFANT/0/SANITAIRE/ALLERGIE/1/TYPE": "MEDICAMENTEUSES", |
|
45 |
"ENFANT/0/SANITAIRE/ALLERGIE/2/ALLERGIQUE": "OUI", |
|
46 |
"ENFANT/0/SANITAIRE/ALLERGIE/2/NOMALLERGIE": "", |
|
47 |
"ENFANT/0/SANITAIRE/ALLERGIE/2/TYPE": "ALIMENTAIRES", |
|
48 |
"ENFANT/0/SANITAIRE/AUTREDIFFICULTE": "", |
|
49 |
"ENFANT/0/SANITAIRE/DATEFINVALIDITE": "2020-12-31", |
|
50 |
"ENFANT/0/SANITAIRE/ECOLESPECIALISEE": "", |
|
51 |
"ENFANT/0/SANITAIRE/INDICATEURAUXILIAIREVS": "NON", |
|
52 |
"ENFANT/0/SANITAIRE/INDICATEURECOLE": "NON", |
|
53 |
"ENFANT/0/SANITAIRE/INDICATEURHANDICAP": "NON", |
|
54 |
"ENFANT/0/SANITAIRE/INDICATEURNOTIFMDPH": "NON", |
|
55 |
"ENFANT/0/SANITAIRE/INDICATEURPAI": "NON", |
|
56 |
"ENFANT/0/SANITAIRE/INFOUTILES": "", |
|
57 |
"ENFANT/0/SANITAIRE/MEDECIN/NOM": "foo", |
|
58 |
"ENFANT/0/SANITAIRE/MEDECIN/TELMEDECIN": "0505050505", |
|
59 |
"ENFANT/0/SANITAIRE/VACCIN/AUTRE": "", |
|
60 |
"ENFANT/0/SANITAIRE/VACCIN/BCGAJOUR": "", |
|
61 |
"ENFANT/0/SANITAIRE/VACCIN/COQAJOUR": "", |
|
62 |
"ENFANT/0/SANITAIRE/VACCIN/DAJOUR": "", |
|
63 |
"ENFANT/0/SANITAIRE/VACCIN/HBAJOUR": "", |
|
64 |
"ENFANT/0/SANITAIRE/VACCIN/HIBAJOUR": "", |
|
65 |
"ENFANT/0/SANITAIRE/VACCIN/IIPAJOUR": "", |
|
66 |
"ENFANT/0/SANITAIRE/VACCIN/MENINAJOUR": "", |
|
67 |
"ENFANT/0/SANITAIRE/VACCIN/PAJOUR": "", |
|
68 |
"ENFANT/0/SANITAIRE/VACCIN/RORAJOUR": "", |
|
69 |
"ENFANT/0/SANITAIRE/VACCIN/TAJOUR": "", |
|
70 |
"ENFANT/1/ASSURANCE/DATEFIN": "2020-12-31", |
|
71 |
"ENFANT/1/ASSURANCE/NOM": "foo", |
|
72 |
"ENFANT/1/ASSURANCE/NUMERO": "1234", |
|
73 |
"ENFANT/1/AUTORISATIONURGENCEMEDICALE": "OUI", |
|
74 |
"ENFANT/1/IDPERSONNE": "3535", |
|
75 |
"ENFANT/1/SANITAIRE/ALLERGIE/0/ALLERGIQUE": "OUI", |
|
76 |
"ENFANT/1/SANITAIRE/ALLERGIE/0/NOMALLERGIE": "", |
|
77 |
"ENFANT/1/SANITAIRE/ALLERGIE/0/TYPE": "ASTHME", |
|
78 |
"ENFANT/1/SANITAIRE/ALLERGIE/1/ALLERGIQUE": "OUI", |
|
79 |
"ENFANT/1/SANITAIRE/ALLERGIE/1/NOMALLERGIE": "", |
|
80 |
"ENFANT/1/SANITAIRE/ALLERGIE/1/TYPE": "MEDICAMENTEUSES", |
|
81 |
"ENFANT/1/SANITAIRE/ALLERGIE/2/ALLERGIQUE": "OUI", |
|
82 |
"ENFANT/1/SANITAIRE/ALLERGIE/2/NOMALLERGIE": "", |
|
83 |
"ENFANT/1/SANITAIRE/ALLERGIE/2/TYPE": "ALIMENTAIRES", |
|
84 |
"ENFANT/1/SANITAIRE/AUTREDIFFICULTE": "", |
|
85 |
"ENFANT/1/SANITAIRE/DATEFINVALIDITE": "2020-12-31", |
|
86 |
"ENFANT/1/SANITAIRE/ECOLESPECIALISEE": "", |
|
87 |
"ENFANT/1/SANITAIRE/INDICATEURAUXILIAIREVS": "NON", |
|
88 |
"ENFANT/1/SANITAIRE/INDICATEURECOLE": "NON", |
|
89 |
"ENFANT/1/SANITAIRE/INDICATEURHANDICAP": "NON", |
|
90 |
"ENFANT/1/SANITAIRE/INDICATEURNOTIFMDPH": "NON", |
|
91 |
"ENFANT/1/SANITAIRE/INDICATEURPAI": "NON", |
|
92 |
"ENFANT/1/SANITAIRE/INFOUTILES": "", |
|
93 |
"ENFANT/1/SANITAIRE/MEDECIN/NOM": "foo", |
|
94 |
"ENFANT/1/SANITAIRE/MEDECIN/TELMEDECIN": "0505050505", |
|
95 |
"ENFANT/1/SANITAIRE/VACCIN/AUTRE": "", |
|
96 |
"ENFANT/1/SANITAIRE/VACCIN/BCGAJOUR": "", |
|
97 |
"ENFANT/1/SANITAIRE/VACCIN/COQAJOUR": "OUI", |
|
98 |
"ENFANT/1/SANITAIRE/VACCIN/DAJOUR": "OUI", |
|
99 |
"ENFANT/1/SANITAIRE/VACCIN/HBAJOUR": "OUI", |
|
100 |
"ENFANT/1/SANITAIRE/VACCIN/HIBAJOUR": "OUI", |
|
101 |
"ENFANT/1/SANITAIRE/VACCIN/IIPAJOUR": "OUI", |
|
102 |
"ENFANT/1/SANITAIRE/VACCIN/MENINAJOUR": "OUI", |
|
103 |
"ENFANT/1/SANITAIRE/VACCIN/PAJOUR": "OUI", |
|
104 |
"ENFANT/1/SANITAIRE/VACCIN/RORAJOUR": "OUI", |
|
105 |
"ENFANT/1/SANITAIRE/VACCIN/TAJOUR": "OUI", |
|
106 |
"N0TELEDOSSIER": "42", |
|
107 |
"REACTUALISATIONENLIGNE": "NON", |
|
108 |
"REVENUS/ALLOCATAIRE": "2", |
|
109 |
"REVENUS/CHOIXREVENU": "", |
|
110 |
"REVENUS/NBENFANTSACHARGE": 2, |
|
111 |
"REVENUS/NUMEROCAF": "1234", |
|
112 |
"REVENUS/TYPEREGIME": "GENE", |
|
113 |
"RL1/ADREMPLOYEUR/CODEINSEEVILLE": "", |
|
114 |
"RL1/ADREMPLOYEUR/CODEPOSTAL": "", |
|
115 |
"RL1/ADREMPLOYEUR/COMPLEMENT1": "", |
|
116 |
"RL1/ADREMPLOYEUR/COMPLEMENT2": "", |
|
117 |
"RL1/ADREMPLOYEUR/COMPLEMENTVOIE": "", |
|
118 |
"RL1/ADREMPLOYEUR/NUMEROSTI": "", |
|
119 |
"RL1/ADREMPLOYEUR/NUMVOIE": "", |
|
120 |
"RL1/ADREMPLOYEUR/VILLE": "", |
|
121 |
"RL1/ADREMPLOYEUR/VOIE": "", |
|
122 |
"RL1/CIVILITE": "M", |
|
123 |
"RL1/COURRIEL": "foo@bar.com", |
|
124 |
"RL1/CSP": "ETU", |
|
125 |
"RL1/DATENAISSANCE": "1980-01-01", |
|
126 |
"RL1/IDPERSONNE": "42", |
|
127 |
"RL1/INDICATEURRL": "1", |
|
128 |
"RL1/NOM": "foo", |
|
129 |
"RL1/NOMEMPLOYEUR": "foo", |
|
130 |
"RL1/NOMJEUNEFILLE": "", |
|
131 |
"RL1/PRENOM": "foo", |
|
132 |
"RL1/PROFESSION": "ETUDIANT", |
|
133 |
"RL1/TELPORTABLE": "0606060606", |
|
134 |
"RL2/ADREMPLOYEUR/CODEINSEEVILLE": "", |
|
135 |
"RL2/ADREMPLOYEUR/CODEPOSTAL": "", |
|
136 |
"RL2/ADREMPLOYEUR/COMPLEMENT1": "", |
|
137 |
"RL2/ADREMPLOYEUR/COMPLEMENT2": "", |
|
138 |
"RL2/ADREMPLOYEUR/COMPLEMENTVOIE": "", |
|
139 |
"RL2/ADREMPLOYEUR/NUMEROSTI": "", |
|
140 |
"RL2/ADREMPLOYEUR/NUMVOIE": "", |
|
141 |
"RL2/ADREMPLOYEUR/VILLE": "", |
|
142 |
"RL2/ADREMPLOYEUR/VOIE": "", |
|
143 |
"RL2/CIVILITE": "MME", |
|
144 |
"RL2/COURRIEL": "foo@bar.com", |
|
145 |
"RL2/CSP": "EMP", |
|
146 |
"RL2/DATENAISSANCE": "1980-01-01", |
|
147 |
"RL2/IDPERSONNE": "35", |
|
148 |
"RL2/INDICATEURRL": "2", |
|
149 |
"RL2/NOM": "foo", |
|
150 |
"RL2/NOMEMPLOYEUR": "foo", |
|
151 |
"RL2/NOMJEUNEFILLE": "", |
|
152 |
"RL2/PRENOM": "foo", |
|
153 |
"RL2/PROFESSION": "foo", |
|
154 |
"RL2/TELPORTABLE": "0606060606", |
|
155 |
"TELFIXE": "" |
|
156 |
} |
tests/data/toulouse_axel/update_family_info.json | ||
---|---|---|
1 |
{ |
|
2 |
"ADRESSE": { |
|
3 |
"CODEINSEEVILLE": null, |
|
4 |
"CODEPOSTAL": "31400", |
|
5 |
"COMPLEMENT1": "foo", |
|
6 |
"COMPLEMENT2": null, |
|
7 |
"COMPLEMENTVOIE": null, |
|
8 |
"NUMEROSTI": "1234", |
|
9 |
"NUMVOIE": "42", |
|
10 |
"VILLE": "TOULOUSE", |
|
11 |
"VOIE": "RUE bar" |
|
12 |
}, |
|
13 |
"DEMATFACTURES": "NON", |
|
14 |
"DROITALIMAGE": "NON", |
|
15 |
"ENFANT": [ |
|
16 |
{ |
|
17 |
"ASSURANCE": { |
|
18 |
"DATEFIN": "2020-12-31", |
|
19 |
"NOM": "foo", |
|
20 |
"NUMERO": "1234" |
|
21 |
}, |
|
22 |
"AUTORISATIONURGENCEMEDICALE": "OUI", |
|
23 |
"CONTACT": [ |
|
24 |
{ |
|
25 |
"CHERCHERLENFANT": "OUI", |
|
26 |
"ENCASURGENCE": "OUI", |
|
27 |
"LIENPARENTE": null, |
|
28 |
"NOM": "foo", |
|
29 |
"PRENOM": "foo", |
|
30 |
"TELFIXE": "0505050505", |
|
31 |
"TELPORTABLE": "0606060606" |
|
32 |
}, |
|
33 |
{ |
|
34 |
"CHERCHERLENFANT": "OUI", |
|
35 |
"ENCASURGENCE": "OUI", |
|
36 |
"LIENPARENTE": null, |
|
37 |
"NOM": "foo", |
|
38 |
"PRENOM": "foo", |
|
39 |
"TELFIXE": "0505050505", |
|
40 |
"TELPORTABLE": "0606060606" |
|
41 |
}, |
|
42 |
{ |
|
43 |
"CHERCHERLENFANT": "OUI", |
|
44 |
"ENCASURGENCE": "OUI", |
|
45 |
"LIENPARENTE": null, |
|
46 |
"NOM": "foo", |
|
47 |
"PRENOM": "foo", |
|
48 |
"TELFIXE": "0505050505", |
|
49 |
"TELPORTABLE": "0606060606" |
|
50 |
} |
|
51 |
], |
|
52 |
"IDPERSONNE": "4242", |
|
53 |
"SANITAIRE": { |
|
54 |
"ALLERGIE": [ |
|
55 |
{ |
|
56 |
"ALLERGIQUE": "OUI", |
|
57 |
"NOMALLERGIE": null, |
|
58 |
"TYPE": "ASTHME" |
|
59 |
}, |
|
60 |
{ |
|
61 |
"ALLERGIQUE": "OUI", |
|
62 |
"NOMALLERGIE": null, |
|
63 |
"TYPE": "MEDICAMENTEUSES" |
|
64 |
}, |
|
65 |
{ |
|
66 |
"ALLERGIQUE": "OUI", |
|
67 |
"NOMALLERGIE": null, |
|
68 |
"TYPE": "ALIMENTAIRES" |
|
69 |
} |
|
70 |
], |
|
71 |
"AUTREDIFFICULTE": null, |
|
72 |
"DATEFINVALIDITE": "2020-12-31", |
|
73 |
"ECOLESPECIALISEE": null, |
|
74 |
"INDICATEURAUXILIAIREVS": "NON", |
|
75 |
"INDICATEURECOLE": "NON", |
|
76 |
"INDICATEURHANDICAP": "NON", |
|
77 |
"INDICATEURNOTIFMDPH": "NON", |
|
78 |
"INDICATEURPAI": "NON", |
|
79 |
"INFOUTILES": null, |
|
80 |
"MEDECIN": { |
|
81 |
"NOM": "foo", |
|
82 |
"TELMEDECIN": "0505050505" |
|
83 |
}, |
|
84 |
"VACCIN": { |
|
85 |
"AUTRE": null, |
|
86 |
"BCGAJOUR": null, |
|
87 |
"COQAJOUR": null, |
|
88 |
"DAJOUR": null, |
|
89 |
"HBAJOUR": null, |
|
90 |
"HIBAJOUR": null, |
|
91 |
"IIPAJOUR": null, |
|
92 |
"MENINAJOUR": null, |
|
93 |
"PAJOUR": null, |
|
94 |
"RORAJOUR": null, |
|
95 |
"TAJOUR": null |
|
96 |
} |
|
97 |
} |
|
98 |
}, |
|
99 |
{ |
|
100 |
"ASSURANCE": { |
|
101 |
"DATEFIN": "2020-12-31", |
|
102 |
"NOM": "foo", |
|
103 |
"NUMERO": "1234" |
|
104 |
}, |
|
105 |
"AUTORISATIONURGENCEMEDICALE": "OUI", |
|
106 |
"IDPERSONNE": "3535", |
|
107 |
"SANITAIRE": { |
|
108 |
"ALLERGIE": [ |
|
109 |
{ |
|
110 |
"ALLERGIQUE": "OUI", |
|
111 |
"NOMALLERGIE": null, |
|
112 |
"TYPE": "ASTHME" |
|
113 |
}, |
|
114 |
{ |
|
115 |
"ALLERGIQUE": "OUI", |
|
116 |
"NOMALLERGIE": null, |
|
117 |
"TYPE": "MEDICAMENTEUSES" |
|
118 |
}, |
|
119 |
{ |
|
120 |
"ALLERGIQUE": "OUI", |
|
121 |
"NOMALLERGIE": null, |
|
122 |
"TYPE": "ALIMENTAIRES" |
|
123 |
} |
|
124 |
], |
|
125 |
"AUTREDIFFICULTE": null, |
|
126 |
"DATEFINVALIDITE": "2020-12-31", |
|
127 |
"ECOLESPECIALISEE": null, |
|
128 |
"INDICATEURAUXILIAIREVS": "NON", |
|
129 |
"INDICATEURECOLE": "NON", |
|
130 |
"INDICATEURHANDICAP": "NON", |
|
131 |
"INDICATEURNOTIFMDPH": "NON", |
|
132 |
"INDICATEURPAI": "NON", |
|
133 |
"INFOUTILES": null, |
|
134 |
"MEDECIN": { |
|
135 |
"NOM": "foo", |
|
136 |
"TELMEDECIN": "0505050505" |
|
137 |
}, |
|
138 |
"VACCIN": { |
|
139 |
"AUTRE": null, |
|
140 |
"BCGAJOUR": null, |
|
141 |
"COQAJOUR": "OUI", |
|
142 |
"DAJOUR": "OUI", |
|
143 |
"HBAJOUR": "OUI", |
|
144 |
"HIBAJOUR": "OUI", |
|
145 |
"IIPAJOUR": "OUI", |
|
146 |
"MENINAJOUR": "OUI", |
|
147 |
"PAJOUR": "OUI", |
|
148 |
"RORAJOUR": "OUI", |
|
149 |
"TAJOUR": "OUI" |
|
150 |
} |
|
151 |
} |
|
152 |
} |
|
153 |
], |
|
154 |
"N0TELEDOSSIER": "42", |
|
155 |
"REACTUALISATIONENLIGNE": "NON", |
|
156 |
"REVENUS": { |
|
157 |
"ALLOCATAIRE": "2", |
|
158 |
"CHOIXREVENU": "", |
|
159 |
"NBENFANTSACHARGE": 2, |
|
160 |
"NUMEROCAF": "1234", |
|
161 |
"TYPEREGIME": "GENE" |
|
162 |
}, |
|
163 |
"RL1": { |
|
164 |
"ADREMPLOYEUR": { |
|
165 |
"CODEINSEEVILLE": null, |
|
166 |
"CODEPOSTAL": null, |
|
167 |
"COMPLEMENT1": null, |
|
168 |
"COMPLEMENT2": null, |
|
169 |
"COMPLEMENTVOIE": null, |
|
170 |
"NUMEROSTI": null, |
|
171 |
"NUMVOIE": null, |
|
172 |
"VILLE": null, |
|
173 |
"VOIE": null |
|
174 |
}, |
|
175 |
"CIVILITE": "M", |
|
176 |
"COURRIEL": "foo@bar.com", |
|
177 |
"CSP": "ETU", |
|
178 |
"DATENAISSANCE": "1980-01-01", |
|
179 |
"IDPERSONNE": "42", |
|
180 |
"INDICATEURRL": "1", |
|
181 |
"NOM": "foo", |
|
182 |
"NOMEMPLOYEUR": "foo", |
|
183 |
"NOMJEUNEFILLE": null, |
|
184 |
"PRENOM": "foo", |
|
185 |
"PROFESSION": "ETUDIANT", |
|
186 |
"TELPORTABLE": "0606060606" |
|
187 |
}, |
|
188 |
"RL2": { |
|
189 |
"ADREMPLOYEUR": { |
|
190 |
"CODEINSEEVILLE": null, |
|
191 |
"CODEPOSTAL": null, |
|
192 |
"COMPLEMENT1": null, |
|
193 |
"COMPLEMENT2": null, |
|
194 |
"COMPLEMENTVOIE": null, |
|
195 |
"NUMEROSTI": null, |
|
196 |
"NUMVOIE": null, |
|
197 |
"VILLE": null, |
|
198 |
"VOIE": null |
|
199 |
}, |
|
200 |
"CIVILITE": "MME", |
|
201 |
"COURRIEL": "foo@bar.com", |
|
202 |
"CSP": "EMP", |
|
203 |
"DATENAISSANCE": "1980-01-01", |
|
204 |
"IDPERSONNE": "35", |
|
205 |
"INDICATEURRL": "2", |
|
206 |
"NOM": "foo", |
|
207 |
"NOMEMPLOYEUR": "foo", |
|
208 |
"NOMJEUNEFILLE": null, |
|
209 |
"PRENOM": "foo", |
|
210 |
"PROFESSION": "foo", |
|
211 |
"TELPORTABLE": "0606060606" |
|
212 |
}, |
|
213 |
"TELFIXE": null |
|
214 |
} |
tests/test_toulouse_axel.py | ||
---|---|---|
15 | 15 |
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
16 | 16 | |
17 | 17 |
from contextlib import contextmanager |
18 |
import datetime |
|
19 |
import json |
|
18 | 20 |
import mock |
19 | 21 |
import os |
20 | 22 | |
... | ... | |
25 | 27 |
Link, |
26 | 28 |
Lock, |
27 | 29 |
ToulouseAxel, |
30 |
form_maj_famille_dui, |
|
28 | 31 |
ref_famille_dui, |
29 | 32 |
ref_facture_a_payer, |
30 | 33 |
ref_facture_pdf, |
... | ... | |
42 | 45 | |
43 | 46 | |
44 | 47 |
@pytest.fixture |
45 |
def params(): |
|
48 |
def link_params():
|
|
46 | 49 |
return { |
47 | 50 |
'IDDUI': 'XXX', |
48 | 51 |
'PRENOM': 'John', |
... | ... | |
51 | 54 |
} |
52 | 55 | |
53 | 56 | |
57 |
@pytest.fixture |
|
58 |
def update_params(): |
|
59 |
filepath = os.path.join(os.path.dirname(__file__), 'data/toulouse_axel/update_family_info.json') |
|
60 |
with open(filepath) as jsonfile: |
|
61 |
content = jsonfile.read() |
|
62 |
return json.loads(content) |
|
63 | ||
64 | ||
65 |
@pytest.fixture |
|
66 |
def flat_update_params(): |
|
67 |
filepath = os.path.join(os.path.dirname(__file__), 'data/toulouse_axel/flat_update_family_info.json') |
|
68 |
with open(filepath) as jsonfile: |
|
69 |
content = jsonfile.read() |
|
70 |
return json.loads(content) |
|
71 | ||
72 | ||
54 | 73 |
def test_lock(app, resource): |
55 | 74 |
resp = app.get('/toulouse-axel/test/lock?key=&locker=', status=400) |
56 | 75 |
assert resp.json['err_desc'] == "key is empty" |
... | ... | |
160 | 179 |
ref_verif_dui(resource, { |
161 | 180 |
'PORTAIL': { |
162 | 181 |
'DUI': { |
182 |
'IDDUI': 'XXX', |
|
183 |
'IDPERSONNE': '42', |
|
163 | 184 |
'PRENOM': 'John', |
164 | 185 |
'NOM': 'Doe', |
165 | 186 |
'NAISSANCE': '2010-10-10', |
... | ... | |
223 | 244 |
}) |
224 | 245 | |
225 | 246 | |
247 |
@pytest.mark.parametrize('content', [ |
|
248 |
'<PORTAIL><DUI/></PORTAIL>', |
|
249 |
]) |
|
250 |
def test_operation_form_maj_famille_dui(resource, content): |
|
251 |
with mock_getdata(content, 'FormMajFamilleDui'): |
|
252 |
with pytest.raises(AxelError): |
|
253 |
form_maj_famille_dui(resource, { |
|
254 |
'PORTAIL': { |
|
255 |
'DUI': { |
|
256 |
'IDDUI': 'XXX', |
|
257 |
} |
|
258 |
} |
|
259 |
}) |
|
260 | ||
261 | ||
226 | 262 |
@pytest.mark.parametrize('content', [ |
227 | 263 |
'<PORTAIL><DUI/></PORTAIL>', |
228 | 264 |
]) |
... | ... | |
253 | 289 |
}) |
254 | 290 | |
255 | 291 | |
256 |
def test_link_endpoint_nameid_empty(app, resource, params): |
|
257 |
resp = app.post_json('/toulouse-axel/test/link?NameID=', params=params, status=400) |
|
292 |
def test_link_endpoint_nameid_empty(app, resource, link_params):
|
|
293 |
resp = app.post_json('/toulouse-axel/test/link?NameID=', params=link_params, status=400)
|
|
258 | 294 |
assert resp.json['err_desc'] == "NameID is empty" |
259 | 295 | |
260 | 296 | |
261 |
def test_link_endpoint_axel_error(app, resource, params): |
|
297 |
def test_link_endpoint_axel_error(app, resource, link_params):
|
|
262 | 298 |
with mock.patch('passerelle.contrib.toulouse_axel.models.ref_verif_dui') as operation: |
263 | 299 |
operation.side_effect = AxelError('FooBar') |
264 |
resp = app.post_json('/toulouse-axel/test/link?NameID=yyy', params=params) |
|
300 |
resp = app.post_json('/toulouse-axel/test/link?NameID=yyy', params=link_params)
|
|
265 | 301 |
assert resp.json['err_desc'] == "Axel error: FooBar" |
266 | 302 | |
267 | 303 | |
... | ... | |
270 | 306 |
'<IDDUI>XXX</IDDUI><IDPERSONNE>42</IDPERSONNE><CODE>1</CODE>', |
271 | 307 |
'<IDDUI>XXX</IDDUI><IDPERSONNE>42</IDPERSONNE><CODE>4</CODE>', |
272 | 308 |
]) |
273 |
def test_link_endpoint_no_result(app, resource, params, xml_response): |
|
309 |
def test_link_endpoint_no_result(app, resource, link_params, xml_response):
|
|
274 | 310 |
content = '''<PORTAIL> |
275 | 311 |
<DUI> |
276 | 312 |
%s |
277 | 313 |
</DUI> |
278 | 314 |
</PORTAIL>''' % xml_response |
279 | 315 |
with mock_getdata(content, 'RefVerifDui'): |
280 |
resp = app.post_json('/toulouse-axel/test/link?NameID=yyy', params=params) |
|
316 |
resp = app.post_json('/toulouse-axel/test/link?NameID=yyy', params=link_params)
|
|
281 | 317 |
assert resp.json['err_desc'] == "Person not found" |
282 | 318 | |
283 | 319 | |
284 |
def test_link_endpoint_conflict(app, resource, params): |
|
320 |
def test_link_endpoint_conflict(app, resource, link_params):
|
|
285 | 321 |
content = '''<PORTAIL> |
286 | 322 |
<DUI> |
287 | 323 |
<IDDUI>XXX</IDDUI> |
... | ... | |
292 | 328 |
# existing link but dui is wrong |
293 | 329 |
link = Link.objects.create(resource=resource, name_id='yyy', dui='YYY', person_id='42') |
294 | 330 |
with mock_getdata(content, 'RefVerifDui'): |
295 |
resp = app.post_json('/toulouse-axel/test/link?NameID=yyy', params=params) |
|
331 |
resp = app.post_json('/toulouse-axel/test/link?NameID=yyy', params=link_params)
|
|
296 | 332 |
assert resp.json['err_desc'] == "Data conflict" |
297 | 333 | |
298 | 334 |
# existing link but person_id is wrong |
... | ... | |
300 | 336 |
link.person_id = '35' |
301 | 337 |
link.save() |
302 | 338 |
with mock_getdata(content, 'RefVerifDui'): |
303 |
resp = app.post_json('/toulouse-axel/test/link?NameID=yyy', params=params) |
|
339 |
resp = app.post_json('/toulouse-axel/test/link?NameID=yyy', params=link_params)
|
|
304 | 340 |
assert resp.json['err_desc'] == "Data conflict" |
305 | 341 | |
306 | 342 | |
307 | 343 |
@pytest.mark.parametrize('code', [2, 3]) |
308 |
def test_link_endpoint(app, resource, params, code): |
|
344 |
def test_link_endpoint(app, resource, link_params, code):
|
|
309 | 345 |
content = '''<PORTAIL> |
310 | 346 |
<DUI> |
311 | 347 |
<IDDUI>XXX</IDDUI> |
... | ... | |
314 | 350 |
</DUI> |
315 | 351 |
</PORTAIL>''' % code |
316 | 352 |
with mock_getdata(content, 'RefVerifDui'): |
317 |
resp = app.post_json('/toulouse-axel/test/link?NameID=yyy', params=params) |
|
353 |
resp = app.post_json('/toulouse-axel/test/link?NameID=yyy', params=link_params)
|
|
318 | 354 |
assert set(resp.json.keys()) == set([ |
319 | 355 |
'err', 'link', 'created', 'dui']) |
320 | 356 |
assert resp.json['err'] == 0 |
... | ... | |
323 | 359 | |
324 | 360 |
# again |
325 | 361 |
with mock_getdata(content, 'RefVerifDui'): |
326 |
resp = app.post_json('/toulouse-axel/test/link?NameID=yyy', params=params) |
|
362 |
resp = app.post_json('/toulouse-axel/test/link?NameID=yyy', params=link_params)
|
|
327 | 363 |
assert set(resp.json.keys()) == set([ |
328 | 364 |
'err', 'link', 'created', 'dui']) |
329 | 365 |
assert resp.json['err'] == 0 |
... | ... | |
430 | 466 |
]) |
431 | 467 | |
432 | 468 | |
469 |
def test_update_family_info_endpoint_axel_error(app, resource, update_params): |
|
470 |
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42') |
|
471 |
with mock.patch('passerelle.contrib.toulouse_axel.models.form_maj_famille_dui') as operation: |
|
472 |
operation.side_effect = AxelError('FooBar') |
|
473 |
resp = app.post_json('/toulouse-axel/test/update_family_info?NameID=yyy', params=update_params) |
|
474 |
assert resp.json['err_desc'] == "Axel error: FooBar" |
|
475 |
assert 'error_post_data' in resp.json['data'] |
|
476 | ||
477 | ||
478 |
def test_update_family_info_endpoint_no_result(app, resource, update_params): |
|
479 |
resp = app.post_json('/toulouse-axel/test/update_family_info?NameID=yyy', params=update_params) |
|
480 |
assert resp.json['err_desc'] == "Person not found" |
|
481 | ||
482 | ||
483 |
def test_update_family_info_endpoint(app, resource, update_params): |
|
484 |
link = Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42') |
|
485 |
content = "<PORTAIL/>" |
|
486 |
with mock_getdata(content, 'FormMajFamilleDui'): |
|
487 |
resp = app.post_json('/toulouse-axel/test/update_family_info?NameID=yyy', params=update_params) |
|
488 |
assert resp.json['err'] == 0 |
|
489 |
assert resp.json['dui'] == 'XXX' |
|
490 |
assert resp.json['updated'] is True |
|
491 |
assert 'post_data' in resp.json |
|
492 | ||
493 |
with mock.patch('passerelle.contrib.toulouse_axel.models.form_maj_famille_dui') as operation: |
|
494 |
resp = app.post_json('/toulouse-axel/test/update_family_info?NameID=yyy', params=update_params) |
|
495 |
assert operation.call_args_list[0][0][1]['PORTAIL']['DUI']['IDDUI'] == 'XXX' |
|
496 |
assert operation.call_args_list[0][0][1]['PORTAIL']['DUI']['DATEDEMANDE'] == datetime.date.today().strftime('%Y-%m-%d') |
|
497 |
assert operation.call_args_list[0][0][1]['PORTAIL']['DUI']['QUIACTUALISEDUI'] == '1' |
|
498 | ||
499 |
link.person_id = '35' |
|
500 |
link.save() |
|
501 |
with mock.patch('passerelle.contrib.toulouse_axel.models.form_maj_famille_dui') as operation: |
|
502 |
resp = app.post_json('/toulouse-axel/test/update_family_info?NameID=yyy', params=update_params) |
|
503 |
assert operation.call_args_list[0][0][1]['PORTAIL']['DUI']['IDDUI'] == 'XXX' |
|
504 |
assert operation.call_args_list[0][0][1]['PORTAIL']['DUI']['DATEDEMANDE'] == datetime.date.today().strftime('%Y-%m-%d') |
|
505 |
assert operation.call_args_list[0][0][1]['PORTAIL']['DUI']['QUIACTUALISEDUI'] == '2' |
|
506 | ||
507 | ||
508 |
def test_update_family_info_flat_endpoint(app, resource, flat_update_params): |
|
509 |
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42') |
|
510 |
content = "<PORTAIL/>" |
|
511 |
with mock_getdata(content, 'FormMajFamilleDui'): |
|
512 |
resp = app.post_json('/toulouse-axel/test/update_family_info?NameID=yyy', params=flat_update_params) |
|
513 |
assert resp.json['err'] == 0 |
|
514 |
assert resp.json['dui'] == 'XXX' |
|
515 |
assert resp.json['updated'] is True |
|
516 |
assert 'post_data' in resp.json |
|
517 | ||
518 | ||
433 | 519 |
def test_invoices_endpoint_axel_error(app, resource): |
434 | 520 |
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42') |
435 | 521 |
with mock.patch('passerelle.contrib.toulouse_axel.models.ref_facture_a_payer') as operation: |
436 |
- |