You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

52 lines
1.4 KiB

require_relative '../../spec_helper_min.rb'
require_relative '../../../lib/carto/authentication_manager.rb'
module Carto
describe AuthenticationManager do
describe '::validate_session' do
subject { described_class.validate_session(warden_context, request, user) }
let!(:user) { create(:user) }
let(:valid_session) { { sec_token: user.security_token } }
let(:warden_context) { mock }
let(:request) { mock }
context 'when session is valid' do
before { warden_context.expects(:session).returns(valid_session) }
it { should be_true }
end
context 'when no session' do
before do
request.expects(:reset_session)
warden_context.expects(:session).returns({})
end
it { should be_false }
end
context 'when session was invalidated' do
let(:session) { { sec_token: 'old-security-token' } }
before { warden_context.expects(:session).returns(session) }
it 'raises an error' do
expect { subject }.to raise_error(Carto::ExpiredSessionError)
end
end
context 'when authenticating with a valid method and no session' do
before do
request.expects(:reset_session)
warden_context.expects(:session).raises(Warden::NotAuthenticated)
end
it { should be_false }
end
end
end
end