diff options
author | Starfall <us@starfall.systems> | 2022-04-08 01:23:41 -0500 |
---|---|---|
committer | Starfall <us@starfall.systems> | 2022-04-08 01:23:41 -0500 |
commit | 8da73d2e57284c765b232bfc6842a7ac0f0a702b (patch) | |
tree | 8f04f4d701e86d4ddadbdd6054171ed374523a7d /spec/lib | |
parent | f7491de676298b8f78084c00f0026f8cf36d92fc (diff) | |
parent | e0c39f9fad837b77373220515f078f2443ddf553 (diff) |
Merge remote-tracking branch 'glitch/main'
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 |