diff options
Diffstat (limited to 'spec/factories')
33 files changed, 234 insertions, 158 deletions
diff --git a/spec/factories/bulk_import.rb b/spec/factories/bulk_import.rb index 07907bab3df..748afc0c67c 100644 --- a/spec/factories/bulk_import.rb +++ b/spec/factories/bulk_import.rb @@ -4,6 +4,7 @@ FactoryBot.define do factory :bulk_import, class: 'BulkImport' do user source_type { :gitlab } + source_version { BulkImport.min_gl_version_for_project_migration.to_s } trait :created do status { 0 } diff --git a/spec/factories/ci/pending_builds.rb b/spec/factories/ci/pending_builds.rb index 31e42e1bc9e..28258b0339f 100644 --- a/spec/factories/ci/pending_builds.rb +++ b/spec/factories/ci/pending_builds.rb @@ -9,5 +9,6 @@ FactoryBot.define do namespace { project.namespace } minutes_exceeded { false } tag_ids { build.tags_ids } + namespace_traversal_ids { project.namespace.traversal_ids } end end diff --git a/spec/factories/ci/pipelines.rb b/spec/factories/ci/pipelines.rb index 4fc7d945881..ae3404a41a2 100644 --- a/spec/factories/ci/pipelines.rb +++ b/spec/factories/ci/pipelines.rb @@ -18,6 +18,10 @@ FactoryBot.define do transient { child_of { nil } } transient { upstream_of { nil } } + before(:create) do |pipeline, evaluator| + pipeline.ensure_project_iid! + end + after(:build) do |pipeline, evaluator| if evaluator.child_of pipeline.project = evaluator.child_of.project diff --git a/spec/factories/ci/runner_projects.rb b/spec/factories/ci/runner_projects.rb index ead9fe10f6e..31536275ff4 100644 --- a/spec/factories/ci/runner_projects.rb +++ b/spec/factories/ci/runner_projects.rb @@ -2,7 +2,14 @@ FactoryBot.define do factory :ci_runner_project, class: 'Ci::RunnerProject' do - runner factory: [:ci_runner, :project] project + + after(:build) do |runner_project, evaluator| + unless runner_project.runner.present? + runner_project.runner = build( + :ci_runner, :project, runner_projects: [runner_project] + ) + end + end end end diff --git a/spec/factories/ci/runners.rb b/spec/factories/ci/runners.rb index 30f78531324..d0853df4e4b 100644 --- a/spec/factories/ci/runners.rb +++ b/spec/factories/ci/runners.rb @@ -10,6 +10,16 @@ FactoryBot.define do runner_type { :instance_type } + transient do + projects { [] } + end + + after(:build) do |runner, evaluator| + evaluator.projects.each do |proj| + runner.runner_projects << build(:ci_runner_project, project: proj) + end + end + trait :online do contacted_at { Time.now } end @@ -30,7 +40,9 @@ FactoryBot.define do runner_type { :project_type } after(:build) do |runner, evaluator| - runner.projects << build(:project) if runner.projects.empty? + if runner.runner_projects.empty? + runner.runner_projects << build(:ci_runner_project) + end end end diff --git a/spec/factories/dependency_proxy.rb b/spec/factories/dependency_proxy.rb index c2873ce9b5e..836ee87e4d7 100644 --- a/spec/factories/dependency_proxy.rb +++ b/spec/factories/dependency_proxy.rb @@ -6,6 +6,11 @@ FactoryBot.define do size { 1234 } file { fixture_file_upload('spec/fixtures/dependency_proxy/a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4.gz') } file_name { 'a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4.gz' } + status { :default } + + trait :expired do + status { :expired } + end end factory :dependency_proxy_manifest, class: 'DependencyProxy::Manifest' do @@ -13,7 +18,12 @@ FactoryBot.define do size { 1234 } file { fixture_file_upload('spec/fixtures/dependency_proxy/manifest') } digest { 'sha256:d0710affa17fad5f466a70159cc458227bd25d4afb39514ef662ead3e6c99515' } - file_name { 'alpine:latest.json' } + sequence(:file_name) { |n| "alpine:latest#{n}.json" } content_type { 'application/vnd.docker.distribution.manifest.v2+json' } + status { :default } + + trait :expired do + status { :expired } + end end end diff --git a/spec/factories/dependency_proxy/group_settings.rb b/spec/factories/dependency_proxy/group_settings.rb new file mode 100644 index 00000000000..c15cddf7430 --- /dev/null +++ b/spec/factories/dependency_proxy/group_settings.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +FactoryBot.define do + factory :dependency_proxy_group_setting, class: 'DependencyProxy::GroupSetting' do + group + + enabled { true } + end +end diff --git a/spec/factories/dependency_proxy/image_ttl_group_policies.rb b/spec/factories/dependency_proxy/image_ttl_group_policies.rb index 21e5dd44cf5..068c87f578c 100644 --- a/spec/factories/dependency_proxy/image_ttl_group_policies.rb +++ b/spec/factories/dependency_proxy/image_ttl_group_policies.rb @@ -6,5 +6,9 @@ FactoryBot.define do enabled { true } ttl { 90 } + + trait :disabled do + enabled { false } + end end end diff --git a/spec/factories/design_management/versions.rb b/spec/factories/design_management/versions.rb index 247a385bd0e..e505a77d6bd 100644 --- a/spec/factories/design_management/versions.rb +++ b/spec/factories/design_management/versions.rb @@ -52,9 +52,9 @@ FactoryBot.define do .where(design_id: evaluator.deleted_designs.map(&:id)) .update_all(event: events[:deletion]) - version.designs.reload # Ensure version.issue == design.issue for all version.designs version.designs.update_all(issue_id: version.issue_id) + version.designs.reload needed = evaluator.designs_count have = version.designs.size diff --git a/spec/factories/groups.rb b/spec/factories/groups.rb index bd6e37c1cef..859f381e4c1 100644 --- a/spec/factories/groups.rb +++ b/spec/factories/groups.rb @@ -4,7 +4,7 @@ FactoryBot.define do factory :group, class: 'Group', parent: :namespace do sequence(:name) { |n| "group#{n}" } path { name.downcase.gsub(/\s/, '_') } - type { 'Group' } + type { Group.sti_name } owner { nil } project_creation_level { ::Gitlab::Access::MAINTAINER_PROJECT_ACCESS } @@ -69,6 +69,20 @@ FactoryBot.define do allow_descendants_override_disabled_shared_runners { true } end + trait :disabled_and_unoverridable do + shared_runners_disabled + allow_descendants_override_disabled_shared_runners { false } + end + + trait :disabled_with_override do + shared_runners_disabled + allow_descendants_override_disabled_shared_runners + end + + trait :shared_runners_enabled do + shared_runners_enabled { true } + end + # Construct a hierarchy underneath the group. # Each group will have `children` amount of children, # and `depth` levels of descendants. diff --git a/spec/factories/integration_data.rb b/spec/factories/integration_data.rb index 4d0892556f8..7ff2f3ae846 100644 --- a/spec/factories/integration_data.rb +++ b/spec/factories/integration_data.rb @@ -18,12 +18,4 @@ FactoryBot.define do factory :issue_tracker_data, class: 'Integrations::IssueTrackerData' do integration end - - factory :open_project_tracker_data, class: 'Integrations::OpenProjectTrackerData' do - integration factory: :open_project_service - url { 'http://openproject.example.com' } - token { 'supersecret' } - project_identifier_code { 'PRJ-1' } - closed_status_id { '15' } - end end diff --git a/spec/factories/integrations.rb b/spec/factories/integrations.rb index cb1c94c25c1..63f85c04ac7 100644 --- a/spec/factories/integrations.rb +++ b/spec/factories/integrations.rb @@ -166,26 +166,6 @@ FactoryBot.define do external_wiki_url { 'http://external-wiki-url.com' } end - factory :open_project_service, class: 'Integrations::OpenProject' do - project - active { true } - - transient do - url { 'http://openproject.example.com' } - api_url { 'http://openproject.example.com/issues/:id' } - token { 'supersecret' } - closed_status_id { '15' } - project_identifier_code { 'PRJ-1' } - end - - after(:build) do |integration, evaluator| - integration.open_project_tracker_data = build(:open_project_tracker_data, - integration: integration, url: evaluator.url, api_url: evaluator.api_url, token: evaluator.token, - closed_status_id: evaluator.closed_status_id, project_identifier_code: evaluator.project_identifier_code - ) - end - end - trait :jira_cloud_service do url { 'https://mysite.atlassian.net' } username { 'jira_user' } diff --git a/spec/factories/namespaces.rb b/spec/factories/namespaces.rb index 957ec88420d..959183f227d 100644 --- a/spec/factories/namespaces.rb +++ b/spec/factories/namespaces.rb @@ -5,6 +5,8 @@ FactoryBot.define do sequence(:name) { |n| "namespace#{n}" } path { name.downcase.gsub(/\s/, '_') } + # TODO: can this be moved into the :user_namespace factory? + # evaluate in issue https://gitlab.com/gitlab-org/gitlab/-/issues/341070 owner { association(:user, strategy: :build, namespace: instance, username: path) } trait :with_aggregation_schedule do diff --git a/spec/factories/namespaces/project_namespaces.rb b/spec/factories/namespaces/project_namespaces.rb index 10b86f48090..ca9fc5f8768 100644 --- a/spec/factories/namespaces/project_namespaces.rb +++ b/spec/factories/namespaces/project_namespaces.rb @@ -3,10 +3,11 @@ FactoryBot.define do factory :project_namespace, class: 'Namespaces::ProjectNamespace' do project + parent { project.namespace } + visibility_level { project.visibility_level } name { project.name } path { project.path } type { Namespaces::ProjectNamespace.sti_name } owner { nil } - parent factory: :group end end diff --git a/spec/factories/namespaces/user_namespaces.rb b/spec/factories/namespaces/user_namespaces.rb new file mode 100644 index 00000000000..31c924462d7 --- /dev/null +++ b/spec/factories/namespaces/user_namespaces.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +FactoryBot.define do + factory :user_namespace, class: 'Namespaces::UserNamespace', parent: :namespace do + sequence(:name) { |n| "user_namespace#{n}" } + type { Namespaces::UserNamespace.sti_name } + end +end diff --git a/spec/factories/packages/build_info.rb b/spec/factories/packages/build_infos.rb index dc6208d72a9..dc6208d72a9 100644 --- a/spec/factories/packages/build_info.rb +++ b/spec/factories/packages/build_infos.rb diff --git a/spec/factories/packages/composer/cache_files.rb b/spec/factories/packages/composer/cache_files.rb new file mode 100644 index 00000000000..30c28ec175b --- /dev/null +++ b/spec/factories/packages/composer/cache_files.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true +FactoryBot.define do + 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 +end diff --git a/spec/factories/packages/composer/metadata.rb b/spec/factories/packages/composer/metadata.rb new file mode 100644 index 00000000000..e4b38faa9ba --- /dev/null +++ b/spec/factories/packages/composer/metadata.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +FactoryBot.define do + factory :composer_metadatum, class: 'Packages::Composer::Metadatum' do + package { association(:composer_package) } + + target_sha { '123' } + composer_json { { name: 'foo' } } + end +end diff --git a/spec/factories/packages/conan/file_metadata.rb b/spec/factories/packages/conan/file_metadata.rb new file mode 100644 index 00000000000..609f80e54c7 --- /dev/null +++ b/spec/factories/packages/conan/file_metadata.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +FactoryBot.define do + factory :conan_file_metadatum, class: 'Packages::Conan::FileMetadatum' do + package_file { association(:conan_package_file, :conan_recipe_file, without_loaded_metadatum: true) } + recipe_revision { '0' } + conan_file_type { 'recipe_file' } + + trait(:recipe_file) do + conan_file_type { 'recipe_file' } + end + + trait(:package_file) do + package_file { association(:conan_package_file, :conan_package, without_loaded_metadatum: true) } + conan_file_type { 'package_file' } + package_revision { '0' } + conan_package_reference { '123456789' } + end + end +end diff --git a/spec/factories/packages/conan/metadata.rb b/spec/factories/packages/conan/metadata.rb new file mode 100644 index 00000000000..81ded799684 --- /dev/null +++ b/spec/factories/packages/conan/metadata.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +FactoryBot.define do + factory :conan_metadatum, class: 'Packages::Conan::Metadatum' do + association :package, factory: [:conan_package, :without_loaded_metadatum], without_package_files: true + package_username { 'username' } + package_channel { 'stable' } + end +end diff --git a/spec/factories/packages/dependencies.rb b/spec/factories/packages/dependencies.rb new file mode 100644 index 00000000000..a62d48c2e73 --- /dev/null +++ b/spec/factories/packages/dependencies.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +FactoryBot.define do + factory :packages_dependency, class: 'Packages::Dependency' do + sequence(:name) { |n| "@test/package-#{n}"} + sequence(:version_pattern) { |n| "~6.2.#{n}" } + + trait(:rubygems) do + sequence(:name) { |n| "gem-dependency-#{n}"} + end + end +end diff --git a/spec/factories/packages/dependency_links.rb b/spec/factories/packages/dependency_links.rb new file mode 100644 index 00000000000..6470cbdc9a6 --- /dev/null +++ b/spec/factories/packages/dependency_links.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +FactoryBot.define do + factory :packages_dependency_link, class: 'Packages::DependencyLink' do + package { association(:nuget_package) } + dependency { association(:packages_dependency) } + dependency_type { :dependencies } + + trait(:with_nuget_metadatum) do + after :build do |link| + link.nuget_metadatum = build(:nuget_dependency_link_metadatum) + end + end + + trait(:rubygems) do + package { association(:rubygems_package) } + dependency { association(:packages_dependency, :rubygems) } + end + end +end diff --git a/spec/factories/packages/maven/maven_metadata.rb b/spec/factories/packages/maven/maven_metadata.rb new file mode 100644 index 00000000000..861daab3a74 --- /dev/null +++ b/spec/factories/packages/maven/maven_metadata.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +FactoryBot.define do + factory :maven_metadatum, class: 'Packages::Maven::Metadatum' do + association :package, package_type: :maven + path { 'my/company/app/my-app/1.0-SNAPSHOT' } + app_group { 'my.company.app' } + app_name { 'my-app' } + app_version { '1.0-SNAPSHOT' } + end +end diff --git a/spec/factories/packages/nuget/dependency_link_metadata.rb b/spec/factories/packages/nuget/dependency_link_metadata.rb new file mode 100644 index 00000000000..ed632e72cbf --- /dev/null +++ b/spec/factories/packages/nuget/dependency_link_metadata.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +FactoryBot.define do + factory :nuget_dependency_link_metadatum, class: 'Packages::Nuget::DependencyLinkMetadatum' do + dependency_link { association(:packages_dependency_link) } + target_framework { '.NETStandard2.0' } + end +end diff --git a/spec/factories/packages/nuget/metadata.rb b/spec/factories/packages/nuget/metadata.rb new file mode 100644 index 00000000000..d2a2a666928 --- /dev/null +++ b/spec/factories/packages/nuget/metadata.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +FactoryBot.define do + factory :nuget_metadatum, class: 'Packages::Nuget::Metadatum' do + package { association(:nuget_package) } + + license_url { 'http://www.gitlab.com' } + project_url { 'http://www.gitlab.com' } + icon_url { 'http://www.gitlab.com' } + end +end diff --git a/spec/factories/packages/package_file.rb b/spec/factories/packages/package_files.rb index d9afbac1048..d9afbac1048 100644 --- a/spec/factories/packages/package_file.rb +++ b/spec/factories/packages/package_files.rb diff --git a/spec/factories/packages/package_tags.rb b/spec/factories/packages/package_tags.rb new file mode 100644 index 00000000000..3d2eea4a73b --- /dev/null +++ b/spec/factories/packages/package_tags.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +FactoryBot.define do + factory :packages_tag, class: 'Packages::Tag' do + package + sequence(:name) { |n| "tag-#{n}"} + end +end diff --git a/spec/factories/packages.rb b/spec/factories/packages/packages.rb index b04b7e691fe..bb9aa95fe08 100644 --- a/spec/factories/packages.rb +++ b/spec/factories/packages/packages.rb @@ -249,117 +249,4 @@ FactoryBot.define do package_type { :generic } end end - - factory :composer_metadatum, class: 'Packages::Composer::Metadatum' do - package { association(:composer_package) } - - target_sha { '123' } - 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' } - app_group { 'my.company.app' } - app_name { 'my-app' } - app_version { '1.0-SNAPSHOT' } - end - - factory :conan_metadatum, class: 'Packages::Conan::Metadatum' do - association :package, factory: [:conan_package, :without_loaded_metadatum], without_package_files: true - package_username { 'username' } - package_channel { 'stable' } - end - - factory :pypi_metadatum, class: 'Packages::Pypi::Metadatum' do - package { association(:pypi_package, without_loaded_metadatum: true) } - required_python { '>=2.7' } - end - - factory :nuget_metadatum, class: 'Packages::Nuget::Metadatum' do - package { association(:nuget_package) } - - license_url { 'http://www.gitlab.com' } - project_url { 'http://www.gitlab.com' } - icon_url { 'http://www.gitlab.com' } - end - - factory :conan_file_metadatum, class: 'Packages::Conan::FileMetadatum' do - package_file { association(:conan_package_file, :conan_recipe_file, without_loaded_metadatum: true) } - recipe_revision { '0' } - conan_file_type { 'recipe_file' } - - trait(:recipe_file) do - conan_file_type { 'recipe_file' } - end - - trait(:package_file) do - package_file { association(:conan_package_file, :conan_package, without_loaded_metadatum: true) } - conan_file_type { 'package_file' } - package_revision { '0' } - conan_package_reference { '123456789' } - end - end - - factory :packages_dependency, class: 'Packages::Dependency' do - sequence(:name) { |n| "@test/package-#{n}"} - sequence(:version_pattern) { |n| "~6.2.#{n}" } - - trait(:rubygems) do - sequence(:name) { |n| "gem-dependency-#{n}"} - end - end - - factory :packages_dependency_link, class: 'Packages::DependencyLink' do - package { association(:nuget_package) } - dependency { association(:packages_dependency) } - dependency_type { :dependencies } - - trait(:with_nuget_metadatum) do - after :build do |link| - link.nuget_metadatum = build(:nuget_dependency_link_metadatum) - end - end - - trait(:rubygems) do - package { association(:rubygems_package) } - dependency { association(:packages_dependency, :rubygems) } - end - end - - factory :nuget_dependency_link_metadatum, class: 'Packages::Nuget::DependencyLinkMetadatum' do - dependency_link { association(:packages_dependency_link) } - target_framework { '.NETStandard2.0' } - end - - factory :packages_tag, class: 'Packages::Tag' do - package - sequence(:name) { |n| "tag-#{n}"} - end - - factory :packages_build_info, class: 'Packages::BuildInfo' do - package - - trait :with_pipeline do - association :pipeline, factory: [:ci_pipeline, :with_job] - end - end end diff --git a/spec/factories/packages/pypi/metadata.rb b/spec/factories/packages/pypi/metadata.rb new file mode 100644 index 00000000000..00abe403bd1 --- /dev/null +++ b/spec/factories/packages/pypi/metadata.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +FactoryBot.define do + factory :pypi_metadatum, class: 'Packages::Pypi::Metadatum' do + package { association(:pypi_package, without_loaded_metadatum: true) } + required_python { '>=2.7' } + end +end diff --git a/spec/factories/pages_domains.rb b/spec/factories/pages_domains.rb index 2ba5cbb48bf..f3f2af79b76 100644 --- a/spec/factories/pages_domains.rb +++ b/spec/factories/pages_domains.rb @@ -258,6 +258,18 @@ ZDXgrA== certificate_source { :gitlab_provided } end + # This contains: + # webdioxide.com + # Let's Encrypt R3 + # ISRG Root X1 (issued by DST Root CA X3) + # + # DST Root CA X3 expired on 2021-09-30, but ISRG Root X1 should be trusted on most systems. + trait :letsencrypt_expired_x3_root do + certificate do + File.read(Rails.root.join('spec/fixtures/ssl', 'letsencrypt_expired_x3.pem')) + end + end + trait :explicit_ecdsa do certificate do '-----BEGIN CERTIFICATE----- diff --git a/spec/factories/project_error_tracking_settings.rb b/spec/factories/project_error_tracking_settings.rb index 424f462e1a0..ed743d8283c 100644 --- a/spec/factories/project_error_tracking_settings.rb +++ b/spec/factories/project_error_tracking_settings.rb @@ -8,6 +8,7 @@ FactoryBot.define do token { 'access_token_123' } project_name { 'Sentry Project' } organization_name { 'Sentry Org' } + integrated { false } trait :disabled do enabled { false } diff --git a/spec/factories/usage_data.rb b/spec/factories/usage_data.rb index c02bcfc2169..fc1f5d71f39 100644 --- a/spec/factories/usage_data.rb +++ b/spec/factories/usage_data.rb @@ -88,17 +88,9 @@ FactoryBot.define do create(:cluster, :group, :disabled) create(:cluster, :instance, :disabled) - # Applications - create(:clusters_applications_helm, :installed, cluster: gcp_cluster) - create(:clusters_applications_ingress, :installed, cluster: gcp_cluster) - create(:clusters_applications_cert_manager, :installed, cluster: gcp_cluster) - create(:clusters_applications_prometheus, :installed, cluster: gcp_cluster) - create(:clusters_applications_crossplane, :installed, cluster: gcp_cluster) - create(:clusters_applications_runner, :installed, cluster: gcp_cluster) - create(:clusters_applications_knative, :installed, cluster: gcp_cluster) - create(:clusters_applications_elastic_stack, :installed, cluster: gcp_cluster) - create(:clusters_applications_jupyter, :installed, cluster: gcp_cluster) - create(:clusters_applications_cilium, :installed, cluster: gcp_cluster) + # Cluster Integrations + create(:clusters_integrations_prometheus, cluster: gcp_cluster) + create(:clusters_integrations_elastic_stack, cluster: gcp_cluster) create(:grafana_integration, project: projects[0], enabled: true) create(:grafana_integration, project: projects[1], enabled: true) diff --git a/spec/factories/users.rb b/spec/factories/users.rb index 04bacbe14e7..325f62f6028 100644 --- a/spec/factories/users.rb +++ b/spec/factories/users.rb @@ -139,6 +139,8 @@ FactoryBot.define do end factory :omniauth_user do + password_automatically_set { true } + transient do extern_uid { '123456' } provider { 'ldapmain' } |