Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/support/shared_contexts/lib/sbom/package_url_shared_contexts.rb')
-rw-r--r--spec/support/shared_contexts/lib/sbom/package_url_shared_contexts.rb114
1 files changed, 21 insertions, 93 deletions
diff --git a/spec/support/shared_contexts/lib/sbom/package_url_shared_contexts.rb b/spec/support/shared_contexts/lib/sbom/package_url_shared_contexts.rb
index b5c9e9cc7b0..263cf9f5e19 100644
--- a/spec/support/shared_contexts/lib/sbom/package_url_shared_contexts.rb
+++ b/spec/support/shared_contexts/lib/sbom/package_url_shared_contexts.rb
@@ -1,98 +1,26 @@
# frozen_string_literal: true
-RSpec.shared_context 'with purl matrix' do
+require 'oj'
+
+def parameterized_test_matrix(invalid: false)
+ test_cases_path = File.join(
+ File.expand_path(__dir__), '..', '..', '..', '..', 'fixtures', 'lib', 'sbom', 'package-url-test-cases.json')
+ test_cases = Gitlab::Json.parse(File.read(test_cases_path))
+
+ test_cases.filter { _1.delete('is_invalid') == invalid }.each_with_object({}) do |test_case, memo|
+ description = test_case.delete('description')
+ memo[description] = test_case.symbolize_keys
+ end
+end
+
+RSpec.shared_context 'with valid purl examples' do
+ where do
+ parameterized_test_matrix(invalid: false)
+ end
+end
+
+RSpec.shared_context 'with invalid purl examples' do
where do
- {
- 'valid RubyGems package URL' => {
- url: 'pkg:gem/ruby-advisory-db-check@0.12.4',
- type: 'gem',
- namespace: nil,
- name: 'ruby-advisory-db-check',
- version: '0.12.4',
- qualifiers: nil,
- subpath: nil
- },
- 'valid BitBucket package URL' => {
- url: 'pkg:bitbucket/birkenfeld/pygments-main@244fd47e07d1014f0aed9c',
- type: 'bitbucket',
- namespace: 'birkenfeld',
- name: 'pygments-main',
- version: '244fd47e07d1014f0aed9c',
- qualifiers: nil,
- subpath: nil
- },
- 'valid GitHub package URL' => {
- url: 'pkg:github/package-url/purl-spec@244fd47e07d1004f0aed9c',
- type: 'github',
- namespace: 'package-url',
- name: 'purl-spec',
- version: '244fd47e07d1004f0aed9c',
- qualifiers: nil,
- subpath: nil
- },
- 'valid Go module URL' => {
- url: 'pkg:golang/google.golang.org/genproto#googleapis/api/annotations',
- type: 'golang',
- namespace: 'google.golang.org',
- name: 'genproto',
- version: nil,
- qualifiers: nil,
- subpath: 'googleapis/api/annotations'
- },
- 'valid Maven package URL' => {
- url: 'pkg:maven/org.apache.commons/io@1.3.4',
- type: 'maven',
- namespace: 'org.apache.commons',
- name: 'io',
- version: '1.3.4',
- qualifiers: nil,
- subpath: nil
- },
- 'valid NPM package URL' => {
- url: 'pkg:npm/foobar@12.3.1',
- type: 'npm',
- namespace: nil,
- name: 'foobar',
- version: '12.3.1',
- qualifiers: nil,
- subpath: nil
- },
- 'valid NuGet package URL' => {
- url: 'pkg:nuget/EnterpriseLibrary.Common@6.0.1304',
- type: 'nuget',
- namespace: nil,
- name: 'EnterpriseLibrary.Common',
- version: '6.0.1304',
- qualifiers: nil,
- subpath: nil
- },
- 'valid PyPI package URL' => {
- url: 'pkg:pypi/django@1.11.1',
- type: 'pypi',
- namespace: nil,
- name: 'django',
- version: '1.11.1',
- qualifiers: nil,
- subpath: nil
- },
- 'valid RPM package URL' => {
- url: 'pkg:rpm/fedora/curl@7.50.3-1.fc25?arch=i386&distro=fedora-25',
- type: 'rpm',
- namespace: 'fedora',
- name: 'curl',
- version: '7.50.3-1.fc25',
- qualifiers: { 'arch' => 'i386', 'distro' => 'fedora-25' },
- subpath: nil
- },
- 'package URL with checksums' => {
- url: 'pkg:rpm/name?checksums=a,b,c',
- type: 'rpm',
- namespace: nil,
- name: 'name',
- version: nil,
- qualifiers: { 'checksums' => %w[a b c] },
- subpath: nil
- }
- }
+ parameterized_test_matrix(invalid: true)
end
end