0001-api_particulier-adapt-to-v2-URLS-43273.patch
passerelle/apps/api_particulier/models.py | ||
---|---|---|
120 | 120 |
} |
121 | 121 | |
122 | 122 |
@endpoint(perm='can_access', |
123 |
description=_('Get citizen\'s fiscal informations'), |
|
123 |
description=_('Get citizen\'s fiscal informations (deprecated URL)'),
|
|
124 | 124 |
parameters={ |
125 | 125 |
'numero_fiscal': { |
126 | 126 |
'description': _('fiscal identifier'), |
... | ... | |
136 | 136 |
}, |
137 | 137 |
}) |
138 | 138 |
def impots_svair(self, request, numero_fiscal, reference_avis, user=None): |
139 |
if not numero_fiscal.strip() or not reference_avis.strip(): |
|
140 |
raise APIError('missing numero_fiscal or reference_avis', status_code=400) |
|
141 |
return self.get('impots/svair', params={ |
|
142 |
'numeroFiscal': numero_fiscal, |
|
143 |
'referenceAvis': reference_avis[:13], |
|
144 |
}, user=user) |
|
139 |
return self.v2_avis_imposition(request, numero_fiscal, reference_avis, user=user) |
|
145 | 140 | |
146 |
@endpoint(perm='can_access', |
|
147 |
description=_('Get citizen\'s fiscal address'), |
|
141 |
@endpoint(name='avis-imposition', |
|
142 |
perm='can_access', |
|
143 |
description=_('Get citizen\'s fiscal informations'), |
|
148 | 144 |
parameters={ |
149 | 145 |
'numero_fiscal': { |
150 | 146 |
'description': _('fiscal identifier'), |
... | ... | |
159 | 155 |
'example_value': 'John Doe (agent)', |
160 | 156 |
}, |
161 | 157 |
}) |
162 |
def impots_adresse(self, request, numero_fiscal, reference_avis, user=None):
|
|
158 |
def v2_avis_imposition(self, request, numero_fiscal, reference_avis, user=None):
|
|
163 | 159 |
if not numero_fiscal.strip() or not reference_avis.strip(): |
164 | 160 |
raise APIError('missing numero_fiscal or reference_avis', status_code=400) |
165 |
return self.get('impots/adress', params={
|
|
161 |
return self.get('v2/avis-imposition', params={
|
|
166 | 162 |
'numeroFiscal': numero_fiscal, |
167 | 163 |
'referenceAvis': reference_avis[:13], |
168 | 164 |
}, user=user) |
169 | 165 | |
170 | 166 |
@endpoint(perm='can_access', |
171 |
description=_('Get family allowances recipient informations'), |
|
167 |
description=_('Get family allowances recipient informations (deprecated URL)'),
|
|
172 | 168 |
parameters={ |
173 | 169 |
'code_postal': { |
174 | 170 |
'description': _('postal code'), |
... | ... | |
184 | 180 |
}, |
185 | 181 |
}) |
186 | 182 |
def caf_famille(self, request, code_postal, numero_allocataire, user=None): |
183 |
return self.v2_situation_familiale(request, code_postal, numero_allocataire, user=user) |
|
184 | ||
185 |
@endpoint(name='situation-familiale', |
|
186 |
perm='can_access', |
|
187 |
description=_('Get family allowances recipient informations'), |
|
188 |
parameters={ |
|
189 |
'code_postal': { |
|
190 |
'description': _('postal code'), |
|
191 |
'example_value': '99148', |
|
192 |
}, |
|
193 |
'numero_allocataire': { |
|
194 |
'description': _('recipient identifier'), |
|
195 |
'example_value': '0000354', |
|
196 |
}, |
|
197 |
'user': { |
|
198 |
'description': _('requesting user'), |
|
199 |
'example_value': 'John Doe (agent)', |
|
200 |
}, |
|
201 |
}) |
|
202 |
def v2_situation_familiale(self, request, code_postal, numero_allocataire, user=None): |
|
187 | 203 |
if not code_postal.strip() or not numero_allocataire.strip(): |
188 | 204 |
raise APIError('missing code_postal or numero_allocataire', status_code=400) |
189 |
return self.get('caf/famille', params={
|
|
205 |
return self.get('v2/situation-familiale', params={
|
|
190 | 206 |
'codePostal': code_postal, |
191 | 207 |
'numeroAllocataire': numero_allocataire, |
192 | 208 |
}, user=user) |
tests/test_api_particulier.py | ||
---|---|---|
56 | 56 |
"anneeRevenus": "2014" |
57 | 57 |
} |
58 | 58 | |
59 |
IMPOTS_ADRESSE = { |
|
60 |
"adresses": [ |
|
61 |
{ |
|
62 |
"adresse": { |
|
63 |
"citycode": "75108", |
|
64 |
"street": "Rue Balzac", |
|
65 |
"name": "12 Rue Balzac", |
|
66 |
"housenumber": "12", |
|
67 |
"city": "Paris", |
|
68 |
"type": "housenumber", |
|
69 |
"context": "75, Île-de-France", |
|
70 |
"score": 0.9401454545454544, |
|
71 |
"label": "12 Rue Balzac 75008 Paris", |
|
72 |
"postcode": "75008" |
|
73 |
}, |
|
74 |
"geometry": { |
|
75 |
"type": "Point", |
|
76 |
"coordinates": [ |
|
77 |
2.300816, |
|
78 |
48.873951 |
|
79 |
] |
|
80 |
} |
|
81 |
} |
|
82 |
], |
|
83 |
"declarant1": { |
|
84 |
"nom": "Martin", |
|
85 |
"nomNaissance": "Martin", |
|
86 |
"prenoms": "Pierre", |
|
87 |
"dateNaissance": "22/03/1985" |
|
88 |
}, |
|
89 |
"declarant2": { |
|
90 |
"nom": "Martin", |
|
91 |
"nomNaissance": "Honore", |
|
92 |
"prenoms": "Marie", |
|
93 |
"dateNaissance": "03/04/1986" |
|
94 |
}, |
|
95 |
"foyerFiscal": { |
|
96 |
"annee": 2015, |
|
97 |
"adresse": "12 rue Balzac 75008 Paris" |
|
98 |
} |
|
99 |
} |
|
100 | ||
101 | 59 |
CAF_FAMILLE = { |
102 | 60 |
"adresse": { |
103 | 61 |
"codePostalVille": "12345 CONDAT", |
... | ... | |
132 | 90 | |
133 | 91 | |
134 | 92 |
@urlmatch(netloc=r'^particulier.*\.api\.gouv\.fr$', |
135 |
path=r'^/api/impots/svair$')
|
|
136 |
def api_particulier_impots_svair(url, request):
|
|
93 |
path=r'^/api/v2/avis-imposition$')
|
|
94 |
def api_particulier_v2_avis_imposition(url, request):
|
|
137 | 95 |
return response(200, SVAIR_RESPONSE, request=request) |
138 | 96 | |
139 | ||
140 | 97 |
@urlmatch(netloc=r'^particulier.*\.api\.gouv\.fr$', |
141 |
path=r'^/api/impots/adress$') |
|
142 |
def api_particulier_impots_adresse(url, request): |
|
143 |
return response(200, IMPOTS_ADRESSE, request=request) |
|
144 | ||
145 | ||
146 |
@urlmatch(netloc=r'^particulier.*\.api\.gouv\.fr$', |
|
147 |
path=r'^/api/caf/famille$') |
|
148 |
def api_particulier_caf_famille(url, request): |
|
98 |
path=r'^/api/v2/situation-familiale$') |
|
99 |
def api_particulier_v2_situation_familiale(url, request): |
|
149 | 100 |
return response(200, CAF_FAMILLE, request=request) |
150 | 101 | |
151 | 102 | |
... | ... | |
169 | 120 | |
170 | 121 |
@pytest.yield_fixture |
171 | 122 |
def mock_api_particulier(): |
172 |
with HTTMock(api_particulier_impots_svair, api_particulier_impots_adresse, api_particulier_caf_famille):
|
|
123 |
with HTTMock(api_particulier_v2_avis_imposition, api_particulier_v2_situation_familiale):
|
|
173 | 124 |
yield None |
174 | 125 | |
175 | 126 | |
... | ... | |
197 | 148 |
assert resp.json['err'] == 1 |
198 | 149 |
assert resp.json['data']['status_code'] == 500 |
199 | 150 |
vector = [ |
200 |
(['impots_svair', 'impots_adresse'], {
|
|
151 |
(['impots_svair', 'avis-imposition'], {
|
|
201 | 152 |
'numero_fiscal': 12, |
202 | 153 |
'reference_avis': 15, |
203 | 154 |
}), |
204 |
(['caf_famille'], { |
|
155 |
(['caf_famille', 'situation-familiale'], {
|
|
205 | 156 |
'code_postal': 12, |
206 | 157 |
'numero_allocataire': 15 |
207 | 158 |
}), |
... | ... | |
221 | 172 |
assert resp.json['err'] == 1 |
222 | 173 |
assert 'returned non-JSON content' in resp.json['err_desc'] |
223 | 174 |
vector = [ |
224 |
(['impots_svair', 'impots_adresse'], {
|
|
175 |
(['impots_svair', 'avis-imposition'], {
|
|
225 | 176 |
'numero_fiscal': 12, |
226 | 177 |
'reference_avis': 15, |
227 | 178 |
}), |
228 |
(['caf_famille'], { |
|
179 |
(['caf_famille', 'situation-familiale'], {
|
|
229 | 180 |
'code_postal': 12, |
230 | 181 |
'numero_allocataire': 15 |
231 | 182 |
}), |
... | ... | |
245 | 196 |
assert resp.json['err'] == 1 |
246 | 197 |
assert resp.json['err_desc'].endswith(u'à un avis') |
247 | 198 |
vector = [ |
248 |
(['impots_svair', 'impots_adresse'], {
|
|
199 |
(['impots_svair', 'avis-imposition'], {
|
|
249 | 200 |
'numero_fiscal': 12, |
250 | 201 |
'reference_avis': 15, |
251 | 202 |
}), |
252 |
(['caf_famille'], { |
|
203 |
(['caf_famille', 'situation-familiale'], {
|
|
253 | 204 |
'code_postal': 12, |
254 | 205 |
'numero_allocataire': 15 |
255 | 206 |
}), |
... | ... | |
259 | 210 |
do(endpoint, params) |
260 | 211 | |
261 | 212 | |
262 |
def test_impots_svair(app, resource, mock_api_particulier):
|
|
213 |
def test_avis_imposition(app, resource, mock_api_particulier):
|
|
263 | 214 |
resp = endpoint_get( |
264 |
'/api-particulier/test/impots_svair',
|
|
215 |
'/api-particulier/test/avis-imposition',
|
|
265 | 216 |
app, |
266 | 217 |
resource, |
267 |
'impots_svair',
|
|
218 |
'avis-imposition',
|
|
268 | 219 |
params={ |
269 | 220 |
'numero_fiscal': 12, |
270 | 221 |
'reference_avis': 15, |
... | ... | |
273 | 224 |
assert resp.json['data']['montantImpot'] == 2165 |
274 | 225 | |
275 | 226 | |
276 |
def test_impots_adresse(app, resource, mock_api_particulier):
|
|
227 |
def test_situation_familiale(app, resource, mock_api_particulier):
|
|
277 | 228 |
resp = endpoint_get( |
278 |
'/api-particulier/test/impots_adresse',
|
|
229 |
'/api-particulier/test/situation-familiale',
|
|
279 | 230 |
app, |
280 | 231 |
resource, |
281 |
'impots_adresse', |
|
282 |
params={ |
|
283 |
'numero_fiscal': 12, |
|
284 |
'reference_avis': 15, |
|
285 |
'user': 'John Doe', |
|
286 |
}) |
|
287 |
assert resp.json['data']['adresses'][0]['adresse']['citycode'] == '75108' |
|
288 | ||
289 | ||
290 |
def test_caf_famille(app, resource, mock_api_particulier): |
|
291 |
resp = endpoint_get( |
|
292 |
'/api-particulier/test/caf_famille', |
|
293 |
app, |
|
294 |
resource, |
|
295 |
'caf_famille', |
|
232 |
'situation-familiale', |
|
296 | 233 |
params={ |
297 | 234 |
'code_postal': '99148', |
298 | 235 |
'numero_allocataire': '000354', |
... | ... | |
309 | 246 |
assert 'API Particulier Prod' in response.text |
310 | 247 |
assert 'family allowance' in response.text |
311 | 248 |
assert 'fiscal information' in response.text |
312 |
assert 'fiscal address' in response.text |
|
313 | ||
314 |
- |