toulouse-maelis: check read-schools-for-address-and-level parameters (#79211)
gitea/passerelle/pipeline/head This commit looks good
Details
gitea/passerelle/pipeline/head This commit looks good
Details
This commit is contained in:
parent
1a37984298
commit
7cbd27afd3
|
@ -44,6 +44,7 @@ from passerelle.utils.conversion import simplify
|
|||
from passerelle.utils.jsonresponse import APIError
|
||||
from passerelle.utils.soap import SOAPFault, SOAPServiceUnreachable
|
||||
from passerelle.utils.templates import render_to_string
|
||||
from passerelle.utils.validation import is_number
|
||||
from passerelle.utils.wcs import WcsApi, WcsApiError
|
||||
|
||||
from . import activity_schemas, family_schemas, invoice_schemas, schemas, utils
|
||||
|
@ -2562,14 +2563,25 @@ class ToulouseMaelis(BaseResource, HTTPResource):
|
|||
'level': {'description': 'Niveau scolaire'},
|
||||
},
|
||||
)
|
||||
def read_schools_for_address_and_level(self, request, id_street, year, num, comp=None, level=None):
|
||||
data = {'schoolYear': year, 'adresse': {'idStreet': id_street, 'num': num}}
|
||||
if level:
|
||||
data['levelCode'] = level
|
||||
if comp:
|
||||
data['adresse']['numComp'] = comp
|
||||
def read_schools_for_address_and_level(self, request, id_street, year, num=None, comp=None, level=None):
|
||||
self.assert_key_in_referential('Street', id_street, 'id_street parameter', required=True)
|
||||
self.assert_key_in_referential('Complement', comp, 'comp parameter', required=False)
|
||||
self.assert_key_in_referential('Level', level, 'level parameter', required=False)
|
||||
if num and not is_number(num):
|
||||
raise APIError('num parameter should be a number')
|
||||
|
||||
response = self.call(
|
||||
'Site', 'readSchoolForAdressAndLevel', readSchoolForAdressAndLevelRequestBean=data
|
||||
'Site',
|
||||
'readSchoolForAdressAndLevel',
|
||||
readSchoolForAdressAndLevelRequestBean={
|
||||
'schoolYear': year,
|
||||
'levelCode': level,
|
||||
'adresse': {
|
||||
'idStreet': id_street,
|
||||
'num': num,
|
||||
'numComp': comp,
|
||||
},
|
||||
},
|
||||
)
|
||||
data = []
|
||||
for item in response:
|
||||
|
|
|
@ -37,5 +37,5 @@ if __name__ == '__main__':
|
|||
parser.add_argument('--level', '-l', default=LEVEL, help='level (facultatif, ex: CP)')
|
||||
parser.add_argument('--street', '-s', default=STREET, help='street id (ex: 2317)')
|
||||
parser.add_argument('--num', '-n', default=NUM, help='house number (ex: 4)')
|
||||
parser.add_argument('--num_comp', '-c', default=NUM_COMP, help='house number complement (ex: bis)')
|
||||
parser.add_argument('--num_comp', '-c', default=NUM_COMP, help='house number complement (ex: B)')
|
||||
check(parser.parse_args())
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
||||
<soap:Body>
|
||||
<soap:Fault>
|
||||
<faultcode>soap:Server</faultcode>
|
||||
<faultstring>E19 : La voie est obligatoire</faultstring>
|
||||
<detail>
|
||||
<ns1:MaelisSiteException xmlns:ns1="site.ws.maelis.sigec.com">
|
||||
<message xmlns:ns2="site.ws.maelis.sigec.com">E19 : La voie est obligatoire</message>
|
||||
<code xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns2="site.ws.maelis.sigec.com" xsi:nil="true"/>
|
||||
</ns1:MaelisSiteException>
|
||||
</detail>
|
||||
</soap:Fault>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
|
@ -6028,43 +6028,100 @@ def test_read_school_list_address_and_level(site_service, con, app):
|
|||
'readSchoolForAdressAndLevel', get_xml_file('R_read_school_for_adress_and_level.xml')
|
||||
)
|
||||
url = get_endpoint('read-schools-for-address-and-level')
|
||||
resp = app.get(url, params={'id_street': '2317', 'num': '4', 'year': '2022'})
|
||||
params = {
|
||||
'year': '2022',
|
||||
'level': 'CP',
|
||||
'id_street': '2317',
|
||||
'num': '4',
|
||||
'comp': 'B',
|
||||
}
|
||||
resp = app.get(url, params=params)
|
||||
assert resp.json['err'] == 0
|
||||
assert len(resp.json['data']) == 8
|
||||
for item in resp.json['data']:
|
||||
assert 'id' in item
|
||||
assert 'text' in item
|
||||
|
||||
params = {
|
||||
'year': '2022',
|
||||
'level': '',
|
||||
'id_street': '2317',
|
||||
'num': '',
|
||||
'comp': '',
|
||||
}
|
||||
resp = app.get(url, params=params)
|
||||
assert resp.json['err'] == 0
|
||||
|
||||
def test_read_school_list_address_and_level_soap_error(site_service, con, app):
|
||||
site_service.add_soap_response(
|
||||
'readSchoolForAdressAndLevel',
|
||||
get_xml_file('R_read_school_for_adress_and_level_soap_error.xml'),
|
||||
status=500,
|
||||
)
|
||||
|
||||
def test_read_schools_for_address_and_level_empty_referential_key_error(con, app):
|
||||
url = get_endpoint('read-schools-for-address-and-level')
|
||||
resp = app.get(url, params={'id_street': '', 'num': '', 'year': ''})
|
||||
|
||||
params = {
|
||||
'year': '2022',
|
||||
'level': 'CP',
|
||||
'id_street': '',
|
||||
'num': '4',
|
||||
'comp': 'B',
|
||||
}
|
||||
resp = app.get(url, params=params)
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['err_desc'] == 'id_street parameter is required and could not be None'
|
||||
|
||||
|
||||
def test_read_schools_for_address_and_level_wrong_referential_key_error(con, app):
|
||||
url = get_endpoint('read-schools-for-address-and-level')
|
||||
|
||||
params = {
|
||||
'year': '2022',
|
||||
'level': 'plop',
|
||||
'id_street': '2317',
|
||||
'num': '4',
|
||||
'comp': 'B',
|
||||
}
|
||||
resp = app.get(url, params=params)
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['err_desc'] == "level parameter key value 'plop' do not belong to 'Level' referential"
|
||||
|
||||
params = {
|
||||
'year': '2022',
|
||||
'level': 'CP',
|
||||
'id_street': 'plop',
|
||||
'num': '4',
|
||||
'comp': 'B',
|
||||
}
|
||||
resp = app.get(url, params=params)
|
||||
assert resp.json['err'] == 1
|
||||
assert (
|
||||
resp.json['err_desc']
|
||||
== 'SOAP service at https://example.org/SiteService?wsdl returned an error "E19 : La voie est obligatoire"'
|
||||
== "id_street parameter key value 'plop' do not belong to 'Street' required referential"
|
||||
)
|
||||
assert resp.json['data'] == {
|
||||
'soap_fault': {
|
||||
'message': 'E19 : La voie est obligatoire',
|
||||
'code': 'soap:Server',
|
||||
'actor': None,
|
||||
'detail': '<detail xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'
|
||||
+ '\n <ns1:MaelisSiteException xmlns:ns1="site.ws.maelis.sigec.com">'
|
||||
+ '\n <message xmlns:ns2="site.ws.maelis.sigec.com">E19 : La voie est obligatoire</message>'
|
||||
+ '\n <code xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'
|
||||
+ ' xmlns:ns2="site.ws.maelis.sigec.com" xsi:nil="true"/>'
|
||||
+ '\n </ns1:MaelisSiteException>\n </detail>'
|
||||
+ '\n ',
|
||||
'subcodes': None,
|
||||
}
|
||||
|
||||
params = {
|
||||
'year': '2022',
|
||||
'level': 'CP',
|
||||
'id_street': '2317',
|
||||
'num': 'plop',
|
||||
'comp': 'B',
|
||||
}
|
||||
|
||||
resp = app.get(url, params=params)
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['err_desc'] == 'num parameter should be a number'
|
||||
|
||||
params = {
|
||||
'year': '2022',
|
||||
'level': 'CP',
|
||||
'id_street': '2317',
|
||||
'num': '4',
|
||||
'comp': 'plop',
|
||||
}
|
||||
|
||||
resp = app.get(url, params=params)
|
||||
assert resp.json['err'] == 1
|
||||
assert (
|
||||
resp.json['err_desc'] == "comp parameter key value 'plop' do not belong to 'Complement' referential"
|
||||
)
|
||||
|
||||
|
||||
def test_read_school_list_child_and_level(family_service, con, app):
|
||||
family_service.add_soap_response(
|
||||
|
|
Loading…
Reference in New Issue