# -*- coding: utf-8 -*- # passerelle - uniform access to multiple data sources and services # Copyright (C) 2018 Entr'ouvert # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU Affero General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . import functools import json from urllib.parse import parse_qs import httmock import pytest import utils from passerelle.contrib.rsa13.models import RSA13Resource @pytest.fixture def rsa13(db): return utils.make_resource( RSA13Resource, title='Test', slug='test', description='Test', webservice_base_url='https://rsa-cd13.com', basic_auth_username='username', basic_auth_password='password', ) @pytest.fixture def url(rsa13): return '/rsa13/%s/' % rsa13.slug def mock_response(*path_contents): def decorator(func): @httmock.urlmatch() def error(url, request): assert False, 'request to %s' % (url,) @functools.wraps(func) def wrapper(*args, **kwargs): handlers = [] for row in path_contents: try: path, query, content = row except ValueError: path, content = row query = None @httmock.urlmatch(path=path) def handler(url, request): if query: assert parse_qs(url.query) == parse_qs(query), 'query does not match' return json.dumps(content) handlers.append(handler) handlers.append(error) with httmock.HTTMock(*handlers): return func(*args, **kwargs) return wrapper return decorator @mock_response(['/api/check', {'ping': 'pong'}]) def test_check_status(rsa13): rsa13.check_status() EMAIL = 'john.doe@example.com' IP = '127.0.0.1' @pytest.fixture def app(app): '''Add authentication params email/ip to all requests''' orig_do_request = app.do_request def do_request(req, *args, **kwargs): qs = 'email=%s&ip=%s' % (EMAIL, IP) if req.environ['QUERY_STRING']: req.environ['QUERY_STRING'] += '&' + qs else: req.environ['QUERY_STRING'] = qs return orig_do_request(req, *args, **kwargs) app.do_request = do_request return app MOTICLODAC_CODES = [ {'id': 'ABSSUIVI', 'text': 'Aucune info. sur le suivi'}, {'id': 'CADUQUE', 'text': 'Caduque'}, {'id': 'REALISEE', 'text': 'Réalisée'}, {'id': 'RUPTINJUST', 'text': 'Rupture injustifiée'}, {'id': 'RUPTJUSTIF', 'text': 'Rupture justifiée'}, ] @mock_response(['/api/cg_ref_code/domain/MOTICLODAC', {'err': 0, 'data': MOTICLODAC_CODES}]) def test_nomenclature(app, rsa13, url): response = app.get(url + 'nomenclature/MOTICLODAC/') assert response.json == { 'err': 0, 'data': MOTICLODAC_CODES, } PLATFORM_LIST = [{'dsp': 'LA', 'id': 11, 'name': 'ADPEI', 'role': 'Coordonnateur'}] @mock_response(['/api/platform/', {'err': 0, 'data': PLATFORM_LIST}]) def test_platform(app, rsa13, url): response = app.get(url + 'platform/') assert response.json['data'] == PLATFORM_LIST PLATFORM_DETAIL = { "id": 11, "name": "ADPEI", "dsp": "LA", "adr1": "ADPEI", "adr2": None, "adr3": None, "adr4": "18 BOULEVARD CAMILLE FLAMMARION", "adr5": None, "adr6": "13001 MARSEILLE", "tel": "0491110140", "queries": [ {"id": 1, "name": "NON CONSULTÉ", "count": 727}, {"id": 2, "name": "SANS RU", "count": 727}, {"id": 3, "name": "SANS CONTRAT SUR LA PLATEFORME", "count": 231}, {"id": 4, "name": "CONTRAT BIENTOT TERMINE", "count": 0}, {"id": 5, "name": "SANS AUCUNE ACTION", "count": 44}, {"id": 6, "name": "ACTION VALIDEE NON DEBUTEE NON CLOSE", "count": 111}, ], } @mock_response(['/api/platform/11/', {'err': 0, 'data': PLATFORM_DETAIL}]) def test_platform_details(app, rsa13, url): response = app.get(url + 'platform/11/') assert response.json == { 'err': 0, 'data': PLATFORM_DETAIL, } PLATFORM_REFERENT = [ { "id": 324, "nom": "EHRMANN ", "prenom": "Jean Paul", "tel": None, "email": "john.doe@example.com", "role": "Coordonnateur", "statut": "Actif", }, { "id": 239, "nom": "CHAUMONT ", "prenom": "Nadine", "tel": '090909090909', "email": "jane.doe@example.com", "role": "Accompagnateur", "statut": "Clos", }, ] @mock_response(['/api/platform/11/referent/', {'err': 0, 'data': PLATFORM_REFERENT}]) def test_platform_referent(app, rsa13, url): response = app.get(url + 'platform/11/referent/') assert response.json == { 'err': 0, 'data': PLATFORM_REFERENT, } @mock_response(['/api/platform/11/referent/', {'err': 0, 'data': PLATFORM_REFERENT}]) def test_platform_referent_with_status(app, rsa13, url): response = app.get(url + 'platform/11/referent/?statut=Actif') assert response.json == { 'err': 0, 'data': [ref for ref in PLATFORM_REFERENT if ref['statut'] == 'Actif'], } @mock_response(['/api/platform/11/referent/', {'err': 0}]) def test_platform_referent_post(app, rsa13, url): response = app.post_json( url + 'platform/11/referent/', params={ 'email': 'john.doe@example.com', 'prenom': 'John', 'nom': 'Doe', 'tel': '0909090909', }, ) assert response.json == {'err': 0} @mock_response(['/api/platform/11/referent/', {'err': 0}]) def test_platform_referent_post_empty_mail_and_tel(app, rsa13, url): response = app.post_json( url + 'platform/11/referent/', params={ 'email': '', 'prenom': 'John', 'nom': 'Doe', 'tel': '', }, ) assert response.json == {'err': 0} @mock_response(['/api/platform/11/referent/1/', {'err': 0}]) def test_platform_referent_update(app, rsa13, url): response = app.post_json( url + 'platform/11/referent/1/', params={ 'email': 'john.doe@example.com', 'prenom': 'John', 'nom': 'Doe', 'tel': '0909090909', 'statut': 'A', }, ) assert response.json == {'err': 0} BENEFICIAIRE = { "id": 386981, "civilite": "MR", "nom": "AAABEFBAADF", "prenom": "ACCDCBE", "date_naissance": "1958-01-01", "actif": "Oui", "matricule": "193740", "code_postal": "13001", "commune": "MARSEILLE", "code_pi": "51", "referent": " ", "date_deb_affectation": "2019-03-11", "consulte": "Oui", "toppersdrodevorsa": "Oui", } @mock_response(['/api/platform/11/beneficiaire/', 'nom=AAABEFBAADF', {'err': 0, 'data': [BENEFICIAIRE]}]) def test_platform_beneficiaire_nom(app, rsa13, url): response = app.get(url + 'platform/11/beneficiaire/', params={'nom': 'AAABEFBAADF'}) assert response.json == { "err": 0, "data": [BENEFICIAIRE], } @mock_response(['/api/platform/11/beneficiaire/', 'matricule=193740', {'err': 0, 'data': [BENEFICIAIRE]}]) def test_platform_beneficiaire_matricule(app, rsa13, url): response = app.get(url + 'platform/11/beneficiaire/', params={'matricule': '193740'}) assert response.json == { "err": 0, "data": [BENEFICIAIRE], } @mock_response(['/api/platform/11/beneficiaire/', 'page=0', {'err': 0, 'data': [BENEFICIAIRE]}]) def test_platform_beneficiaire_page(app, rsa13, url): response = app.get(url + 'platform/11/beneficiaire/', params={'page': '0'}) assert response.json == { "err": 0, "data": [BENEFICIAIRE], } @mock_response( [ '/api/platform/11/beneficiaire/', 'page=0&nom=NOM&prenom=PRENOM&matricule=MATRICULE&referent=REFERENT', {'err': 0, 'data': [BENEFICIAIRE]}, ] ) def test_platform_beneficiaire_full(app, rsa13, url): response = app.get( url + 'platform/11/beneficiaire/', params={ 'page': '0', 'nom': 'NOM', 'prenom': 'PRENOM', 'matricule': 'MATRICULE', 'referent': 'REFERENT', }, ) assert response.json == { "err": 0, "data": [BENEFICIAIRE], } BENEFICIAIRE_CSV = { "NUM_CAF": '1234', "CODE_PER": '1234', "PRENOM_PER": 'prenom', "DTNAI_PER": '1234', "ACTIF_PER": '1234', "NOM_PER": 'nom', } @mock_response( [ '/api/platform/11/beneficiaire/csv/', 'query=1', {'err': 0, 'data': [BENEFICIAIRE_CSV]}, ] ) def test_platform_beneficiaire_csv(app, rsa13, url): response = app.get( url + 'platform/11/beneficiaire/csv/', params={ 'query': '1', }, ) assert ( response.content == b'''\xef\xbb\xbfNUM_CAF;CODE_PER;NOM_PER;PRENOM_PER;DTNAI_PER;ACTIF_PER;CODE_PI;LIB_CODE_PI;TOPPERSDRODEVORSA;LIB_ETATDOSRSA;LIB_MOTIF_ETATDOSRSA;NB_JOUR_DEPUIS_ARR;DATE_DEB;DATE_1IERE_CONS;DATE_DERNIERE_CONSULT;DATE_REELLE_RDV;NUM_CINS;DATE_SIGN;DATE_DEB_CI;DATE_FIN_CI;REFERENT_CI;ACTION_EN_COURS;DELAI_REGUL;PROC_EN_COURS;REFERENT_AFFECTATION\r\n1234;1234;nom;prenom;1234;1234;;;;;;;;;;;;;;;;;;;\r\n''' # NOQA E501 ) BENEFICIAIRE_DETAIL = { 'actif': 'Oui', 'adresse': { 'adr2': '8 RUE MISSION DE FRANCE', 'adr3': '13001 MARSEILLE', 'adr4': None, 'adr5': None, 'adr6': None, }, 'age': '62 ans', 'civilite': 'MR', 'code_pi': '51', 'commentaire_ref': None, 'conjoint': { 'age': '52 ans', 'id': 854379, 'nom': 'AAABEFBAADF', 'plateforme': 'PI51', 'prenom': 'EEFBEFEC', }, 'date_de_naissance': '1958-01-01', 'droit': { 'date_demande': '2008-10-16', 'etat': 'Droit ouvert et versable', 'motif': None, 'toppersdrodevorsa': 'Oui', }, 'enfants': [ {'age': '16 ans', 'nom': 'DBFFFCDDDDCBAEAC', 'prenom': 'DCACBEAFFD'}, {'age': '14 ans', 'nom': 'DBFFFCDDDDCBAEAC', 'prenom': 'BEDAEDEEBBCD'}, ], 'id': 386981, 'lib_code_pi': "Pôle d'Insertion Marseille I", 'matricule': '193740', 'nom': 'AAABEFBAADF', 'nomnaiss': 'EAEFEFDDDBEFDF', 'numdemrsa': '13378013', 'prenom': 'ACCDCBE', 'referent': {'id': None, 'nom': None, 'prenom': None}, 'situation_familiale': {'date_debut': '2007-10-01', 'libelle': 'VIE MARITALE'}, } @mock_response(['/api/platform/11/beneficiaire/386981/', {'err': 0, 'data': BENEFICIAIRE_DETAIL}]) def test_platform_beneficiaire_detail(app, rsa13, url): response = app.get(url + 'platform/11/beneficiaire/386981/') assert response.json == { 'err': 0, 'data': BENEFICIAIRE_DETAIL, } BENEFICIAIRE_TRANSPORT = {'cumuls': [{'duree': 54, 'type': 'GTU'}]} @mock_response(['/api/platform/11/beneficiaire/386981/telephone/', {'err': 0}]) def test_platform_beneficiaire_telephone(app, rsa13, url): response = app.post_json( url + 'platform/11/beneficiaire/386981/telephone/', params={'tel': '0909090909', 'commentaire': 'coin'}, ) assert response.json == { 'err': 0, } @mock_response(['/api/platform/11/beneficiaire/386981/telephone/0909090909/', {'err': 0}]) def test_platform_beneficiaire_telephone_update(app, rsa13, url): response = app.post_json( url + 'platform/11/beneficiaire/386981/telephone/0909090909/', params={'commentaire': 'coin'}, ) assert response.json == { 'err': 0, } @mock_response(['/api/platform/11/beneficiaire/386981/telephone/0909090909/', {'err': 0}]) def test_platform_beneficiaire_telephone_delete(app, rsa13, url): response = app.delete( url + 'platform/11/beneficiaire/386981/telephone/0909090909/', ) assert response.json == { 'err': 0, } @mock_response(['/api/platform/11/beneficiaire/386981/email/', {'err': 0}]) def test_platform_beneficiaire_email(app, rsa13, url): response = app.post_json( url + 'platform/11/beneficiaire/386981/email/', params={'courriel': 'john.doe@example.com', 'commentaire': 'coin'}, ) assert response.json == { 'err': 0, } @mock_response(['/api/platform/11/beneficiaire/386981/email/john.doe@example.com/', {'err': 0}]) def test_platform_beneficiaire_email_update(app, rsa13, url): response = app.post_json( url + 'platform/11/beneficiaire/386981/email/john.doe@example.com/', params={'commentaire': 'coin'}, ) assert response.json == { 'err': 0, } @mock_response(['/api/platform/11/beneficiaire/386981/email/john.doe@example.com/', {'err': 0}]) def test_platform_beneficiaire_email_delete(app, rsa13, url): response = app.delete( url + 'platform/11/beneficiaire/386981/email/john.doe@example.com/', ) assert response.json == { 'err': 0, } @mock_response( ['/api/platform/11/beneficiaire/386981/transport/', {'err': 0, 'data': BENEFICIAIRE_TRANSPORT}] ) def test_platform_beneficiaire_transport(app, rsa13, url): response = app.get(url + 'platform/11/beneficiaire/386981/transport/') assert response.json == {'err': 0, 'data': BENEFICIAIRE_TRANSPORT} BENEFICIAIRE_CONTRAT = [ { 'clos': 'Non', 'date_deb': '2019-09-18', 'date_fin': '2020-03-18', 'decision': 'Validé', 'duree': 6, 'id': 15, 'operateur': 'ADPEI', 'plateforme': 'ADPEI', 'referent': 'EHRMANN J', 'retab': 'Non', }, { 'clos': 'Oui', 'date_deb': '2019-03-21', 'date_fin': '2019-09-21', 'decision': 'Validé', 'duree': 6, 'id': 14, 'operateur': 'ADPEI', 'plateforme': 'ADPEI', 'referent': 'EHRMANN J', 'retab': 'Non', }, { 'clos': 'Oui', 'date_deb': '2009-04-03', 'date_fin': '2009-10-02', 'decision': 'Validé', 'duree': 6, 'id': 0, 'operateur': 'REPRISE HISTORIQUE LOGIFORM', 'plateforme': 'REPRISE HISTORIQUE LOGIFORM', 'referent': ' ', 'retab': 'Non', }, ] @mock_response(['/api/platform/11/beneficiaire/386981/contrat/', {'err': 0, 'data': BENEFICIAIRE_CONTRAT}]) def test_platform_beneficiaire_contrat(app, rsa13, url): response = app.get(url + 'platform/11/beneficiaire/386981/contrat/') assert response.json == { 'err': 0, 'data': BENEFICIAIRE_CONTRAT, } BENEFICIAIRE_CONTRAT_DETAIL = { 'commentaire': 'Gratuité RTM refusée. En tant que bénéficiaire de la ' 'CMUC vous pouvez obtenir un tarif préférentiel sur ' 'le réseau RTM.', 'date_clos': None, 'date_cvs': None, 'date_deb': '2019-09-18', 'date_fin': '2020-03-18', 'date_retab': None, 'date_sign': '2019-09-03', 'decision': 'Validé', 'duree': 6, 'id': 15, 'motif_cvs': None, 'operateur': 'ADPEI', 'plateforme': 'ADPEI', 'referent': {'commentaire': None, 'nom': 'EHRMANN ', 'prenom': 'Jean Paul'}, 'type_contrat': "Contrat d'Engagement Réciproque-Social", } @mock_response( ['/api/platform/11/beneficiaire/386981/contrat/15/', {'err': 0, 'data': BENEFICIAIRE_CONTRAT_DETAIL}] ) def test_platform_beneficiaire_contrat_detail(app, rsa13, url): response = app.get(url + 'platform/11/beneficiaire/386981/contrat/15/') assert response.json == { 'err': 0, 'data': BENEFICIAIRE_CONTRAT_DETAIL, } BENEFICIAIRE_ACTION = [ { 'clos': 'Oui', 'contrat_id': 4, 'date_deb': None, 'date_fin': None, 'date_preconisation': '2011-11-18', 'id': 663774, 'libelle': "Recherche autonome d'emploi", 'validation': 'Non', }, { 'clos': 'Oui', 'contrat_id': 0, 'date_deb': '2009-04-03', 'date_fin': '2009-10-02', 'date_preconisation': '2009-09-05', 'id': 7435, 'libelle': 'Ne plus utilisé-Reprise historique Logiform', 'validation': 'Oui', }, ] @mock_response(['/api/platform/11/beneficiaire/386981/action/', {'err': 0, 'data': BENEFICIAIRE_ACTION}]) def test_platform_beneficiaire_action(app, rsa13, url): response = app.get(url + 'platform/11/beneficiaire/386981/action/') assert response.json == { 'err': 0, 'data': BENEFICIAIRE_ACTION, } BENEFICIAIRE_ACTION_DETAIL = { 'id': 663774, 'contrat_id': 4, 'sac': 'E3', 'libelle': "Recherche autonome d'emploi", 'date_deb': None, 'date_fin': None, 'date_preconisation': '2011-11-18', 'date_cloture': '2012-01-12', 'moticlodac': None, 'lib_moticlodac': None, 'validation': 'Non', 'financement': {'montant_accorde': None, 'montant_demande': None}, 'commentaire_ref': None, } @mock_response( ['/api/platform/11/beneficiaire/386981/action/663774/', {'err': 0, 'data': BENEFICIAIRE_ACTION_DETAIL}] ) def test_platform_beneficiaire_action_detail(app, rsa13, url): response = app.get(url + 'platform/11/beneficiaire/386981/action/663774/') assert response.json == { 'err': 0, 'data': BENEFICIAIRE_ACTION_DETAIL, } @mock_response(['/api/platform/11/beneficiaire/386981/action/663774/', {'err': 0}]) def test_platform_beneficiaire_action_detail_update(app, rsa13, url): response = app.post_json( url + 'platform/11/beneficiaire/386981/action/663774/', params={'date_debug': '2021-01-01'} ) assert response.json == { 'err': 0, } BENEFICIAIRE_FONDSAIDE = [ { 'avis_pi': {'avis': 'Refusée', 'date': '2019-07-08', 'montant': 0}, 'avis_sai': {'avis': None, 'date': None, 'montant': 0}, 'clos': 'Non', 'code_tfi': 'FAI8', 'demande': {'date': '2019-07-01', 'montant': 970}, 'id': 39605, 'lib_tfi': 'FAI Permis B', } ] @mock_response( ['/api/platform/11/beneficiaire/386981/fondsaide/', {'err': 0, 'data': BENEFICIAIRE_FONDSAIDE}] ) def test_platform_beneficiaire_fondsaide(app, rsa13, url): response = app.get(url + 'platform/11/beneficiaire/386981/fondsaide/') # 365385/fonds-d-aide/fond-d-aide/39605/ assert response.json == { 'err': 0, 'data': BENEFICIAIRE_FONDSAIDE, } BENEFICIAIRE_FONDSAIDE_DETAIL = { 'avis_pi': {'avis': 'Refusée', 'date': '2019-07-08', 'montant': 0}, 'budget': { 'date_reception': None, 'justificatifs': [ { 'conforme': None, 'date_reception': None, 'date_relance': None, 'num_versement': 1, 'reception': 'Non', 'type': 'Document officiel de ' 'présentation au code de la ' 'route (ETG)', }, { 'conforme': None, 'date_reception': None, 'date_relance': None, 'num_versement': 1, 'reception': 'Non', 'type': "Relevé d'identité bancaire", }, { 'conforme': None, 'date_reception': None, 'date_relance': None, 'num_versement': 2, 'reception': 'Non', 'type': 'Document officiel de ' 'présentation à l’examen ' 'pratique du permis de ' 'conduire', }, ], 'nombre_versements': 2, }, 'cloture': {'date_cloture': None, 'date_relance': None}, 'code_tfi': 'FAI8', 'decision_sai': {'date': None, 'decision': None, 'montant': 0}, 'demande': {'date': '2019-07-01', 'montant': 970}, 'id': 39605, 'lib_tfi': 'FAI Permis B', 'recours': { 'date_decision': None, 'date_demande': None, 'decision': None, 'montant': None, }, } @mock_response( ['/api/platform/11/beneficiaire/386981/fondsaide/1/', {'err': 0, 'data': BENEFICIAIRE_FONDSAIDE_DETAIL}] ) def test_platform_beneficiaire_fondsaide_detail(app, rsa13, url): response = app.get(url + 'platform/11/beneficiaire/386981/fondsaide/1/') assert response.json == { 'err': 0, 'data': BENEFICIAIRE_FONDSAIDE_DETAIL, } BENEFICIAIRE_AFFECTATION = [ { 'id': 1599703, 'dispoitif': 'LA', 'plateforme': 'ADPEI', 'code_pi': 51, 'referent': ' ', 'date_deb': '2019-03-11', 'origine': 'CER', }, { 'id': 28726, 'dispoitif': 'MDS', 'plateforme': 'MDS PRESSENSE', 'code_pi': 51, 'referent': ' ', 'date_deb': '2012-03-22', 'origine': 'CER', }, ] @mock_response( ['/api/platform/11/beneficiaire/386981/affectation/', {'err': 0, 'data': BENEFICIAIRE_AFFECTATION}] ) def test_platform_beneficiaire_affectation(app, rsa13, url): response = app.get(url + 'platform/11/beneficiaire/386981/affectation/') assert response.json == { 'err': 0, 'data': BENEFICIAIRE_AFFECTATION, } BENEFICIAIRE_AFFECTATION_DETAIL = { 'id': 1599703, 'dispositif': 'LA', 'plateforme': 'ADPEI', 'code_pi': 51, 'referent': {'nom': None, 'prenom': None}, 'erreur': 'Non', 'date_deb': '2019-03-11', 'origine': 'CER', 'prescripteur': {'type': 'PI', 'dispositif': None, 'plateforme': None}, 'rendez-vous': { 'date_prise': None, 'relance': {'date': None, 'motif': None, 'lib_motif': None}, 'date_reelle': None, 'resultat': None, 'lib_resultat': None, }, 'fin': {'motif': None, 'lib_motif': None, 'date': None}, 'commentaire_ref': None, } @mock_response( [ '/api/platform/11/beneficiaire/386981/affectation/1/', {'err': 0, 'data': BENEFICIAIRE_AFFECTATION_DETAIL}, ] ) def test_platform_beneficiaire_affectation_detail(app, rsa13, url): response = app.get(url + 'platform/11/beneficiaire/386981/affectation/1/') assert response.json == { 'err': 0, 'data': BENEFICIAIRE_AFFECTATION_DETAIL, } @mock_response( [ '/api/platform/11/beneficiaire/386981/affectation/1/', {'err': 0}, ] ) def test_platform_beneficiaire_affectation_detail_update(app, rsa13, url): response = app.post_json( url + 'platform/11/beneficiaire/386981/affectation/1/', params={'rendezvous': {'date_prise': '2020-01-01'}}, ) assert response.json == { 'err': 0, } BENEFICIAIRE_CONVO = { 'convos_par_motif': [{'motif': "Absence de Contrat d'Engagement Réciproque", 'nombre': 2}], 'derniere_consequence': {'date': None, 'consequence': None}, } @mock_response(['/api/platform/11/beneficiaire/386981/convo/', {'err': 0, 'data': BENEFICIAIRE_CONVO}]) def test_platform_beneficiaire_convo(app, rsa13, url): response = app.get(url + 'platform/11/beneficiaire/386981/convo/') assert response.json == { 'err': 0, 'data': BENEFICIAIRE_CONVO, } BENEFICIAIRE_EMPLOI = { 'id': '6720658N', 'date_sortie': None, 'motif_sortie': None, 'date_inscription': '2018-05-14', 'date_dernier_ent': '2019-04-11', 'code_rome': 'F1606', 'lib_rome': 'Peintre tapissier / tapissière', 'lib_modalite': 'RENFORCE', 'lib_niveau': 'CERTIFICATION DE NIVEAU 5 (CAP, BEP)', 'lib_secteur': None, 'code_axe': '06', 'lib_axe': "LEVEE DES FREINS PERIPHERIQUES A L'EMPLOI", 'code_categorie': '1', 'lib_categorie': 'PERSONNE SANS EMPLOI DISPONIBLE DUREE INDETERMINEE PLEIN TPS', } @mock_response(['/api/platform/11/beneficiaire/386981/emploi/', {'err': 0, 'data': BENEFICIAIRE_EMPLOI}]) def test_platform_beneficiaire_emploi(app, rsa13, url): response = app.get(url + 'platform/11/beneficiaire/386981/emploi/') assert response.json == { 'err': 0, 'data': BENEFICIAIRE_EMPLOI, } @mock_response(['/api/platform/11/beneficiaire/386981/reaffectation/', {'err': 0}]) def test_platform_beneficiaire_reaffectation(app, rsa13, url): response = app.post_json( url + 'platform/11/beneficiaire/386981/reaffectation/', params={'motif': 'OK', 'commentaire': 'NOK'} ) assert response.json == { 'err': 0, }