require 'spec_helper' require_relative '../../../lib/locomotive/steam/middlewares/concerns/helpers' require_relative '../../../lib/locomotive/steam/middlewares/concerns/auth_helpers' require_relative '../../../lib/locomotive/steam/middlewares/thread_safe' require_relative '../../../lib/locomotive/steam/middlewares/impersonated_entry' describe Locomotive::Steam::Middlewares::ImpersonatedEntry do let(:site) { instance_double('Site', _id: 42) } let(:url) { 'http://models.example.com' } let(:app) { ->(env) { [200, env, ['']] } } let(:entry) { nil } let(:session) { {} } let(:params) { {} } let(:middleware) { described_class.new(app) } let(:auth_service) { instance_double('Auth') } let(:services) { instance_double('Services', :auth => auth_service) } subject do code, env, body = call [env['steam.impersonating_authenticated_entry'], body.first] end describe 'no impersonation' do it { is_expected.to eq [nil, ''] } end describe 'impersonating is on' do let(:session) { { authenticated_impersonation: '1', authenticated_entry_type: 'accounts' } } context 'the account is not logged in' do it { is_expected.to eq [nil, ''] } end context 'the account is logged in' do let(:entry) { instance_double('Account', _label: 'John') } it { expect(subject.first).to eq true } it { expect(subject.last.gsub(/\s*\n\s+/, ' ')).to include('