scrib: always send numBac if present (#85548)
gitea/passerelle/pipeline/head This commit looks good Details

This commit is contained in:
Thomas NOËL 2024-01-11 11:37:29 +01:00 committed by Thomas NOËL
parent dd87030c50
commit 514c3f1995
2 changed files with 19 additions and 20 deletions

View File

@ -50,8 +50,7 @@ class SOAPScrib(AbstractSOAPConnector):
post={'request_body': {'schema': {'application/json': DICT_SCHEMA}}},
)
def depot(self, request, post_data):
# clean "bac" list: keep only bacCollecteXXX + numBacCollecteXXX if
# bacCollecteXXX is True and numBacCollecteXXX is a positive integer
# clean "bac" list: keep only bacCollecteXXX if bacCollecteXXX is True
if not isinstance(post_data.get('demandeBacs', {}).get('bac'), list):
raise APIError('missing demandeBacs/bac list', http_status=400)
@ -65,10 +64,11 @@ class SOAPScrib(AbstractSOAPConnector):
for key in [k for k in bac if k.startswith('bac')]:
if bac[key] not in (True, 'true', 'True', 1, '1'):
continue
num = 'numBac' + key[3:]
if lax_int(bac.get(num)): # is a strict positive integer
cleaned_bac[key] = 'true'
cleaned_bac[num] = bac[num]
cleaned_bac[key] = 'true'
numkey = 'numBac' + key[3:]
num = (bac.get(numkey, '') or '').strip()
if num:
cleaned_bac[numkey] = num
if cleaned_bac:
cleaned_bacs.append(cleaned_bac)
demandeBacs['bac'] = cleaned_bacs

View File

@ -36,26 +36,28 @@ RSPS_ERR_TECH = """<?xml version="1.0" encoding="UTF-8"?>
</ns2:depotResponse></S:Body></S:Envelope>"""
WCS_WSCALL = {
# new request (no numBac)
'demandeBacs/bac/0/bacCollecteDechetsMenagers': 'true',
'demandeBacs/bac/0/bacCollecteSelective': 'false',
'demandeBacs/bac/0/bacCollecteVerre': 'false',
'demandeBacs/bac/0/numBacCollecteDechetsMenagers': '2',
'demandeBacs/bac/0/numBacCollecteSelective': '0',
'demandeBacs/bac/0/numBacCollecteVerre': '0',
'demandeBacs/bac/0/numBacCollecteDechetsMenagers': '',
'demandeBacs/bac/0/numBacCollecteSelective': None,
# error
'demandeBacs/bac/1': 'not-a-dict',
# renewal (numBac)
'demandeBacs/bac/2/bacCollecteDechetsMenagers': 'false',
'demandeBacs/bac/2/bacCollecteSelective': 1,
'demandeBacs/bac/2/bacCollecteVerre': 'false',
'demandeBacs/bac/2/numBacCollecteDechetsMenagers': '2',
'demandeBacs/bac/2/numBacCollecteSelective': '5',
'demandeBacs/bac/2/numBacCollecteVerre': '3',
'demandeBacs/bac/2/numBacCollecteSelective': '576X9812',
# no request (nothing is True)
'demandeBacs/bac/3/bacCollecteDechetsMenagers': 'false',
'demandeBacs/bac/3/bacCollecteSelective': '',
'demandeBacs/bac/3/bacCollecteVerre': 'blah',
'demandeBacs/bac/3/bacCollecteAutre': 'true', # no numBacCollecteAutre
'demandeBacs/bac/3/numBacCollecteDechetsMenagers': '2',
'demandeBacs/bac/3/numBacCollecteSelective': '0',
'demandeBacs/bac/3/numBacCollecteVerre': '0',
'demandeBacs/bac/3/numBacCollecteDechetsMenagers': '',
'demandeBacs/bac/3/numBacCollecteSelective': None,
'demandeBacs/bac/3/numBacCollecteVerre': 0,
# others parameters
'demandeBacs/codeCivel': '1140206',
'demandeBacs/codePostal': '44000',
'demandeBacs/commune': 'TestVille',
@ -105,13 +107,10 @@ def test_scrib(wsdl, connector, app):
}
# cleaned "bac" list, only two remains
assert xml.count('<bac>') == 2
assert (
'<bac><bacCollecteDechetsMenagers>true</bacCollecteDechetsMenagers>'
'<numBacCollecteDechetsMenagers>2</numBacCollecteDechetsMenagers></bac>' in xml
)
assert '<bac><bacCollecteDechetsMenagers>true</bacCollecteDechetsMenagers></bac>' in xml
assert (
'<bac><bacCollecteSelective>true</bacCollecteSelective>'
'<numBacCollecteSelective>5</numBacCollecteSelective></bac>' in xml
'<numBacCollecteSelective>576X9812</numBacCollecteSelective></bac>' in xml
)
assert '<nombrePersonnesFoyer>2</nombrePersonnesFoyer>' in xml
assert '<numeroVoie>42</numeroVoie>' in xml