From 46b002a96345ce18b0f7a95ef00fca1c34cb9298 Mon Sep 17 00:00:00 2001 From: mo khan Date: Wed, 16 Sep 2020 16:55:47 -0600 Subject: test: scan java-maven test project --- spec/support/shared/with_expected.rb | 16 ++++++++++++++++ spec/support/shared/with_scanner.rb | 30 ++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 spec/support/shared/with_expected.rb create mode 100644 spec/support/shared/with_scanner.rb (limited to 'spec/support/shared') diff --git a/spec/support/shared/with_expected.rb b/spec/support/shared/with_expected.rb new file mode 100644 index 0000000..be4d7cc --- /dev/null +++ b/spec/support/shared/with_expected.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +RSpec.shared_examples "with expected" do |language, package_manager, version, branch = 'master'| + context "when generating a report for #{package_manager}" do + let(:git_url) { "https://gitlab.com/gitlab-org/security-products/tests/#{language}-#{package_manager}.git" } + let(:git_branch) { branch } + let(:expected_content) { JSON.parse(fixture_file_content("expected/#{language}/#{package_manager}/#{branch}/v#{version}.json")) } + + pending do + actual_pretty = JSON.pretty_generate(subject.to_h) + expected_pretty = JSON.pretty_generate(expected_content) + + expect(actual_pretty).to eq(expected_pretty) + end + end +end diff --git a/spec/support/shared/with_scanner.rb b/spec/support/shared/with_scanner.rb new file mode 100644 index 0000000..fe88496 --- /dev/null +++ b/spec/support/shared/with_scanner.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +RSpec.shared_context 'with scanner' do + subject { project.report_for(type: report_type) } + + let(:docker) { Docker.new(pwd: Pathname.pwd.join("src/#{scanner}")) } + let(:docker_image) { "#{scanner}:latest" } + let(:scanner) { raise "`scanner` not specified. Choose: #{Pathname.pwd.glob('src/*').map(&:basename).join(', ')}" } + let(:project) { Project.new } + let(:project_fixture) { nil } + let(:env) { {} } + let(:report_types) { { 'gemnasium-maven' => :dependency_scanning, 'spotbugs' => :sast } } + let(:report_type) { report_types.fetch(scanner) } + + around do |example| + if project_fixture + project.mount(dir: fixture_file(project_fixture)) + else + project.clone(git_url, branch: git_branch.to_s) + end + + docker.run(image: docker_image, project_path: project.path, env: env) + example.run + project.cleanup + end +end + +RSpec.configure do |config| + config.include_context 'with scanner' +end -- cgit v1.2.3