summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormo khan <mo.khan@gmail.com>2020-09-16 12:33:36 -0600
committermo khan <mo.khan@gmail.com>2020-09-16 12:33:36 -0600
commitbbd64b04d484792307ed58f847d86df5bcbe7440 (patch)
treedfd09334255473977b583daa2c4cf357fa26a941
parent47b673882a84d7683a07b4e366132a80a3ff1313 (diff)
refactor: refactor gemnasium-maven tests to use shared context
-rw-r--r--lib/e2e/project.rb7
-rw-r--r--spec/gemnasium_maven_spec.rb32
-rw-r--r--spec/spotbugs_spec.rb19
-rw-r--r--spec/support/scanner_context.rb21
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