diff options
Diffstat (limited to 'spec/factories')
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 |