18 |
18 |
|
19 |
19 |
import pytest
|
20 |
20 |
import requests
|
|
21 |
import responses
|
21 |
22 |
from django.utils import timezone
|
22 |
|
from httmock import HTTMock, response, urlmatch
|
23 |
23 |
|
24 |
24 |
from passerelle.apps.api_entreprise.models import APIEntreprise
|
25 |
25 |
from tests.utils import FakedResponse, make_resource
|
... | ... | |
247 |
247 |
REQUEST_PARAMS = {'context': 'MSP', 'object': 'demand', 'recipient': 'siret'}
|
248 |
248 |
|
249 |
249 |
|
250 |
|
@urlmatch(netloc='^entreprise.api.gouv.fr$', path='^/v2/etablissements/')
|
251 |
|
def api_entreprise_etablissements(url, request):
|
252 |
|
return response(200, ETABLISSEMENTS_RESPONSE, request=request)
|
253 |
|
|
254 |
|
|
255 |
|
@urlmatch(netloc='^entreprise.api.gouv.fr$', path='^/v2/entreprises/')
|
256 |
|
def api_entreprise_entreprises(url, request):
|
257 |
|
return response(200, ENTREPRISES_RESPONSE, request=request)
|
258 |
|
|
259 |
|
|
260 |
|
@urlmatch(netloc='^entreprise.api.gouv.fr$', path='^/v2/associations/')
|
261 |
|
def api_entreprise_associations(url, request):
|
262 |
|
return response(200, ASSOCIATIONS_RESPONSE, request=request)
|
263 |
|
|
264 |
|
|
265 |
|
@urlmatch(netloc='^entreprise.api.gouv.fr$', path='^/v2/extraits_rcs_infogreffe/')
|
266 |
|
def api_entreprise_extraits_rcs(url, request):
|
267 |
|
return response(200, EXTRAITS_RCS_RESPONSE, request=request)
|
268 |
|
|
269 |
|
|
270 |
|
@urlmatch(netloc='^entreprise.api.gouv.fr$', path='^/v2/documents_associations/')
|
271 |
|
def api_entreprise_documents_associations(url, request):
|
272 |
|
return response(200, DOCUMENTS_ASSOCIATION_RESPONSE, request=request)
|
273 |
|
|
274 |
|
|
275 |
|
@urlmatch(netloc='^apientreprise.fr$', path='^/attestations/')
|
276 |
|
def api_entreprise_document_association(url, request):
|
277 |
|
return response(200, DOCUMENT_ASSOCIATION_RESPONSE, request=request)
|
278 |
|
|
279 |
|
|
280 |
|
@urlmatch(netloc='^entreprise.api.gouv.fr$', path='^/v2/effectifs_annuels_acoss_covid/')
|
281 |
|
def effectifs_annuels_acoss_covid(url, request):
|
282 |
|
return response(200, EFFECTIFS_ANNUELS_ACOSS_COVID, request=request)
|
283 |
|
|
284 |
|
|
285 |
|
@urlmatch(netloc='^entreprise.api.gouv.fr$', path='^/v2/effectifs_mensuels_acoss_covid/.*/entreprise')
|
286 |
|
def entreprise_effectifs_mensuels_acoss_covid(url, request):
|
287 |
|
return response(200, ENTREPRISE_EFFECTIFS_MENSUELS_ACOSS_COVID, request=request)
|
288 |
|
|
289 |
|
|
290 |
|
@urlmatch(netloc='^entreprise.api.gouv.fr$', path='^/v2/effectifs_mensuels_acoss_covid/.*/etablissement')
|
291 |
|
def etablisssment_effectifs_mensuels_acoss_covid(url, request):
|
292 |
|
return response(200, ETABLISSEMENT_EFFECTIFS_MENSUELS_ACOSS_COVID, request=request)
|
293 |
|
|
294 |
|
|
295 |
|
@urlmatch(netloc='^entreprise.api.gouv.fr$', path='^/v2/exercices')
|
296 |
|
def api_entreprise_exercices(url, request):
|
297 |
|
return response(200, EXERCICES_RESPONSE, request=request)
|
298 |
|
|
299 |
|
|
300 |
|
@urlmatch(netloc='^entreprise.api.gouv.fr$')
|
301 |
|
def api_entreprise_error_500(url, request):
|
302 |
|
return response(500, 'bad error happened', request=request)
|
303 |
|
|
304 |
|
|
305 |
|
@urlmatch(netloc='^entreprise.api.gouv.fr$')
|
306 |
|
def api_entreprise_connection_error(url, request):
|
307 |
|
raise requests.RequestException('connection timed-out')
|
308 |
|
|
309 |
|
|
310 |
|
@urlmatch(netloc='^entreprise.api.gouv.fr$')
|
311 |
|
def api_entreprise_error_not_json(url, request):
|
312 |
|
return response(200, 'simple text', request=request)
|
313 |
|
|
314 |
|
|
315 |
|
@urlmatch(netloc='^entreprise.api.gouv.fr$')
|
316 |
|
def api_entreprise_error_not_found(url, request):
|
317 |
|
return response(404, {'error': 'not_found', 'message': 'Page not found'}, request=request)
|
318 |
|
|
319 |
|
|
320 |
|
@pytest.yield_fixture
|
321 |
|
def mock_api_entreprise():
|
322 |
|
with HTTMock(
|
323 |
|
api_entreprise_etablissements,
|
324 |
|
api_entreprise_entreprises,
|
325 |
|
api_entreprise_associations,
|
326 |
|
api_entreprise_extraits_rcs,
|
327 |
|
api_entreprise_associations,
|
328 |
|
api_entreprise_documents_associations,
|
329 |
|
api_entreprise_document_association,
|
330 |
|
effectifs_annuels_acoss_covid,
|
331 |
|
entreprise_effectifs_mensuels_acoss_covid,
|
332 |
|
etablisssment_effectifs_mensuels_acoss_covid,
|
333 |
|
api_entreprise_exercices,
|
334 |
|
):
|
335 |
|
yield None
|
336 |
|
|
337 |
|
|
338 |
250 |
@pytest.fixture
|
339 |
251 |
def resource(db):
|
340 |
252 |
return make_resource(
|
... | ... | |
363 |
275 |
assert mocked_get.call_args[1]['data']['recipient'] == 'Custom recipient'
|
364 |
276 |
|
365 |
277 |
|
366 |
|
def test_entreprises_endpoint(app, resource, mock_api_entreprise):
|
367 |
|
response = app.get('/api-entreprise/test/entreprises/443170139/', params=REQUEST_PARAMS)
|
|
278 |
def test_entreprises_endpoint(app, resource):
|
|
279 |
with responses.RequestsMock() as rsps:
|
|
280 |
rsps.get('https://entreprise.api.gouv.fr/v2/entreprises/443170139/', json=ENTREPRISES_RESPONSE)
|
|
281 |
response = app.get('/api-entreprise/test/entreprises/443170139/', params=REQUEST_PARAMS)
|
368 |
282 |
data = response.json['data']
|
369 |
283 |
assert data['entreprise']['categorie_entreprise'] == 'PME'
|
370 |
284 |
assert data['entreprise']['numero_tva_intracommunautaire'] == 'FR16418166096'
|
... | ... | |
385 |
299 |
assert data['etablissement_siege']['date_mise_a_jour'] == '2015-12-03'
|
386 |
300 |
|
387 |
301 |
|
388 |
|
def test_simple_match_mandataire_social(app, resource, mock_api_entreprise):
|
|
302 |
def test_simple_match_mandataire_social(app, resource):
|
389 |
303 |
params = {
|
390 |
304 |
'first_name': 'françois',
|
391 |
305 |
'last_name': 'hIsQuIn',
|
... | ... | |
394 |
308 |
}
|
395 |
309 |
params.update(REQUEST_PARAMS)
|
396 |
310 |
|
397 |
|
url = '/api-entreprise/test/match_mandataire_social/443170139/'
|
398 |
|
response = app.get(url, params=params)
|
|
311 |
with responses.RequestsMock() as rsps:
|
|
312 |
rsps.get('https://entreprise.api.gouv.fr/v2/entreprises/443170139/', json=ENTREPRISES_RESPONSE)
|
|
313 |
url = '/api-entreprise/test/match_mandataire_social/443170139/'
|
|
314 |
response = app.get(url, params=params)
|
399 |
315 |
|
400 |
|
# successful matching
|
401 |
|
data = response.json['data']
|
402 |
|
assert data['nom'] == 'HISQUIN'
|
403 |
|
assert data['prenom'] == 'FRANCOIS'
|
404 |
|
assert data['date_naissance'] == '1965-01-27'
|
405 |
|
assert data['type'] == 'PP'
|
|
316 |
# successful matching
|
|
317 |
data = response.json['data']
|
|
318 |
assert data['nom'] == 'HISQUIN'
|
|
319 |
assert data['prenom'] == 'FRANCOIS'
|
|
320 |
assert data['date_naissance'] == '1965-01-27'
|
|
321 |
assert data['type'] == 'PP'
|
406 |
322 |
|
407 |
|
params['method'] = 'unkwown'
|
408 |
|
response = app.get(url, params=params)
|
|
323 |
params['method'] = 'unkwown'
|
|
324 |
response = app.get(url, params=params)
|
409 |
325 |
|
410 |
|
# unsupported method
|
411 |
|
assert response.json['err']
|
412 |
|
assert 'data' not in response.json
|
|
326 |
# unsupported method
|
|
327 |
assert response.json['err']
|
|
328 |
assert 'data' not in response.json
|
413 |
329 |
|
414 |
|
params['method'] = 'simple'
|
415 |
|
params.pop('first_name')
|
416 |
|
response = app.get(url, params=params, status=400)
|
|
330 |
params['method'] = 'simple'
|
|
331 |
params.pop('first_name')
|
|
332 |
response = app.get(url, params=params, status=400)
|
417 |
333 |
|
418 |
|
# missing parameter
|
419 |
|
assert not response.json['data']
|
420 |
|
assert 'missing parameter' in response.json['err_desc']
|
|
334 |
# missing parameter
|
|
335 |
assert not response.json['data']
|
|
336 |
assert 'missing parameter' in response.json['err_desc']
|
421 |
337 |
|
422 |
|
params['first_name'] = 'JOHN'
|
423 |
|
response = app.get(url, params=params)
|
|
338 |
params['first_name'] = 'JOHN'
|
|
339 |
response = app.get(url, params=params)
|
424 |
340 |
|
425 |
|
# matching failed
|
426 |
|
assert not response.json['err']
|
427 |
|
assert not response.json['data']
|
|
341 |
# matching failed
|
|
342 |
assert not response.json['err']
|
|
343 |
assert not response.json['data']
|
428 |
344 |
|
429 |
345 |
|
430 |
|
def test_levenshtein_match_mandataire_social(app, resource, mock_api_entreprise):
|
|
346 |
def test_levenshtein_match_mandataire_social(app, resource):
|
431 |
347 |
params = {
|
432 |
348 |
'first_name': 'françois',
|
433 |
349 |
'last_name': 'hIsQuIn',
|
... | ... | |
436 |
352 |
}
|
437 |
353 |
params.update(REQUEST_PARAMS)
|
438 |
354 |
|
439 |
|
url = '/api-entreprise/test/match_mandataire_social/443170139/'
|
440 |
|
response = app.get(url, params=params)
|
|
355 |
with responses.RequestsMock() as rsps:
|
|
356 |
rsps.get('https://entreprise.api.gouv.fr/v2/entreprises/443170139/', json=ENTREPRISES_RESPONSE)
|
441 |
357 |
|
442 |
|
# successful matching
|
443 |
|
data = response.json['data']
|
444 |
|
assert data['nom'] == 'HISQUIN'
|
445 |
|
assert data['prenom'] == 'FRANCOIS'
|
446 |
|
assert data['date_naissance'] == '1965-01-27'
|
447 |
|
assert data['type'] == 'PP'
|
|
358 |
url = '/api-entreprise/test/match_mandataire_social/443170139/'
|
|
359 |
response = app.get(url, params=params)
|
448 |
360 |
|
449 |
|
params['first_name'] = 'JOHN'
|
450 |
|
response = app.get(url, params=params)
|
|
361 |
# successful matching
|
|
362 |
data = response.json['data']
|
|
363 |
assert data['nom'] == 'HISQUIN'
|
|
364 |
assert data['prenom'] == 'FRANCOIS'
|
|
365 |
assert data['date_naissance'] == '1965-01-27'
|
|
366 |
assert data['type'] == 'PP'
|
451 |
367 |
|
452 |
|
# matching failed
|
453 |
|
assert not response.json['err']
|
454 |
|
assert not response.json['data']
|
|
368 |
params['first_name'] = 'JOHN'
|
|
369 |
response = app.get(url, params=params)
|
455 |
370 |
|
456 |
|
params['first_name'] = 'francoi'
|
457 |
|
params['last_name'] = 'hisquinn'
|
458 |
|
response = app.get(url, params=params)
|
|
371 |
# matching failed
|
|
372 |
assert not response.json['err']
|
|
373 |
assert not response.json['data']
|
459 |
374 |
|
460 |
|
# successful matching within distance bracket
|
461 |
|
data = response.json['data']
|
462 |
|
assert data['nom'] == 'HISQUIN'
|
463 |
|
assert data['prenom'] == 'FRANCOIS'
|
464 |
|
assert data['date_naissance'] == '1965-01-27'
|
465 |
|
assert data['type'] == 'PP'
|
|
375 |
params['first_name'] = 'francoi'
|
|
376 |
params['last_name'] = 'hisquinn'
|
|
377 |
response = app.get(url, params=params)
|
466 |
378 |
|
|
379 |
# successful matching within distance bracket
|
|
380 |
data = response.json['data']
|
|
381 |
assert data['nom'] == 'HISQUIN'
|
|
382 |
assert data['prenom'] == 'FRANCOIS'
|
|
383 |
assert data['date_naissance'] == '1965-01-27'
|
|
384 |
assert data['type'] == 'PP'
|
467 |
385 |
|
468 |
|
@mock.patch('passerelle.utils.Request.get')
|
469 |
|
def test_entreprises_endpoint_include_private(mocked_get, app, resource, mock_api_entreprise):
|
470 |
|
mocked_get.return_value = FakedResponse(content='{}', status_code=200)
|
471 |
|
request_params = REQUEST_PARAMS.copy()
|
472 |
386 |
|
473 |
|
app.get('/api-entreprise/test/entreprises/443170139/', params=request_params)
|
474 |
|
assert 'non_diffusables' not in mocked_get.mock_calls[0].kwargs['data']
|
|
387 |
def test_entreprises_endpoint_include_private(app, resource):
|
|
388 |
with responses.RequestsMock() as rsps:
|
|
389 |
rsps.get('https://entreprise.api.gouv.fr/v2/entreprises/443170139/', json=ENTREPRISES_RESPONSE)
|
475 |
390 |
|
476 |
|
request_params['include_private'] = True
|
477 |
|
app.get('/api-entreprise/test/entreprises/443170139/', params=request_params)
|
478 |
|
assert mocked_get.mock_calls[1].kwargs['data']['non_diffusables'] == 'true'
|
|
391 |
request_params = REQUEST_PARAMS.copy()
|
479 |
392 |
|
|
393 |
app.get('/api-entreprise/test/entreprises/443170139/', params=request_params)
|
|
394 |
assert 'non_diffusables' not in rsps.calls[-1].request.body
|
480 |
395 |
|
481 |
|
def test_etablissements_endpoint(app, resource, mock_api_entreprise):
|
482 |
|
response = app.get('/api-entreprise/test/etablissements/44317013900036/', params=REQUEST_PARAMS)
|
|
396 |
request_params['include_private'] = True
|
|
397 |
app.get('/api-entreprise/test/entreprises/443170139/', params=request_params)
|
|
398 |
assert 'non_diffusables=true' in rsps.calls[-1].request.body
|
|
399 |
|
|
400 |
|
|
401 |
def test_etablissements_endpoint(app, resource):
|
|
402 |
with responses.RequestsMock() as rsps:
|
|
403 |
rsps.get(
|
|
404 |
'https://entreprise.api.gouv.fr/v2/etablissements/44317013900036/', json=ETABLISSEMENTS_RESPONSE
|
|
405 |
)
|
|
406 |
response = app.get('/api-entreprise/test/etablissements/44317013900036/', params=REQUEST_PARAMS)
|
483 |
407 |
assert 'data' in response.json
|
484 |
408 |
data = response.json['data']
|
485 |
409 |
|
... | ... | |
495 |
419 |
assert data['etablissement']['adresse']['code_insee_localite'] == '75108'
|
496 |
420 |
|
497 |
421 |
|
498 |
|
def test_associations_endpoint(app, resource, mock_api_entreprise):
|
499 |
|
response = app.get('/api-entreprise/test/associations/443170139/', params=REQUEST_PARAMS)
|
|
422 |
def test_associations_endpoint(app, resource):
|
|
423 |
with responses.RequestsMock() as rsps:
|
|
424 |
rsps.get('https://entreprise.api.gouv.fr/v2/associations/443170139/', json=ASSOCIATIONS_RESPONSE)
|
|
425 |
response = app.get('/api-entreprise/test/associations/443170139/', params=REQUEST_PARAMS)
|
500 |
426 |
assert 'data' in response.json
|
501 |
427 |
data = response.json['data']
|
502 |
428 |
|
... | ... | |
512 |
438 |
assert data['association']['adresse_siege']['code_insee'] == '75120'
|
513 |
439 |
|
514 |
440 |
|
515 |
|
def test_documents_associations_endpoint(app, resource, mock_api_entreprise):
|
516 |
|
response = app.get('/api-entreprise/test/documents_associations/443170139/', params=REQUEST_PARAMS)
|
|
441 |
def test_documents_associations_endpoint(app, resource):
|
|
442 |
with responses.RequestsMock() as rsps:
|
|
443 |
rsps.get(
|
|
444 |
'https://entreprise.api.gouv.fr/v2/documents_associations/443170139/',
|
|
445 |
json=DOCUMENTS_ASSOCIATION_RESPONSE,
|
|
446 |
)
|
|
447 |
|
|
448 |
response = app.get('/api-entreprise/test/documents_associations/443170139/', params=REQUEST_PARAMS)
|
517 |
449 |
assert 'data' in response.json
|
518 |
450 |
data = response.json['data']
|
519 |
451 |
assert len(data) == 3
|
... | ... | |
525 |
457 |
assert 'datetime' in document
|
526 |
458 |
|
527 |
459 |
|
528 |
|
def test_associations_last_document_of_type_endpoint(app, resource, mock_api_entreprise):
|
529 |
|
params = REQUEST_PARAMS
|
530 |
|
params['document_type'] = 'Statuts'
|
531 |
|
response = app.get('/api-entreprise/test/document_association/443170139/get-last/', params=params)
|
532 |
|
assert 'data' in response.json
|
533 |
|
data = response.json['data']
|
534 |
|
assert data['timestamp'] == '1500660325'
|
|
460 |
def test_associations_last_document_of_type_endpoint(app, resource):
|
|
461 |
with responses.RequestsMock() as rsps:
|
|
462 |
rsps.get(
|
|
463 |
'https://entreprise.api.gouv.fr/v2/documents_associations/443170139/',
|
|
464 |
json=DOCUMENTS_ASSOCIATION_RESPONSE,
|
|
465 |
)
|
|
466 |
|
|
467 |
params = REQUEST_PARAMS
|
|
468 |
params['document_type'] = 'Statuts'
|
|
469 |
response = app.get('/api-entreprise/test/document_association/443170139/get-last/', params=params)
|
|
470 |
assert 'data' in response.json
|
|
471 |
data = response.json['data']
|
|
472 |
assert data['timestamp'] == '1500660325'
|
535 |
473 |
|
536 |
|
params['document_type'] = 'Liste des dirigeants'
|
537 |
|
response = app.get('/api-entreprise/test/document_association/443170139/get-last/', params=params)
|
538 |
|
assert not response.json['data']
|
|
474 |
params['document_type'] = 'Liste des dirigeants'
|
|
475 |
response = app.get('/api-entreprise/test/document_association/443170139/get-last/', params=params)
|
|
476 |
assert not response.json['data']
|
539 |
477 |
|
540 |
478 |
|
541 |
|
def test_extraits_rcs(app, resource, mock_api_entreprise, freezer):
|
542 |
|
response = app.get('/api-entreprise/test/extraits_rcs/443170139/', params=REQUEST_PARAMS)
|
|
479 |
def test_extraits_rcs(app, resource):
|
|
480 |
with responses.RequestsMock() as rsps:
|
|
481 |
rsps.get(
|
|
482 |
'https://entreprise.api.gouv.fr/v2/extraits_rcs_infogreffe/443170139/', json=EXTRAITS_RCS_RESPONSE
|
|
483 |
)
|
|
484 |
response = app.get('/api-entreprise/test/extraits_rcs/443170139/', params=REQUEST_PARAMS)
|
543 |
485 |
assert 'data' in response.json
|
544 |
486 |
data = response.json['data']
|
545 |
487 |
|
... | ... | |
550 |
492 |
assert data['date_immatriculation_datetime'] == '1998-03-26T23:00:00Z'
|
551 |
493 |
|
552 |
494 |
|
553 |
|
def test_document_association(app, resource, mock_api_entreprise, freezer):
|
554 |
|
response = app.get('/api-entreprise/test/documents_associations/443170139/', params=REQUEST_PARAMS)
|
555 |
|
assert 'data' in response.json
|
556 |
|
data = response.json['data']
|
557 |
|
assert len(data) == 3
|
558 |
|
document = data[0]
|
559 |
|
assert 'url' in document
|
560 |
|
app.get(document['url'], params={'context': 'MSP', 'object': 'demand', 'recipient': 'siret'}, status=200)
|
561 |
|
# try to get document with wrong signature
|
562 |
|
wrong_url = document['url'] + "wrong/"
|
563 |
|
app.get(wrong_url, status=404)
|
|
495 |
def test_document_association(app, resource, freezer):
|
|
496 |
with responses.RequestsMock() as rsps:
|
|
497 |
rsps.get(
|
|
498 |
'https://entreprise.api.gouv.fr/v2/documents_associations/443170139/',
|
|
499 |
json=DOCUMENTS_ASSOCIATION_RESPONSE,
|
|
500 |
)
|
|
501 |
|
|
502 |
response = app.get('/api-entreprise/test/documents_associations/443170139/', params=REQUEST_PARAMS)
|
|
503 |
assert 'data' in response.json
|
|
504 |
data = response.json['data']
|
|
505 |
assert len(data) == 3
|
|
506 |
document = data[0]
|
|
507 |
assert 'url' in document
|
|
508 |
|
|
509 |
rsps.get(
|
|
510 |
'https://apientreprise.fr/attestations/40ab0b07d434d0417e8997ce7c5afbef/attestation_document_association.pdf',
|
|
511 |
body='binary content',
|
|
512 |
)
|
564 |
513 |
|
565 |
|
# try expired url
|
566 |
|
freezer.move_to(timezone.now() + timezone.timedelta(days=8))
|
567 |
|
app.get(document['url'], status=404)
|
|
514 |
app.get(
|
|
515 |
document['url'], params={'context': 'MSP', 'object': 'demand', 'recipient': 'siret'}, status=200
|
|
516 |
)
|
|
517 |
# try to get document with wrong signature
|
|
518 |
wrong_url = document['url'] + "wrong/"
|
|
519 |
app.get(wrong_url, status=404)
|
|
520 |
|
|
521 |
# try expired url
|
|
522 |
freezer.move_to(timezone.now() + timezone.timedelta(days=8))
|
|
523 |
app.get(document['url'], status=404)
|
568 |
524 |
|
569 |
525 |
|
570 |
|
def test_effectifs_annuels_acoss_covid(app, resource, mock_api_entreprise, freezer):
|
571 |
|
response = app.get('/api-entreprise/test/effectifs_annuels_acoss_covid/418166096/', params=REQUEST_PARAMS)
|
|
526 |
def test_effectifs_annuels_acoss_covid(app, resource):
|
|
527 |
with responses.RequestsMock() as rsps:
|
|
528 |
rsps.get(
|
|
529 |
'https://entreprise.api.gouv.fr/v2/effectifs_annuels_acoss_covid/418166096/',
|
|
530 |
json=EFFECTIFS_ANNUELS_ACOSS_COVID,
|
|
531 |
)
|
|
532 |
|
|
533 |
response = app.get(
|
|
534 |
'/api-entreprise/test/effectifs_annuels_acoss_covid/418166096/', params=REQUEST_PARAMS
|
|
535 |
)
|
572 |
536 |
data = response.json['data']
|
573 |
537 |
assert data['siren'] == '418166096'
|
574 |
538 |
assert data['annee'] == '2019'
|
575 |
539 |
assert data['effectifs_annuels'] == 100.5
|
576 |
540 |
|
577 |
541 |
|
578 |
|
def test_entreprise_effectifs_mensuels_acoss_covid(app, resource, mock_api_entreprise, freezer):
|
579 |
|
response = app.get(
|
580 |
|
'/api-entreprise/test/entreprise_effectifs_mensuels_acoss_covid/2019/02/418166096/',
|
581 |
|
params=REQUEST_PARAMS,
|
582 |
|
)
|
|
542 |
def test_entreprise_effectifs_mensuels_acoss_covid(app, resource):
|
|
543 |
with responses.RequestsMock() as rsps:
|
|
544 |
rsps.get(
|
|
545 |
'https://entreprise.api.gouv.fr/v2/effectifs_mensuels_acoss_covid/2019/02/entreprise/418166096/',
|
|
546 |
json=ENTREPRISE_EFFECTIFS_MENSUELS_ACOSS_COVID,
|
|
547 |
)
|
|
548 |
|
|
549 |
response = app.get(
|
|
550 |
'/api-entreprise/test/entreprise_effectifs_mensuels_acoss_covid/2019/02/418166096/',
|
|
551 |
params=REQUEST_PARAMS,
|
|
552 |
)
|
|
553 |
|
583 |
554 |
data = response.json['data']
|
584 |
555 |
assert data['siren'] == '418166096'
|
585 |
556 |
assert data['annee'] == '2019'
|
... | ... | |
587 |
558 |
assert data['effectifs_mensuels'] == 100.5
|
588 |
559 |
|
589 |
560 |
|
590 |
|
def test_etablissment_effectifs_mensuels_acoss_covid(app, resource, mock_api_entreprise, freezer):
|
591 |
|
response = app.get(
|
592 |
|
'/api-entreprise/test/etablissement_effectifs_mensuels_acoss_covid/2019/02/418166096/',
|
593 |
|
params=REQUEST_PARAMS,
|
594 |
|
)
|
|
561 |
def test_etablissment_effectifs_mensuels_acoss_covid(app, resource):
|
|
562 |
with responses.RequestsMock() as rsps:
|
|
563 |
rsps.get(
|
|
564 |
'https://entreprise.api.gouv.fr/v2/effectifs_mensuels_acoss_covid/2019/02/etablissement/418166096/',
|
|
565 |
json=ETABLISSEMENT_EFFECTIFS_MENSUELS_ACOSS_COVID,
|
|
566 |
)
|
|
567 |
|
|
568 |
response = app.get(
|
|
569 |
'/api-entreprise/test/etablissement_effectifs_mensuels_acoss_covid/2019/02/418166096/',
|
|
570 |
params=REQUEST_PARAMS,
|
|
571 |
)
|
595 |
572 |
data = response.json['data']
|
596 |
573 |
assert data['siret'] == '41816609600051'
|
597 |
574 |
assert data['annee'] == '2019'
|
... | ... | |
599 |
576 |
assert data['effectifs_mensuels'] == 100.5
|
600 |
577 |
|
601 |
578 |
|
602 |
|
def test_exercices(app, resource, mock_api_entreprise, freezer):
|
603 |
|
response = app.get('/api-entreprise/test/exercices/418166096/', params=REQUEST_PARAMS)
|
|
579 |
def test_exercices(app, resource):
|
|
580 |
with responses.RequestsMock() as rsps:
|
|
581 |
rsps.get('https://entreprise.api.gouv.fr/v2/exercices/418166096/', json=EXERCICES_RESPONSE)
|
|
582 |
response = app.get('/api-entreprise/test/exercices/418166096/', params=REQUEST_PARAMS)
|
604 |
583 |
data = response.json['data']
|
605 |
584 |
assert len(data['exercices']) == 3
|
606 |
585 |
exercice = data['exercices'][0]
|
... | ... | |
610 |
589 |
assert exercice['date_fin_exercice_datetime'] == '2016-12-30T23:00:00Z'
|
611 |
590 |
|
612 |
591 |
|
613 |
|
def test_error_500(app, resource, mock_api_entreprise):
|
614 |
|
with HTTMock(api_entreprise_error_500):
|
|
592 |
def test_error_500(app, resource):
|
|
593 |
with responses.RequestsMock() as rsps:
|
|
594 |
rsps.get(
|
|
595 |
'https://entreprise.api.gouv.fr/v2/entreprises/443170139/', body='bad error happened', status=500
|
|
596 |
)
|
615 |
597 |
response = app.get('/api-entreprise/test/entreprises/443170139/', params=REQUEST_PARAMS)
|
616 |
598 |
assert response.status_code == 200
|
617 |
599 |
assert response.json['err'] == 1
|
... | ... | |
619 |
601 |
assert 'error happened' in response.json['err_desc']
|
620 |
602 |
|
621 |
603 |
|
622 |
|
def test_no_json_error(app, resource, mock_api_entreprise):
|
623 |
|
with HTTMock(api_entreprise_error_not_json):
|
|
604 |
def test_no_json_error(app, resource):
|
|
605 |
with responses.RequestsMock() as rsps:
|
|
606 |
rsps.get(
|
|
607 |
'https://entreprise.api.gouv.fr/v2/entreprises/443170139/',
|
|
608 |
body='simple text',
|
|
609 |
)
|
624 |
610 |
response = app.get('/api-entreprise/test/entreprises/443170139/', params=REQUEST_PARAMS)
|
625 |
611 |
assert response.status_code == 200
|
626 |
612 |
assert response.json['err'] == 1
|
... | ... | |
630 |
616 |
)
|
631 |
617 |
|
632 |
618 |
|
633 |
|
def test_error_404(app, resource, mock_api_entreprise):
|
634 |
|
with HTTMock(api_entreprise_error_not_found):
|
|
619 |
def test_error_404(app, resource):
|
|
620 |
with responses.RequestsMock() as rsps:
|
|
621 |
rsps.get(
|
|
622 |
'https://entreprise.api.gouv.fr/v2/entreprises/443170139/',
|
|
623 |
json={'error': 'not_found', 'message': 'Page not found'},
|
|
624 |
status=404,
|
|
625 |
)
|
635 |
626 |
response = app.get('/api-entreprise/test/entreprises/443170139/', params=REQUEST_PARAMS)
|
636 |
627 |
assert response.status_code == 200
|
637 |
628 |
assert response.json['err'] == 1
|
638 |
629 |
assert response.json['err_desc'] == 'Page not found'
|
639 |
630 |
|
640 |
631 |
|
641 |
|
def test_connection_error(app, resource, mock_api_entreprise):
|
642 |
|
with HTTMock(api_entreprise_connection_error):
|
|
632 |
def test_connection_error(app, resource):
|
|
633 |
with responses.RequestsMock() as rsps:
|
|
634 |
rsps.get(
|
|
635 |
'https://entreprise.api.gouv.fr/v2/entreprises/443170139/',
|
|
636 |
body=requests.RequestException('connection timed-out'),
|
|
637 |
)
|
643 |
638 |
response = app.get('/api-entreprise/test/entreprises/443170139/', params=REQUEST_PARAMS)
|
644 |
639 |
assert response.status_code == 200
|
645 |
640 |
assert response.json['err'] == 1
|
646 |
|
-
|