summaryrefslogtreecommitdiff
path: root/spec/factories/ci
diff options
context:
space:
mode:
Diffstat (limited to 'spec/factories/ci')
-rw-r--r--spec/factories/ci/builds.rb25
-rw-r--r--spec/factories/ci/job_artifacts.rb2
-rw-r--r--spec/factories/ci/pipeline_metadata.rb2
-rw-r--r--spec/factories/ci/pipelines.rb10
-rw-r--r--spec/factories/ci/processable.rb2
-rw-r--r--spec/factories/ci/reports/codequality_degradations.rb9
-rw-r--r--spec/factories/ci/reports/sbom/components.rb14
-rw-r--r--spec/factories/ci/reports/sbom/reports.rb6
-rw-r--r--spec/factories/ci/secure_files.rb9
-rw-r--r--spec/factories/ci/stages.rb2
10 files changed, 62 insertions, 19 deletions
diff --git a/spec/factories/ci/builds.rb b/spec/factories/ci/builds.rb
index 9a3b2837ab8..b88d6b5fda4 100644
--- a/spec/factories/ci/builds.rb
+++ b/spec/factories/ci/builds.rb
@@ -24,6 +24,16 @@ FactoryBot.define do
project { pipeline.project }
+ trait :with_token do
+ transient do
+ generate_token { true }
+ end
+
+ after(:build) do |build, evaluator|
+ build.ensure_token if evaluator.generate_token
+ end
+ end
+
trait :degenerated do
options { nil }
yaml_variables { nil }
@@ -93,6 +103,7 @@ FactoryBot.define do
end
trait :pending do
+ with_token
queued_at { 'Di 29. Okt 09:50:59 CET 2013' }
status { 'pending' }
@@ -100,6 +111,7 @@ FactoryBot.define do
trait :created do
status { 'created' }
+ generate_token { false }
end
trait :preparing do
@@ -303,14 +315,11 @@ FactoryBot.define do
# Build deployment/environment relations if environment name is set
# to the job. If `build.deployment` has already been set, it doesn't
# build a new instance.
- environment = Gitlab::Ci::Pipeline::Seed::Environment.new(build).to_resource
+ Environments::CreateForBuildService.new.execute(build)
+ end
- build.assign_attributes(
- deployment: Gitlab::Ci::Pipeline::Seed::Deployment.new(build, environment).to_resource,
- metadata_attributes: {
- expanded_environment_name: environment.name
- }
- )
+ after(:create) do |build, evaluator|
+ Deployments::CreateForBuildService.new.execute(build)
end
end
@@ -716,7 +725,7 @@ FactoryBot.define do
trait :with_runner_session do
after(:build) do |build|
- build.build_runner_session(url: 'https://localhost')
+ build.build_runner_session(url: 'https://gitlab.example.com')
end
end
diff --git a/spec/factories/ci/job_artifacts.rb b/spec/factories/ci/job_artifacts.rb
index 304d77e8521..7569e832c60 100644
--- a/spec/factories/ci/job_artifacts.rb
+++ b/spec/factories/ci/job_artifacts.rb
@@ -20,6 +20,8 @@ FactoryBot.define do
after :build do |artifact|
artifact.project ||= artifact.job.project
+
+ artifact.job&.valid?
end
trait :raw do
diff --git a/spec/factories/ci/pipeline_metadata.rb b/spec/factories/ci/pipeline_metadata.rb
index 600cfaa92c6..7849fa1fd4b 100644
--- a/spec/factories/ci/pipeline_metadata.rb
+++ b/spec/factories/ci/pipeline_metadata.rb
@@ -2,7 +2,7 @@
FactoryBot.define do
factory :ci_pipeline_metadata, class: 'Ci::PipelineMetadata' do
- title { 'Pipeline title' }
+ name { 'Pipeline name' }
pipeline factory: :ci_empty_pipeline
project
diff --git a/spec/factories/ci/pipelines.rb b/spec/factories/ci/pipelines.rb
index 650b8647237..891628a0fc2 100644
--- a/spec/factories/ci/pipelines.rb
+++ b/spec/factories/ci/pipelines.rb
@@ -8,7 +8,7 @@ FactoryBot.define do
sha { 'b83d6e391c22777fca1ed3012fce84f633d7fed0' }
status { 'pending' }
add_attribute(:protected) { false }
- partition_id { 1234 }
+ partition_id { 100 }
project
@@ -19,7 +19,7 @@ FactoryBot.define do
transient { child_of { nil } }
transient { upstream_of { nil } }
- transient { title { nil } }
+ transient { name { nil } }
after(:build) do |pipeline, evaluator|
if evaluator.child_of
@@ -29,8 +29,8 @@ FactoryBot.define do
pipeline.ensure_project_iid!
- if evaluator.title
- pipeline.pipeline_metadata = build(:ci_pipeline_metadata, title: evaluator.title, project: pipeline.project, pipeline: pipeline)
+ if evaluator.name
+ pipeline.pipeline_metadata = build(:ci_pipeline_metadata, name: evaluator.name, project: pipeline.project, pipeline: pipeline)
end
end
@@ -54,7 +54,7 @@ FactoryBot.define do
end
factory :ci_pipeline do
- partition_id { 1234 }
+ partition_id { 100 }
transient { ci_ref_presence { true } }
before(:create) do |pipeline, evaluator|
diff --git a/spec/factories/ci/processable.rb b/spec/factories/ci/processable.rb
index 0550f4c23fa..76c7376d24a 100644
--- a/spec/factories/ci/processable.rb
+++ b/spec/factories/ci/processable.rb
@@ -4,7 +4,7 @@ FactoryBot.define do
factory :ci_processable, class: 'Ci::Processable' do
name { 'processable' }
stage { 'test' }
- stage_idx { 0 }
+ stage_idx { ci_stage.try(:position) || 0 }
ref { 'master' }
tag { false }
pipeline factory: :ci_pipeline
diff --git a/spec/factories/ci/reports/codequality_degradations.rb b/spec/factories/ci/reports/codequality_degradations.rb
index 8b53f2bf46e..632f5a3ecaa 100644
--- a/spec/factories/ci/reports/codequality_degradations.rb
+++ b/spec/factories/ci/reports/codequality_degradations.rb
@@ -26,7 +26,8 @@ FactoryBot.define do
"remediation_points": 900000,
"severity": "major",
"type": "issue",
- "engine_name": "structure"
+ "engine_name": "structure",
+ "web_url": "http://localhost/root/test-project/-/blob/f572d396fae9206628714fb2ce00f72e94f2258f/file_a.rb#L10"
}.with_indifferent_access
end
end
@@ -56,7 +57,8 @@ FactoryBot.define do
"remediation_points": 900000,
"severity": "major",
"type": "issue",
- "engine_name": "structure"
+ "engine_name": "structure",
+ "web_url": "http://localhost/root/test-project/-/blob/f572d396fae9206628714fb2ce00f72e94f2258f/file_a.rb#L10"
}.with_indifferent_access
end
end
@@ -91,7 +93,8 @@ FactoryBot.define do
},
"engine_name": "rubocop",
"fingerprint": "ab5f8b935886b942d621399f5a2ca16e",
- "severity": "minor"
+ "severity": "minor",
+ "web_url": "http://localhost/root/test-project/-/blob/f572d396fae9206628714fb2ce00f72e94f2258f/file_b.rb#L10"
}.with_indifferent_access
end
end
diff --git a/spec/factories/ci/reports/sbom/components.rb b/spec/factories/ci/reports/sbom/components.rb
index fd9b4386130..8f2c00b695a 100644
--- a/spec/factories/ci/reports/sbom/components.rb
+++ b/spec/factories/ci/reports/sbom/components.rb
@@ -3,15 +3,29 @@
FactoryBot.define do
factory :ci_reports_sbom_component, class: '::Gitlab::Ci::Reports::Sbom::Component' do
type { "library" }
+
sequence(:name) { |n| "component-#{n}" }
sequence(:version) { |n| "v0.0.#{n}" }
+ transient do
+ purl_type { 'npm' }
+ end
+
+ purl do
+ ::Sbom::PackageUrl.new(
+ type: purl_type,
+ name: name,
+ version: version
+ ).to_s
+ end
+
skip_create
initialize_with do
::Gitlab::Ci::Reports::Sbom::Component.new(
type: type,
name: name,
+ purl: purl,
version: version
)
end
diff --git a/spec/factories/ci/reports/sbom/reports.rb b/spec/factories/ci/reports/sbom/reports.rb
index 4a83b5898ef..7a076282915 100644
--- a/spec/factories/ci/reports/sbom/reports.rb
+++ b/spec/factories/ci/reports/sbom/reports.rb
@@ -8,6 +8,12 @@ FactoryBot.define do
source { association :ci_reports_sbom_source }
end
+ trait :invalid do
+ after(:build) do |report, options|
+ report.add_error('This report is invalid because it contains errors.')
+ end
+ end
+
after(:build) do |report, options|
options.components.each { |component| report.add_component(component) }
report.set_source(options.source)
diff --git a/spec/factories/ci/secure_files.rb b/spec/factories/ci/secure_files.rb
index 74988202c71..31dbcd15cb1 100644
--- a/spec/factories/ci/secure_files.rb
+++ b/spec/factories/ci/secure_files.rb
@@ -13,4 +13,13 @@ FactoryBot.define do
end
end
end
+
+ factory :ci_secure_file_with_metadata, class: 'Ci::SecureFile' do
+ sequence(:name) { |n| "file#{n}.cer" }
+ file { fixture_file_upload('spec/fixtures/ci_secure_files/sample.cer', 'application/octet-stream') }
+ checksum { 'foo1234' }
+ project
+
+ after(:create, &:update_metadata!)
+ end
end
diff --git a/spec/factories/ci/stages.rb b/spec/factories/ci/stages.rb
index 41297b01f92..d9dff4d9a86 100644
--- a/spec/factories/ci/stages.rb
+++ b/spec/factories/ci/stages.rb
@@ -2,7 +2,7 @@
FactoryBot.define do
factory :ci_stage, class: 'Ci::Stage' do
- project factory: :project
+ project { pipeline.project }
pipeline factory: :ci_empty_pipeline
name { 'test' }