diff options
| author | mo khan <mo.khan@gmail.com> | 2020-09-16 12:33:36 -0600 |
|---|---|---|
| committer | mo khan <mo.khan@gmail.com> | 2020-09-16 12:33:36 -0600 |
| commit | bbd64b04d484792307ed58f847d86df5bcbe7440 (patch) | |
| tree | dfd09334255473977b583daa2c4cf357fa26a941 | |
| parent | 47b673882a84d7683a07b4e366132a80a3ff1313 (diff) | |
refactor: refactor gemnasium-maven tests to use shared context
| -rw-r--r-- | lib/e2e/project.rb | 7 | ||||
| -rw-r--r-- | spec/gemnasium_maven_spec.rb | 32 | ||||
| -rw-r--r-- | spec/spotbugs_spec.rb | 19 | ||||
| -rw-r--r-- | spec/support/scanner_context.rb | 21 |
4 files changed, 35 insertions, 44 deletions
diff --git a/lib/e2e/project.rb b/lib/e2e/project.rb index d2d56bc..74ad1e4 100644 --- a/lib/e2e/project.rb +++ b/lib/e2e/project.rb @@ -10,7 +10,12 @@ class Project end def report_for(type:) - JSON.parse(path.join("gl-#{type}-report.json").read) + case type&.to_sym + when :dependency_scanning + DependencyScanningReport.new(project_path: path) + else + JSON.parse(path.join("gl-#{type}-report.json").read) + end end def mount(dir:) diff --git a/spec/gemnasium_maven_spec.rb b/spec/gemnasium_maven_spec.rb index 85f7cae..2f61a77 100644 --- a/spec/gemnasium_maven_spec.rb +++ b/spec/gemnasium_maven_spec.rb @@ -2,31 +2,15 @@ require 'openssl' RSpec.describe 'gemnasium-maven' do ['8', '13', '11', '14'].each do |java_version| - context "when scanning a java #{java_version} project with a custom X509 CA certificate" do - subject do - docker.run(image: docker_image, project_path: project_path, env: env) - DependencyScanningReport.new(project_path: project_path) - end + let(:project_fixture) { 'java/maven/custom-tls' } + let(:report_type) { :dependency_scanning } + let(:env) { { 'ADDITIONAL_CA_CERT_BUNDLE' => X509.self_signed.to_pem, 'DS_JAVA_VERSION' => java_version } } - let(:docker) { Docker.new(pwd: Pathname.pwd.join('src/gemnasium-maven')) } - let(:project_path) { project.path } - let(:docker_image) { 'gemnasium-maven:latest' } - let(:env) { { 'ADDITIONAL_CA_CERT_BUNDLE' => x509.to_pem, 'DS_JAVA_VERSION' => java_version } } - let(:project) { Project.new } - let(:x509) { X509.self_signed } - - around(:example) do |example| - project.mount(dir: fixture_file('java/maven/custom-tls')) - example.run - project.cleanup - end - - specify do - expect(subject.to_h['dependency_files'].count).to eql(1) - expect(subject.to_h['dependency_files'][0]['dependencies'].count).to eql(1) - expect(subject.to_h['dependency_files'][0]['dependencies'][0]['package']['name']).to eql('com.fasterxml.jackson.core/jackson-core') - expect(subject.to_h['dependency_files'][0]['dependencies'][0]['version']).to eql('2.10.0') - end + specify do + expect(subject.to_h['dependency_files'].count).to eql(1) + expect(subject.to_h['dependency_files'][0]['dependencies'].count).to eql(1) + expect(subject.to_h['dependency_files'][0]['dependencies'][0]['package']['name']).to eql('com.fasterxml.jackson.core/jackson-core') + expect(subject.to_h['dependency_files'][0]['dependencies'][0]['version']).to eql('2.10.0') end end end diff --git a/spec/spotbugs_spec.rb b/spec/spotbugs_spec.rb index 4bad4ff..7706002 100644 --- a/spec/spotbugs_spec.rb +++ b/spec/spotbugs_spec.rb @@ -1,23 +1,4 @@ -RSpec.shared_context 'a 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) { self.class.description } - let(:project) { Project.new } - let(:report_type) { raise 'report_type not specified' } - - around :example do |example| - project.mount(dir: fixture_file(project_fixture)) - docker.run(image: docker_image, project_path: project.path) - example.run - project.cleanup - end -end - RSpec.describe 'spotbugs' do - include_context 'a scanner' - let(:project_fixture) { 'java/maven/custom-tls' } let(:report_type) { :sast } diff --git a/spec/support/scanner_context.rb b/spec/support/scanner_context.rb new file mode 100644 index 0000000..6a17835 --- /dev/null +++ b/spec/support/scanner_context.rb @@ -0,0 +1,21 @@ +RSpec.shared_context 'a 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) { self.class.description } + let(:project) { Project.new } + let(:report_type) { raise 'report_type not specified' } + let(:env) { { } } + + around :example do |example| + project.mount(dir: fixture_file(project_fixture)) + docker.run(image: docker_image, project_path: project.path, env: env) + example.run + project.cleanup + end +end + +RSpec.configure do |config| + config.include_context 'a scanner' +end |
