an admin can save its sources

This commit is contained in:
simon lehericey 2021-09-17 12:22:01 +02:00 committed by Pierre de La Morinerie
parent 8d747ff16e
commit 2e1bed8748
3 changed files with 61 additions and 1 deletions

View file

@ -3,11 +3,30 @@ module NewAdministrateur
before_action :retrieve_procedure
def show
sources_service = APIParticulier::Services::SourcesService.new(@procedure)
@available_sources = sources_service.available_sources
end
def update
if @procedure.update(api_particulier_sources: sources_params)
redirect_to admin_procedure_api_particulier_sources_path(@procedure), notice: t('.sources_ok')
else
flash.now.alert = @procedure.errors.full_messages
render :show
end
end
private
def sources_params
requested_sources = params
.with_defaults(api_particulier_sources: {})
.to_unsafe_hash[:api_particulier_sources]
sources_service.sanitize(requested_sources)
end
def sources_service
@sources_service ||= APIParticulier::Services::SourcesService.new(@procedure)
end
end
end

View file

@ -401,6 +401,8 @@ fr:
title: "Définir les sources de données"
data_sources: "Sources de données"
explication_html: "<p>API Particulier facilite laccès des administrations aux données familiales (CAF) pour simplifier les démarches administratives mises en œuvre par les collectivités et les administrations.<br> Cela permet aux administrations daccéder à des informations certifiées à la source et ainsi : </p> <ul> <li>de saffranchir des pièces justificatives lors des démarches en ligne,</li> <li>de réduire le nombre derreurs de saisie,</li> <li>décarter le risque de fraude documentaire.</li> </ul> <p> <strong>Important&nbsp;:</strong> les disposition de l'article <a href='https://www.legifrance.gouv.fr/affichCodeArticle.do?cidTexte=LEGITEXT000031366350&amp;idArticle=LEGIARTI000031367412&amp;dateTexte=&amp;categorieLien=cid'>L144-8</a> nautorisent que léchange des informations strictement nécessaires pour traiter une démarche.<br /><br />En conséquence, ne sélectionnez ici que les données auxquelles vous aurez accès dun point de vue légal.</p>"
update:
sources_ok: 'Mise à jour effectuée'
procedures:
show:
ready: "Validé"

View file

@ -18,4 +18,43 @@ describe NewAdministrateur::SourcesParticulierController, type: :controller do
expect(subject.body).not_to have_selector("input#api_particulier_sources_cnaf_enfants_[value=date_de_naissance][checked=checked]")
end
end
describe "#update" do
let(:procedure) { create(:procedure, administrateur: admin, api_particulier_scopes: ['cnaf_enfants'], api_particulier_sources: {}) }
let(:params) { { procedure_id: procedure.id }.merge(requested_sources) }
before do
patch :update, params: params
procedure.reload
end
context 'when no source is requested' do
let(:requested_sources) { {} }
it { expect(procedure.api_particulier_sources).to be_empty }
end
context 'when a forbidden source is requested' do
let(:requested_sources) do
{
api_particulier_sources: { cnaf: { enfants: ['forbidden'] } }
}
end
it { expect(procedure.api_particulier_sources).to be_empty }
end
context 'when an authorized source is requested' do
let(:requested_sources) do
{
api_particulier_sources: { cnaf: { enfants: ['noms_prenoms'] } }
}
end
it 'saves the source' do
expect(procedure.api_particulier_sources).to eq("cnaf" => { "enfants" => ["noms_prenoms"] })
expect(flash.notice).to eq(I18n.t(".new_administrateur.sources_particulier.update.sources_ok"))
end
end
end
end