|
|
|
@ -18,11 +18,52 @@ import json
|
|
|
|
|
from urllib.parse import parse_qs, urlparse, urlunparse
|
|
|
|
|
|
|
|
|
|
import pytest
|
|
|
|
|
from django.utils.timezone import now
|
|
|
|
|
|
|
|
|
|
import tests.utils
|
|
|
|
|
from passerelle.apps.franceconnect_data.models import Resource
|
|
|
|
|
from tests.test_rsa13 import mock_response
|
|
|
|
|
|
|
|
|
|
CURRENT_YEAR = now().year
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
USER_INFO_MOCKED_RESPONSES = [
|
|
|
|
|
['/api/v1/token', {'access_token': 'at-1234', 'id_token': '.e30=.'}],
|
|
|
|
|
[
|
|
|
|
|
'/api/v1/userinfo',
|
|
|
|
|
{
|
|
|
|
|
'sub': 'sub-1234',
|
|
|
|
|
'given_name': 'John',
|
|
|
|
|
'family_name': 'Doe',
|
|
|
|
|
'birthdate': '2001-04-28',
|
|
|
|
|
'birthplace': '13055',
|
|
|
|
|
'birthcountry': '99100',
|
|
|
|
|
'gender': 'male',
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DGFIP_MOCKED_RESPONSES = USER_INFO_MOCKED_RESPONSES + [
|
|
|
|
|
[
|
|
|
|
|
'/token',
|
|
|
|
|
{
|
|
|
|
|
'access_token': 'eyJ4NXQiOi',
|
|
|
|
|
'expires_in': 3600,
|
|
|
|
|
'scope': 'RessourceIRDerniere2',
|
|
|
|
|
'token_type': 'Bearer',
|
|
|
|
|
},
|
|
|
|
|
]
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
DGFIP_MOCKED_RESPONSES += [
|
|
|
|
|
[
|
|
|
|
|
'/impotparticulier/1.0/situations/ir/assiettes/annrev/%s' % year,
|
|
|
|
|
{'rfr': 0, 'revenuBrutGlobal': 0},
|
|
|
|
|
]
|
|
|
|
|
for year in range(CURRENT_YEAR - 3, CURRENT_YEAR)
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture
|
|
|
|
|
def fc(db):
|
|
|
|
@ -54,21 +95,7 @@ def test_init_request(app, fc):
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@mock_response(
|
|
|
|
|
['/api/v1/token', {'access_token': 'at-1234', 'id_token': '.e30=.'}],
|
|
|
|
|
[
|
|
|
|
|
'/api/v1/userinfo',
|
|
|
|
|
{
|
|
|
|
|
'sub': 'sub-1234',
|
|
|
|
|
'given_name': 'John',
|
|
|
|
|
'family_name': 'Doe',
|
|
|
|
|
'birthdate': '2001-04-28',
|
|
|
|
|
'birthplace': '13055',
|
|
|
|
|
'birthcountry': '99100',
|
|
|
|
|
'gender': 'male',
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
)
|
|
|
|
|
@mock_response(*USER_INFO_MOCKED_RESPONSES)
|
|
|
|
|
def test_callback(app, fc):
|
|
|
|
|
resp = app.get(
|
|
|
|
|
'http://testserver/franceconnect-data/test/callback?origin=http%3A%2F%2Ftestserver&code=5678&raise=1'
|
|
|
|
@ -119,3 +146,20 @@ def test_callback_error(app, fc):
|
|
|
|
|
error = json.loads(resp.pyquery('#error').text())
|
|
|
|
|
assert error
|
|
|
|
|
assert 'Error in token endpoint response' in resp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@mock_response(*DGFIP_MOCKED_RESPONSES)
|
|
|
|
|
def test_dgfip_mode(app, fc):
|
|
|
|
|
resp = app.get(
|
|
|
|
|
'http://testserver/franceconnect-data/test/callback?origin=http%3A%2F%2Ftestserver&code=5678&raise=1&mode=dgfip'
|
|
|
|
|
)
|
|
|
|
|
data = json.loads(resp.pyquery('#data').text())
|
|
|
|
|
assert data
|
|
|
|
|
assert 'id' in data
|
|
|
|
|
assert data['text'] == 'John Doe né le April 28, 2001'
|
|
|
|
|
|
|
|
|
|
resp = app.get('/franceconnect-data/test/data_source?mode=dgfip&id=' + data['id'])
|
|
|
|
|
data = resp.json['data'][0]
|
|
|
|
|
assert data['dgfip_ir']
|
|
|
|
|
for year in range(CURRENT_YEAR - 3, CURRENT_YEAR):
|
|
|
|
|
assert data['dgfip_ir'][str(year)]
|
|
|
|
|