summaryrefslogtreecommitdiff
path: root/spec/unit
diff options
context:
space:
mode:
authormo khan <mo.khan@gmail.com>2020-04-14 12:50:13 -0600
committermo khan <mo.khan@gmail.com>2020-04-14 12:50:13 -0600
commitbae02b6ae73dda47dc86590b73c21a85bb7273a5 (patch)
tree148f331085f123903cbf3635ea8b20b5c279d964 /spec/unit
parent2b69afb35bd1b123e00d3efabce0d4c4aefdd008 (diff)
Migrate specs from gitlab-org/security-products/license-management
Diffstat (limited to 'spec/unit')
-rw-r--r--spec/unit/gitlab_spec.rb5
-rw-r--r--spec/unit/license/management/report/v2_spec.rb52
-rw-r--r--spec/unit/license/management/repository_spec.rb45
3 files changed, 102 insertions, 0 deletions
diff --git a/spec/unit/gitlab_spec.rb b/spec/unit/gitlab_spec.rb
new file mode 100644
index 0000000..997c067
--- /dev/null
+++ b/spec/unit/gitlab_spec.rb
@@ -0,0 +1,5 @@
+# frozen_string_literal: true
+
+RSpec.describe Spandx::Gitlab do
+ specify { expect(Spandx::Gitlab::VERSION).not_to be_nil }
+end
diff --git a/spec/unit/license/management/report/v2_spec.rb b/spec/unit/license/management/report/v2_spec.rb
new file mode 100644
index 0000000..e5a941e
--- /dev/null
+++ b/spec/unit/license/management/report/v2_spec.rb
@@ -0,0 +1,52 @@
+RSpec.describe License::Management::Report::V2 do
+ describe "#to_h" do
+ {
+ 'AGPL-1.0' => 'AGPL-1.0',
+ 'AGPL-3.0' => 'AGPL-3.0',
+ 'Apache 2.0' => 'Apache-2.0',
+ 'Artistic-2.0' => 'Artistic-2.0',
+ 'BSD' => 'BSD-4-Clause',
+ 'CC0 1.0 Universal' => 'CC0-1.0',
+ 'CDDL-1.0' => 'CDDL-1.0',
+ 'CDDL-1.1' => 'CDDL-1.1',
+ 'EPL-1.0' => 'EPL-1.0',
+ 'EPL-2.0' => 'EPL-2.0',
+ 'GPLv2' => 'GPL-2.0',
+ 'GPLv3' => 'GPL-3.0',
+ 'ISC' => 'ISC',
+ 'LGPL' => 'LGPL-3.0-only',
+ 'LGPL-2.1' => 'LGPL-2.1',
+ 'MIT' => 'MIT',
+ 'Mozilla Public License 2.0' => 'MPL-2.0',
+ 'MS-PL' => 'MS-PL',
+ 'MS-RL' => 'MS-RL',
+ 'New BSD' => 'BSD-3-Clause',
+ 'Python Software Foundation License' => 'Python-2.0',
+ 'ruby' => 'Ruby',
+ 'Simplified BSD' => 'BSD-2-Clause',
+ 'WTFPL' => 'WTFPL',
+ 'Zlib' => 'Zlib'
+ }.each do |old_name, spdx_id|
+ context "when mapping the legacy license name #{old_name}" do
+ subject { described_class.new([dependency]) }
+
+ let(:license) { LicenseFinder::License.new(short_name: old_name, matcher: LicenseFinder::License::NoneMatcher.new, url: nil) }
+ let(:dependency) { instance_double(LicenseFinder::Package, name: 'x', summary: '', description: '', homepage: '', licenses: [license]).as_null_object }
+ let(:result) { subject.to_h }
+
+ specify { expect(result[:version]).to eq('2.0') }
+ specify { expect(result[:licenses].count).to be(1) }
+ specify { expect(result[:licenses][0]['id']).to eq(spdx_id) }
+ end
+ end
+
+ context "when choosing an appropriate url for a license" do
+ subject { described_class.new([dependency]) }
+
+ let(:license) { LicenseFinder::License.new(short_name: 'MIT', matcher: LicenseFinder::License::NoneMatcher.new, url: nil) }
+ let(:dependency) { instance_double(LicenseFinder::Package, name: 'x', summary: '', description: '', homepage: '', licenses: [license]).as_null_object }
+
+ specify { expect(subject.to_h[:licenses][0]['url']).to eql('https://opensource.org/licenses/MIT') }
+ end
+ end
+end
diff --git a/spec/unit/license/management/repository_spec.rb b/spec/unit/license/management/repository_spec.rb
new file mode 100644
index 0000000..6006e8a
--- /dev/null
+++ b/spec/unit/license/management/repository_spec.rb
@@ -0,0 +1,45 @@
+RSpec.describe License::Management::Repository do
+ describe "#item_for" do
+ let(:spdx_licenses) { JSON.parse(IO.read('spdx-licenses.json'))['licenses'] }
+
+ context "when mapping a license that refers to opensource.org" do
+ it 'parses the SPDX id from the url' do
+ spdx_licenses.each do |license|
+ spdx_id = license['licenseId']
+ url = "https://opensource.org/licenses/#{spdx_id}"
+ license = LicenseFinder::License.new(short_name: url, matcher: LicenseFinder::License::NoneMatcher.new, url: url)
+ expect(subject.item_for(license)['id']).to eql(spdx_id)
+ end
+ end
+
+ it 'recognizes `http://www.opensource.org/licenses/mit-license.php`' do
+ url = 'http://www.opensource.org/licenses/mit-license.php'
+ license = LicenseFinder::License.new(short_name: url, matcher: LicenseFinder::License::NoneMatcher.new, url: url)
+
+ expect(subject.item_for(license)['id']).to eql('MIT')
+ end
+ end
+
+ context "when mapping a license that refers to nuget.org" do
+ it 'parses the SPDX id from the url' do
+ spdx_licenses.each do |license|
+ spdx_id = license['licenseId']
+ url = "https://licenses.nuget.org/#{spdx_id}"
+ license = LicenseFinder::License.new(short_name: url, matcher: LicenseFinder::License::NoneMatcher.new, url: url)
+ expect(subject.item_for(license)['id']).to eql(spdx_id)
+ end
+ end
+ end
+
+ [
+ ['Apache License v2.0', 'Apache-2.0']
+ ].each do |short_name, spdx_id|
+ context "when mapping a `#{short_name}` license" do
+ let(:license) { LicenseFinder::License.new(short_name: short_name, matcher: LicenseFinder::License::NoneMatcher.new, url: nil) }
+ let(:dependency) { double(name: 'x', summary: '', description: '', homepage: '', licenses: [license]) }
+
+ it { expect(subject.item_for(license)['id']).to eql(spdx_id) }
+ end
+ end
+ end
+end