33 lines
1 KiB
Ruby
33 lines
1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
RSpec.shared_context '"Security & Compliance" permissions' do
|
|
let(:project_instance) { an_instance_of(Project) }
|
|
let(:user_instance) { an_instance_of(User) }
|
|
let(:before_request_defined) { false }
|
|
let(:valid_request) {}
|
|
|
|
def self.before_request(&block)
|
|
return unless block
|
|
|
|
let(:before_request_call) { instance_exec(&block) }
|
|
let(:before_request_defined) { true }
|
|
end
|
|
|
|
before do
|
|
allow(Ability).to receive(:allowed?).and_call_original
|
|
allow(Ability).to receive(:allowed?).with(user_instance, :access_security_and_compliance, project_instance).and_return(true)
|
|
end
|
|
|
|
context 'when the "Security & Compliance" feature is disabled' do
|
|
subject { response }
|
|
|
|
before do
|
|
before_request_call if before_request_defined
|
|
|
|
allow(Ability).to receive(:allowed?).with(user_instance, :access_security_and_compliance, project_instance).and_return(false)
|
|
valid_request
|
|
end
|
|
|
|
it { is_expected.to have_gitlab_http_status(:not_found) }
|
|
end
|
|
end
|