diff options
author | Grzegorz Bizon <grzegorz@gitlab.com> | 2018-11-27 12:37:54 +0000 |
---|---|---|
committer | Grzegorz Bizon <grzegorz@gitlab.com> | 2018-11-27 12:37:54 +0000 |
commit | 92bfb3c5be8ce9b034421040cadc23fe067e5c4b (patch) | |
tree | 9a542e5a33984f839dd752bda0ec8649fa48dbe9 /spec | |
parent | 397fd09ac4ba7353580f4d3a88c80105d51ff47a (diff) | |
parent | a937eabe4c0769de881a54867d0e42b3bed4be35 (diff) | |
download | gitlab-ce-92bfb3c5be8ce9b034421040cadc23fe067e5c4b.tar.gz |
Merge branch 'if-ce-54109-fix_user_by_any_email' into 'master'
User#find_by_any_email to respect confirmed flag on secondary emails
See merge request gitlab-org/gitlab-ce!23181
Diffstat (limited to 'spec')
-rw-r--r-- | spec/models/user_spec.rb | 36 |
1 files changed, 31 insertions, 5 deletions
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 733c1c49f08..7bd6dccd0ad 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -1137,12 +1137,38 @@ describe User do expect(described_class.find_by_any_email(user.email.upcase, confirmed: true)).to eq user end - it 'finds by secondary email' do - email = create(:email, email: 'foo@example.com') - user = email.user + context 'finds by secondary email' do + let(:user) { email.user } - expect(described_class.find_by_any_email(email.email)).to eq user - expect(described_class.find_by_any_email(email.email, confirmed: true)).to eq user + context 'primary email confirmed' do + context 'secondary email confirmed' do + let!(:email) { create(:email, :confirmed, email: 'foo@example.com') } + + it 'finds user respecting the confirmed flag' do + expect(described_class.find_by_any_email(email.email)).to eq user + expect(described_class.find_by_any_email(email.email, confirmed: true)).to eq user + end + end + + context 'secondary email not confirmed' do + let!(:email) { create(:email, email: 'foo@example.com') } + + it 'finds user respecting the confirmed flag' do + expect(described_class.find_by_any_email(email.email)).to eq user + expect(described_class.find_by_any_email(email.email, confirmed: true)).to be_nil + end + end + end + + context 'primary email not confirmed' do + let(:user) { create(:user, confirmed_at: nil) } + let!(:email) { create(:email, :confirmed, user: user, email: 'foo@example.com') } + + it 'finds user respecting the confirmed flag' do + expect(described_class.find_by_any_email(email.email)).to eq user + expect(described_class.find_by_any_email(email.email, confirmed: true)).to be_nil + end + end end it 'returns nil when nothing found' do |