diff options
| author | mo khan <mo.khan@gmail.com> | 2020-09-14 17:24:09 -0600 |
|---|---|---|
| committer | mo khan <mo.khan@gmail.com> | 2020-09-14 17:24:09 -0600 |
| commit | b399512a961b2932e3d399a891a44f3535b26def (patch) | |
| tree | a30afc74e5a40b50aad78d497e3dac789086c2cf | |
| parent | 853ae09d4c6d0220a3f77492065961e65f96e860 (diff) | |
test: scan simple maven project
| -rw-r--r-- | lib/e2e.rb | 1 | ||||
| -rw-r--r-- | lib/e2e/dependency_scanning_report.rb | 14 | ||||
| -rw-r--r-- | lib/e2e/docker.rb | 8 | ||||
| -rw-r--r-- | spec/fixtures/java/maven/custom-tls/pom.xml | 2 | ||||
| -rw-r--r-- | spec/gemnasium_maven_spec.rb | 25 |
5 files changed, 33 insertions, 17 deletions
@@ -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 |
