diff --git a/app/controllers/api/v1/dossiers_controller.rb b/app/controllers/api/v1/dossiers_controller.rb index 543e70a0d..c05bdfaed 100644 --- a/app/controllers/api/v1/dossiers_controller.rb +++ b/app/controllers/api/v1/dossiers_controller.rb @@ -2,6 +2,7 @@ class API::V1::DossiersController < APIController api :GET, '/procedures/:procedure_id/dossiers/', 'Liste de tous les dossiers d\'une procédure' param :procedure_id, Integer, desc: "L'identifiant de la procédure", required: true + param :token, String, desc: "Token administrateur", required: true error code: 401, desc: "Non authorisé" error code: 404, desc: "Procédure inconnue" @@ -23,7 +24,8 @@ class API::V1::DossiersController < APIController api :GET, '/procedures/:procedure_id/dossiers/:id', 'Informations du dossier d\'une procédure' param :procedure_id, Integer, desc: "L'identifiant de la procédure", required: true - param :dossier_id, Integer, desc: "L'identifiant de la procédure", required: true + param :dossier_id, Integer, desc: "L'identifiant du dossier", required: true + param :token, String, desc: "Token administrateur", required: true error code: 401, desc: "Non authorisé" error code: 404, desc: "Procédure ou dossier inconnu" diff --git a/app/controllers/api/v1/procedures_controller.rb b/app/controllers/api/v1/procedures_controller.rb index 8cd157b62..5a76daa30 100644 --- a/app/controllers/api/v1/procedures_controller.rb +++ b/app/controllers/api/v1/procedures_controller.rb @@ -1,6 +1,7 @@ class API::V1::ProceduresController < APIController api :GET, '/procedures/:id', 'Informations concernant une procédure' param :id, Integer, desc: "L'identifiant de la procédure", required: true + param :token, String, desc: "Token administrateur", required: true error code: 401, desc: "Non authorisé" error code: 404, desc: "Procédure inconnue" diff --git a/doc/apipie_examples.json b/doc/apipie_examples.json new file mode 100644 index 000000000..968788243 --- /dev/null +++ b/doc/apipie_examples.json @@ -0,0 +1,165 @@ +{ + "dossiers#index": [ + { + "verb": "GET", + "path": "/api/v1/procedures/2/dossiers", + "versions": [ + "1.0" + ], + "query": "token=92cf04673cb66ab57a0c45e085b5140398ab4b6c", + "request_data": null, + "response_data": { + "dossiers": [ + { + "id": 2, + "nom_projet": "Demande de subvention dans le cadre d'accompagnement d'enfant à l'étranger", + "updated_at": "2008-09-01T08:05:00.000Z" + } + ], + "pagination": { + "page": 1, + "resultats_par_page": 12, + "nombre_de_page": 1 + } + }, + "code": "200", + "show_in_doc": 1, + "recorded": true + } + ], + "dossiers#show": [ + { + "verb": "GET", + "path": "/api/v1/procedures/1/dossiers/1", + "versions": [ + "1.0" + ], + "query": "token=7cba5df87cf134d07c3c467eb21b4f2a2b2605be", + "request_data": null, + "response_data": { + "dossier": { + "id": 1, + "nom_projet": "Demande de subvention dans le cadre d'accompagnement d'enfant à l'étranger", + "description": "Ma super description", + "created_at": "2008-09-01T08:05:00.000Z", + "updated_at": "2008-09-01T08:05:00.000Z", + "archived": false, + "mandataire_social": false, + "entreprise": { + "siren": "440117620", + "capital_social": 537100000, + "numero_tva_intracommunautaire": "FR27440117620", + "forme_juridique": "SA à conseil d'administration (s.a.i.)", + "forme_juridique_code": "5599", + "nom_commercial": "GRTGAZ", + "raison_sociale": "GRTGAZ", + "siret_siege_social": "44011762001530", + "code_effectif_entreprise": "51", + "date_creation": "2016-01-28T10:16:29.000Z", + "nom": null, + "prenom": null + }, + "etablissement": { + "siret": "44011762001530", + "siege_social": true, + "naf": "4950Z", + "libelle_naf": "Transports par conduites", + "adresse": "GRTGAZ\r IMMEUBLE BORA\r 6 RUE RAOUL NORDLING\r 92270 BOIS COLOMBES\r", + "numero_voie": "6", + "type_voie": "RUE", + "nom_voie": "RAOUL NORDLING", + "complement_adresse": "IMMEUBLE BORA", + "code_postal": "92270", + "localite": "BOIS COLOMBES", + "code_insee_localite": "92009" + }, + "cerfa": null, + "champs": [ + { + "value": null, + "type_de_champ": { + "id": 1, + "libelle": "Description", + "type": "textarea", + "order_place": 1, + "description": "description de votre projet" + } + } + ], + "pieces_justificatives": [ + { + "url": null, + "type_de_piece_justificative": { + "id": 1, + "libelle": "RIB", + "description": "Releve identité bancaire" + } + }, + { + "url": null, + "type_de_piece_justificative": { + "id": 2, + "libelle": "Attestation MSA", + "description": "recuperation automatique" + } + } + ] + } + }, + "code": "200", + "show_in_doc": 1, + "recorded": true + } + ], + "procedures#show": [ + { + "verb": "GET", + "path": "/api/v1/procedures/3", + "versions": [ + "1.0" + ], + "query": "token=cc00dc59ddc89f64c6310bb4e25c55eeb63ee89c", + "request_data": null, + "response_data": { + "procedure": { + "label": "Demande de subvention", + "link": "http://localhost", + "id": 3, + "description": "Demande de subvention à l'intention des associations", + "organisation": "Orga SGMAP", + "direction": "direction SGMAP", + "archived": false, + "geographic_information": { + "use_api_carto": false, + "quartiers_prioritaires": false, + "cadastre": false + }, + "types_de_champ": [ + { + "id": 3, + "libelle": "Description", + "type": "textarea", + "order_place": 1, + "description": "description de votre projet" + } + ], + "types_de_piece_justificative": [ + { + "id": 5, + "libelle": "RIB", + "description": "Releve identité bancaire" + }, + { + "id": 6, + "libelle": "Attestation MSA", + "description": "recuperation automatique" + } + ] + } + }, + "code": "200", + "show_in_doc": 1, + "recorded": true + } + ] +} \ No newline at end of file diff --git a/spec/controllers/api/v1/dossiers_controller_spec.rb b/spec/controllers/api/v1/dossiers_controller_spec.rb index 6cd51e41e..93cba35bd 100644 --- a/spec/controllers/api/v1/dossiers_controller_spec.rb +++ b/spec/controllers/api/v1/dossiers_controller_spec.rb @@ -8,9 +8,9 @@ describe API::V1::DossiersController do it { expect(described_class).to be < APIController } describe 'GET index' do - let(:response) { get :index, token: admin.api_token, procedure_id: procedure_id } + let(:retour) { get :index, token: admin.api_token, procedure_id: procedure_id } - subject { response } + subject { retour } context 'when procedure is not found' do let(:procedure_id) { 99_999_999 } @@ -26,10 +26,10 @@ describe API::V1::DossiersController do let(:procedure_id) { procedure.id } let(:date_creation) { Time.local(2008, 9, 1, 10, 5, 0) } let!(:dossier) { Timecop.freeze(date_creation) { create(:dossier, :with_entreprise, procedure: procedure, state: 'initiated') } } - let(:body) { JSON.parse(response.body, symbolize_names: true) } + let(:body) { JSON.parse(retour.body, symbolize_names: true) } it 'return REST code 200', :show_in_doc do - expect(response.code).to eq('200') + expect(retour.code).to eq('200') end it { expect(body).to have_key :pagination } @@ -59,7 +59,7 @@ describe API::V1::DossiersController do end context 'when there are multiple pages' do - let(:response) { get :index, token: admin.api_token, procedure_id: procedure_id, page: 2 } + let(:retour) { get :index, token: admin.api_token, procedure_id: procedure_id, page: 2 } let!(:dossier1) { create(:dossier, :with_entreprise, procedure: procedure, state: 'initiated') } let!(:dossier2) { create(:dossier, :with_entreprise, procedure: procedure, state: 'initiated') } @@ -80,8 +80,8 @@ describe API::V1::DossiersController do end describe 'GET show' do - let(:response) { get :show, token: admin.api_token, procedure_id: procedure_id, id: dossier_id } - subject { response } + let(:retour) { get :show, token: admin.api_token, procedure_id: procedure_id, id: dossier_id } + subject { retour } context 'when procedure is not found' do let(:procedure_id) { 99_999_999 } @@ -115,12 +115,12 @@ describe API::V1::DossiersController do let(:date_creation) { Time.local(2008, 9, 1, 10, 5, 0) } let!(:dossier) { Timecop.freeze(date_creation) { create(:dossier, :with_entreprise, procedure: procedure) } } let(:dossier_id) { dossier.id } - let(:body) { JSON.parse(response.body, symbolize_names: true) } + let(:body) { JSON.parse(retour.body, symbolize_names: true) } let(:field_list) { [:id, :nom_projet, :created_at, :updated_at, :description, :archived, :mandataire_social, :entreprise, :etablissement, :cerfa, :pieces_justificatives, :champs] } subject { body[:dossier] } it 'return REST code 200', :show_in_doc do - expect(response.code).to eq('200') + expect(retour.code).to eq('200') end it { expect(subject[:id]).to eq(dossier.id) } it { expect(subject[:nom_projet]).to eq(dossier.nom_projet) } diff --git a/spec/controllers/api/v1/procedures_controller_spec.rb b/spec/controllers/api/v1/procedures_controller_spec.rb index f6b88bfee..0fe9a5dcb 100644 --- a/spec/controllers/api/v1/procedures_controller_spec.rb +++ b/spec/controllers/api/v1/procedures_controller_spec.rb @@ -15,7 +15,7 @@ describe API::V1::ProceduresController do it { expect(subject.status).to eq(404) } end context 'when procedure exist' do - let(:procedure) { create(:procedure, administrateur: admin) } + let(:procedure) { create(:procedure, :with_two_type_de_piece_justificative, :with_type_de_champ, administrateur: admin) } subject { get :show, id: procedure, token: admin.api_token } it 'return REST code 200', :show_in_doc do @@ -32,7 +32,7 @@ describe API::V1::ProceduresController do it { expect(subject[:label]).to eq(procedure.libelle) } it { expect(subject[:description]).to eq(procedure.description) } it { expect(subject[:organisation]).to eq(procedure.organisation) } - it { expect(subject[:direction]).to eq(procedure.direction) } + it { expect(subject[:direction]).to eq(proced,ure.direction) } it { expect(subject[:link]).to eq(procedure.lien_demarche) } it { expect(subject[:archived]).to eq(procedure.archived) } it { is_expected.to have_key(:types_de_champ) }