diff options
Diffstat (limited to 'spec/models/active_session_spec.rb')
-rw-r--r-- | spec/models/active_session_spec.rb | 122 |
1 files changed, 61 insertions, 61 deletions
diff --git a/spec/models/active_session_spec.rb b/spec/models/active_session_spec.rb index 129b2f92683..639baf3cfe3 100644 --- a/spec/models/active_session_spec.rb +++ b/spec/models/active_session_spec.rb @@ -1,4 +1,4 @@ -require 'rails_helper' +require "rails_helper" RSpec.describe ActiveSession, :clean_gitlab_redis_shared_state do let(:user) do @@ -7,31 +7,31 @@ RSpec.describe ActiveSession, :clean_gitlab_redis_shared_state do end end - let(:session) { double(:session, id: '6919a6f1bb119dd7396fadc38fd18d0d') } + let(:session) { double(:session, id: "6919a6f1bb119dd7396fadc38fd18d0d") } let(:request) do double(:request, { - user_agent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 8_1_3 like Mac OS X) AppleWebKit/600.1.4 ' \ - '(KHTML, like Gecko) Mobile/12B466 [FBDV/iPhone7,2]', - ip: '127.0.0.1', - session: session + user_agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 8_1_3 like Mac OS X) AppleWebKit/600.1.4 " \ + "(KHTML, like Gecko) Mobile/12B466 [FBDV/iPhone7,2]", + ip: "127.0.0.1", + session: session, }) end - describe '#current?' do - it 'returns true if the active session matches the current session' do - active_session = ActiveSession.new(session_id: '6919a6f1bb119dd7396fadc38fd18d0d') + describe "#current?" do + it "returns true if the active session matches the current session" do + active_session = ActiveSession.new(session_id: "6919a6f1bb119dd7396fadc38fd18d0d") expect(active_session.current?(session)).to be true end - it 'returns false if the active session does not match the current session' do - active_session = ActiveSession.new(session_id: '59822c7d9fcdfa03725eff41782ad97d') + it "returns false if the active session does not match the current session" do + active_session = ActiveSession.new(session_id: "59822c7d9fcdfa03725eff41782ad97d") expect(active_session.current?(session)).to be false end - it 'returns false if the session id is nil' do + it "returns false if the session id is nil" do active_session = ActiveSession.new(session_id: nil) session = double(:session, id: nil) @@ -39,12 +39,12 @@ RSpec.describe ActiveSession, :clean_gitlab_redis_shared_state do end end - describe '.list' do - it 'returns all sessions by user' do + describe ".list" do + it "returns all sessions by user" do Gitlab::Redis::SharedState.with do |redis| - redis.set("session:user:gitlab:#{user.id}:6919a6f1bb119dd7396fadc38fd18d0d", Marshal.dump({ session_id: 'a' })) - redis.set("session:user:gitlab:#{user.id}:59822c7d9fcdfa03725eff41782ad97d", Marshal.dump({ session_id: 'b' })) - redis.set("session:user:gitlab:9999:5c8611e4f9c69645ad1a1492f4131358", '') + redis.set("session:user:gitlab:#{user.id}:6919a6f1bb119dd7396fadc38fd18d0d", Marshal.dump({session_id: "a"})) + redis.set("session:user:gitlab:#{user.id}:59822c7d9fcdfa03725eff41782ad97d", Marshal.dump({session_id: "b"})) + redis.set("session:user:gitlab:9999:5c8611e4f9c69645ad1a1492f4131358", "") redis.sadd( "session:lookup:user:gitlab:#{user.id}", @@ -55,12 +55,12 @@ RSpec.describe ActiveSession, :clean_gitlab_redis_shared_state do ) end - expect(ActiveSession.list(user)).to match_array [{ session_id: 'a' }, { session_id: 'b' }] + expect(ActiveSession.list(user)).to match_array [{session_id: "a"}, {session_id: "b"}] end - it 'does not return obsolete entries and cleans them up' do + it "does not return obsolete entries and cleans them up" do Gitlab::Redis::SharedState.with do |redis| - redis.set("session:user:gitlab:#{user.id}:6919a6f1bb119dd7396fadc38fd18d0d", Marshal.dump({ session_id: 'a' })) + redis.set("session:user:gitlab:#{user.id}:6919a6f1bb119dd7396fadc38fd18d0d", Marshal.dump({session_id: "a"})) redis.sadd( "session:lookup:user:gitlab:#{user.id}", @@ -71,52 +71,52 @@ RSpec.describe ActiveSession, :clean_gitlab_redis_shared_state do ) end - expect(ActiveSession.list(user)).to eq [{ session_id: 'a' }] + expect(ActiveSession.list(user)).to eq [{session_id: "a"}] Gitlab::Redis::SharedState.with do |redis| - expect(redis.sscan_each("session:lookup:user:gitlab:#{user.id}").to_a).to eq ['6919a6f1bb119dd7396fadc38fd18d0d'] + expect(redis.sscan_each("session:lookup:user:gitlab:#{user.id}").to_a).to eq ["6919a6f1bb119dd7396fadc38fd18d0d"] end end - it 'returns an empty array if the use does not have any active session' do + it "returns an empty array if the use does not have any active session" do expect(ActiveSession.list(user)).to eq [] end end - describe '.set' do - it 'sets a new redis entry for the user session and a lookup entry' do + describe ".set" do + it "sets a new redis entry for the user session and a lookup entry" do ActiveSession.set(user, request) Gitlab::Redis::SharedState.with do |redis| expect(redis.scan_each.to_a).to match_array [ "session:user:gitlab:#{user.id}:6919a6f1bb119dd7396fadc38fd18d0d", - "session:lookup:user:gitlab:#{user.id}" + "session:lookup:user:gitlab:#{user.id}", ] end end - it 'adds timestamps and information from the request' do - Timecop.freeze(Time.zone.parse('2018-03-12 09:06')) do + it "adds timestamps and information from the request" do + Timecop.freeze(Time.zone.parse("2018-03-12 09:06")) do ActiveSession.set(user, request) session = ActiveSession.list(user) expect(session.count).to eq 1 expect(session.first).to have_attributes( - ip_address: '127.0.0.1', - browser: 'Mobile Safari', - os: 'iOS', - device_name: 'iPhone 6', - device_type: 'smartphone', - created_at: Time.zone.parse('2018-03-12 09:06'), - updated_at: Time.zone.parse('2018-03-12 09:06'), - session_id: '6919a6f1bb119dd7396fadc38fd18d0d' + ip_address: "127.0.0.1", + browser: "Mobile Safari", + os: "iOS", + device_name: "iPhone 6", + device_type: "smartphone", + created_at: Time.zone.parse("2018-03-12 09:06"), + updated_at: Time.zone.parse("2018-03-12 09:06"), + session_id: "6919a6f1bb119dd7396fadc38fd18d0d" ) end end - it 'keeps the created_at from the login on consecutive requests' do - now = Time.zone.parse('2018-03-12 09:06') + it "keeps the created_at from the login on consecutive requests" do + now = Time.zone.parse("2018-03-12 09:06") Timecop.freeze(now) do ActiveSession.set(user, request) @@ -127,20 +127,20 @@ RSpec.describe ActiveSession, :clean_gitlab_redis_shared_state do session = ActiveSession.list(user) expect(session.first).to have_attributes( - created_at: Time.zone.parse('2018-03-12 09:06'), - updated_at: Time.zone.parse('2018-03-12 09:07') + created_at: Time.zone.parse("2018-03-12 09:06"), + updated_at: Time.zone.parse("2018-03-12 09:07") ) end end end end - describe '.destroy' do - it 'removes the entry associated with the currently killed user session' do + describe ".destroy" do + it "removes the entry associated with the currently killed user session" do Gitlab::Redis::SharedState.with do |redis| - redis.set("session:user:gitlab:#{user.id}:6919a6f1bb119dd7396fadc38fd18d0d", '') - redis.set("session:user:gitlab:#{user.id}:59822c7d9fcdfa03725eff41782ad97d", '') - redis.set("session:user:gitlab:9999:5c8611e4f9c69645ad1a1492f4131358", '') + redis.set("session:user:gitlab:#{user.id}:6919a6f1bb119dd7396fadc38fd18d0d", "") + redis.set("session:user:gitlab:#{user.id}:59822c7d9fcdfa03725eff41782ad97d", "") + redis.set("session:user:gitlab:9999:5c8611e4f9c69645ad1a1492f4131358", "") end ActiveSession.destroy(user, request.session.id) @@ -148,15 +148,15 @@ RSpec.describe ActiveSession, :clean_gitlab_redis_shared_state do Gitlab::Redis::SharedState.with do |redis| expect(redis.scan_each(match: "session:user:gitlab:*")).to match_array [ "session:user:gitlab:#{user.id}:59822c7d9fcdfa03725eff41782ad97d", - "session:user:gitlab:9999:5c8611e4f9c69645ad1a1492f4131358" + "session:user:gitlab:9999:5c8611e4f9c69645ad1a1492f4131358", ] end end - it 'removes the lookup entry' do + it "removes the lookup entry" do Gitlab::Redis::SharedState.with do |redis| - redis.set("session:user:gitlab:#{user.id}:6919a6f1bb119dd7396fadc38fd18d0d", '') - redis.sadd("session:lookup:user:gitlab:#{user.id}", '6919a6f1bb119dd7396fadc38fd18d0d') + redis.set("session:user:gitlab:#{user.id}:6919a6f1bb119dd7396fadc38fd18d0d", "") + redis.sadd("session:lookup:user:gitlab:#{user.id}", "6919a6f1bb119dd7396fadc38fd18d0d") end ActiveSession.destroy(user, request.session.id) @@ -166,10 +166,10 @@ RSpec.describe ActiveSession, :clean_gitlab_redis_shared_state do end end - it 'removes the devise session' do + it "removes the devise session" do Gitlab::Redis::SharedState.with do |redis| - redis.set("session:user:gitlab:#{user.id}:6919a6f1bb119dd7396fadc38fd18d0d", '') - redis.set("session:gitlab:6919a6f1bb119dd7396fadc38fd18d0d", '') + redis.set("session:user:gitlab:#{user.id}:6919a6f1bb119dd7396fadc38fd18d0d", "") + redis.set("session:gitlab:6919a6f1bb119dd7396fadc38fd18d0d", "") end ActiveSession.destroy(user, request.session.id) @@ -179,9 +179,9 @@ RSpec.describe ActiveSession, :clean_gitlab_redis_shared_state do end end - it 'does not remove the devise session if the active session could not be found' do + it "does not remove the devise session if the active session could not be found" do Gitlab::Redis::SharedState.with do |redis| - redis.set("session:gitlab:6919a6f1bb119dd7396fadc38fd18d0d", '') + redis.set("session:gitlab:6919a6f1bb119dd7396fadc38fd18d0d", "") end other_user = create(:user) @@ -194,22 +194,22 @@ RSpec.describe ActiveSession, :clean_gitlab_redis_shared_state do end end - describe '.cleanup' do - it 'removes obsolete lookup entries' do + describe ".cleanup" do + it "removes obsolete lookup entries" do Gitlab::Redis::SharedState.with do |redis| - redis.set("session:user:gitlab:#{user.id}:6919a6f1bb119dd7396fadc38fd18d0d", '') - redis.sadd("session:lookup:user:gitlab:#{user.id}", '6919a6f1bb119dd7396fadc38fd18d0d') - redis.sadd("session:lookup:user:gitlab:#{user.id}", '59822c7d9fcdfa03725eff41782ad97d') + redis.set("session:user:gitlab:#{user.id}:6919a6f1bb119dd7396fadc38fd18d0d", "") + redis.sadd("session:lookup:user:gitlab:#{user.id}", "6919a6f1bb119dd7396fadc38fd18d0d") + redis.sadd("session:lookup:user:gitlab:#{user.id}", "59822c7d9fcdfa03725eff41782ad97d") end ActiveSession.cleanup(user) Gitlab::Redis::SharedState.with do |redis| - expect(redis.smembers("session:lookup:user:gitlab:#{user.id}")).to eq ['6919a6f1bb119dd7396fadc38fd18d0d'] + expect(redis.smembers("session:lookup:user:gitlab:#{user.id}")).to eq ["6919a6f1bb119dd7396fadc38fd18d0d"] end end - it 'does not bail if there are no lookup entries' do + it "does not bail if there are no lookup entries" do ActiveSession.cleanup(user) end end |