diff --git a/lib/redis-session-store.rb b/lib/redis-session-store.rb index 9e3514a..0f1841a 100644 --- a/lib/redis-session-store.rb +++ b/lib/redis-session-store.rb @@ -120,9 +120,7 @@ def get_session(env, sid) def load_session_with_fallback(sid) return nil if private_session_id?(sid.public_id) - load_session_from_redis( - key_exists?(sid.private_id) ? sid.private_id : sid.public_id - ) + load_session_from_redis(sid.private_id) || load_session_from_redis(sid.public_id) end def load_session_from_redis(sid) diff --git a/spec/redis_session_store_spec.rb b/spec/redis_session_store_spec.rb index 51dee2f..6d9dbab 100644 --- a/spec/redis_session_store_spec.rb +++ b/spec/redis_session_store_spec.rb @@ -318,25 +318,26 @@ context 'when redis is up' do let(:redis) { double('redis') } - let(:private_exists) { true } + let(:private_value) { Marshal.dump('foo') } before do allow(store).to receive(:redis).and_return(redis) - allow(redis).to receive(:exists) + allow(redis).to receive(:get) .with("#{options[:key_prefix]}#{session_id.private_id}") - .and_return(private_exists) + .and_return(private_value) end context 'when session private id exists in redis' do it 'retrieves the prefixed private id from redis' do expect(redis).to receive(:get).with("#{options[:key_prefix]}#{session_id.private_id}") + expect(redis).not_to receive(:get).with("#{options[:key_prefix]}#{fake_key}") store.send(:get_session, double('env'), session_id) end end context 'when session private id not found in redis' do - let(:private_exists) { false } + let(:private_value) { nil } it 'retrieves the prefixed public id from redis' do expect(redis).to receive(:get).with("#{options[:key_prefix]}#{fake_key}")