solis: use specific 'file:filename' keys to send files (#21839)

This commit is contained in:
Thomas NOËL 2018-02-14 10:56:19 +01:00
parent ed2562e86a
commit a4a25eab2d
2 changed files with 10 additions and 4 deletions

View File

@ -302,9 +302,11 @@ class Solis(BaseResource):
# extract files from payload, to send them before the request
files = []
for key, value in payload.items():
if (isinstance(value, dict) and 'content' in value and 'content_type' in value):
binary_content = base64.b64decode(value['content'])
files.append(('files', ('%s.pdf' % key, binary_content, value['content_type'])))
if key.startswith('file:'):
if (isinstance(value, dict) and 'content' in value and 'content_type' in value):
filename = key[5:]
binary_content = base64.b64decode(value['content'])
files.append(('files', (filename, binary_content, value['content_type'])))
del payload[key]
# prepare request data

View File

@ -493,12 +493,16 @@ def test_solis_apa_integration(app, solis):
requests_post.side_effect = [
utils.FakedResponse(content='{"id": "foo", "nbFichiersAcceptes": 1}', status_code=200),
utils.FakedResponse(content='', status_code=204)]
demande['etat_civil_001'] = {
demande['file:etat_civil_001.pdf'] = {
'content': 'Y29pbg==',
'content_type': 'application/pdf',
'filename': 'whatever.pdf',
}
demande['file:etat_civil_002.pdf'] = None
resp = app.post_json(url, params=demande, status=200)
# file entries are removed from demandeApa JSON dict
assert 'file:etat_civil_001.pdf' not in requests_post.call_args[1]['json']['demandeApa']
assert 'file:etat_civil_002.pdf' not in requests_post.call_args[1]['json']['demandeApa']
assert resp.json['err'] == 0
assert resp.json['data'] is None
assert resp.json['sendfiles'] == {'id': 'foo', 'nbFichiersAcceptes': 1}