145 lines
5.2 KiB
Python
145 lines
5.2 KiB
Python
import os
|
|
|
|
import pytest
|
|
import responses
|
|
from django.contrib.contenttypes.models import ContentType
|
|
|
|
import tests.utils
|
|
from passerelle.apps.mgdis.models import Mgdis
|
|
from passerelle.base.models import AccessRight, ApiUser
|
|
|
|
pytestmark = pytest.mark.django_db
|
|
|
|
base_dir = os.path.dirname(__file__)
|
|
|
|
MGDIS_RESPONSE = {
|
|
'data': {
|
|
'tiers': [
|
|
{
|
|
'id': 'cOy8DSnSH',
|
|
'referenceAdministrative': '00000180',
|
|
'status': {'id': 'TEMPORARY', 'text': 'En cours de cr\u00e9ation'},
|
|
'famille': {'id': ''},
|
|
'demandes': [
|
|
{
|
|
'id': 'pFuGTUYDQ',
|
|
'text': 'Demande de financement - Associations',
|
|
'datetime': '2024-01-18T10:37:33.896Z',
|
|
'status': {'id': 'REQUESTED', 'text': 'En cours de saisie'},
|
|
'teleservice': {'text': 'Demande de financement - Associations', 'id': 'F_FINASSO'},
|
|
'form_status_is_endpoint': False,
|
|
'draft': True,
|
|
'url': 'https://mgdis.example.net/aides/#/mgdis-tenant/connecte/dashboard/pFuGTUYDQ/recapitulatif',
|
|
'action_usager': False,
|
|
'compte_demandeur': True,
|
|
'tiers_beneficiaire': True,
|
|
}
|
|
],
|
|
},
|
|
{
|
|
'id': 'L7dYZD1_o',
|
|
'text': 'Monsieur Foo Bar',
|
|
'referenceAdministrative': '00000181',
|
|
'status': {'id': 'TEMPORARY', 'text': 'En cours de cr\u00e9ation'},
|
|
'famille': {'text': 'Particulier', 'id': '01'},
|
|
'mail': 'foot@example.net',
|
|
'telephone': '06 07 08 09 00',
|
|
'demandes': [
|
|
{
|
|
'id': 'BgpRIrS0X',
|
|
'text': 'Transport - Allocation individuelle de transport - Monsieur Foo Bar',
|
|
'datetime': '2024-01-18T10:37:58.355Z',
|
|
'status': {'id': 'REQUESTED', 'text': 'En cours de saisie'},
|
|
'teleservice': {
|
|
'text': 'Transport - Allocation individuelle de transport',
|
|
'id': 'F_TRANSPAIT',
|
|
},
|
|
'form_status_is_endpoint': False,
|
|
'draft': True,
|
|
'url': 'https://mdgis.example.net/aides/#/mdgis-tenant/connecte/dashboard/BgpRIrS0X/recapitulatif',
|
|
'action_usager': False,
|
|
'compte_demandeur': True,
|
|
'tiers_beneficiaire': True,
|
|
}
|
|
],
|
|
},
|
|
]
|
|
},
|
|
'err': 0,
|
|
}
|
|
|
|
MGDIS_ERROR_RESPONSE = {'data': {}, 'err': 500, 'err_desc': "Cet utilisateur n'est pas connu"}
|
|
|
|
|
|
@pytest.fixture
|
|
def mgdis():
|
|
conn = Mgdis.objects.create(slug='test', base_url='https://mgdis.example.net/', tenant_id='mgdis-tenant')
|
|
api = ApiUser.objects.create(username='all', keytype='', key='')
|
|
obj_type = ContentType.objects.get_for_model(conn)
|
|
AccessRight.objects.create(
|
|
codename='can_access', apiuser=api, resource_type=obj_type, resource_pk=conn.pk
|
|
)
|
|
|
|
return conn
|
|
|
|
|
|
@responses.activate
|
|
def test_get_user_demands(app, mgdis):
|
|
endpoint = tests.utils.generic_endpoint_url('mgdis', 'demands', slug=mgdis.slug)
|
|
assert endpoint == '/mgdis/test/demands'
|
|
|
|
responses.add(
|
|
responses.GET,
|
|
f'{mgdis.base_url}pda-semi-public-api/api/tenants/{mgdis.tenant_id}/gru-publik/mes-demandes',
|
|
json=MGDIS_RESPONSE,
|
|
status=200,
|
|
)
|
|
|
|
resp = app.get(endpoint, params={'NameID': 'xyz'})
|
|
assert len(responses.calls) == 1
|
|
assert resp.json['err'] == 0
|
|
assert len(resp.json['data']) == 2
|
|
for item in resp.json['data']:
|
|
assert 'name' in item
|
|
assert 'url' in item
|
|
assert 'draft' in item
|
|
assert 'datetime' in item
|
|
assert 'status' in item
|
|
assert 'form_status_is_endpoint' in item
|
|
|
|
resp = app.get(endpoint, params={'NameID': 'xyz', 'status': 'done'})
|
|
assert len(resp.json['data']) == 0
|
|
|
|
resp = app.get(endpoint, params={'NameID': 'xyz', 'tiers_id': 'L7dYZD1_o'})
|
|
assert len(resp.json['data']) == 1
|
|
|
|
|
|
@responses.activate
|
|
def test_mgdis_invalid_response(app, mgdis):
|
|
endpoint = tests.utils.generic_endpoint_url('mgdis', 'demands', slug=mgdis.slug)
|
|
responses.add(
|
|
responses.GET,
|
|
f'{mgdis.base_url}pda-semi-public-api/api/tenants/{mgdis.tenant_id}/gru-publik/mes-demandes',
|
|
body='<h2>Error 500</h2>',
|
|
status=200,
|
|
)
|
|
|
|
resp = app.get(endpoint, params={'NameID': 'xyz'})
|
|
assert resp.json['err'] == 1
|
|
assert resp.json['err_desc'] == 'MGDIS error: unparsable response'
|
|
|
|
|
|
@responses.activate
|
|
def test_mgdis_error_response(app, mgdis):
|
|
endpoint = tests.utils.generic_endpoint_url('mgdis', 'demands', slug=mgdis.slug)
|
|
responses.add(
|
|
responses.GET,
|
|
f'{mgdis.base_url}pda-semi-public-api/api/tenants/{mgdis.tenant_id}/gru-publik/mes-demandes',
|
|
json=MGDIS_ERROR_RESPONSE,
|
|
status=200,
|
|
)
|
|
|
|
resp = app.get(endpoint, params={'NameID': 'xyz'})
|
|
assert resp.json['err'] != 0
|
|
assert not resp.json['data']
|