Skip to content

Commit

Permalink
fix(fc): useless exception when user has already created
Browse files Browse the repository at this point in the history
  • Loading branch information
colinux committed Dec 17, 2024
1 parent b848179 commit cb5fa00
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 11 deletions.
3 changes: 2 additions & 1 deletion app/models/france_connect_information.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ def safely_associate_user!(email)
password: Devise.friendly_token[0, 20],
confirmed_at: Time.zone.now
)

update_attribute('user_id', user.id)
rescue ActiveRecord::RecordNotUnique
# ignore this exception because we check before if user is nil.
# exception can be raised in race conditions, when FranceConnect calls callback 2 times.
Expand All @@ -23,7 +25,6 @@ def safely_associate_user!(email)
end

clean_tokens_and_requested_email
update_attribute('user_id', user.id)
save!
end

Expand Down
14 changes: 4 additions & 10 deletions spec/models/france_connect_information_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -50,25 +50,19 @@
allow(fci).to receive(:send_custom_confirmation_instructions)
end

it 'raises an error' do
expect { fci.safely_associate_user!(email) }.to raise_error(NoMethodError)
it 'is noop' do
expect(fci.safely_associate_user!(email)).to eq(true)
end

it 'does not create a new user' do
expect {
begin
fci.safely_associate_user!(email)
rescue NoMethodError
end
fci.safely_associate_user!(email)
}.to_not change(User, :count)
end

it 'does not associate with any user' do
expect(fci.user).to be_nil
begin
fci.safely_associate_user!(email)
rescue NoMethodError
end
fci.safely_associate_user!(email)
expect(fci.reload.user).to be_nil
end
end
Expand Down

0 comments on commit cb5fa00

Please sign in to comment.