Skip to content

Commit

Permalink
récupère le siret pro-connect et l'enregistre sur le compte
Browse files Browse the repository at this point in the history
  • Loading branch information
etienneCharignon committed Nov 25, 2024
1 parent f9df404 commit 468678f
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 85 deletions.
2 changes: 1 addition & 1 deletion app/helpers/pro_connect_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ def auth_path(pc_state, pc_nonce, callback_url)
client_id: PC_CLIENT_ID,
redirect_uri: callback_url,
acr_values: 'eidas1',
scope: 'openid email usual_name given_name',
scope: 'openid email usual_name given_name siret',
state: pc_state,
nonce: pc_nonce
}
Expand Down
11 changes: 7 additions & 4 deletions app/helpers/pro_connect_recupere_compte_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,14 @@ def cherche_compte_pole_emploi(email)
end

def actualise_autres_champs_et_sauve(compte, user_info)
compte.id_pro_connect = user_info['sub']
compte.prenom = user_info['given_name']
compte.nom = user_info['usual_name']
compte.assign_attributes(
id_pro_connect: user_info['sub'],
prenom: user_info['given_name'],
nom: user_info['usual_name'],
siret_pro_connect: user_info['siret'],
confirmed_at: compte.confirmed_at || Time.zone.now
)
compte.password = SecureRandom.uuid if compte.encrypted_password.blank?
compte.confirmed_at ||= Time.zone.now
compte.save!
compte
end
Expand Down
122 changes: 42 additions & 80 deletions spec/helpers/pro_connect_recupere_compte_helper_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,24 +9,31 @@
let(:hier) { Time.zone.local(2023, 1, 9, 12, 0, 0) }

describe '#cree_ou_recupere_compte' do
let(:id_ic) { 'identifiant_ic' }
let(:sub) { 'identifiant_pc' }
let(:siret) { '13002526500013' }

def user_info(email)
{
'sub' => sub,
'email' => email,
'given_name' => 'prénom',
'usual_name' => 'nom',
'siret' => siret
}
end

context "le compte n'existe pas" do
it do
Timecop.freeze(aujourdhui) do
compte = described_class.cree_ou_recupere_compte({
'sub' => id_ic,
'email' => email,
'given_name' => 'prénom',
'usual_name' => 'nom'
})
compte = described_class.cree_ou_recupere_compte(user_info(email))
expect(compte).not_to be_nil
expect(compte.email).to eq(email)
expect(compte.prenom).to eq('prénom')
expect(compte.nom).to eq('nom')
expect(compte.confirmed_at).to eq(aujourdhui)
expect(compte.password).not_to be_nil
expect(compte.id_pro_connect).to eq(id_ic)
expect(compte.id_pro_connect).to eq(sub)
expect(compte.prenom).to eq('prénom')
expect(compte.nom).to eq('nom')
expect(compte.siret_pro_connect).to eq(siret)
end
end
end
Expand All @@ -38,19 +45,15 @@

it do
Timecop.freeze(aujourdhui) do
compte = described_class.cree_ou_recupere_compte({
'sub' => id_ic,
'email' => email,
'given_name' => 'prénom',
'usual_name' => 'nom'
})
compte = described_class.cree_ou_recupere_compte(user_info(email))
expect(compte).not_to be_nil
expect(compte.email).to eq(email)
expect(compte.prenom).to eq('prénom')
expect(compte.nom).to eq('nom')
expect(compte.confirmed_at).to eq(aujourdhui)
expect(compte.password).to be_nil
expect(compte.id_pro_connect).to eq(id_ic)
expect(compte.id_pro_connect).to eq(sub)
expect(compte.prenom).to eq('prénom')
expect(compte.nom).to eq('nom')
expect(compte.siret_pro_connect).to eq(siret)
end
end
end
Expand All @@ -62,19 +65,15 @@

it do
Timecop.freeze(aujourdhui) do
compte = described_class.cree_ou_recupere_compte({
'sub' => id_ic,
'email' => 'toto@eva.beta.gouv.FR',
'given_name' => 'prénom',
'usual_name' => 'nom'
})
compte = described_class.cree_ou_recupere_compte(user_info('toto@eva.beta.gouv.FR'))
expect(compte).not_to be_nil
expect(compte.email).to eq(email)
expect(compte.prenom).to eq('prénom')
expect(compte.nom).to eq('nom')
expect(compte.confirmed_at).to eq(aujourdhui)
expect(compte.password).to be_nil
expect(compte.id_pro_connect).to eq(id_ic)
expect(compte.id_pro_connect).to eq(sub)
expect(compte.prenom).to eq('prénom')
expect(compte.nom).to eq('nom')
expect(compte.siret_pro_connect).to eq(siret)
end
end
end
Expand All @@ -86,93 +85,66 @@

it do
Timecop.freeze(aujourdhui) do
compte = described_class.cree_ou_recupere_compte({
'sub' => id_ic,
'email' => email,
'given_name' => 'prénom',
'usual_name' => 'nom'
})
compte = described_class.cree_ou_recupere_compte(user_info(email))
expect(compte).not_to be_nil
expect(compte.prenom).to eq('prénom')
expect(compte.nom).to eq('nom')
expect(compte.email).to eq(email)
expect(compte.confirmed_at).to eq(aujourdhui)
expect(compte.password).not_to be_nil
expect(compte.id_pro_connect).to eq(id_ic)
expect(compte.id_pro_connect).to eq(sub)

expect(compte.id).not_to eq(Compte.only_deleted.find_by(email: email).id)
end
end
end

context 'le compte existe déjà en base avec id pro connect, même email' do
before do
create :compte_admin, email: email, confirmed_at: hier, id_pro_connect: id_ic
create :compte_admin, email: email, confirmed_at: hier, id_pro_connect: sub
end

it do
Timecop.freeze(aujourdhui) do
compte = described_class.cree_ou_recupere_compte({
'sub' => id_ic,
'email' => email,
'given_name' => 'prénom',
'usual_name' => 'nom'
})
compte = described_class.cree_ou_recupere_compte(user_info(email))
expect(compte).not_to be_nil
expect(compte.prenom).to eq('prénom')
expect(compte.nom).to eq('nom')
expect(compte.email).to eq(email)
expect(compte.confirmed_at).to eq(hier)
expect(compte.password).to be_nil
expect(compte.id_pro_connect).to eq(id_ic)
expect(compte.id_pro_connect).to eq(sub)
end
end
end

context 'le compte existe déjà en base avec id pro connect, email différent' do
before do
create :compte_admin, email: ancien_email, confirmed_at: hier, id_pro_connect: id_ic
create :compte_admin, email: ancien_email, confirmed_at: hier, id_pro_connect: sub
end

it do
Timecop.freeze(aujourdhui) do
compte = described_class.cree_ou_recupere_compte({
'sub' => id_ic,
'email' => email,
'given_name' => 'prénom',
'usual_name' => 'nom'
})
compte = described_class.cree_ou_recupere_compte(user_info(email))
expect(compte).not_to be_nil
expect(compte.prenom).to eq('prénom')
expect(compte.nom).to eq('nom')
expect(compte.email).to eq(email)
expect(compte.confirmed_at).to eq(aujourdhui)
expect(compte.password).to be_nil
expect(compte.id_pro_connect).to eq(id_ic)
expect(compte.id_pro_connect).to eq(sub)
end
end
end

context "Il existe deux comptes en base dans le cas d'une mise à jourd d'email" do
before do
create :compte_admin, email: email, confirmed_at: hier
create :compte_admin, email: ancien_email, confirmed_at: hier, id_pro_connect: id_ic
create :compte_admin, email: ancien_email, confirmed_at: hier, id_pro_connect: sub
end

it do
Timecop.freeze(aujourdhui) do
compte = described_class.cree_ou_recupere_compte({
'sub' => id_ic,
'email' => email,
'given_name' => 'prénom',
'usual_name' => 'nom'
})
compte = described_class.cree_ou_recupere_compte(user_info(email))
expect(compte).not_to be_nil
expect(compte.prenom).to eq('prénom')
expect(compte.nom).to eq('nom')
expect(compte.email).to eq(email)
expect(compte.confirmed_at).to eq(hier)
expect(compte.password).to be_nil
expect(compte.id_pro_connect).to eq(id_ic)
expect(compte.id_pro_connect).to eq(sub)
ancien_compte = Compte.find_by(email: ancien_email)
expect(ancien_compte).not_to be_nil
expect(ancien_compte.id_pro_connect).to be_nil
Expand All @@ -187,12 +159,7 @@

it do
Timecop.freeze(aujourdhui) do
compte = described_class.cree_ou_recupere_compte({
'sub' => id_ic,
'email' => email,
'given_name' => 'prénom',
'usual_name' => 'nom'
})
compte = described_class.cree_ou_recupere_compte(user_info(email))
expect(compte.confirmed_at).to eq(hier)
end
end
Expand All @@ -205,15 +172,10 @@

it do
Timecop.freeze(aujourdhui) do
compte = described_class.cree_ou_recupere_compte({
'sub' => id_ic,
'email' => email_ft,
'given_name' => 'prénom',
'usual_name' => 'nom'
})
compte = described_class.cree_ou_recupere_compte(user_info(email_ft))
expect(compte).not_to be_nil
expect(compte.email).to eq(email_ft)
expect(compte.id_pro_connect).to eq(id_ic)
expect(compte.id_pro_connect).to eq(sub)
expect(compte.id).to eq(compte_pe.id)
end
end
Expand Down

0 comments on commit 468678f

Please sign in to comment.