summaryrefslogtreecommitdiff
path: root/spec/factories/packages
diff options
context:
space:
mode:
Diffstat (limited to 'spec/factories/packages')
-rw-r--r--spec/factories/packages/debian/component_file.rb7
-rw-r--r--spec/factories/packages/debian/distribution.rb6
-rw-r--r--spec/factories/packages/debian/file_metadatum.rb80
-rw-r--r--spec/factories/packages/npm/metadata_cache.rb10
-rw-r--r--spec/factories/packages/package_files.rb30
-rw-r--r--spec/factories/packages/packages.rb7
6 files changed, 94 insertions, 46 deletions
diff --git a/spec/factories/packages/debian/component_file.rb b/spec/factories/packages/debian/component_file.rb
index a2422e4a126..0a134ee16c4 100644
--- a/spec/factories/packages/debian/component_file.rb
+++ b/spec/factories/packages/debian/component_file.rb
@@ -20,7 +20,6 @@ FactoryBot.define do
component_file.file = fixture_file_upload(evaluator.file_fixture) if evaluator.file_fixture.present?
end
- file_md5 { '12345abcde' }
file_sha256 { 'be93151dc23ac34a82752444556fe79b32c7a1ad' }
trait(:packages) do
@@ -47,5 +46,11 @@ FactoryBot.define do
trait(:object_storage) do
file_store { Packages::PackageFileUploader::Store::REMOTE }
end
+
+ trait(:empty) do
+ file_sha256 { 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855' }
+ file_fixture { nil }
+ size { 0 }
+ end
end
end
diff --git a/spec/factories/packages/debian/distribution.rb b/spec/factories/packages/debian/distribution.rb
index 48892d16efb..7a9d8561a9c 100644
--- a/spec/factories/packages/debian/distribution.rb
+++ b/spec/factories/packages/debian/distribution.rb
@@ -4,14 +4,14 @@ FactoryBot.define do
factory :debian_project_distribution, class: 'Packages::Debian::ProjectDistribution' do
container { association(:project) }
- sequence(:codename) { |n| "#{FFaker::Lorem.word}#{n}" }
+ sequence(:codename) { |n| "codename-#{n}" }
factory :debian_group_distribution, class: 'Packages::Debian::GroupDistribution' do
container { association(:group) }
end
trait(:with_suite) do
- sequence(:suite) { |n| "#{FFaker::Lorem.word}#{n}" }
+ sequence(:suite) { |n| "suite-#{n}" }
end
trait(:with_file) do
@@ -24,7 +24,7 @@ FactoryBot.define do
FILESIGNATURE
end
- after(:build) do |distribution, evaluator|
+ after(:build) do |distribution, _evaluator|
distribution.file = fixture_file_upload('spec/fixtures/packages/debian/distribution/Release')
distribution.signed_file = fixture_file_upload('spec/fixtures/packages/debian/distribution/InRelease')
end
diff --git a/spec/factories/packages/debian/file_metadatum.rb b/spec/factories/packages/debian/file_metadatum.rb
index 505b9975f79..6b6cd9c51f3 100644
--- a/spec/factories/packages/debian/file_metadatum.rb
+++ b/spec/factories/packages/debian/file_metadatum.rb
@@ -2,11 +2,18 @@
FactoryBot.define do
factory :debian_file_metadatum, class: 'Packages::Debian::FileMetadatum' do
- package_file { association(:debian_package_file, without_loaded_metadatum: true) }
+ package_file do
+ if file_type == 'unknown'
+ association(:debian_package_file, :unknown, without_loaded_metadatum: true)
+ else
+ association(:debian_package_file, without_loaded_metadatum: true)
+ end
+ end
+
file_type { 'deb' }
component { 'main' }
architecture { 'amd64' }
- fields { { 'a': 'b' } }
+ fields { { 'a' => 'b' } }
trait(:unknown) do
file_type { 'unknown' }
@@ -30,21 +37,23 @@ FactoryBot.define do
{
'Format' => '3.0 (native)',
'Source' => package_file.package.name,
- 'Binary' => 'sample-dev, libsample0, sample-udeb',
+ 'Binary' => 'sample-dev, libsample0, sample-udeb, sample-ddeb',
'Architecture' => 'any',
- 'Version': package_file.package.version,
+ 'Version' => package_file.package.version,
'Maintainer' => "#{FFaker::Name.name} <#{FFaker::Internet.email}>",
'Homepage' => FFaker::Internet.http_url,
'Standards-Version' => '4.5.0',
'Build-Depends' => 'debhelper-compat (= 13)',
- 'Package-List' => <<~EOF.rstrip,
- libsample0 deb libs optional arch=any',
- sample-dev deb libdevel optional arch=any',
- sample-udeb udeb libs optional arch=any',
- EOF
- 'Checksums-Sha1' => "\nc5cfc111ea924842a89a06d5673f07dfd07de8ca 864 sample_1.2.3~alpha2.tar.xz",
- 'Checksums-Sha256' => "\n40e4682bb24a73251ccd7c7798c0094a649091e5625d6a14bcec9b4e7174f3da 864 sample_1.2.3~alpha2.tar.xz",
- 'Files' => "\nd5ca476e4229d135a88f9c729c7606c9 864 sample_1.2.3~alpha2.tar.xz"
+ 'Package-List' => <<~PACKAGELIST.rstrip,
+ libsample0 deb libs optional arch=any
+ sample-ddeb deb libs optional arch=any
+ sample-dev deb libdevel optional arch=any
+ sample-udeb udeb libs optional arch=any
+ PACKAGELIST
+ 'Checksums-Sha1' => "\n4a9cb2a7c77a68dc0fe54ba8ecef133a7c949e9d 964 sample_1.2.3~alpha2.tar.xz",
+ 'Checksums-Sha256' =>
+ "\nc9d05185ca158bb804977fa9d7b922e8a0f644a2da41f99d2787dd61b1e2e2c5 964 sample_1.2.3~alpha2.tar.xz",
+ 'Files' => "\nadc69e57cda38d9bb7c8d59cacfb6869 964 sample_1.2.3~alpha2.tar.xz"
}
end
end
@@ -55,22 +64,22 @@ FactoryBot.define do
architecture { 'amd64' }
fields do
{
- 'Package' => 'libsample0',
- 'Source' => package_file.package.name,
- 'Version' => package_file.package.version,
- 'Architecture' => 'amd64',
- 'Maintainer' => "#{FFaker::Name.name} <#{FFaker::Internet.email}>",
- 'Installed-Size' => '7',
- 'Section' => 'libs',
- 'Priority' => 'optional',
- 'Multi-Arch' => 'same',
- 'Homepage' => FFaker::Internet.http_url,
- 'Description' => <<~EOF.rstrip
- Some mostly empty lib
- Used in GitLab tests.
+ 'Package' => 'libsample0',
+ 'Source' => package_file.package.name,
+ 'Version' => package_file.package.version,
+ 'Architecture' => 'amd64',
+ 'Maintainer' => "#{FFaker::NameCN.name} #{FFaker::Name.name} <#{FFaker::Internet.email}>",
+ 'Installed-Size' => '7',
+ 'Section' => 'libs',
+ 'Priority' => 'optional',
+ 'Multi-Arch' => 'same',
+ 'Homepage' => FFaker::Internet.http_url,
+ 'Description' => <<~DESCRIPTION.rstrip
+ Some mostly empty lib
+ Used in GitLab tests.
- Testing another paragraph.
- EOF
+ Testing another paragraph.
+ DESCRIPTION
}
end
end
@@ -92,12 +101,12 @@ FactoryBot.define do
'Priority' => 'optional',
'Multi-Arch' => 'same',
'Homepage' => FFaker::Internet.http_url,
- 'Description' => <<~EOF.rstrip
+ 'Description' => <<~DESCRIPTION.rstrip
Some mostly empty development files
Used in GitLab tests.
Testing another paragraph.
- EOF
+ DESCRIPTION
}
end
end
@@ -106,21 +115,28 @@ FactoryBot.define do
file_type { 'udeb' }
component { 'main' }
architecture { 'amd64' }
- fields { { 'a': 'b' } }
+ fields { { 'a' => 'b' } }
+ end
+
+ trait(:ddeb) do
+ file_type { 'ddeb' }
+ component { 'main' }
+ architecture { 'amd64' }
+ fields { { 'a' => 'b' } }
end
trait(:buildinfo) do
file_type { 'buildinfo' }
component { 'main' }
architecture { nil }
- fields { { 'Architecture': 'amd64 source' } }
+ fields { { 'Architecture' => 'amd64 source' } }
end
trait(:changes) do
file_type { 'changes' }
component { nil }
architecture { nil }
- fields { { 'Architecture': 'source amd64' } }
+ fields { { 'Architecture' => 'source amd64' } }
end
end
end
diff --git a/spec/factories/packages/npm/metadata_cache.rb b/spec/factories/packages/npm/metadata_cache.rb
new file mode 100644
index 00000000000..e76ddf3c983
--- /dev/null
+++ b/spec/factories/packages/npm/metadata_cache.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+FactoryBot.define do
+ factory :npm_metadata_cache, class: 'Packages::Npm::MetadataCache' do
+ project
+ sequence(:package_name) { |n| "@#{project.root_namespace.path}/package-#{n}" }
+ file { fixture_file_upload('spec/fixtures/packages/npm/metadata.json') }
+ size { 401.bytes }
+ end
+end
diff --git a/spec/factories/packages/package_files.rb b/spec/factories/packages/package_files.rb
index 7d3dd274777..4a2d412832c 100644
--- a/spec/factories/packages/package_files.rb
+++ b/spec/factories/packages/package_files.rb
@@ -131,9 +131,9 @@ FactoryBot.define do
trait(:source) do
file_name { 'sample_1.2.3~alpha2.tar.xz' }
- file_md5 { 'd5ca476e4229d135a88f9c729c7606c9' }
- file_sha1 { 'c5cfc111ea924842a89a06d5673f07dfd07de8ca' }
- file_sha256 { '40e4682bb24a73251ccd7c7798c0094a649091e5625d6a14bcec9b4e7174f3da' }
+ file_md5 { 'adc69e57cda38d9bb7c8d59cacfb6869' }
+ file_sha1 { '4a9cb2a7c77a68dc0fe54ba8ecef133a7c949e9d' }
+ file_sha256 { 'c9d05185ca158bb804977fa9d7b922e8a0f644a2da41f99d2787dd61b1e2e2c5' }
transient do
file_metadatum_trait { :source }
@@ -142,9 +142,9 @@ FactoryBot.define do
trait(:dsc) do
file_name { 'sample_1.2.3~alpha2.dsc' }
- file_md5 { 'ceccb6bb3e45ce6550b24234d4023e0f' }
- file_sha1 { '375ba20ea1789e1e90d469c3454ce49a431d0442' }
- file_sha256 { '81fc156ba937cdb6215362cc4bf6b8dc47be9b4253ba0f1a4ab10c7ea0c4c4e5' }
+ file_md5 { '629921cfc477bfa84adfd2ccaba89783' }
+ file_sha1 { '443c98a4cf4acd21e2259ae8f2d60fc9932de353' }
+ file_sha256 { 'f91070524a59bbb3a1f05a78409e92cb9ee86470b34018bc0b93bd5b2dd3868c' }
transient do
file_metadatum_trait { :dsc }
@@ -184,11 +184,22 @@ FactoryBot.define do
end
end
+ trait(:ddeb) do
+ file_name { 'sample-ddeb_1.2.3~alpha2_amd64.ddeb' }
+ file_md5 { '90d1107471eed48c73ad78b19ac83639' }
+ file_sha1 { '9c5af97cf8dfbe8126c807f540c88757f382b307' }
+ file_sha256 { 'a6bcc8a4b010f99ce0ea566ac69088e1910e754593c77f2b4942e3473e784e4d' }
+
+ transient do
+ file_metadatum_trait { :ddeb }
+ end
+ end
+
trait(:buildinfo) do
file_name { 'sample_1.2.3~alpha2_amd64.buildinfo' }
- file_md5 { '12a5ac4f16ad75f8741327ac23b4c0d7' }
- file_sha1 { '661f7507efa6fdd3763c95581d0baadb978b7ef5' }
- file_sha256 { 'd0c169e9caa5b303a914b27b5adf69768fe6687d4925905b7d0cd9c0f9d4e56c' }
+ file_md5 { 'cc07ff4d741aec132816f9bd67c6875d' }
+ file_sha1 { 'bcc4ca85f17a31066b726cd4e04485ab24a682c6' }
+ file_sha256 { '5a3dac17c4ff0d49fa5f47baa973902b59ad2ee05147062b8ed8f19d196731d1' }
transient do
file_metadatum_trait { :buildinfo }
@@ -204,6 +215,7 @@ FactoryBot.define do
end
trait(:keep) do
+ # do not override attributes
end
end
diff --git a/spec/factories/packages/packages.rb b/spec/factories/packages/packages.rb
index d0fde0a16cd..283df3428db 100644
--- a/spec/factories/packages/packages.rb
+++ b/spec/factories/packages/packages.rb
@@ -78,19 +78,24 @@ FactoryBot.define do
after :build do |package, evaluator|
if evaluator.published_in == :create
- create(:debian_publication, package: package)
+ build(:debian_publication, package: package)
elsif !evaluator.published_in.nil?
create(:debian_publication, package: package, distribution: evaluator.published_in)
end
end
after :create do |package, evaluator|
+ if evaluator.published_in == :create
+ package.debian_publication.save!
+ end
+
unless evaluator.without_package_files
create :debian_package_file, :source, evaluator.file_metadatum_trait, package: package
create :debian_package_file, :dsc, evaluator.file_metadatum_trait, package: package
create :debian_package_file, :deb, evaluator.file_metadatum_trait, package: package
create :debian_package_file, :deb_dev, evaluator.file_metadatum_trait, package: package
create :debian_package_file, :udeb, evaluator.file_metadatum_trait, package: package
+ create :debian_package_file, :ddeb, evaluator.file_metadatum_trait, package: package
create :debian_package_file, :buildinfo, evaluator.file_metadatum_trait, package: package
create :debian_package_file, :changes, evaluator.file_metadatum_trait, package: package
end