summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormo khan <mo.khan@gmail.com>2020-09-14 17:24:09 -0600
committermo khan <mo.khan@gmail.com>2020-09-14 17:24:09 -0600
commitb399512a961b2932e3d399a891a44f3535b26def (patch)
treea30afc74e5a40b50aad78d497e3dac789086c2cf
parent853ae09d4c6d0220a3f77492065961e65f96e860 (diff)
test: scan simple maven project
-rw-r--r--lib/e2e.rb1
-rw-r--r--lib/e2e/dependency_scanning_report.rb14
-rw-r--r--lib/e2e/docker.rb8
-rw-r--r--spec/fixtures/java/maven/custom-tls/pom.xml2
-rw-r--r--spec/gemnasium_maven_spec.rb25
5 files changed, 33 insertions, 17 deletions
diff --git a/lib/e2e.rb b/lib/e2e.rb
index 50d7fc4..c44e0c7 100644
--- a/lib/e2e.rb
+++ b/lib/e2e.rb
@@ -1,3 +1,4 @@
require 'json'
+require 'e2e/dependency_scanning_report'
require 'e2e/docker'
require 'e2e/project'
diff --git a/lib/e2e/dependency_scanning_report.rb b/lib/e2e/dependency_scanning_report.rb
new file mode 100644
index 0000000..9f6e4be
--- /dev/null
+++ b/lib/e2e/dependency_scanning_report.rb
@@ -0,0 +1,14 @@
+class DependencyScanningReport
+ def initialize(project_path:)
+ report_path = project_path.join('gl-dependency-scanning-report.json')
+ @content = report_path.exist? ? JSON.parse(report_path.read) : {}
+ end
+
+ def to_h
+ @content
+ end
+
+ def to_s
+ JSON.pretty_generate(to_h)
+ end
+end
diff --git a/lib/e2e/docker.rb b/lib/e2e/docker.rb
index 3c4d589..be85e53 100644
--- a/lib/e2e/docker.rb
+++ b/lib/e2e/docker.rb
@@ -18,10 +18,14 @@ class Docker
end
end
- def run(image:, project_path: Pathname.pwd, env: {})
+ def run(image:, project_path: Pathname.pwd, env: {}, debug: ENV.fetch('DEBUG', 'false') == 'true')
env_options = DEFAULT_ENV.merge(env).map { |(key, value)| "--env #{key}=#{value}" }
- command = expand([:docker, :run, '-it', '--rm', "--volume=#{project_path}:/tmp/app", '--network=host', env_options, image, '/analyzer run'])
Dir.chdir pwd do
+ command = if debug
+ expand([:docker, :run, '-it', "--entrypoint=''", '--rm', "--volume=#{project_path}:/tmp/app", '--network=host', env_options, image, '/bin/bash -l'])
+ else
+ expand([:docker, :run, '--rm', "--volume=#{project_path}:/tmp/app", '--network=host', env_options, image, '/analyzer run'])
+ end
system(command, exception: true)
end
end
diff --git a/spec/fixtures/java/maven/custom-tls/pom.xml b/spec/fixtures/java/maven/custom-tls/pom.xml
index 6c647c0..dc2b3b0 100644
--- a/spec/fixtures/java/maven/custom-tls/pom.xml
+++ b/spec/fixtures/java/maven/custom-tls/pom.xml
@@ -1,7 +1,7 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.gitlab.secure</groupId>
- <artifactId>license-scanning</artifactId>
+ <artifactId>dependency-scanning</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>example</name>
diff --git a/spec/gemnasium_maven_spec.rb b/spec/gemnasium_maven_spec.rb
index f4e8f32..b20d9d9 100644
--- a/spec/gemnasium_maven_spec.rb
+++ b/spec/gemnasium_maven_spec.rb
@@ -2,31 +2,28 @@ RSpec.describe 'gemnasium-maven' do
context "when scanning a java project with packages from a custom source" do
subject do
docker.build(tag: docker_image)
- if docker.run(image: docker_image, project_path: project_path, env: env)
- report_path = project_path.join('gl-license-scanning-report.json')
- report_path.exist? ? JSON.parse(report_path.read) : {}
- else
- {}
- end
+ return {} unless docker.run(image: docker_image, project_path: project_path, env: env)
+
+ DependencyScanningReport.new(project_path: project_path)
end
let(:docker) { Docker.new(pwd: Pathname.pwd.join('src/gemnasium-maven')) }
- let(:project_path) { Dir.pwd }
+ let(:project_path) { project.path }
let(:docker_image) { 'gemnasium-maven:latest' }
- let(:env) { { 'ADDITIONAL_CA_CERT_BUNDLE' => '' } }
+ let(:env) { { } }
let(:project) { Project.new }
- before do
+ around(:example) do |example|
project.mount(dir: fixture_file('java/maven/custom-tls'))
- end
-
- after do
+ example.run
project.cleanup
end
specify do
- puts subject.inspect
- expect(subject.count).to eql(1)
+ 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