diff options
| author | mo khan <mo.khan@gmail.com> | 2020-05-22 09:28:44 -0600 |
|---|---|---|
| committer | mo khan <mo.khan@gmail.com> | 2020-05-25 18:31:06 -0600 |
| commit | 1ca2a951d05480759af1668ed586793ff5d36a26 (patch) | |
| tree | ca16267ec26b1d8c3b1a1346a1ab9e8689992116 /spec/unit/cli/scan_spec.rb | |
| parent | f8092c7f0ad26d04c8137b3b7d4faea5508a53ce (diff) | |
Convert from using string paths to using Pathname
* Extract a ./bin/run script
* Extract defintion for NEWLINE
* Add specs for matching yarn.lock
* Add specs for Report
* Convert package_manager to pathname
* Display path in report
* matches? to match?
Diffstat (limited to 'spec/unit/cli/scan_spec.rb')
| -rw-r--r-- | spec/unit/cli/scan_spec.rb | 110 |
1 files changed, 20 insertions, 90 deletions
diff --git a/spec/unit/cli/scan_spec.rb b/spec/unit/cli/scan_spec.rb index dff893f..7e33e7f 100644 --- a/spec/unit/cli/scan_spec.rb +++ b/spec/unit/cli/scan_spec.rb @@ -1,99 +1,29 @@ # frozen_string_literal: true RSpec.describe Spandx::Cli::Commands::Scan do - subject { described_class.new(lockfile, options) } - - let(:output) { StringIO.new } - let(:lockfile) { '.' } - let(:options) { { format: 'json' } } - - before do - stub_request(:get, Spandx::Spdx::Gateway::URL) - .to_return(status: 200, body: IO.read(fixture_file('spdx/json/licenses.json'))) - end - - context 'when scanning a directory' do - let(:lockfile) { fixture_file('bundler/') } - let(:result) { JSON.parse(output.string) } - - before do - VCR.use_cassette('scan-directory') do - subject.execute(output: output) - end - end - - specify { expect(result['dependencies'].count).to be(1) } - specify { expect(result).to include('version' => '1.0') } - specify { expect(result['dependencies']).to match_array([{ 'name' => 'net-hippie', 'version' => '0.2.7', 'licenses' => ['MIT'] }]) } - end - - context 'when recursively scanning a directory' do - let(:lockfile) { fixture_file('.') } - let(:options) { { 'recursive' => true, format: 'table' } } - let(:result) { output.string } - - before do - VCR.use_cassette('scan-directory-recursively') do - subject.execute(output: output) - end - end - - it { expect(result).to eql(fixture_file_content('recursive.expected')) } - end - - context 'when scanning Gemfile.lock' do - let(:lockfile) { fixture_file('bundler/Gemfile.lock') } - let(:result) { JSON.parse(output.string) } - - before do - VCR.use_cassette(File.basename(lockfile)) do - subject.execute(output: output) + RSpec.shared_examples 'scan' do |path| + context "when scanning #{path}" do + subject { described_class.new(lockfile, options) } + + let(:lockfile) { fixture_file(path) } + let(:output) { StringIO.new } + let(:options) { { format: 'table', show_progress: false, recursive: true } } + + before do + stub_request(:get, Spandx::Spdx::Gateway::URL) + .to_return(status: 200, body: fixture_file('spdx/json/licenses.json').read) + VCR.use_cassette(lockfile.basename) do + subject.execute(output: output) + end end - end - - specify { expect(result).to include('version' => '1.0') } - specify { expect(result['dependencies']).to include('name' => 'net-hippie', 'version' => '0.2.7', 'licenses' => ['MIT']) } - end - context 'when scanning gems.lock' do - let(:lockfile) { fixture_file('bundler/gems.lock') } - let(:result) { JSON.parse(output.string) } - - before do - VCR.use_cassette(File.basename(lockfile)) do - subject.execute(output: output) - end + it { expect(output.string).to eql(IO.read("#{lockfile}.expected")) } end - - specify { expect(result).to include('version' => '1.0') } - specify { expect(result['dependencies']).to include('name' => 'net-hippie', 'version' => '0.2.7', 'licenses' => ['MIT']) } end - context 'when scanning Pipfile.lock' do - let(:lockfile) { fixture_file('pip/Pipfile.lock') } - let(:result) { JSON.parse(output.string) } - - before do - VCR.use_cassette(File.basename(lockfile)) do - subject.execute(output: output) - end - end - - specify { expect(result).to include('version' => '1.0') } - specify { expect(result['dependencies']).to include('name' => 'six', 'version' => '1.13.0', 'licenses' => ['MIT']) } - end - - context 'when scanning a packages.config' do - let(:lockfile) { fixture_file('nuget/packages.config') } - let(:result) { JSON.parse(output.string) } - - before do - VCR.use_cassette(File.basename(lockfile)) do - subject.execute(output: output) - end - end - - specify { expect(result).to include('version' => '1.0') } - specify { expect(result['dependencies']).to include('name' => 'NHibernate', 'version' => '5.2.6', 'licenses' => ['LGPL-2.1-only']) } - end + include_examples 'scan', '.' + include_examples 'scan', 'bundler/Gemfile.lock' + include_examples 'scan', 'bundler/gems.lock' + include_examples 'scan', 'pip/Pipfile.lock' + include_examples 'scan', 'nuget/packages.config' end |
