diff options
author | Pawel Chojnacki <pawel@chojnacki.ws> | 2017-02-17 14:52:27 +0300 |
---|---|---|
committer | Pawel Chojnacki <pawel@chojnacki.ws> | 2017-03-06 17:41:25 +0300 |
commit | 8993801f0cefdc64b46b8fe30622cc78eaa03173 (patch) | |
tree | f9a9a38c91e99f03ea87978119a03538d1e91175 /spec/lib/gitlab/auth | |
parent | 66dc71599cb698d380e14be7230ae3495c78d266 (diff) |
Test various login scenarios if the limit gets enforced
Diffstat (limited to 'spec/lib/gitlab/auth')
-rw-r--r-- | spec/lib/gitlab/auth/unique_ips_limiter_spec.rb | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/spec/lib/gitlab/auth/unique_ips_limiter_spec.rb b/spec/lib/gitlab/auth/unique_ips_limiter_spec.rb index ccaddddf98f..f2472b4310f 100644 --- a/spec/lib/gitlab/auth/unique_ips_limiter_spec.rb +++ b/spec/lib/gitlab/auth/unique_ips_limiter_spec.rb @@ -1,14 +1,8 @@ require 'spec_helper' -describe Gitlab::Auth::UniqueIpsLimiter, lib: true do +describe Gitlab::Auth::UniqueIpsLimiter, :redis, lib: true do let(:user) { create(:user) } - before(:each) do - Gitlab::Redis.with do |redis| - redis.del("user_unique_ips:#{user.id}") - end - end - describe '#count_unique_ips' do context 'non unique IPs' do it 'properly counts them' do @@ -25,7 +19,7 @@ describe Gitlab::Auth::UniqueIpsLimiter, lib: true do end it 'resets count after specified time window' do - cur_time = Time.now.to_i + cur_time = Time.now allow(Time).to receive(:now).and_return(cur_time) expect(Gitlab::Auth::UniqueIpsLimiter.count_unique_ips(user.id, '192.168.1.2')).to eq(1) @@ -51,15 +45,15 @@ describe Gitlab::Auth::UniqueIpsLimiter, lib: true do end it 'blocks user trying to login from second ip' do - RequestStore[:client_ip] = '192.168.1.1' + allow(Gitlab::RequestContext).to receive(:client_ip).and_return('192.168.1.1') expect(Gitlab::Auth::UniqueIpsLimiter.limit_user! { user }).to eq(user) - RequestStore[:client_ip] = '192.168.1.2' + allow(Gitlab::RequestContext).to receive(:client_ip).and_return('192.168.1.2') expect { Gitlab::Auth::UniqueIpsLimiter.limit_user! { user } }.to raise_error(Gitlab::Auth::TooManyIps) end it 'allows user trying to login from the same ip twice' do - RequestStore[:client_ip] = '192.168.1.1' + allow(Gitlab::RequestContext).to receive(:client_ip).and_return('192.168.1.1') expect(Gitlab::Auth::UniqueIpsLimiter.limit_user! { user }).to eq(user) expect(Gitlab::Auth::UniqueIpsLimiter.limit_user! { user }).to eq(user) end @@ -71,13 +65,13 @@ describe Gitlab::Auth::UniqueIpsLimiter, lib: true do end it 'blocks user trying to login from third ip' do - RequestStore[:client_ip] = '192.168.1.1' + allow(Gitlab::RequestContext).to receive(:client_ip).and_return('192.168.1.1') expect(Gitlab::Auth::UniqueIpsLimiter.limit_user! { user }).to eq(user) - RequestStore[:client_ip] = '192.168.1.2' + allow(Gitlab::RequestContext).to receive(:client_ip).and_return('192.168.1.2') expect(Gitlab::Auth::UniqueIpsLimiter.limit_user! { user }).to eq(user) - RequestStore[:client_ip] = '192.168.1.3' + allow(Gitlab::RequestContext).to receive(:client_ip).and_return('192.168.1.3') expect { Gitlab::Auth::UniqueIpsLimiter.limit_user! { user } }.to raise_error(Gitlab::Auth::TooManyIps) end end |