toulouse_maelis: add dietcode webservice (#69045)

This commit is contained in:
Nicolas Roche 2022-09-11 17:03:32 +02:00
parent 6f1d51bbaa
commit 50dda588ce
4 changed files with 72 additions and 0 deletions

View File

@ -152,6 +152,7 @@ class ToulouseMaelis(BaseResource, HTTPResource):
add_text_value('CSP', data, [rlg, 'profession', 'codeCSP'])
for child in data['childList']:
add_text_value('Sex', child, ['sexe'])
add_text_value('DietCode', child, ['dietcode'])
for kind in ('authorized', 'emergency'):
for person in data[kind + 'PersonList']:
add_text_value('Civility', person, ['civility'])
@ -739,6 +740,24 @@ class ToulouseMaelis(BaseResource, HTTPResource):
self.call('Family', 'updateFamily', **payload)
return {'data': 'ok'}
@endpoint(
display_category='Famille',
description="Créer ou mettre à jour le régime alimentaire d'un enfant",
name='update-child-dietcode',
perm='can_access',
parameters={
'NameID': {'description': 'Publik NameID'},
'child_id': {'description': "Numéro de l'enfant"},
'dietcode': {'description': 'code du régime alimentaire'},
},
methods=['post'],
)
def update_child_dietcode(self, request, NameID, child_id, dietcode):
self.get_link(NameID)
self.call('Family', 'createOrUpdateChildDiet', personNumber=child_id, code=dietcode)
return {'data': 'ok'}
class Link(models.Model):
resource = models.ForeignKey(ToulouseMaelis, on_delete=models.CASCADE)

View File

@ -0,0 +1,16 @@
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken>
<wsse:Username>maelis-webservice</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">maelis-password</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soap-env:Header>
<soap-env:Body>
<ns0:createOrUpdateChildDiet xmlns:ns0="family.ws.maelis.sigec.com">
<personNumber>613878</personNumber>
<code>RSV</code>
</ns0:createOrUpdateChildDiet>
</soap-env:Body>
</soap-env:Envelope>

View File

@ -0,0 +1,5 @@
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns2:createOrUpdateChildDietResponse xmlns:ns2="family.ws.maelis.sigec.com"/>
</soap:Body>
</soap:Envelope>

View File

@ -67,6 +67,7 @@ CREATE_CHILD_ERR = FakedResponse(content=get_xml_file('R_create_child_error.xml'
UPDATE_FAMILY = FakedResponse(content=get_xml_file('R_update_family.xml'), status_code=200)
UPDATE_FAMILY_ERR = FakedResponse(content=get_xml_file('R_update_family_error.xml'), status_code=200)
UPDATE_FAMILY_500 = FakedResponse(content=get_xml_file('R_update_family_soap_error.xml'), status_code=500)
UPDATE_DIETCODE = FakedResponse(content=get_xml_file('R_update_child_dietcode.xml'), status_code=200)
def assert_sent_payload(mocked_post, query_file):
@ -525,6 +526,7 @@ def test_read_family(mocked_post, mocked_get, con, app):
READ_CIVILITIES,
READ_QUALITIES,
READ_CSP,
READ_DIETCODE,
]
url = get_endpoint('read-family')
Link.objects.create(resource=con, family_id='1312', name_id='local')
@ -592,6 +594,7 @@ def test_read_family(mocked_post, mocked_get, con, app):
'sexe_text': 'Féminin',
'birth': {'dateBirth': '1943-01-19T00:00:00+01:00', 'place': None},
'dietcode': 'RSV',
'dietcode_text': '3- RÉGIME SANS VIANDE',
'bPhoto': False,
'bLeaveAlone': False,
'authorizedPersonList': [],
@ -687,6 +690,7 @@ def test_read_rl1(mocked_post, mocked_get, con, app):
READ_CIVILITIES,
READ_QUALITIES,
READ_CSP,
READ_DIETCODE,
]
url = get_endpoint('read-rl')
Link.objects.create(resource=con, family_id='1312', name_id='local')
@ -707,6 +711,7 @@ def test_read_rl2(mocked_post, mocked_get, con, app):
READ_CIVILITIES,
READ_QUALITIES,
READ_CSP,
READ_DIETCODE,
]
url = get_endpoint('read-rl')
Link.objects.create(resource=con, family_id='1312', name_id='local')
@ -770,6 +775,7 @@ def test_read_rl_not_found(mocked_post, mocked_get, con, app):
READ_CIVILITIES,
READ_QUALITIES,
READ_CSP,
READ_DIETCODE,
]
url = get_endpoint('read-rl')
Link.objects.create(resource=con, family_id='1312', name_id='local')
@ -790,6 +796,7 @@ def test_read_person(mocked_post, mocked_get, con, app):
READ_CIVILITIES,
READ_QUALITIES,
READ_CSP,
READ_DIETCODE,
]
url = get_endpoint('read-person')
Link.objects.create(resource=con, family_id='1312', name_id='local')
@ -826,6 +833,7 @@ def test_read_person_not_found(mocked_post, mocked_get, con, app):
READ_CIVILITIES,
READ_QUALITIES,
READ_CSP,
READ_DIETCODE,
]
url = get_endpoint('read-person')
Link.objects.create(resource=con, family_id='1312', name_id='local')
@ -846,6 +854,7 @@ def test_read_child(mocked_post, mocked_get, con, app):
READ_CIVILITIES,
READ_QUALITIES,
READ_CSP,
READ_DIETCODE,
]
url = get_endpoint('read-child')
Link.objects.create(resource=con, family_id='1312', name_id='local')
@ -874,6 +883,7 @@ def test_read_child_not_found(mocked_post, mocked_get, con, app):
READ_CIVILITIES,
READ_QUALITIES,
READ_CSP,
READ_DIETCODE,
]
url = get_endpoint('read-child')
Link.objects.create(resource=con, family_id='1312', name_id='local')
@ -1810,3 +1820,25 @@ def test_delete_person_not_found(mocked_post, mocked_get, con, app):
resp = app.post_json(url + '?NameID=local&person_id=000000&kind=emergency', params=params)
assert resp.json['err'] == 'not-found'
assert resp.json['err_desc'] == "no '000000' authorized person on '1312' family"
@mock.patch('passerelle.utils.Request.get')
@mock.patch('passerelle.utils.Request.post')
def test_update_child_dietcode(mocked_post, mocked_get, con, app):
mocked_get.return_value = FAMILY_SERVICE_WSDL
mocked_post.return_value = UPDATE_DIETCODE
url = get_endpoint('update-child-dietcode')
Link.objects.create(resource=con, family_id='1312', name_id='local')
resp = app.post_json(url + '?NameID=local&child_id=613878&dietcode=RSV')
assert_sent_payload(mocked_post, 'Q_update_child_dietcode.xml')
assert resp.json['err'] == 0
assert resp.json['data'] == 'ok'
def test_update_child_dietcode_not_linked_error(con, app):
url = get_endpoint('update-child-dietcode')
resp = app.post_json(url + '?NameID=local&child_id=613878&dietcode=RVS')
assert resp.json['err'] == 'not-linked'
assert resp.json['err_desc'] == 'User not linked to family'