36 lines
967 B
Ruby
36 lines
967 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
require 'spec_helper'
|
||
|
|
||
|
describe API::APIGuard::AdminModeMiddleware, :do_not_mock_admin_mode, :request_store do
|
||
|
let(:user) { create(:admin) }
|
||
|
|
||
|
it 'is loaded' do
|
||
|
expect(API::API.middleware).to include([:use, described_class])
|
||
|
end
|
||
|
|
||
|
context 'when there is an exception in the api call' do
|
||
|
let(:app) do
|
||
|
Class.new(API::API) do
|
||
|
get 'willfail' do
|
||
|
raise StandardError.new('oh noes!')
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
it 'resets admin mode' do
|
||
|
Gitlab::Auth::CurrentUserMode.bypass_session!(user.id)
|
||
|
|
||
|
expect(Gitlab::Auth::CurrentUserMode.bypass_session_admin_id).to be(user.id)
|
||
|
expect(Gitlab::Auth::CurrentUserMode).to receive(:reset_bypass_session!).and_call_original
|
||
|
|
||
|
get api('/willfail')
|
||
|
|
||
|
expect(response.status).to eq(500)
|
||
|
expect(response.body).to include('oh noes!')
|
||
|
|
||
|
expect(Gitlab::Auth::CurrentUserMode.bypass_session_admin_id).to be_nil
|
||
|
end
|
||
|
end
|
||
|
end
|