90 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
require 'spec_helper'
 | 
						|
 | 
						|
RSpec.describe ::Gitlab::Security::ScanConfiguration do
 | 
						|
  using RSpec::Parameterized::TableSyntax
 | 
						|
 | 
						|
  let_it_be(:project) { create(:project, :repository) }
 | 
						|
 | 
						|
  let(:scan) { described_class.new(project: project, type: type, configured: configured) }
 | 
						|
 | 
						|
  describe '#available?' do
 | 
						|
    subject { scan.available? }
 | 
						|
 | 
						|
    let(:configured) { true }
 | 
						|
 | 
						|
    context 'with a core scanner' do
 | 
						|
      where(type: %i[sast sast_iac secret_detection container_scanning])
 | 
						|
 | 
						|
      with_them do
 | 
						|
        it { is_expected.to be_truthy }
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    context 'with custom scanner' do
 | 
						|
      let(:type) { :my_scanner }
 | 
						|
 | 
						|
      it { is_expected.to be_falsey }
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  describe '#configured?' do
 | 
						|
    subject { scan.configured? }
 | 
						|
 | 
						|
    let(:type) { :sast }
 | 
						|
    let(:configured) { false }
 | 
						|
 | 
						|
    it { is_expected.to be_falsey }
 | 
						|
  end
 | 
						|
 | 
						|
  describe '#configuration_path' do
 | 
						|
    subject { scan.configuration_path }
 | 
						|
 | 
						|
    let(:configured) { true }
 | 
						|
    let(:type) { :sast }
 | 
						|
 | 
						|
    it { is_expected.to be_nil }
 | 
						|
  end
 | 
						|
 | 
						|
  describe '#meta_info_path' do
 | 
						|
    subject { scan.meta_info_path }
 | 
						|
 | 
						|
    let(:configured) { true }
 | 
						|
    let(:available) { true }
 | 
						|
    let(:type) { :dast }
 | 
						|
 | 
						|
    it { is_expected.to be_nil }
 | 
						|
  end
 | 
						|
 | 
						|
  describe '#on_demand_available?' do
 | 
						|
    subject { scan.on_demand_available? }
 | 
						|
 | 
						|
    let(:configured) { true }
 | 
						|
    let(:available) { true }
 | 
						|
    let(:type) { :sast }
 | 
						|
 | 
						|
    it { is_expected.to be_falsey }
 | 
						|
  end
 | 
						|
 | 
						|
  describe '#can_enable_by_merge_request?' do
 | 
						|
    subject { scan.can_enable_by_merge_request? }
 | 
						|
 | 
						|
    let(:configured) { true }
 | 
						|
 | 
						|
    context 'with a core scanner' do
 | 
						|
      where(type: %i[sast sast_iac secret_detection])
 | 
						|
 | 
						|
      with_them do
 | 
						|
        it { is_expected.to be_truthy }
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    context 'with a custom scanner' do
 | 
						|
      let(:type) { :my_scanner }
 | 
						|
 | 
						|
      it { is_expected.to be_falsey }
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 |