0002-api_entreprise-add-covid-endpoints-41315.patch
passerelle/apps/api_entreprise/models.py | ||
---|---|---|
323 | 323 |
def entreprises(self, request, siren, **kwargs): |
324 | 324 |
return self.get('entreprises/%s/' % siren, **kwargs) |
325 | 325 | |
326 |
@endpoint(perm='can_access', |
|
327 |
pattern=r'(?P<siren>\w+)/$', |
|
328 |
example_pattern='{siren}/', |
|
329 |
description=_('Get firm\'s related numbers'), |
|
330 |
parameters={ |
|
331 |
'siren': { |
|
332 |
'description': _('firm SIREN number'), |
|
333 |
'example_value': '44317013900036', |
|
334 |
}, |
|
335 |
'object': { |
|
336 |
'description': _('request object: form number, file identifier...'), |
|
337 |
'example_value': '42' |
|
338 |
}, |
|
339 |
'context': { |
|
340 |
'description': _('request context: MPS, APS...'), |
|
341 |
'example_value': 'APS' |
|
342 |
}, |
|
343 |
'recipient': { |
|
344 |
'description': _('request recipient: usually customer number'), |
|
345 |
'example_value': '44317013900036' |
|
346 |
} |
|
347 |
}) |
|
348 |
def effectifs_annuels_acoss_covid(self, request, siren, **kwargs): |
|
349 |
return self.get('effectifs_annuels_acoss_covid/%s/' % siren, **kwargs) |
|
350 | ||
351 |
@endpoint(perm='can_access', |
|
352 |
pattern=r'(?P<year>\w+)/(?P<month>\w+)/(?P<siren>\w+)/$', |
|
353 |
example_pattern='{siren}/', |
|
354 |
description=_('Get firm\'s related monthly numbers'), |
|
355 |
parameters={ |
|
356 |
'year': { |
|
357 |
'description': _('requested year'), |
|
358 |
'example_value': '2019', |
|
359 |
}, |
|
360 |
'month': { |
|
361 |
'description': _('requested month'), |
|
362 |
'example_value': '02', |
|
363 |
}, |
|
364 |
'siren': { |
|
365 |
'description': _('firm SIREN number'), |
|
366 |
'example_value': '44317013900036', |
|
367 |
}, |
|
368 |
'object': { |
|
369 |
'description': _('request object: form number, file identifier...'), |
|
370 |
'example_value': '42' |
|
371 |
}, |
|
372 |
'context': { |
|
373 |
'description': _('request context: MPS, APS...'), |
|
374 |
'example_value': 'APS' |
|
375 |
}, |
|
376 |
'recipient': { |
|
377 |
'description': _('request recipient: usually customer number'), |
|
378 |
'example_value': '44317013900036' |
|
379 |
} |
|
380 |
}) |
|
381 |
def entreprise_effectifs_mensuels_acoss_covid(self, request, year, month, siren, **kwargs): |
|
382 |
return self.get( |
|
383 |
'effectifs_mensuels_acoss_covid/%s/%s/entreprise/%s/' % (year, month, siren), **kwargs |
|
384 |
) |
|
385 | ||
386 |
@endpoint(perm='can_access', |
|
387 |
pattern=r'(?P<year>\w+)/(?P<month>\w+)/(?P<siret>\w+)/$', |
|
388 |
example_pattern='{siren}/', |
|
389 |
description=_('Get firm\'s related monthly numbers'), |
|
390 |
parameters={ |
|
391 |
'year': { |
|
392 |
'description': _('requested year'), |
|
393 |
'example_value': '2019', |
|
394 |
}, |
|
395 |
'month': { |
|
396 |
'description': _('requested month'), |
|
397 |
'example_value': '02', |
|
398 |
}, |
|
399 |
'siren': { |
|
400 |
'description': _('firm SIRET number'), |
|
401 |
'example_value': '44317013900036', |
|
402 |
}, |
|
403 |
'object': { |
|
404 |
'description': _('request object: form number, file identifier...'), |
|
405 |
'example_value': '42' |
|
406 |
}, |
|
407 |
'context': { |
|
408 |
'description': _('request context: MPS, APS...'), |
|
409 |
'example_value': 'APS' |
|
410 |
}, |
|
411 |
'recipient': { |
|
412 |
'description': _('request recipient: usually customer number'), |
|
413 |
'example_value': '44317013900036' |
|
414 |
} |
|
415 |
}) |
|
416 |
def etablissement_effectifs_mensuels_acoss_covid(self, request, year, month, siret, **kwargs): |
|
417 |
return self.get( |
|
418 |
'effectifs_mensuels_acoss_covid/%s/%s/etablissement/%s/' % (year, month, siret), **kwargs |
|
419 |
) |
|
420 | ||
326 | 421 |
@endpoint(perm='can_access', |
327 | 422 |
methods=['get'], |
328 | 423 |
pattern=r'(?P<siret>\w+)/$', |
tests/test_api_entreprise.py | ||
---|---|---|
221 | 221 |
] |
222 | 222 |
} |
223 | 223 | |
224 | ||
225 |
EFFECTIFS_ANNUELS_ACOSS_COVID = { |
|
226 |
"siren": "418166096", |
|
227 |
"annee": "2019", |
|
228 |
"effectifs_annuels": 100.5 |
|
229 |
} |
|
230 | ||
231 | ||
232 |
ENTREPRISE_EFFECTIFS_MENSUELS_ACOSS_COVID = { |
|
233 |
"siren": "418166096", |
|
234 |
"annee": "2019", |
|
235 |
"mois": "02", |
|
236 |
"effectifs_mensuels": 100.5 |
|
237 |
} |
|
238 | ||
239 | ||
240 |
ETABLISSEMENT_EFFECTIFS_MENSUELS_ACOSS_COVID = { |
|
241 |
"siret": "41816609600051", |
|
242 |
"annee": "2019", |
|
243 |
"mois": "02", |
|
244 |
"effectifs_mensuels": 100.5 |
|
245 |
} |
|
246 | ||
247 | ||
224 | 248 |
DOCUMENT_ASSOCIATION_RESPONSE = "binary content" |
225 | 249 | |
226 | 250 |
REQUEST_PARAMS = {'context': 'MSP', 'object': 'demand', 'recipient': 'siret'} |
... | ... | |
259 | 283 |
return response(200, DOCUMENT_ASSOCIATION_RESPONSE, request=request) |
260 | 284 | |
261 | 285 | |
286 |
@urlmatch(netloc='^entreprise.api.gouv.fr$', |
|
287 |
path='^/v2/effectifs_annuels_acoss_covid/') |
|
288 |
def effectifs_annuels_acoss_covid(url, request): |
|
289 |
return response(200, EFFECTIFS_ANNUELS_ACOSS_COVID, request=request) |
|
290 | ||
291 | ||
292 |
@urlmatch(netloc='^entreprise.api.gouv.fr$', |
|
293 |
path='^/v2/effectifs_mensuels_acoss_covid/.*/entreprise') |
|
294 |
def entreprise_effectifs_mensuels_acoss_covid(url, request): |
|
295 |
return response(200, ENTREPRISE_EFFECTIFS_MENSUELS_ACOSS_COVID, request=request) |
|
296 | ||
297 | ||
298 |
@urlmatch(netloc='^entreprise.api.gouv.fr$', |
|
299 |
path='^/v2/effectifs_mensuels_acoss_covid/.*/etablissement') |
|
300 |
def etablisssment_effectifs_mensuels_acoss_covid(url, request): |
|
301 |
return response(200, ETABLISSEMENT_EFFECTIFS_MENSUELS_ACOSS_COVID, request=request) |
|
302 | ||
303 | ||
262 | 304 |
@urlmatch(netloc='^entreprise.api.gouv.fr$') |
263 | 305 |
def api_entreprise_error_500(url, request): |
264 | 306 |
return response(500, 'bad error happened', request=request) |
... | ... | |
282 | 324 | |
283 | 325 |
@pytest.yield_fixture |
284 | 326 |
def mock_api_entreprise(): |
285 |
with HTTMock(api_entreprise_etablissements, api_entreprise_entreprises, api_entreprise_associations, api_entreprise_extraits_rcs, |
|
286 |
api_entreprise_associations, api_entreprise_documents_associations, api_entreprise_document_association): |
|
327 |
with HTTMock( |
|
328 |
api_entreprise_etablissements, api_entreprise_entreprises, api_entreprise_associations, |
|
329 |
api_entreprise_extraits_rcs, api_entreprise_associations, api_entreprise_documents_associations, |
|
330 |
api_entreprise_document_association, effectifs_annuels_acoss_covid, |
|
331 |
entreprise_effectifs_mensuels_acoss_covid, etablisssment_effectifs_mensuels_acoss_covid): |
|
287 | 332 |
yield None |
288 | 333 | |
289 | 334 | |
... | ... | |
415 | 460 |
assert data['date_immatriculation_datetime'] == '1998-03-26T23:00:00Z' |
416 | 461 | |
417 | 462 | |
463 |
def test_extraits_rcs(app, resource, mock_api_entreprise, freezer): |
|
464 |
response = app.get('/api-entreprise/test/extraits_rcs/443170139/', |
|
465 |
params=REQUEST_PARAMS) |
|
466 |
assert 'data' in response.json |
|
467 |
data = response.json['data'] |
|
468 | ||
469 |
assert data['siren'] == '418166096' |
|
470 |
assert data['date_extrait'] == '21 AVRIL 2017' |
|
471 |
assert data['date_immatriculation_timestamp'] == 890953200 |
|
472 |
assert data['date_immatriculation'] == '1998-03-27' |
|
473 |
assert data['date_immatriculation_datetime'] == '1998-03-26T23:00:00Z' |
|
474 | ||
475 | ||
418 | 476 |
def test_document_association(app, resource, mock_api_entreprise, freezer): |
419 | 477 |
response = app.get('/api-entreprise/test/documents_associations/443170139/', |
420 | 478 |
params=REQUEST_PARAMS) |
... | ... | |
436 | 494 |
resp = app.get(document['url'], status=404) |
437 | 495 | |
438 | 496 | |
497 |
def test_effectifs_annuels_acoss_covid(app, resource, mock_api_entreprise, freezer): |
|
498 |
response = app.get('/api-entreprise/test/effectifs_annuels_acoss_covid/418166096/', |
|
499 |
params=REQUEST_PARAMS) |
|
500 |
data = response.json['data'] |
|
501 |
assert data['siren'] == '418166096' |
|
502 |
assert data['annee'] == '2019' |
|
503 |
assert data['effectifs_annuels'] == 100.5 |
|
504 | ||
505 | ||
506 |
def test_entreprise_effectifs_mensuels_acoss_covid(app, resource, mock_api_entreprise, freezer): |
|
507 |
response = app.get('/api-entreprise/test/entreprise_effectifs_mensuels_acoss_covid/2019/02/418166096/', |
|
508 |
params=REQUEST_PARAMS) |
|
509 |
data = response.json['data'] |
|
510 |
assert data['siren'] == '418166096' |
|
511 |
assert data['annee'] == '2019' |
|
512 |
assert data['mois'] == '02' |
|
513 |
assert data['effectifs_mensuels'] == 100.5 |
|
514 | ||
515 | ||
516 |
def test_etablissment_effectifs_mensuels_acoss_covid(app, resource, mock_api_entreprise, freezer): |
|
517 |
response = app.get('/api-entreprise/test/etablissement_effectifs_mensuels_acoss_covid/2019/02/418166096/', |
|
518 |
params=REQUEST_PARAMS) |
|
519 |
data = response.json['data'] |
|
520 |
assert data['siret'] == '41816609600051' |
|
521 |
assert data['annee'] == '2019' |
|
522 |
assert data['mois'] == '02' |
|
523 |
assert data['effectifs_mensuels'] == 100.5 |
|
524 | ||
525 | ||
439 | 526 |
def test_error_500(app, resource, mock_api_entreprise): |
440 | 527 |
with HTTMock(api_entreprise_error_500): |
441 | 528 |
response = app.get('/api-entreprise/test/entreprises/443170139/', |
442 |
- |