toulouse-maelis: passer le numéro de ligne dans le corps de la requête POST (#74193) #89

Merged
nroche merged 2 commits from wip/74193-parsifal-basket-endpoint-post-payload into main 2023-02-14 21:03:56 +01:00
3 changed files with 37 additions and 20 deletions

View File

@ -84,3 +84,16 @@ SUBSCRIPTION_SCHEMA = {
'end_date',
],
}
DELETE_BASKET_LINE_SCHEMA = {
'type': 'object',
'properties': {
'line_id': {
'type': 'string',
'pattern': '[A-Za-z0-9]+',
},
},
'required': [
'line_id',
],
}

View File

@ -2703,13 +2703,13 @@ class ToulouseMaelis(BaseResource, HTTPResource):
parameters={
'NameID': {'description': 'Publik NameID'},
'family_id': {'description': 'Numéro de DUI'},
'line_id': {'description': 'Numéro de ligne du panier'},
},
methods=['post'],
post={'request_body': {'schema': {'application/json': activity_schemas.DELETE_BASKET_LINE_SCHEMA}}},
)
def delete_basket_line(self, request, line_id, NameID=None, family_id=None):
def delete_basket_line(self, request, post_data, NameID=None, family_id=None):
family_id = family_id or self.get_link(NameID).family_id
basket = self.get_basket_raw(family_id)
line_id = post_data['line_id']
if not basket or not basket.get('id'):
raise APIError("no basket on '%s' family" % family_id)
for line in basket['lignes']:

View File

@ -6054,18 +6054,18 @@ def test_update_basket_time(activity_service, con, app):
activity_service.add_soap_response('updateBasketTime', get_xml_file('R_update_basket_time.xml'))
url = get_endpoint('update-basket-time')
resp = app.post(url + '?family_id=311352')
resp = app.post_json(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')
resp = app.post_json(url + '?NameID=local')
assert resp.json['err'] == 0
assert resp.json['data'] == 'ok'
def test_update_basket_time_not_linked_error(con, app):
url = get_endpoint('update-basket-time')
resp = app.post(url + '?NameID=local')
resp = app.post_json(url + '?NameID=local')
assert resp.json['err'] == 1
assert resp.json['err_desc'] == 'User not linked to family'
@ -6073,7 +6073,7 @@ def test_update_basket_time_not_linked_error(con, app):
def test_update_basket_time_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('update-basket-time')
resp = app.post(url + '?family_id=311352')
resp = app.post_json(url + '?family_id=311352')
assert resp.json['err'] == 1
assert resp.json['err_desc'] == "no basket on '311352' family"
@ -6084,12 +6084,13 @@ def test_delete_basket_line(activity_service, con, app):
'deletePersonUnitBasket', get_xml_file('R_delete_person_unit_basket.xml')
)
url = get_endpoint('delete-basket-line')
params = {'line_id': 'S10053203120'}
resp = app.post(url + '?family_id=311352&line_id=S10053203120')
resp = app.post_json(url + '?family_id=311352', params=params)
assert resp.json['err'] == 0
Link.objects.create(resource=con, family_id='311352', name_id='local')
resp = app.post(url + '?NameID=local&line_id=S10053203120')
resp = app.post_json(url + '?NameID=local', params=params)
assert resp.json['err'] == 0
assert len(resp.json['data']['lignes']) == 2
assert 'S10053203120' not in [x['id'] for x in resp.json['data']['lignes']]
@ -6097,7 +6098,8 @@ def test_delete_basket_line(activity_service, con, app):
def test_delete_basket_line_not_linked_error(con, app):
url = get_endpoint('delete-basket-line')
resp = app.post(url + '?NameID=local&line_id=S10053203120')
params = {'line_id': 'S10053203120'}
resp = app.post_json(url + '?NameID=local', params=params)
assert resp.json['err'] == 1
assert resp.json['err_desc'] == 'User not linked to family'
@ -6105,7 +6107,8 @@ def test_delete_basket_line_not_linked_error(con, app):
def test_delete_basket_line_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('delete-basket-line')
resp = app.post(url + '?family_id=311352&line_id=S10053203120')
params = {'line_id': 'S10053203120'}
resp = app.post_json(url + '?family_id=311352', params=params)
assert resp.json['err'] == 1
assert resp.json['err_desc'] == "no basket on '311352' family"
@ -6113,7 +6116,8 @@ def test_delete_basket_line_basket_not_found(activity_service, con, app):
def test_delete_basket_line_line_not_found(activity_service, con, app):
activity_service.add_soap_response('getFamilyBasket', get_xml_file('R_get_family_basket.xml'))
url = get_endpoint('delete-basket-line')
resp = app.post(url + '?family_id=311352&line_id=plop')
params = {'line_id': 'plop'}
resp = app.post_json(url + '?family_id=311352', params=params)
assert resp.json['err'] == 1
assert resp.json['err_desc'] == "no 'plop' basket line on '311352' family"
@ -6130,18 +6134,18 @@ def test_delete_basket(activity_service, con, app):
)
url = get_endpoint('delete-basket')
resp = app.post(url + '?family_id=311352')
resp = app.post_json(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')
resp = app.post_json(url + '?NameID=local')
assert resp.json['err'] == 0
assert resp.json['data'] == 'ok'
def test_delete_basket_not_linked_error(con, app):
url = get_endpoint('delete-basket')
resp = app.post(url + '?NameID=local')
resp = app.post_json(url + '?NameID=local')
assert resp.json['err'] == 1
assert resp.json['err_desc'] == 'User not linked to family'
@ -6149,7 +6153,7 @@ def test_delete_basket_not_linked_error(con, app):
def test_delete_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('delete-basket')
resp = app.post(url + '?family_id=311352')
resp = app.post_json(url + '?family_id=311352')
assert resp.json['err'] == 1
assert resp.json['err_desc'] == "no basket on '311352' family"
@ -6159,11 +6163,11 @@ def test_validate_basket(activity_service, con, app):
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')
resp = app.post_json(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')
resp = app.post_json(url + '?NameID=local')
assert resp.json['err'] == 0
assert resp.json['data'] == {
'idFam': 'S10053183425',
@ -6175,7 +6179,7 @@ def test_validate_basket(activity_service, con, app):
def test_validate_basket_not_linked_error(con, app):
url = get_endpoint('validate-basket')
resp = app.post(url + '?NameID=local')
resp = app.post_json(url + '?NameID=local')
assert resp.json['err'] == 1
assert resp.json['err_desc'] == 'User not linked to family'
@ -6183,7 +6187,7 @@ def test_validate_basket_not_linked_error(con, app):
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')
resp = app.post_json(url + '?family_id=311352')
assert resp.json['err'] == 1
assert resp.json['err_desc'] == "no basket on '311352' family"