diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2019-09-25 00:06:18 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2019-09-25 00:06:18 +0300 |
commit | 150effab274651b3a8d2041e64ced734d1f3a349 (patch) | |
tree | 7f887964a56bd15a87d58cd367ccc1fa45f98554 /spec/lib | |
parent | 2ed368929ab5094fec5da8038f723463596a80cf (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/lib')
-rw-r--r-- | spec/lib/gitlab/background_migration/update_vulnerability_confidence_spec.rb | 58 | ||||
-rw-r--r-- | spec/lib/gitlab/gl_repository/repo_type_spec.rb | 30 |
2 files changed, 58 insertions, 30 deletions
diff --git a/spec/lib/gitlab/background_migration/update_vulnerability_confidence_spec.rb b/spec/lib/gitlab/background_migration/update_vulnerability_confidence_spec.rb new file mode 100644 index 00000000000..1217edfecc3 --- /dev/null +++ b/spec/lib/gitlab/background_migration/update_vulnerability_confidence_spec.rb @@ -0,0 +1,58 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Gitlab::BackgroundMigration::UpdateVulnerabilityConfidence, :migration, schema: 20190909141517 do + let(:vulnerabilities) { table(:vulnerability_occurrences) } + let(:identifiers) { table(:vulnerability_identifiers) } + let(:scanners) { table(:vulnerability_scanners) } + let(:projects) { table(:projects) } + let(:vul1) { attributes_for(:vulnerabilities_occurrence) } + let(:vul2) { attributes_for(:vulnerabilities_occurrence) } + let(:vul3) { attributes_for(:vulnerabilities_occurrence) } + + it 'updates confidence level for container scanning reports' do + projects.create!(id: 123, namespace_id: 12, name: 'gitlab', path: 'gitlab') + + (1..3).to_a.each do |identifier_id| + identifiers.create!(id: identifier_id, + project_id: 123, + fingerprint: 'd432c2ad2953e8bd587a3a43b3ce309b5b0154c' + identifier_id.to_s, + external_type: 'SECURITY_ID', + external_id: 'SECURITY_0', + name: 'SECURITY_IDENTIFIER 0') + end + + scanners.create!(id: 6, project_id: 123, external_id: 'clair', name: 'Security Scanner') + + vulnerabilities.create!(container_scanning_vuln_params(vul1, 1)) + vulnerabilities.create!(container_scanning_vuln_params(vul2, 2)) + vulnerabilities.create!(container_scanning_vuln_params(vul3, 3).merge(report_type: 1)) + + expect(vulnerabilities.where(report_type: 2, confidence: 2).count). to eq(0) + expect(vulnerabilities.exists?(report_type: 2, confidence: 5)).to be_truthy + + described_class.new.perform(1, 3) + + expect(vulnerabilities.exists?(report_type: 2, confidence: 5)).to be_falsy + expect(vulnerabilities.where(report_type: 2, confidence: 2).count). to eq(2) + end + + def container_scanning_vuln_params(vul, primary_identifier_id) + { + id: vul[:id], + severity: 2, + confidence: 5, + report_type: 2, + project_id: 123, + scanner_id: 6, + primary_identifier_id: primary_identifier_id, + project_fingerprint: vul[:project_fingerprint], + location_fingerprint: vul[:location_fingerprint], + uuid: vul[:uuid], + name: vul[:name], + metadata_version: '1.3', + raw_metadata: vul3[:raw_metadata] + } + end +end diff --git a/spec/lib/gitlab/gl_repository/repo_type_spec.rb b/spec/lib/gitlab/gl_repository/repo_type_spec.rb index f06a2448ff7..9e09e1411ab 100644 --- a/spec/lib/gitlab/gl_repository/repo_type_spec.rb +++ b/spec/lib/gitlab/gl_repository/repo_type_spec.rb @@ -4,36 +4,6 @@ require 'spec_helper' describe Gitlab::GlRepository::RepoType do set(:project) { create(:project) } - shared_examples 'a repo type' do - describe "#identifier_for_subject" do - subject { described_class.identifier_for_subject(project) } - - it { is_expected.to eq(expected_identifier) } - end - - describe "#fetch_id" do - it "finds an id match in the identifier" do - expect(described_class.fetch_id(expected_identifier)).to eq(expected_id) - end - - it 'does not break on other identifiers' do - expect(described_class.fetch_id("wiki-noid")).to eq(nil) - end - end - - describe "#path_suffix" do - subject { described_class.path_suffix } - - it { is_expected.to eq(expected_suffix) } - end - - describe "#repository_for" do - it "finds the repository for the repo type" do - expect(described_class.repository_for(project)).to eq(expected_repository) - end - end - end - describe Gitlab::GlRepository::PROJECT do it_behaves_like 'a repo type' do let(:expected_identifier) { "project-#{project.id}" } |