toulouse-maelis: add endpoint to validate basket (#73961)
gitea-wip/passerelle/pipeline/pr-main This commit looks good Details
gitea/passerelle/pipeline/head Something is wrong with the build of this commit Details

This commit is contained in:
Nicolas Roche 2023-01-30 02:55:24 +01:00
parent 2ea439861a
commit e9e9aec674
3 changed files with 72 additions and 0 deletions

View File

@ -2625,6 +2625,32 @@ class ToulouseMaelis(BaseResource, HTTPResource):
)
return {'data': 'ok'}
@endpoint(
display_category='Inscriptions',
description="Validation du panier de la famille",
name='validate-basket',
perm='can_access',
parameters={
'NameID': {'description': 'Publik NameID'},
'family_id': {'description': 'Numéro de DUI'},
},
methods=['post'],
)
def validate_basket(self, request, NameID=None, family_id=None):
family_id = family_id or self.get_link(NameID).family_id
basket = self.get_basket_raw(family_id)
if not basket or not basket.get('id'):
raise APIError("no basket on '%s' family" % family_id)
response = self.call(
'Activity',
'validateBasket',
validateBasketRequestBean={
'idBasket': basket['id'],
},
)
return {'data': serialize_object(response)}
class Link(models.Model):
resource = models.ForeignKey(ToulouseMaelis, on_delete=models.CASCADE)

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns2:validateBasketResponse xmlns:ns2="activity.ws.maelis.sigec.com" xmlns:ns3="bean.persistence.activity.ws.maelis.sigec.com" xmlns:ns4="bean.persistence.school.ws.maelis.sigec.com">
<validateBasketResultBean>
<idFam>S10053183425</idFam>
<idInsLst>S10053203103</idInsLst>
<idInsLst>S10053200721</idInsLst>
</validateBasketResultBean>
</ns2:validateBasketResponse>
</soap:Body>
</soap:Envelope>

View File

@ -5908,3 +5908,37 @@ def test_delete_basket_not_found(activity_service, con, app):
resp = app.post(url + '?family_id=311352')
assert resp.json['err'] == 1
assert resp.json['err_desc'] == "no basket on '311352' family"
def test_validate_basket(activity_service, con, app):
activity_service.add_soap_response('getFamilyBasket', get_xml_file('R_get_family_basket.xml'))
activity_service.add_soap_response('validateBasket', get_xml_file('R_validate_basket.xml'))
url = get_endpoint('validate-basket')
resp = app.post(url + '?family_id=311352')
assert resp.json['err'] == 0
Link.objects.create(resource=con, family_id='311352', name_id='local')
resp = app.post(url + '?NameID=local')
assert resp.json['err'] == 0
assert resp.json['data'] == {
'idFam': 'S10053183425',
'idFactureLst': [],
'idInsLst': ['S10053203103', 'S10053200721'],
'paramUrlReglement': [],
}
def test_validate_basket_not_linked_error(con, app):
url = get_endpoint('validate-basket')
resp = app.post(url + '?NameID=local')
assert resp.json['err'] == 'not-linked'
assert resp.json['err_desc'] == 'User not linked to family'
def test_validate_basket_not_found(activity_service, con, app):
activity_service.add_soap_response('getFamilyBasket', get_xml_file('R_get_family_basket_empty.xml'))
url = get_endpoint('validate-basket')
resp = app.post(url + '?family_id=311352')
assert resp.json['err'] == 1
assert resp.json['err_desc'] == "no basket on '311352' family"