lille urban card: add new "add subscriptions" endpoint (#39527)

This commit is contained in:
Frédéric Péters 2020-02-04 16:38:29 +01:00 committed by Thomas NOËL
parent 882610f2ab
commit 092f28c83d
2 changed files with 72 additions and 3 deletions

View File

@ -80,9 +80,7 @@ class LilleUrbanCard(BaseResource):
{'id': '99', 'text': "Ne souhaite pas se prononcer"},
]}
@endpoint(perm='can_access', description=_('Card Request'), methods=['post'])
def card_request(self, request, *args, **kwargs):
data = json_loads(request.body)
def preprocess_request_data(self, data):
for kind_of_optional_field in ('nom_naissance', 'telephone', 'complement_numero_voie'):
if not data.get(kind_of_optional_field):
data[kind_of_optional_field] = ''
@ -117,6 +115,11 @@ class LilleUrbanCard(BaseResource):
services[service][attr] = 0
del data[key]
data['services'] = list(services.values())
@endpoint(perm='can_access', description=_('Card Request'), methods=['post'])
def card_request(self, request, *args, **kwargs):
data = json_loads(request.body)
self.preprocess_request_data(data)
response = self.requests.post(
urljoin(self.base_url, '/clu/ws/demanderCarte'),
json=data,
@ -140,3 +143,18 @@ class LilleUrbanCard(BaseResource):
urljoin(self.base_url, '/clu/ws/consulterDemande/%s' % n_demande_clu),
auth=HttpBearerAuth(self.get_token())).json()
return {'data': response}
@endpoint(perm='can_access', description=_('Add new subscriptions'), methods=['post'])
def add_subscriptions(self, request, *args, **kwargs):
data = json_loads(request.body)
self.preprocess_request_data(data)
response = self.requests.post(
urljoin(self.base_url, '/clu/ws/ajouterAbonnements'),
json=data,
auth=HttpBearerAuth(self.get_token()))
response_json = response.json()
if response_json.get('erreur'):
self.logger.error('error adding subscriptions (%r)', response_json['erreur'])
response_json['status_code'] = response.status_code
raise APIError(response_json['erreur'], data=response_json)
return {'data': response_json} # {"n_demande_clu":10000005}

View File

@ -48,6 +48,16 @@ def mocked_http(url, request):
"date": "2019-01-01 00:00:00",
}
return {'content': json.dumps(content), 'status_code': 200}
if url.path == '/clu/ws/ajouterAbonnements':
request_json = json_loads(request.body)
if request_json.get('simulate_error') == 'data':
error = {'statut': 'ERREUR_DONNEES', 'erreur': 'Demande vide...'}
return {'content': json.dumps(error), 'status_code': 400}
content = {
'n_demande_clu': 10000005,
'request': request_json, # for tests
}
return {'content': json.dumps(content), 'status_code': 200}
@mock.patch('passerelle.utils.Request.post')
@ -121,3 +131,44 @@ def test_card_status(app, connector):
with HTTMock(mocked_http):
resp = app.get(endpoint + '?n_demande_clu=1234')
assert resp.json['data']['statut_desc'] == 'CARTE_PRODUITE_EXPEDIEE'
def test_add_subscriptions(app, connector):
endpoint = utils.generic_endpoint_url('lille-urban-card', 'add_subscriptions', slug=connector.slug)
with HTTMock(mocked_http):
resp = app.post_json(endpoint, params={
'n_demande_gru': 'XXX',
'numero_serie': 'XXX',
'civilite': 'Monsieur',
'code_postal': '59000',
'ville': 'Lille',
'photo': {'content': 'xxx'},
'telephone': '01.02.03.04.05',
'recevoir_journal_senior': 'Non',
'service_zoo': 'Oui',
'service_zoo_newsletter': 'Non',
})
request = resp.json['data']['request']
assert request['civilite'] == 1
assert request['code_postal'] == 59000
assert request['ville'] == 'LILLE'
assert request['photo'] == 'xxx'
assert request['telephone'] == '0102030405'
assert request['services'] == [{'service': 'zoo', 'newsletter': 0}]
assert resp.json['data']['n_demande_clu'] == 10000005
# error handling
resp = app.post_json(endpoint, params={
'simulate_error': 'data',
'n_demande_gru': 'XXX',
'numero_serie': 'XXX',
'civilite': 'Monsieur',
'code_postal': '59000',
'ville': 'Lille',
'photo': {'content': 'xxx'},
'telephone': '01.02.03.04.05',
'recevoir_journal_senior': 'Non',
'service_zoo': 'Oui',
'service_zoo_newsletter': 'Non',
}, status=200)
assert resp.json['data']['status_code'] == 400