diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2022-04-06 20:58:12 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-06 20:58:12 +0200 |
commit | 6221b36b278c02cdbf5b6d1c0753654b506b44fd (patch) | |
tree | f4a8ea0e6636445dfe8417beceaa0cf69476169f /spec/lib | |
parent | abb11778d7d9ac04fe1feeccf5cefc6d2ed58780 (diff) |
Remove sign-in token authentication, instead send e-mail about new sign-in (#17970)
Diffstat (limited to 'spec/lib')
-rw-r--r-- | spec/lib/suspicious_sign_in_detector_spec.rb | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/spec/lib/suspicious_sign_in_detector_spec.rb b/spec/lib/suspicious_sign_in_detector_spec.rb new file mode 100644 index 000000000..101a18aa0 --- /dev/null +++ b/spec/lib/suspicious_sign_in_detector_spec.rb @@ -0,0 +1,57 @@ +require 'rails_helper' + +RSpec.describe SuspiciousSignInDetector do + describe '#suspicious?' do + let(:user) { Fabricate(:user, current_sign_in_at: 1.day.ago) } + let(:request) { double(remote_ip: remote_ip) } + let(:remote_ip) { nil } + + subject { described_class.new(user).suspicious?(request) } + + context 'when user has 2FA enabled' do + before do + user.update!(otp_required_for_login: true) + end + + it 'returns false' do + expect(subject).to be false + end + end + + context 'when exact IP has been used before' do + let(:remote_ip) { '1.1.1.1' } + + before do + user.update!(sign_up_ip: remote_ip) + end + + it 'returns false' do + expect(subject).to be false + end + end + + context 'when similar IP has been used before' do + let(:remote_ip) { '1.1.2.2' } + + before do + user.update!(sign_up_ip: '1.1.1.1') + end + + it 'returns false' do + expect(subject).to be false + end + end + + context 'when IP is completely unfamiliar' do + let(:remote_ip) { '2.2.2.2' } + + before do + user.update!(sign_up_ip: '1.1.1.1') + end + + it 'returns true' do + expect(subject).to be true + end + end + end +end |