diff options
author | Claire <claire.github-309c@sitedethib.com> | 2022-04-07 15:03:31 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-07 15:03:31 +0200 |
commit | 3f9959a4b66c8d33a1de6dd13972327ff62f2cd3 (patch) | |
tree | 56bef462d8ec527b893e5f02d687d419b5440cc9 /spec/lib | |
parent | 00c9363f07081e0149533023992fba47dd905384 (diff) | |
parent | e2f4bafc136cb0853321ed4be1b02106bec8bc93 (diff) |
Merge pull request #1734 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes
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 |