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:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-02-18 13:34:06 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-02-18 13:34:06 +0300
commit859a6fb938bb9ee2a317c46dfa4fcc1af49608f0 (patch)
treed7f2700abe6b4ffcb2dcfc80631b2d87d0609239 /spec/factories
parent446d496a6d000c73a304be52587cd9bbc7493136 (diff)
Add latest changes from gitlab-org/gitlab@13-9-stable-eev13.9.0-rc42
Diffstat (limited to 'spec/factories')
-rw-r--r--spec/factories/audit_events.rb15
-rw-r--r--spec/factories/ci/bridge.rb18
-rw-r--r--spec/factories/ci/builds.rb32
-rw-r--r--spec/factories/ci/daily_build_group_report_results.rb1
-rw-r--r--spec/factories/ci/job_artifacts.rb20
-rw-r--r--spec/factories/ci/pipeline_artifacts.rb33
-rw-r--r--spec/factories/ci/pipelines.rb24
-rw-r--r--spec/factories/ci/processable.rb26
-rw-r--r--spec/factories/ci/reports/codequality_degradations.rb98
-rw-r--r--spec/factories/ci/resource.rb2
-rw-r--r--spec/factories/design_management/design_at_version.rb2
-rw-r--r--spec/factories/diff_position.rb2
-rw-r--r--spec/factories/merge_request_diffs.rb6
-rw-r--r--spec/factories/merge_requests.rb45
-rw-r--r--spec/factories/notes.rb16
-rw-r--r--spec/factories/packages.rb54
-rw-r--r--spec/factories/packages/debian/component_file.rb39
-rw-r--r--spec/factories/packages/debian/distribution.rb2
-rw-r--r--spec/factories/packages/debian/group_component.rb9
-rw-r--r--spec/factories/packages/debian/project_component.rb9
-rw-r--r--spec/factories/packages/debian/publication.rb9
-rw-r--r--spec/factories/packages/package_file.rb16
-rw-r--r--spec/factories/packages/rubygems/metadata.rb9
-rw-r--r--spec/factories/pages_deployments.rb18
-rw-r--r--spec/factories/projects.rb4
-rw-r--r--spec/factories/sequences.rb2
-rw-r--r--spec/factories/services_data.rb3
-rw-r--r--spec/factories/token_with_ivs.rb9
-rw-r--r--spec/factories/u2f_registrations.rb2
-rw-r--r--spec/factories/usage_data.rb4
30 files changed, 475 insertions, 54 deletions
diff --git a/spec/factories/audit_events.rb b/spec/factories/audit_events.rb
index 4e72976a9e5..05b86d2f13b 100644
--- a/spec/factories/audit_events.rb
+++ b/spec/factories/audit_events.rb
@@ -49,6 +49,21 @@ FactoryBot.define do
end
end
+ trait :unauthenticated do
+ author_id { -1 }
+ details do
+ {
+ custom_message: 'Custom action',
+ author_name: 'An unauthenticated user',
+ target_id: target_project.id,
+ target_type: 'Project',
+ target_details: target_project.name,
+ ip_address: '127.0.0.1',
+ entity_path: target_project.full_path
+ }
+ end
+ end
+
trait :group_event do
transient { target_group { association(:group) } }
diff --git a/spec/factories/ci/bridge.rb b/spec/factories/ci/bridge.rb
index 7727a468633..6cbcabca7ab 100644
--- a/spec/factories/ci/bridge.rb
+++ b/spec/factories/ci/bridge.rb
@@ -1,17 +1,10 @@
# frozen_string_literal: true
FactoryBot.define do
- factory :ci_bridge, class: 'Ci::Bridge' do
+ factory :ci_bridge, class: 'Ci::Bridge', parent: :ci_processable do
name { 'bridge' }
- stage { 'test' }
- stage_idx { 0 }
- ref { 'master' }
- tag { false }
created_at { '2013-10-29 09:50:00 CET' }
status { :created }
- scheduling_type { 'stage' }
-
- pipeline factory: :ci_pipeline
trait :variables do
yaml_variables do
@@ -53,6 +46,11 @@ FactoryBot.define do
finished_at { '2013-10-29 09:53:28 CET' }
end
+ trait :success do
+ finished
+ status { 'success' }
+ end
+
trait :failed do
finished
status { 'failed' }
@@ -75,5 +73,9 @@ FactoryBot.define do
trait :playable do
manual
end
+
+ trait :allowed_to_fail do
+ allow_failure { true }
+ end
end
end
diff --git a/spec/factories/ci/builds.rb b/spec/factories/ci/builds.rb
index 24abad66530..c4f9a4ce82b 100644
--- a/spec/factories/ci/builds.rb
+++ b/spec/factories/ci/builds.rb
@@ -3,15 +3,10 @@
include ActionDispatch::TestProcess
FactoryBot.define do
- factory :ci_build, class: 'Ci::Build' do
+ factory :ci_build, class: 'Ci::Build', parent: :ci_processable do
name { 'test' }
- stage { 'test' }
- stage_idx { 0 }
- ref { 'master' }
- tag { false }
add_attribute(:protected) { false }
created_at { 'Di 29. Okt 09:50:00 CET 2013' }
- scheduling_type { 'stage' }
pending
options do
@@ -28,7 +23,6 @@ FactoryBot.define do
]
end
- pipeline factory: :ci_pipeline
project { pipeline.project }
trait :degenerated do
@@ -79,10 +73,6 @@ FactoryBot.define do
status { 'created' }
end
- trait :waiting_for_resource do
- status { 'waiting_for_resource' }
- end
-
trait :preparing do
status { 'preparing' }
end
@@ -213,14 +203,6 @@ FactoryBot.define do
trigger_request factory: :ci_trigger_request
end
- trait :resource_group do
- waiting_for_resource_at { 5.minutes.ago }
-
- after(:build) do |build, evaluator|
- build.resource_group = create(:ci_resource_group, project: build.project)
- end
- end
-
trait :with_deployment do
after(:build) do |build, evaluator|
##
@@ -314,6 +296,18 @@ FactoryBot.define do
end
end
+ trait :sast_report do
+ after(:build) do |build|
+ build.job_artifacts << create(:ci_job_artifact, :sast, job: build)
+ end
+ end
+
+ trait :secret_detection_report do
+ after(:build) do |build|
+ build.job_artifacts << create(:ci_job_artifact, :secret_detection, job: build)
+ end
+ end
+
trait :test_reports do
after(:build) do |build|
build.job_artifacts << create(:ci_job_artifact, :junit, job: build)
diff --git a/spec/factories/ci/daily_build_group_report_results.rb b/spec/factories/ci/daily_build_group_report_results.rb
index d836ee9567c..55f4f116c97 100644
--- a/spec/factories/ci/daily_build_group_report_results.rb
+++ b/spec/factories/ci/daily_build_group_report_results.rb
@@ -7,6 +7,7 @@ FactoryBot.define do
project
last_pipeline factory: :ci_pipeline
group_name { 'rspec' }
+ group
data do
{ 'coverage' => 77.0 }
end
diff --git a/spec/factories/ci/job_artifacts.rb b/spec/factories/ci/job_artifacts.rb
index ad98e9d1f24..bfd8506566b 100644
--- a/spec/factories/ci/job_artifacts.rb
+++ b/spec/factories/ci/job_artifacts.rb
@@ -269,6 +269,26 @@ FactoryBot.define do
end
end
+ trait :sast do
+ file_type { :sast }
+ file_format { :raw }
+
+ after(:build) do |artifact, _|
+ artifact.file = fixture_file_upload(
+ Rails.root.join('spec/fixtures/security_reports/master/gl-sast-report.json'), 'application/json')
+ end
+ end
+
+ trait :secret_detection do
+ file_type { :secret_detection }
+ file_format { :raw }
+
+ after(:build) do |artifact, _|
+ artifact.file = fixture_file_upload(
+ Rails.root.join('spec/fixtures/security_reports/master/gl-secret-detection-report.json'), 'application/json')
+ end
+ end
+
trait :lsif do
file_type { :lsif }
file_format { :zip }
diff --git a/spec/factories/ci/pipeline_artifacts.rb b/spec/factories/ci/pipeline_artifacts.rb
index fa33609dd6c..05ff7afed7c 100644
--- a/spec/factories/ci/pipeline_artifacts.rb
+++ b/spec/factories/ci/pipeline_artifacts.rb
@@ -4,18 +4,30 @@ FactoryBot.define do
factory :ci_pipeline_artifact, class: 'Ci::PipelineArtifact' do
pipeline factory: :ci_pipeline
project { pipeline.project }
- file_type { :code_coverage }
file_format { :raw }
file_store { ObjectStorage::SUPPORTED_STORES.first }
- size { 1.megabytes }
-
+ size { 1.megabyte }
+ file_type { :code_coverage }
after(:build) do |artifact, _evaluator|
artifact.file = fixture_file_upload(
Rails.root.join('spec/fixtures/pipeline_artifacts/code_coverage.json'), 'application/json')
end
- trait :with_multibyte_characters do
+ trait :with_coverage_report do
+ file_type { :code_coverage }
+
+ after(:build) do |artifact, _evaluator|
+ artifact.file = fixture_file_upload(
+ Rails.root.join('spec/fixtures/pipeline_artifacts/code_coverage.json'), 'application/json')
+ end
+
+ size { file.size }
+ end
+
+ trait :with_coverage_multibyte_characters do
+ file_type { :code_coverage }
size { { "utf8" => "✓" }.to_json.bytesize }
+
after(:build) do |artifact, _evaluator|
artifact.file = CarrierWaveStringFile.new_file(
file_content: { "utf8" => "✓" }.to_json,
@@ -26,12 +38,25 @@ FactoryBot.define do
end
trait :with_code_coverage_with_multiple_files do
+ file_type { :code_coverage }
+
after(:build) do |artifact, _evaluator|
artifact.file = fixture_file_upload(
Rails.root.join('spec/fixtures/pipeline_artifacts/code_coverage_with_multiple_files.json'), 'application/json'
)
end
+ size { 1.megabyte }
+ end
+
+ trait :with_codequality_mr_diff_report do
+ file_type { :code_quality_mr_diff }
+
+ after(:build) do |artifact, _evaluator|
+ artifact.file = fixture_file_upload(
+ Rails.root.join('spec/fixtures/pipeline_artifacts/code_quality_mr_diff.json'), 'application/json')
+ end
+
size { file.size }
end
end
diff --git a/spec/factories/ci/pipelines.rb b/spec/factories/ci/pipelines.rb
index 86a8b008e48..e0d7ad3c133 100644
--- a/spec/factories/ci/pipelines.rb
+++ b/spec/factories/ci/pipelines.rb
@@ -101,6 +101,22 @@ FactoryBot.define do
end
end
+ trait :with_sast_report do
+ status { :success }
+
+ after(:build) do |pipeline, evaluator|
+ pipeline.builds << build(:ci_build, :sast_report, pipeline: pipeline, project: pipeline.project)
+ end
+ end
+
+ trait :with_secret_detection_report do
+ status { :success }
+
+ after(:build) do |pipeline, evaluator|
+ pipeline.builds << build(:ci_build, :secret_detection_report, pipeline: pipeline, project: pipeline.project)
+ end
+ end
+
trait :with_test_reports do
status { :success }
@@ -159,7 +175,13 @@ FactoryBot.define do
trait :with_coverage_report_artifact do
after(:build) do |pipeline, evaluator|
- pipeline.pipeline_artifacts << build(:ci_pipeline_artifact, pipeline: pipeline, project: pipeline.project)
+ pipeline.pipeline_artifacts << build(:ci_pipeline_artifact, :with_coverage_report, pipeline: pipeline, project: pipeline.project)
+ end
+ end
+
+ trait :with_codequality_mr_diff_report do
+ after(:build) do |pipeline, evaluator|
+ pipeline.pipeline_artifacts << build(:ci_pipeline_artifact, :with_codequality_mr_diff_report, pipeline: pipeline, project: pipeline.project)
end
end
diff --git a/spec/factories/ci/processable.rb b/spec/factories/ci/processable.rb
new file mode 100644
index 00000000000..0550f4c23fa
--- /dev/null
+++ b/spec/factories/ci/processable.rb
@@ -0,0 +1,26 @@
+# frozen_string_literal: true
+
+FactoryBot.define do
+ factory :ci_processable, class: 'Ci::Processable' do
+ name { 'processable' }
+ stage { 'test' }
+ stage_idx { 0 }
+ ref { 'master' }
+ tag { false }
+ pipeline factory: :ci_pipeline
+ project { pipeline.project }
+ scheduling_type { 'stage' }
+
+ trait :waiting_for_resource do
+ status { 'waiting_for_resource' }
+ end
+
+ trait :resource_group do
+ waiting_for_resource_at { 5.minutes.ago }
+
+ after(:build) do |processable, evaluator|
+ processable.resource_group = create(:ci_resource_group, project: processable.project)
+ end
+ end
+ end
+end
diff --git a/spec/factories/ci/reports/codequality_degradations.rb b/spec/factories/ci/reports/codequality_degradations.rb
new file mode 100644
index 00000000000..d82157b457a
--- /dev/null
+++ b/spec/factories/ci/reports/codequality_degradations.rb
@@ -0,0 +1,98 @@
+# frozen_string_literal: true
+
+FactoryBot.define do
+ factory :codequality_degradation_1, class: Hash do
+ skip_create
+
+ initialize_with do
+ {
+ "categories": [
+ "Complexity"
+ ],
+ "check_name": "argument_count",
+ "content": {
+ "body": ""
+ },
+ "description": "Avoid parameter lists longer than 5 parameters. [12/5]",
+ "fingerprint": "15cdb5c53afd42bc22f8ca366a08d547",
+ "location": {
+ "path": "file_a.rb",
+ "lines": {
+ "begin": 10,
+ "end": 10
+ }
+ },
+ "other_locations": [],
+ "remediation_points": 900000,
+ "severity": "major",
+ "type": "issue",
+ "engine_name": "structure"
+ }.with_indifferent_access
+ end
+ end
+
+ factory :codequality_degradation_2, class: Hash do
+ skip_create
+
+ initialize_with do
+ {
+ "categories": [
+ "Complexity"
+ ],
+ "check_name": "argument_count",
+ "content": {
+ "body": ""
+ },
+ "description": "Method `new_array` has 12 arguments (exceeds 4 allowed). Consider refactoring.",
+ "fingerprint": "f3bdc1e8c102ba5fbd9e7f6cda51c95e",
+ "location": {
+ "path": "file_a.rb",
+ "lines": {
+ "begin": 10,
+ "end": 10
+ }
+ },
+ "other_locations": [],
+ "remediation_points": 900000,
+ "severity": "major",
+ "type": "issue",
+ "engine_name": "structure"
+ }.with_indifferent_access
+ end
+ end
+
+ factory :codequality_degradation_3, class: Hash do
+ skip_create
+
+ initialize_with do
+ {
+ "type": "Issue",
+ "check_name": "Rubocop/Metrics/ParameterLists",
+ "description": "Avoid parameter lists longer than 5 parameters. [12/5]",
+ "categories": [
+ "Complexity"
+ ],
+ "remediation_points": 550000,
+ "location": {
+ "path": "file_b.rb",
+ "positions": {
+ "begin": {
+ "column": 14,
+ "line": 10
+ },
+ "end": {
+ "column": 39,
+ "line": 10
+ }
+ }
+ },
+ "content": {
+ "body": "This cop checks for methods with too many parameters.\nThe maximum number of parameters is configurable.\nKeyword arguments can optionally be excluded from the total count."
+ },
+ "engine_name": "rubocop",
+ "fingerprint": "ab5f8b935886b942d621399f5a2ca16e",
+ "severity": "minor"
+ }.with_indifferent_access
+ end
+ end
+end
diff --git a/spec/factories/ci/resource.rb b/spec/factories/ci/resource.rb
index 515329506e5..dec26013a25 100644
--- a/spec/factories/ci/resource.rb
+++ b/spec/factories/ci/resource.rb
@@ -5,7 +5,7 @@ FactoryBot.define do
resource_group factory: :ci_resource_group
trait(:retained) do
- build factory: :ci_build
+ processable factory: :ci_build
end
end
end
diff --git a/spec/factories/design_management/design_at_version.rb b/spec/factories/design_management/design_at_version.rb
index 3d85269ee27..6c0848ed11f 100644
--- a/spec/factories/design_management/design_at_version.rb
+++ b/spec/factories/design_management/design_at_version.rb
@@ -17,7 +17,7 @@ FactoryBot.define do
attrs[:design] ||= association(:design, issue: issue)
attrs[:version] ||= association(:design_version, issue: issue)
- new(attrs)
+ new(**attrs)
end
end
end
diff --git a/spec/factories/diff_position.rb b/spec/factories/diff_position.rb
index 0185c4ce156..41f9a7b574e 100644
--- a/spec/factories/diff_position.rb
+++ b/spec/factories/diff_position.rb
@@ -24,7 +24,7 @@ FactoryBot.define do
head_sha { diff_refs&.head_sha }
start_sha { diff_refs&.start_sha }
- initialize_with { new(attributes) }
+ initialize_with { new(**attributes) }
trait :moved do
new_path { 'path/to/new.file' }
diff --git a/spec/factories/merge_request_diffs.rb b/spec/factories/merge_request_diffs.rb
index 481cabdae6d..f93f3f22109 100644
--- a/spec/factories/merge_request_diffs.rb
+++ b/spec/factories/merge_request_diffs.rb
@@ -10,12 +10,18 @@ FactoryBot.define do
head_commit_sha { Digest::SHA1.hexdigest(SecureRandom.hex) }
start_commit_sha { Digest::SHA1.hexdigest(SecureRandom.hex) }
+ diff_type { :regular }
+
trait :external do
external_diff { fixture_file_upload("spec/fixtures/doc_sample.txt", "plain/txt") }
stored_externally { true }
importing { true } # this avoids setting the state to 'empty'
end
+ trait :merge_head do
+ diff_type { :merge_head }
+ end
+
factory :external_merge_request_diff, traits: [:external]
end
end
diff --git a/spec/factories/merge_requests.rb b/spec/factories/merge_requests.rb
index e69743122cc..fce44c2cee0 100644
--- a/spec/factories/merge_requests.rb
+++ b/spec/factories/merge_requests.rb
@@ -21,7 +21,12 @@ FactoryBot.define do
merge_status { "can_be_merged" }
- trait :with_diffs do
+ trait :draft_merge_request do
+ title { generate(:draft_title) }
+ end
+
+ trait :wip_merge_request do
+ title { generate(:wip_title) }
end
trait :jira_title do
@@ -200,6 +205,18 @@ FactoryBot.define do
end
end
+ trait :with_codequality_mr_diff_reports do
+ after(:build) do |merge_request|
+ merge_request.head_pipeline = build(
+ :ci_pipeline,
+ :success,
+ :with_codequality_mr_diff_report,
+ project: merge_request.source_project,
+ ref: merge_request.source_branch,
+ sha: merge_request.diff_head_sha)
+ end
+ end
+
trait :with_terraform_reports do
after(:build) do |merge_request|
merge_request.head_pipeline = build(
@@ -212,6 +229,30 @@ FactoryBot.define do
end
end
+ trait :with_sast_reports do
+ after(:build) do |merge_request|
+ merge_request.head_pipeline = build(
+ :ci_pipeline,
+ :success,
+ :with_sast_report,
+ project: merge_request.source_project,
+ ref: merge_request.source_branch,
+ sha: merge_request.diff_head_sha)
+ end
+ end
+
+ trait :with_secret_detection_reports do
+ after(:build) do |merge_request|
+ merge_request.head_pipeline = build(
+ :ci_pipeline,
+ :success,
+ :with_secret_detection_report,
+ project: merge_request.source_project,
+ ref: merge_request.source_branch,
+ sha: merge_request.diff_head_sha)
+ end
+ end
+
trait :with_exposed_artifacts do
after(:build) do |merge_request|
merge_request.head_pipeline = build(
@@ -294,7 +335,7 @@ FactoryBot.define do
factory :closed_merge_request, traits: [:closed]
factory :reopened_merge_request, traits: [:opened]
factory :invalid_merge_request, traits: [:invalid]
- factory :merge_request_with_diffs, traits: [:with_diffs]
+ factory :merge_request_with_diffs
factory :merge_request_with_diff_notes do
after(:create) do |mr|
create(:diff_note_on_merge_request, noteable: mr, project: mr.source_project)
diff --git a/spec/factories/notes.rb b/spec/factories/notes.rb
index 4b1f3194ce5..299d08972b7 100644
--- a/spec/factories/notes.rb
+++ b/spec/factories/notes.rb
@@ -8,7 +8,7 @@ FactoryBot.define do
factory :note do
project
note { generate(:title) }
- author { project&.creator || create(:user) }
+ author { project&.creator || association(:user) }
on_issue
factory :note_on_commit, traits: [:on_commit]
@@ -55,7 +55,7 @@ FactoryBot.define do
end
position do
- build(:text_diff_position,
+ association(:text_diff_position,
file: "files/ruby/popen.rb",
old_line: nil,
new_line: line_number,
@@ -64,7 +64,7 @@ FactoryBot.define do
trait :folded_position do
position do
- build(:text_diff_position,
+ association(:text_diff_position,
file: "files/ruby/popen.rb",
old_line: 1,
new_line: 1,
@@ -74,7 +74,7 @@ FactoryBot.define do
factory :image_diff_note_on_merge_request do
position do
- build(:image_diff_position,
+ association(:image_diff_position,
file: "files/images/any_image.png",
diff_refs: diff_refs)
end
@@ -90,7 +90,7 @@ FactoryBot.define do
end
position do
- build(:text_diff_position,
+ association(:text_diff_position,
file: "files/ruby/popen.rb",
old_line: nil,
new_line: line_number,
@@ -100,7 +100,11 @@ FactoryBot.define do
end
factory :diff_note_on_design, parent: :note, traits: [:on_design], class: 'DiffNote' do
- position { build(:image_diff_position, file: noteable.full_path, diff_refs: noteable.diff_refs) }
+ position do
+ association(:image_diff_position,
+ file: noteable.full_path,
+ diff_refs: noteable.diff_refs)
+ end
end
trait :on_commit do
diff --git a/spec/factories/packages.rb b/spec/factories/packages.rb
index 31f1aabe5dd..2c64abefb01 100644
--- a/spec/factories/packages.rb
+++ b/spec/factories/packages.rb
@@ -6,6 +6,15 @@ FactoryBot.define do
name { 'my/company/app/my-app' }
sequence(:version) { |n| "1.#{n}-SNAPSHOT" }
package_type { :maven }
+ status { :default }
+
+ trait :hidden do
+ status { :hidden }
+ end
+
+ trait :processing do
+ status { :processing }
+ end
factory :maven_package do
maven_metadatum
@@ -21,6 +30,23 @@ FactoryBot.define do
end
end
+ factory :rubygems_package do
+ sequence(:name) { |n| "my_gem_#{n}" }
+ sequence(:version) { |n| "1.#{n}" }
+ package_type { :rubygems }
+
+ after :create do |package|
+ create :package_file, :gem, package: package
+ create :package_file, :gemspec, package: package
+ end
+
+ trait(:with_metadatum) do
+ after :build do |pkg|
+ pkg.rubygems_metadatum = build(:rubygems_metadatum)
+ end
+ end
+ end
+
factory :debian_package do
sequence(:name) { |n| "package-#{n}" }
sequence(:version) { |n| "1.0-#{n}" }
@@ -29,6 +55,15 @@ FactoryBot.define do
transient do
without_package_files { false }
file_metadatum_trait { :keep }
+ published_in { :create }
+ end
+
+ after :build do |package, evaluator|
+ if evaluator.published_in == :create
+ create(: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|
@@ -50,6 +85,7 @@ FactoryBot.define do
transient do
without_package_files { false }
file_metadatum_trait { :unknown }
+ published_in { nil }
end
end
end
@@ -176,6 +212,24 @@ FactoryBot.define do
composer_json { { name: 'foo' } }
end
+ factory :composer_cache_file, class: 'Packages::Composer::CacheFile' do
+ group
+
+ file_sha256 { '1' * 64 }
+
+ transient do
+ file_fixture { 'spec/fixtures/packages/composer/package.json' }
+ end
+
+ after(:build) do |cache_file, evaluator|
+ cache_file.file = fixture_file_upload(evaluator.file_fixture)
+ end
+
+ trait(:object_storage) do
+ file_store { Packages::Composer::CacheUploader::Store::REMOTE }
+ end
+ end
+
factory :maven_metadatum, class: 'Packages::Maven::Metadatum' do
association :package, package_type: :maven
path { 'my/company/app/my-app/1.0-SNAPSHOT' }
diff --git a/spec/factories/packages/debian/component_file.rb b/spec/factories/packages/debian/component_file.rb
new file mode 100644
index 00000000000..19157b3c8c6
--- /dev/null
+++ b/spec/factories/packages/debian/component_file.rb
@@ -0,0 +1,39 @@
+# frozen_string_literal: true
+
+FactoryBot.define do
+ factory :debian_project_component_file, class: 'Packages::Debian::ProjectComponentFile' do
+ component { association(:debian_project_component) }
+ architecture { association(:debian_project_architecture, distribution: component.distribution) }
+
+ factory :debian_group_component_file, class: 'Packages::Debian::GroupComponentFile' do
+ component { association(:debian_group_component) }
+ architecture { association(:debian_group_architecture, distribution: component.distribution) }
+ end
+
+ file_type { :packages }
+
+ after(:build) do |component_file, evaluator|
+ component_file.file = fixture_file_upload('spec/fixtures/packages/debian/distribution/Packages')
+ end
+
+ file_md5 { '12345abcde' }
+ file_sha256 { 'be93151dc23ac34a82752444556fe79b32c7a1ad' }
+
+ trait(:packages) do
+ file_type { :packages }
+ end
+
+ trait(:source) do
+ file_type { :source }
+ architecture { nil }
+ end
+
+ trait(:di_packages) do
+ file_type { :di_packages }
+ end
+
+ trait(:object_storage) do
+ file_store { Packages::PackageFileUploader::Store::REMOTE }
+ end
+ end
+end
diff --git a/spec/factories/packages/debian/distribution.rb b/spec/factories/packages/debian/distribution.rb
index 2015f2923b8..619308e4e18 100644
--- a/spec/factories/packages/debian/distribution.rb
+++ b/spec/factories/packages/debian/distribution.rb
@@ -14,7 +14,7 @@ FactoryBot.define do
trait(:with_file) do
after(:build) do |distribution, evaluator|
- distribution.file = fixture_file_upload('spec/fixtures/packages/debian/README.md')
+ distribution.file = fixture_file_upload('spec/fixtures/packages/debian/distribution/Release')
end
end
diff --git a/spec/factories/packages/debian/group_component.rb b/spec/factories/packages/debian/group_component.rb
new file mode 100644
index 00000000000..92d438be389
--- /dev/null
+++ b/spec/factories/packages/debian/group_component.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+FactoryBot.define do
+ factory :debian_group_component, class: 'Packages::Debian::GroupComponent' do
+ distribution { association(:debian_group_distribution) }
+
+ sequence(:name) { |n| "group-component-#{n}" }
+ end
+end
diff --git a/spec/factories/packages/debian/project_component.rb b/spec/factories/packages/debian/project_component.rb
new file mode 100644
index 00000000000..a56aec4cef0
--- /dev/null
+++ b/spec/factories/packages/debian/project_component.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+FactoryBot.define do
+ factory :debian_project_component, class: 'Packages::Debian::ProjectComponent' do
+ distribution { association(:debian_project_distribution) }
+
+ sequence(:name) { |n| "project-component-#{n}" }
+ end
+end
diff --git a/spec/factories/packages/debian/publication.rb b/spec/factories/packages/debian/publication.rb
new file mode 100644
index 00000000000..314c7064e9b
--- /dev/null
+++ b/spec/factories/packages/debian/publication.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+FactoryBot.define do
+ factory :debian_publication, class: 'Packages::Debian::Publication' do
+ package { association(:debian_package, published_in: nil) }
+
+ distribution { association(:debian_project_distribution, project: package.project) }
+ end
+end
diff --git a/spec/factories/packages/package_file.rb b/spec/factories/packages/package_file.rb
index c328c01ec95..6d8b119040e 100644
--- a/spec/factories/packages/package_file.rb
+++ b/spec/factories/packages/package_file.rb
@@ -221,6 +221,22 @@ FactoryBot.define do
size { 300.kilobytes }
end
+ trait(:gem) do
+ package
+ file_fixture { 'spec/fixtures/packages/rubygems/package-0.0.1.gem' }
+ file_name { 'package-0.0.1.gem' }
+ file_sha1 { '5fe852b2a6abd96c22c11fa1ff2fb19d9ce58b57' }
+ size { 4.kilobytes }
+ end
+
+ trait(:gemspec) do
+ package
+ file_fixture { 'spec/fixtures/packages/rubygems/package.gemspec' }
+ file_name { 'package.gemspec' }
+ file_sha1 { '5fe852b2a6abd96c22c11fa1ff2fb19d9ce58b57' }
+ size { 242.bytes }
+ end
+
trait(:pypi) do
package
file_fixture { 'spec/fixtures/packages/pypi/sample-project.tar.gz' }
diff --git a/spec/factories/packages/rubygems/metadata.rb b/spec/factories/packages/rubygems/metadata.rb
new file mode 100644
index 00000000000..9f03bf80dc3
--- /dev/null
+++ b/spec/factories/packages/rubygems/metadata.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+FactoryBot.define do
+ factory :rubygems_metadatum, class: 'Packages::Rubygems::Metadatum' do
+ package { association(:rubygems_package) }
+ authors { FFaker::Name.name }
+ email { FFaker::Internet.email }
+ end
+end
diff --git a/spec/factories/pages_deployments.rb b/spec/factories/pages_deployments.rb
index 56aab4fa9f3..d3e2fefb4ae 100644
--- a/spec/factories/pages_deployments.rb
+++ b/spec/factories/pages_deployments.rb
@@ -4,12 +4,20 @@ FactoryBot.define do
factory :pages_deployment, class: 'PagesDeployment' do
project
- after(:build) do |deployment, _evaluator|
- filepath = Rails.root.join("spec/fixtures/pages.zip")
+ transient do
+ filename { nil }
+ end
+
+ trait(:migrated) do
+ filename { PagesDeployment::MIGRATED_FILE_NAME }
+ end
+
+ after(:build) do |deployment, evaluator|
+ file = UploadedFile.new("spec/fixtures/pages.zip", filename: evaluator.filename)
- deployment.file = fixture_file_upload(filepath)
- deployment.file_sha256 = Digest::SHA256.file(filepath).hexdigest
- ::Zip::File.open(filepath) do |zip_archive|
+ deployment.file = file
+ deployment.file_sha256 = Digest::SHA256.file(file.path).hexdigest
+ ::Zip::File.open(file.path) do |zip_archive|
deployment.file_count = zip_archive.count
end
end
diff --git a/spec/factories/projects.rb b/spec/factories/projects.rb
index 54a5dea49bb..e8e0362fc62 100644
--- a/spec/factories/projects.rb
+++ b/spec/factories/projects.rb
@@ -40,7 +40,7 @@ FactoryBot.define do
group_runners_enabled { nil }
merge_pipelines_enabled { nil }
merge_trains_enabled { nil }
- ci_keep_latest_artifact { nil }
+ keep_latest_artifact { nil }
import_status { nil }
import_jid { nil }
import_correlation_id { nil }
@@ -86,7 +86,7 @@ FactoryBot.define do
project.group_runners_enabled = evaluator.group_runners_enabled unless evaluator.group_runners_enabled.nil?
project.merge_pipelines_enabled = evaluator.merge_pipelines_enabled unless evaluator.merge_pipelines_enabled.nil?
project.merge_trains_enabled = evaluator.merge_trains_enabled unless evaluator.merge_trains_enabled.nil?
- project.ci_keep_latest_artifact = evaluator.ci_keep_latest_artifact unless evaluator.ci_keep_latest_artifact.nil?
+ project.keep_latest_artifact = evaluator.keep_latest_artifact unless evaluator.keep_latest_artifact.nil?
project.restrict_user_defined_variables = evaluator.restrict_user_defined_variables unless evaluator.restrict_user_defined_variables.nil?
if evaluator.import_status
diff --git a/spec/factories/sequences.rb b/spec/factories/sequences.rb
index b338fd99625..f9952cd9966 100644
--- a/spec/factories/sequences.rb
+++ b/spec/factories/sequences.rb
@@ -15,6 +15,8 @@ FactoryBot.define do
sequence(:sha) { |n| Digest::SHA1.hexdigest("commit-like-#{n}") }
sequence(:oid) { |n| Digest::SHA2.hexdigest("oid-like-#{n}") }
sequence(:variable) { |n| "var#{n}" }
+ sequence(:draft_title) { |n| "Draft: #{n}" }
+ sequence(:wip_title) { |n| "WIP: #{n}" }
sequence(:jira_title) { |n| "[PROJ-#{n}]: fix bug" }
sequence(:jira_branch) { |n| "feature/PROJ-#{n}" }
end
diff --git a/spec/factories/services_data.rb b/spec/factories/services_data.rb
index c62fff2af55..7b6a705c791 100644
--- a/spec/factories/services_data.rb
+++ b/spec/factories/services_data.rb
@@ -1,6 +1,7 @@
# frozen_string_literal: true
-# these factories should never be called directly, they are used when creating services
+# These factories should not be called directly unless we are testing a _tracker_data model.
+# The factories are used when creating integrations.
FactoryBot.define do
factory :jira_tracker_data do
service
diff --git a/spec/factories/token_with_ivs.rb b/spec/factories/token_with_ivs.rb
new file mode 100644
index 00000000000..68989f6c5bc
--- /dev/null
+++ b/spec/factories/token_with_ivs.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+FactoryBot.define do
+ factory :token_with_iv do
+ hashed_token { ::Digest::SHA256.digest(SecureRandom.hex(50)) }
+ iv { ::Digest::SHA256.digest(SecureRandom.hex(50)) }
+ hashed_plaintext_token { ::Digest::SHA256.digest(SecureRandom.hex(50)) }
+ end
+end
diff --git a/spec/factories/u2f_registrations.rb b/spec/factories/u2f_registrations.rb
index 7017b0ee9e7..40ad221415c 100644
--- a/spec/factories/u2f_registrations.rb
+++ b/spec/factories/u2f_registrations.rb
@@ -2,6 +2,8 @@
FactoryBot.define do
factory :u2f_registration do
+ user
+
certificate { FFaker::BaconIpsum.characters(728) }
key_handle { FFaker::BaconIpsum.characters(86) }
public_key { FFaker::BaconIpsum.characters(88) }
diff --git a/spec/factories/usage_data.rb b/spec/factories/usage_data.rb
index 0ed4176109a..714f8451f39 100644
--- a/spec/factories/usage_data.rb
+++ b/spec/factories/usage_data.rb
@@ -121,8 +121,8 @@ FactoryBot.define do
env = create(:environment, project: projects[3])
[3, 31].each do |n|
deployment_options = { created_at: n.days.ago, project: env.project, environment: env }
- create(:deployment, :failed, deployment_options)
- create(:deployment, :success, deployment_options)
+ create(:deployment, :failed, **deployment_options)
+ create(:deployment, :success, **deployment_options)
create_list(:project_snippet, 2, project: projects[0], created_at: n.days.ago)
create(:personal_snippet, created_at: n.days.ago)
end