69 |
69 |
{"dateDeNaissance": "18101969", "nomPrenom": "JEAN DUPONT", "sexe": "M"},
|
70 |
70 |
],
|
71 |
71 |
"annee": 2017,
|
72 |
72 |
"enfants": [{"dateDeNaissance": "11122016", "nomPrenom": "LUCIE DUPONT", "sexe": "F"}],
|
73 |
73 |
"mois": 4,
|
74 |
74 |
"quotientFamilial": 1754,
|
75 |
75 |
}
|
76 |
76 |
|
|
77 |
INTROSPECT = {
|
|
78 |
"_id": "1d99db5a-a099-4314-ad2f-2707c6b505a6",
|
|
79 |
"name": "Application de sandbox",
|
|
80 |
"scopes": [
|
|
81 |
"dgfip_avis_imposition",
|
|
82 |
"dgfip_adresse",
|
|
83 |
"cnaf_allocataires",
|
|
84 |
"cnaf_enfants",
|
|
85 |
"cnaf_adresse",
|
|
86 |
"cnaf_quotient_familial",
|
|
87 |
"mesri_statut_etudiant",
|
|
88 |
],
|
|
89 |
}
|
|
90 |
|
77 |
91 |
|
78 |
92 |
@urlmatch(netloc=r'^particulier.*\.api\.gouv\.fr$', path=r'^/api/v2/avis-imposition$')
|
79 |
93 |
def api_particulier_v2_avis_imposition(url, request):
|
80 |
94 |
return response(200, SVAIR_RESPONSE, request=request)
|
81 |
95 |
|
82 |
96 |
|
83 |
97 |
@urlmatch(netloc=r'^particulier.*\.api\.gouv\.fr$', path=r'^/api/v2/composition-familiale$')
|
84 |
98 |
def api_particulier_v2_situation_familiale(url, request):
|
85 |
99 |
return response(200, CAF_FAMILLE, request=request)
|
86 |
100 |
|
87 |
101 |
|
|
102 |
@urlmatch(netloc=r'^particulier.*\.api\.gouv\.fr$', path=r'^/api/introspect$')
|
|
103 |
def api_particulier_introspect(url, request):
|
|
104 |
return response(200, INTROSPECT, request=request)
|
|
105 |
|
|
106 |
|
88 |
107 |
@urlmatch(netloc=r'^particulier.*\.api\.gouv\.fr$')
|
89 |
108 |
def api_particulier_error_500(url, request):
|
90 |
109 |
return response(500, {'error': 500}, request=request)
|
91 |
110 |
|
92 |
111 |
|
93 |
112 |
@urlmatch(netloc=r'^particulier.*\.api\.gouv\.fr$')
|
94 |
113 |
def api_particulier_connection_error(url, request):
|
95 |
114 |
raise requests.RequestException('connection timed-out')
|
... | ... | |
127 |
146 |
404,
|
128 |
147 |
{'error': 'not_found', 'message': 'Dossier radié. Le document ne peut être édité.'},
|
129 |
148 |
request=request,
|
130 |
149 |
)
|
131 |
150 |
|
132 |
151 |
|
133 |
152 |
@pytest.fixture
|
134 |
153 |
def mock_api_particulier():
|
135 |
|
with HTTMock(api_particulier_v2_avis_imposition, api_particulier_v2_situation_familiale):
|
|
154 |
with HTTMock(
|
|
155 |
api_particulier_v2_avis_imposition, api_particulier_v2_situation_familiale, api_particulier_introspect
|
|
156 |
):
|
136 |
157 |
yield None
|
137 |
158 |
|
138 |
159 |
|
139 |
160 |
@pytest.fixture
|
140 |
161 |
def resource(db):
|
141 |
162 |
return make_resource(
|
142 |
163 |
APIParticulier,
|
143 |
164 |
slug='test',
|
... | ... | |
328 |
349 |
},
|
329 |
350 |
)
|
330 |
351 |
logs = ResourceLog.objects.all()
|
331 |
352 |
assert logs.count() == 3
|
332 |
353 |
if should_log:
|
333 |
354 |
assert logs.filter(levelno=logging.ERROR).count() == 1
|
334 |
355 |
else:
|
335 |
356 |
assert not logs.filter(levelno=logging.ERROR).exists()
|
|
357 |
|
|
358 |
|
|
359 |
def test_scopes(app, resource, mock_api_particulier):
|
|
360 |
resp = endpoint_get('/api-particulier/test/scopes', app, resource, 'scopes')
|
|
361 |
assert resp.json['data'] == [
|
|
362 |
"cnaf_adresse",
|
|
363 |
"cnaf_allocataires",
|
|
364 |
"cnaf_enfants",
|
|
365 |
"cnaf_quotient_familial",
|
|
366 |
"dgfip_adresse",
|
|
367 |
"dgfip_avis_imposition",
|
|
368 |
"mesri_statut_etudiant",
|
|
369 |
]
|
336 |
|
-
|