2024-04-29 00:17:15 +02:00
|
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
2021-09-17 11:44:22 +02:00
|
|
|
|
describe APIParticulier::Services::SourcesService do
|
2021-09-17 12:21:38 +02:00
|
|
|
|
let(:service) { described_class.new(procedure) }
|
|
|
|
|
|
|
|
|
|
let(:procedure) { create(:procedure) }
|
|
|
|
|
let(:api_particulier_scopes) { [] }
|
|
|
|
|
let(:api_particulier_sources) { {} }
|
2021-09-17 11:44:22 +02:00
|
|
|
|
|
2021-09-17 12:21:38 +02:00
|
|
|
|
before do
|
|
|
|
|
procedure.update(api_particulier_scopes: api_particulier_scopes)
|
|
|
|
|
procedure.update(api_particulier_sources: api_particulier_sources)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
describe "#available_sources" do
|
2021-09-17 11:44:22 +02:00
|
|
|
|
subject { service.available_sources }
|
|
|
|
|
|
|
|
|
|
context 'when the procedure doesn’t have any available scopes' do
|
|
|
|
|
it { is_expected.to eq({}) }
|
|
|
|
|
end
|
|
|
|
|
|
2021-11-10 14:24:50 +01:00
|
|
|
|
context 'when a procedure has a cnaf_allocataires and a cnaf_enfants scopes' do
|
2021-09-17 11:44:22 +02:00
|
|
|
|
let(:api_particulier_scopes) { ['cnaf_allocataires', 'cnaf_enfants'] }
|
|
|
|
|
|
|
|
|
|
let(:cnaf_allocataires_and_enfants) do
|
|
|
|
|
{
|
|
|
|
|
'cnaf' => {
|
2021-09-21 11:01:04 +02:00
|
|
|
|
'allocataires' => ['nomPrenom', 'dateDeNaissance', 'sexe'],
|
|
|
|
|
'enfants' => ['nomPrenom', 'dateDeNaissance', 'sexe']
|
2021-09-17 11:44:22 +02:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it { is_expected.to match(cnaf_allocataires_and_enfants) }
|
|
|
|
|
end
|
2021-09-28 15:12:10 +02:00
|
|
|
|
|
2021-11-10 14:24:50 +01:00
|
|
|
|
context 'when a procedure has a dgfip_declarant1_nom , prenom and a dgfip_adresse_fiscale_taxation scopes' do
|
|
|
|
|
let(:api_particulier_scopes) { ['dgfip_declarant1_nom', 'dgfip_declarant1_prenoms', 'dgfip_adresse_fiscale_taxation'] }
|
|
|
|
|
|
|
|
|
|
let(:dgfip_avis_imposition_et_adresse) do
|
|
|
|
|
{
|
|
|
|
|
'dgfip' => {
|
|
|
|
|
'declarant1' => ['nom', 'prenoms'],
|
|
|
|
|
'foyer_fiscal' => ['adresse']
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it { is_expected.to match(dgfip_avis_imposition_et_adresse) }
|
|
|
|
|
end
|
|
|
|
|
|
2021-11-30 12:50:02 +01:00
|
|
|
|
context 'when a procedure has a pole_emploi_identite and a pole_emploi_adresse scopes' do
|
|
|
|
|
let(:api_particulier_scopes) { ['pole_emploi_identite', 'pole_emploi_adresse'] }
|
|
|
|
|
|
|
|
|
|
let(:pole_emploi_identite_et_adresse) do
|
|
|
|
|
{
|
|
|
|
|
'pole_emploi' => {
|
|
|
|
|
'identite' => ['identifiant', 'civilite', 'nom', 'nomUsage', 'prenom', 'sexe', 'dateNaissance'],
|
|
|
|
|
'adresse' => ['INSEECommune', 'codePostal', 'localite', 'ligneVoie', 'ligneComplementDestinataire', 'ligneComplementAdresse', 'ligneComplementDistribution', 'ligneNom']
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it { is_expected.to match(pole_emploi_identite_et_adresse) }
|
|
|
|
|
end
|
|
|
|
|
|
2021-12-08 11:34:37 +01:00
|
|
|
|
context 'when a procedure has a mesri_identite and a mesri_etablissements scopes' do
|
|
|
|
|
let(:api_particulier_scopes) { ['mesri_identite', 'mesri_etablissements'] }
|
|
|
|
|
|
|
|
|
|
let(:mesri_identite_and_etablissements) do
|
|
|
|
|
{
|
|
|
|
|
'mesri' => {
|
|
|
|
|
'identite' => ['nom', 'prenom', 'dateNaissance'],
|
|
|
|
|
'etablissements' => ['uai', 'nom']
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it { is_expected.to match(mesri_identite_and_etablissements) }
|
|
|
|
|
end
|
|
|
|
|
|
2021-09-28 15:12:10 +02:00
|
|
|
|
context 'when a procedure has an unknown scope' do
|
|
|
|
|
let(:api_particulier_scopes) { ['unknown_scope'] }
|
|
|
|
|
|
|
|
|
|
it { is_expected.to match({}) }
|
|
|
|
|
end
|
2021-09-17 11:44:22 +02:00
|
|
|
|
end
|
2021-09-17 12:21:38 +02:00
|
|
|
|
|
|
|
|
|
describe '#sanitize' do
|
|
|
|
|
subject { service.sanitize(requested_sources) }
|
|
|
|
|
|
|
|
|
|
let(:api_particulier_scopes) { ['cnaf_allocataires', 'cnaf_adresse'] }
|
|
|
|
|
let(:requested_sources) do
|
|
|
|
|
{
|
|
|
|
|
'cnaf' => {
|
2021-09-21 11:01:04 +02:00
|
|
|
|
'allocataires' => ['nomPrenom', 'forbidden_sources', { 'weird_object' => 1 }],
|
2021-09-17 12:21:38 +02:00
|
|
|
|
'forbidden_scope' => ['any_source'],
|
|
|
|
|
'adresse' => { 'weird_object' => 1 }
|
|
|
|
|
},
|
|
|
|
|
'forbidden_provider' => { 'anything_scope' => ['any_source'] }
|
|
|
|
|
}
|
|
|
|
|
end
|
|
|
|
|
|
2021-09-21 11:01:04 +02:00
|
|
|
|
it { is_expected.to eq({ 'cnaf' => { 'allocataires' => ['nomPrenom'] } }) }
|
2021-09-17 12:21:38 +02:00
|
|
|
|
end
|
2021-09-17 11:44:22 +02:00
|
|
|
|
end
|