From c75cac82d0df83c59ce4e4dc5436b9670750f9e8 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Mon, 25 May 2020 17:08:47 +0200 Subject: [PATCH] api_particulier: adapt to v2 URLS (#43273) --- passerelle/apps/api_particulier/models.py | 42 +++++++--- tests/test_api_particulier.py | 99 ++++------------------- 2 files changed, 46 insertions(+), 95 deletions(-) diff --git a/passerelle/apps/api_particulier/models.py b/passerelle/apps/api_particulier/models.py index 13b26b97..a3744f2e 100644 --- a/passerelle/apps/api_particulier/models.py +++ b/passerelle/apps/api_particulier/models.py @@ -120,7 +120,7 @@ class APIParticulier(BaseResource): } @endpoint(perm='can_access', - description=_('Get citizen\'s fiscal informations'), + description=_('Get citizen\'s fiscal informations (deprecated URL)'), parameters={ 'numero_fiscal': { 'description': _('fiscal identifier'), @@ -136,15 +136,11 @@ class APIParticulier(BaseResource): }, }) def impots_svair(self, request, numero_fiscal, reference_avis, user=None): - if not numero_fiscal.strip() or not reference_avis.strip(): - raise APIError('missing numero_fiscal or reference_avis', status_code=400) - return self.get('impots/svair', params={ - 'numeroFiscal': numero_fiscal, - 'referenceAvis': reference_avis[:13], - }, user=user) + return self.v2_avis_imposition(request, numero_fiscal, reference_avis, user=user) - @endpoint(perm='can_access', - description=_('Get citizen\'s fiscal address'), + @endpoint(name='avis-imposition', + perm='can_access', + description=_('Get citizen\'s fiscal informations'), parameters={ 'numero_fiscal': { 'description': _('fiscal identifier'), @@ -159,16 +155,16 @@ class APIParticulier(BaseResource): 'example_value': 'John Doe (agent)', }, }) - def impots_adresse(self, request, numero_fiscal, reference_avis, user=None): + def v2_avis_imposition(self, request, numero_fiscal, reference_avis, user=None): if not numero_fiscal.strip() or not reference_avis.strip(): raise APIError('missing numero_fiscal or reference_avis', status_code=400) - return self.get('impots/adress', params={ + return self.get('v2/avis-imposition', params={ 'numeroFiscal': numero_fiscal, 'referenceAvis': reference_avis[:13], }, user=user) @endpoint(perm='can_access', - description=_('Get family allowances recipient informations'), + description=_('Get family allowances recipient informations (deprecated URL)'), parameters={ 'code_postal': { 'description': _('postal code'), @@ -184,9 +180,29 @@ class APIParticulier(BaseResource): }, }) def caf_famille(self, request, code_postal, numero_allocataire, user=None): + return self.v2_situation_familiale(request, code_postal, numero_allocataire, user=user) + + @endpoint(name='situation-familiale', + perm='can_access', + description=_('Get family allowances recipient informations'), + parameters={ + 'code_postal': { + 'description': _('postal code'), + 'example_value': '99148', + }, + 'numero_allocataire': { + 'description': _('recipient identifier'), + 'example_value': '0000354', + }, + 'user': { + 'description': _('requesting user'), + 'example_value': 'John Doe (agent)', + }, + }) + def v2_situation_familiale(self, request, code_postal, numero_allocataire, user=None): if not code_postal.strip() or not numero_allocataire.strip(): raise APIError('missing code_postal or numero_allocataire', status_code=400) - return self.get('caf/famille', params={ + return self.get('v2/situation-familiale', params={ 'codePostal': code_postal, 'numeroAllocataire': numero_allocataire, }, user=user) diff --git a/tests/test_api_particulier.py b/tests/test_api_particulier.py index 6e702308..26f91f39 100644 --- a/tests/test_api_particulier.py +++ b/tests/test_api_particulier.py @@ -56,48 +56,6 @@ SVAIR_RESPONSE = { "anneeRevenus": "2014" } -IMPOTS_ADRESSE = { - "adresses": [ - { - "adresse": { - "citycode": "75108", - "street": "Rue Balzac", - "name": "12 Rue Balzac", - "housenumber": "12", - "city": "Paris", - "type": "housenumber", - "context": "75, Île-de-France", - "score": 0.9401454545454544, - "label": "12 Rue Balzac 75008 Paris", - "postcode": "75008" - }, - "geometry": { - "type": "Point", - "coordinates": [ - 2.300816, - 48.873951 - ] - } - } - ], - "declarant1": { - "nom": "Martin", - "nomNaissance": "Martin", - "prenoms": "Pierre", - "dateNaissance": "22/03/1985" - }, - "declarant2": { - "nom": "Martin", - "nomNaissance": "Honore", - "prenoms": "Marie", - "dateNaissance": "03/04/1986" - }, - "foyerFiscal": { - "annee": 2015, - "adresse": "12 rue Balzac 75008 Paris" - } -} - CAF_FAMILLE = { "adresse": { "codePostalVille": "12345 CONDAT", @@ -132,20 +90,13 @@ CAF_FAMILLE = { @urlmatch(netloc=r'^particulier.*\.api\.gouv\.fr$', - path=r'^/api/impots/svair$') -def api_particulier_impots_svair(url, request): + path=r'^/api/v2/avis-imposition$') +def api_particulier_v2_avis_imposition(url, request): return response(200, SVAIR_RESPONSE, request=request) - @urlmatch(netloc=r'^particulier.*\.api\.gouv\.fr$', - path=r'^/api/impots/adress$') -def api_particulier_impots_adresse(url, request): - return response(200, IMPOTS_ADRESSE, request=request) - - -@urlmatch(netloc=r'^particulier.*\.api\.gouv\.fr$', - path=r'^/api/caf/famille$') -def api_particulier_caf_famille(url, request): + path=r'^/api/v2/situation-familiale$') +def api_particulier_v2_situation_familiale(url, request): return response(200, CAF_FAMILLE, request=request) @@ -169,7 +120,7 @@ def api_particulier_error_not_found(url, request): @pytest.yield_fixture def mock_api_particulier(): - with HTTMock(api_particulier_impots_svair, api_particulier_impots_adresse, api_particulier_caf_famille): + with HTTMock(api_particulier_v2_avis_imposition, api_particulier_v2_situation_familiale): yield None @@ -197,11 +148,11 @@ def test_error(app, resource, mock_api_particulier): assert resp.json['err'] == 1 assert resp.json['data']['status_code'] == 500 vector = [ - (['impots_svair', 'impots_adresse'], { + (['impots_svair', 'avis-imposition'], { 'numero_fiscal': 12, 'reference_avis': 15, }), - (['caf_famille'], { + (['caf_famille', 'situation-familiale'], { 'code_postal': 12, 'numero_allocataire': 15 }), @@ -221,11 +172,11 @@ def test_error(app, resource, mock_api_particulier): assert resp.json['err'] == 1 assert 'returned non-JSON content' in resp.json['err_desc'] vector = [ - (['impots_svair', 'impots_adresse'], { + (['impots_svair', 'avis-imposition'], { 'numero_fiscal': 12, 'reference_avis': 15, }), - (['caf_famille'], { + (['caf_famille', 'situation-familiale'], { 'code_postal': 12, 'numero_allocataire': 15 }), @@ -245,11 +196,11 @@ def test_error(app, resource, mock_api_particulier): assert resp.json['err'] == 1 assert resp.json['err_desc'].endswith(u'à un avis') vector = [ - (['impots_svair', 'impots_adresse'], { + (['impots_svair', 'avis-imposition'], { 'numero_fiscal': 12, 'reference_avis': 15, }), - (['caf_famille'], { + (['caf_famille', 'situation-familiale'], { 'code_postal': 12, 'numero_allocataire': 15 }), @@ -259,12 +210,12 @@ def test_error(app, resource, mock_api_particulier): do(endpoint, params) -def test_impots_svair(app, resource, mock_api_particulier): +def test_avis_imposition(app, resource, mock_api_particulier): resp = endpoint_get( - '/api-particulier/test/impots_svair', + '/api-particulier/test/avis-imposition', app, resource, - 'impots_svair', + 'avis-imposition', params={ 'numero_fiscal': 12, 'reference_avis': 15, @@ -273,26 +224,12 @@ def test_impots_svair(app, resource, mock_api_particulier): assert resp.json['data']['montantImpot'] == 2165 -def test_impots_adresse(app, resource, mock_api_particulier): +def test_situation_familiale(app, resource, mock_api_particulier): resp = endpoint_get( - '/api-particulier/test/impots_adresse', + '/api-particulier/test/situation-familiale', app, resource, - 'impots_adresse', - params={ - 'numero_fiscal': 12, - 'reference_avis': 15, - 'user': 'John Doe', - }) - assert resp.json['data']['adresses'][0]['adresse']['citycode'] == '75108' - - -def test_caf_famille(app, resource, mock_api_particulier): - resp = endpoint_get( - '/api-particulier/test/caf_famille', - app, - resource, - 'caf_famille', + 'situation-familiale', params={ 'code_postal': '99148', 'numero_allocataire': '000354', @@ -309,5 +246,3 @@ def test_detail_page(app, resource): assert 'API Particulier Prod' in response.text assert 'family allowance' in response.text assert 'fiscal information' in response.text - assert 'fiscal address' in response.text - -- 2.26.2