diff options
Diffstat (limited to 'spec/factories')
30 files changed, 201 insertions, 77 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' } diff --git a/spec/factories/container_repositories.rb b/spec/factories/container_repositories.rb index 210441430b0..66ac72fb5d7 100644 --- a/spec/factories/container_repositories.rb +++ b/spec/factories/container_repositories.rb @@ -21,6 +21,10 @@ FactoryBot.define do status { :delete_failed } end + trait :status_delete_ongoing do + status { :delete_ongoing } + end + trait :cleanup_scheduled do expiration_policy_cleanup_status { :cleanup_scheduled } end diff --git a/spec/factories/dependency_proxy.rb b/spec/factories/dependency_proxy.rb index afa6c61116a..33356a701df 100644 --- a/spec/factories/dependency_proxy.rb +++ b/spec/factories/dependency_proxy.rb @@ -4,13 +4,20 @@ FactoryBot.define do factory :dependency_proxy_blob, class: 'DependencyProxy::Blob' do group size { 1234 } - file { fixture_file_upload('spec/fixtures/dependency_proxy/a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4.gz') } file_name { 'a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4.gz' } status { :default } + after(:build) do |blob, _evaluator| + blob.file = fixture_file_upload('spec/fixtures/dependency_proxy/a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4.gz') + end + trait :pending_destruction do status { :pending_destruction } end + + trait :remote_store do + file_store { DependencyProxy::FileUploader::Store::REMOTE } + end end factory :dependency_proxy_manifest, class: 'DependencyProxy::Manifest' do diff --git a/spec/factories/experiment_subjects.rb b/spec/factories/experiment_subjects.rb deleted file mode 100644 index c35bc370bad..00000000000 --- a/spec/factories/experiment_subjects.rb +++ /dev/null @@ -1,9 +0,0 @@ -# frozen_string_literal: true - -FactoryBot.define do - factory :experiment_subject do - experiment - user - variant { :control } - end -end diff --git a/spec/factories/experiment_users.rb b/spec/factories/experiment_users.rb deleted file mode 100644 index 66c39d684eb..00000000000 --- a/spec/factories/experiment_users.rb +++ /dev/null @@ -1,10 +0,0 @@ -# frozen_string_literal: true - -FactoryBot.define do - factory :experiment_user do - experiment - user - group_type { :control } - converted_at { nil } - end -end diff --git a/spec/factories/experiments.rb b/spec/factories/experiments.rb deleted file mode 100644 index 2c51a6585f4..00000000000 --- a/spec/factories/experiments.rb +++ /dev/null @@ -1,7 +0,0 @@ -# frozen_string_literal: true - -FactoryBot.define do - factory :experiment do - name { generate(:title) } - end -end diff --git a/spec/factories/integrations.rb b/spec/factories/integrations.rb index 5ac26b7a260..ebbf1b560e5 100644 --- a/spec/factories/integrations.rb +++ b/spec/factories/integrations.rb @@ -43,6 +43,19 @@ FactoryBot.define do end end + factory :packagist_integration, class: 'Integrations::Packagist' do + project + type { 'Integrations::Packagist' } + active { true } + properties do + { + username: 'username', + token: 'test', + server: 'https://packagist.example.com' + } + end + end + factory :prometheus_integration, class: 'Integrations::Prometheus' do project active { true } diff --git a/spec/factories/member_roles.rb b/spec/factories/member_roles.rb index bd211844f5a..08df45a85f8 100644 --- a/spec/factories/member_roles.rb +++ b/spec/factories/member_roles.rb @@ -4,5 +4,7 @@ FactoryBot.define do factory :member_role do namespace { association(:group) } base_access_level { Gitlab::Access::DEVELOPER } + + trait(:guest) { base_access_level { GroupMember::GUEST } } end end diff --git a/spec/factories/merge_request_reviewers.rb b/spec/factories/merge_request_reviewers.rb new file mode 100644 index 00000000000..26e047a3fbf --- /dev/null +++ b/spec/factories/merge_request_reviewers.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +FactoryBot.define do + factory :merge_request_reviewer do + merge_request + reviewer { association(:user) } + state { 'unreviewed' } + end +end diff --git a/spec/factories/packages/rpm/rpm_repository_files.rb b/spec/factories/packages/rpm/rpm_repository_files.rb index 079d32b3995..00755f49d98 100644 --- a/spec/factories/packages/rpm/rpm_repository_files.rb +++ b/spec/factories/packages/rpm/rpm_repository_files.rb @@ -4,9 +4,10 @@ FactoryBot.define do factory :rpm_repository_file, class: 'Packages::Rpm::RepositoryFile' do project - file_name { 'repomd.xml' } + file_name { '364c77dd49e8f814d56e621d0b3306c4fd0696dcad506f527329b818eb0f5db3-repomd.xml' } file_sha1 { 'efae869b4e95d54796a46481f3a211d6a88d0323' } file_md5 { 'ddf8a75330c896a8d7709e75f8b5982a' } + file_sha256 { '364c77dd49e8f814d56e621d0b3306c4fd0696dcad506f527329b818eb0f5db3' } size { 3127.kilobytes } status { :default } @@ -15,7 +16,11 @@ FactoryBot.define do end transient do - file_fixture { 'spec/fixtures/packages/rpm/repodata/repomd.xml' } + file_fixture do + # rubocop:disable Layout/LineLength + 'spec/fixtures/packages/rpm/repodata/364c77dd49e8f814d56e621d0b3306c4fd0696dcad506f527329b818eb0f5db3-repomd.xml' + # rubocop:enable Layout/LineLength + end end after(:build) do |package_file, evaluator| diff --git a/spec/factories/project_hooks.rb b/spec/factories/project_hooks.rb index dbb5c357acb..946b3925ee9 100644 --- a/spec/factories/project_hooks.rb +++ b/spec/factories/project_hooks.rb @@ -6,6 +6,10 @@ FactoryBot.define do enable_ssl_verification { false } project + trait :url_variables do + url_variables { { 'abc' => 'supers3cret' } } + end + trait :token do token { generate(:token) } end diff --git a/spec/factories/projects.rb b/spec/factories/projects.rb index b62995dce42..6e3a7a3f5ef 100644 --- a/spec/factories/projects.rb +++ b/spec/factories/projects.rb @@ -41,6 +41,7 @@ FactoryBot.define do environments_access_level { ProjectFeature::ENABLED } feature_flags_access_level { ProjectFeature::ENABLED } releases_access_level { ProjectFeature::ENABLED } + infrastructure_access_level { ProjectFeature::ENABLED } # we can't assign the delegated `#ci_cd_settings` attributes directly, as the # `#ci_cd_settings` relation needs to be created first @@ -251,6 +252,7 @@ FactoryBot.define do transient do create_templates { nil } create_branch { nil } + create_tag { nil } end after :create do |project, evaluator| @@ -287,6 +289,13 @@ FactoryBot.define do end + if evaluator.create_tag + project.repository.add_tag( + project.creator, + evaluator.create_tag, + project.repository.commit.sha) + end + project.track_project_repository end end @@ -467,6 +476,10 @@ FactoryBot.define do end end + trait :in_group do + namespace factory: [:group] + end + trait :in_subgroup do namespace factory: [:group, :nested] end diff --git a/spec/factories/projects/import_export/export_relation.rb b/spec/factories/projects/import_export/export_relation.rb deleted file mode 100644 index 2b6419dcecb..00000000000 --- a/spec/factories/projects/import_export/export_relation.rb +++ /dev/null @@ -1,11 +0,0 @@ -# frozen_string_literal: true - -FactoryBot.define do - factory :project_relation_export, class: 'Projects::ImportExport::RelationExport' do - project_export_job factory: :project_export_job - - relation { 'labels' } - status { 0 } - sequence(:jid) { |n| "project_relation_export_#{n}" } - end -end diff --git a/spec/factories/projects/import_export/relation_export.rb b/spec/factories/projects/import_export/relation_export.rb new file mode 100644 index 00000000000..7fab5808d2f --- /dev/null +++ b/spec/factories/projects/import_export/relation_export.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +FactoryBot.define do + factory :project_relation_export, class: 'Projects::ImportExport::RelationExport' do + project_export_job factory: :project_export_job + + relation { 'labels' } + status { Projects::ImportExport::RelationExport::STATUS[:queued] } + sequence(:jid) { |n| "project_relation_export_#{n}" } + + trait :queued do + status { Projects::ImportExport::RelationExport::STATUS[:queued] } + end + + trait :started do + status { Projects::ImportExport::RelationExport::STATUS[:started] } + end + + trait :finished do + status { Projects::ImportExport::RelationExport::STATUS[:finished] } + end + + trait :failed do + status { Projects::ImportExport::RelationExport::STATUS[:failed] } + end + end +end diff --git a/spec/factories/projects/import_export/relation_export_upload.rb b/spec/factories/projects/import_export/relation_export_upload.rb new file mode 100644 index 00000000000..eaa57d6ee59 --- /dev/null +++ b/spec/factories/projects/import_export/relation_export_upload.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +FactoryBot.define do + factory :project_relation_export_upload, class: 'Projects::ImportExport::RelationExportUpload' do + relation_export factory: :project_relation_export + export_file { fixture_file_upload("spec/fixtures/gitlab/import_export/labels.tar.gz") } + end +end diff --git a/spec/factories/projects/wiki_repositories.rb b/spec/factories/projects/wiki_repositories.rb new file mode 100644 index 00000000000..78e02ff297b --- /dev/null +++ b/spec/factories/projects/wiki_repositories.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +FactoryBot.define do + factory :project_wiki_repository, class: 'Projects::WikiRepository' do + project + end +end diff --git a/spec/factories/protected_branches.rb b/spec/factories/protected_branches.rb index 425352783dd..75b375733a6 100644 --- a/spec/factories/protected_branches.rb +++ b/spec/factories/protected_branches.rb @@ -13,7 +13,8 @@ FactoryBot.define do end after(:create) do |protected_branch, evaluator| - break unless protected_branch.project&.persisted? + # Do not use `break` because it will cause `LocalJumpError` + next unless protected_branch.project&.persisted? ProtectedBranches::CacheService.new(protected_branch.project).refresh end @@ -39,63 +40,63 @@ FactoryBot.define do end end - trait :maintainers_can_push do + trait :no_one_can_merge do transient do - default_push_level { false } + default_merge_level { false } end after(:build) do |protected_branch| - protected_branch.push_access_levels.new(access_level: Gitlab::Access::MAINTAINER) + protected_branch.merge_access_levels.new(access_level: Gitlab::Access::NO_ACCESS) end end - trait :maintainers_can_merge do + trait :developers_can_merge do transient do - default_push_level { false } + default_merge_level { false } end after(:build) do |protected_branch| - protected_branch.push_access_levels.new(access_level: Gitlab::Access::MAINTAINER) + protected_branch.merge_access_levels.new(access_level: Gitlab::Access::DEVELOPER) end end - trait :developers_can_push do + trait :maintainers_can_merge do transient do - default_push_level { false } + default_merge_level { false } end after(:build) do |protected_branch| - protected_branch.push_access_levels.new(access_level: Gitlab::Access::DEVELOPER) + protected_branch.merge_access_levels.new(access_level: Gitlab::Access::MAINTAINER) end end - trait :developers_can_merge do + trait :no_one_can_push do transient do - default_merge_level { false } + default_push_level { false } end after(:build) do |protected_branch| - protected_branch.merge_access_levels.new(access_level: Gitlab::Access::DEVELOPER) + protected_branch.push_access_levels.new(access_level: Gitlab::Access::NO_ACCESS) end end - trait :no_one_can_push do + trait :developers_can_push do transient do default_push_level { false } end after(:build) do |protected_branch| - protected_branch.push_access_levels.new(access_level: Gitlab::Access::NO_ACCESS) + protected_branch.push_access_levels.new(access_level: Gitlab::Access::DEVELOPER) end end - trait :no_one_can_merge do + trait :maintainers_can_push do transient do - default_merge_level { false } + default_push_level { false } end after(:build) do |protected_branch| - protected_branch.merge_access_levels.new(access_level: Gitlab::Access::NO_ACCESS) + protected_branch.push_access_levels.new(access_level: Gitlab::Access::MAINTAINER) end end end diff --git a/spec/factories/user_statuses.rb b/spec/factories/user_statuses.rb index dbed6031ce1..79dc1eb7931 100644 --- a/spec/factories/user_statuses.rb +++ b/spec/factories/user_statuses.rb @@ -5,5 +5,9 @@ FactoryBot.define do user emoji { 'coffee' } message { 'I crave coffee' } + + trait :busy do + availability { 'busy' } + end end end diff --git a/spec/factories/users.rb b/spec/factories/users.rb index 2e7c6116fe6..2b53a469841 100644 --- a/spec/factories/users.rb +++ b/spec/factories/users.rb @@ -27,6 +27,10 @@ FactoryBot.define do after(:build) { |user, _| user.block! } end + trait :locked do + after(:build) { |user, _| user.lock_access! } + end + trait :disallowed_password do password { User::DISALLOWED_PASSWORDS.first } end diff --git a/spec/factories/users/ghost_user_migrations.rb b/spec/factories/users/ghost_user_migrations.rb index 0fe7cded4f3..77b7f7e6df4 100644 --- a/spec/factories/users/ghost_user_migrations.rb +++ b/spec/factories/users/ghost_user_migrations.rb @@ -5,5 +5,6 @@ FactoryBot.define do association :user initiator_user { association(:user) } hard_delete { false } + consume_after { Time.current } end end diff --git a/spec/factories/users/namespace_commit_emails.rb b/spec/factories/users/namespace_commit_emails.rb new file mode 100644 index 00000000000..2f7e89bf766 --- /dev/null +++ b/spec/factories/users/namespace_commit_emails.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +FactoryBot.define do + factory :namespace_commit_email, class: 'Users::NamespaceCommitEmail' do + email + user { email.user } + namespace + end +end |