rspec unit pg13 19/28
Passed Started
by
@dgruzd

Dmitry Gruzd
1Running with gitlab-runner 16.1.0~beta.5.gf131a6a2 (f131a6a2)2 on blue-4.shared-gitlab-org.runners-manager.gitlab.com/default 8cwZ3F43, system ID: s_df0f7e24ca8b3 feature flags: FF_NETWORK_PER_BUILD:true, FF_USE_FASTZIP:true, FF_USE_IMPROVED_URL_MASKING:true6Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-109-yarn-1.22-graphicsmagick-1.3.36 ...7Starting service registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-13-pgvector-0.4.1 ...8Authenticating with credentials from job payload (GitLab Registry)9Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-13-pgvector-0.4.1 ...10Using docker image sha256:73740c557807c4bc5d692f263c0e35454270600da4b22bbe952331411426c8b5 for registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-13-pgvector-0.4.1 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:3174001f839c42e299ac06a42f8ded446edfcb33b0eb820874749a3f53eb799c ...11WARNING: Service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 is already created. Ignoring.12WARNING: Service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 is already created. Ignoring.13Starting service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 ...14Authenticating with credentials from job payload (GitLab Registry)15Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 ...16Using docker image sha256:a9a90ece30d9630d694ab1997cd103ea8ec729789451b983a75c7b58b0062d45 for registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:7ef36177d5d0bc554fbb63d8210ae751bcc538bea7905b51d078d9ab90a755fa ...17Starting service redis:6.2-alpine ...18Pulling docker image redis:6.2-alpine ...19Using docker image sha256:85fd7bd884b6493c8eb6f4dffbe5406d97cce56aff84f1580a5eb5b9d841f158 for redis:6.2-alpine with digest redis@sha256:87c44d5d9f472e767c8737f4130c765d77bdc95c7472d6427cfc9d4632f12da6 ...20Waiting for services to be up and running (timeout 30 seconds)...21Authenticating with credentials from job payload (GitLab Registry)22Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-109-yarn-1.22-graphicsmagick-1.3.36 ...23Using docker image sha256:fec07d48f78e7744b500d171c45d252a17edb746cb6e49beeddfd45fe8a9e38a for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-109-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13@sha256:5be4fba41b6ac9335dea5413b69dd0326dc13963940cb473219acfd9665b05c0 ...25Running on runner-8cwz3f43-project-278964-concurrent-0 via runner-8cwz3f43-shared-gitlab-org-1685036322-4523cc07...27Fetching changes with git depth set to 20...28Initialized empty Git repository in /builds/gitlab-org/gitlab/.git/29Created fresh repository.30remote: Enumerating objects: 193872, done. 31remote: Counting objects: 100% (193872/193872), done. 32remote: Compressing objects: 100% (116486/116486), done. 33remote: Total 193872 (delta 102103), reused 135922 (delta 70268), pack-reused 0 34Receiving objects: 100% (193872/193872), 145.84 MiB | 29.30 MiB/s, done.35Resolving deltas: 100% (102103/102103), done.37 * [new ref] refs/pipelines/879304794 -> refs/pipelines/87930479438 * [new branch] master -> origin/master39Checking out 8bedc0ff as detached HEAD (ref is master)...40Skipping Git submodules setup41$ git remote set-url origin "${CI_REPOSITORY_URL}"43Checking cache for ruby-gems-debian-bullseye-ruby-3.0-16...44cache.zip is up to date 45Successfully extracted cache47Downloading artifacts for compile-test-assets (4353249352)...48Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4353249352 responseStatus=200 OK token=64_8T4RT49Downloading artifacts for retrieve-tests-metadata (4353249362)...50Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4353249362 responseStatus=200 OK token=64_8T4RT51Downloading artifacts for setup-test-env (4353249356)...52Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4353249356 responseStatus=200 OK token=64_8T4RT54Using docker image sha256:fec07d48f78e7744b500d171c45d252a17edb746cb6e49beeddfd45fe8a9e38a for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-109-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13@sha256:5be4fba41b6ac9335dea5413b69dd0326dc13963940cb473219acfd9665b05c0 ...55$ echo $FOSS_ONLY56$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb57$ export GOPATH=$CI_PROJECT_DIR/.go58$ mkdir -p $GOPATH59$ source scripts/utils.sh60$ source scripts/prepare_build.sh715Using decomposed database config (config/database.yml.decomposed-postgresql)716Geo DB won't be set up.717Embedding DB won't be set up.733$ source ./scripts/rspec_helpers.sh734$ run_timed_command "gem install knapsack --no-document"735$ gem install knapsack --no-document736Successfully installed knapsack-4.0.07371 gem installed738==> 'gem install knapsack --no-document' succeeded in 1 seconds.739$ echo -e "\e[0Ksection_start:`date +%s`:gitaly-test-spawn[collapsed=true]\r\e[0KStarting Gitaly"741$ section_start "gitaly-test-spawn" "Spawning Gitaly"; scripts/gitaly-test-spawn; section_end "gitaly-test-spawn"746$ echo -e "\e[0Ksection_end:`date +%s`:gitaly-test-spawn\r\e[0K"747$ rspec_paralellized_job "--tag ~quarantine --tag ~level:background_migration"748SKIP_FLAKY_TESTS_AUTOMATICALLY: 749RETRY_FAILED_TESTS_IN_NEW_PROCESS: true750KNAPSACK_GENERATE_REPORT: true751FLAKY_RSPEC_GENERATE_REPORT: true752KNAPSACK_TEST_FILE_PATTERN: spec/{bin,channels,components,config,contracts,db,dependencies,elastic,elastic_integration,experiments,factories,finders,frontend,graphql,haml_lint,helpers,initializers,lib,metrics_server,models,policies,presenters,rack_servers,replicators,routing,rubocop,scripts,serializers,services,sidekiq,sidekiq_cluster,spam,support_specs,tasks,uploaders,validators,views,workers,tooling}{,/**/}*_spec.rb753KNAPSACK_LOG_LEVEL: debug754KNAPSACK_REPORT_PATH: knapsack/rspec_unit_pg13_19_28_report.json755FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json756FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg13_19_28_report.json757NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg13_19_28_report.json758SKIPPED_TESTS_REPORT_PATH: rspec/skipped_tests_rspec_unit_pg13_19_28.txt759CRYSTALBALL: 760RSPEC_TESTS_MAPPING_ENABLED: 761RSPEC_TESTS_FILTER_FILE: 762Running command: bundle exec rspec -Ispec -rspec_helper --color --failure-exit-code 1 --error-exit-code 2 --format documentation --format RspecJunitFormatter --out rspec/junit_rspec.xml --tag ~quarantine --tag ~level:background_migration -- spec/services/groups/transfer_service_spec.rb spec/models/container_repository_spec.rb spec/services/merge_requests/create_from_issue_service_spec.rb spec/tasks/gitlab/workhorse_rake_spec.rb spec/services/issues/move_service_spec.rb spec/lib/gitlab/background_migration/backfill_member_namespace_for_group_members_spec.rb spec/lib/banzai/filter/references/issue_reference_filter_spec.rb spec/services/boards/issues/move_service_spec.rb spec/lib/gitlab/search_results_spec.rb spec/models/snippet_spec.rb spec/models/ci/stage_spec.rb spec/finders/releases/group_releases_finder_spec.rb spec/lib/gitlab/auth/auth_finders_spec.rb spec/workers/repository_fork_worker_spec.rb spec/lib/gitlab/http_spec.rb spec/lib/feature_spec.rb spec/models/label_spec.rb spec/services/submodules/update_service_spec.rb spec/models/operations/feature_flag_spec.rb spec/models/ci/processable_spec.rb spec/services/milestones/transfer_service_spec.rb spec/models/user_preference_spec.rb spec/policies/blob_policy_spec.rb spec/workers/pages/invalidate_domain_cache_worker_spec.rb spec/lib/gitlab/path_regex_spec.rb spec/lib/banzai/color_parser_spec.rb spec/services/merge_requests/link_lfs_objects_service_spec.rb spec/uploaders/packages/debian/distribution_release_file_uploader_spec.rb spec/lib/gitlab/background_migration/reset_status_on_container_repositories_spec.rb spec/support_specs/helpers/stub_feature_flags_spec.rb spec/services/pages/migrate_from_legacy_storage_service_spec.rb spec/lib/gitlab/data_builder/issuable_spec.rb spec/models/ci/job_token/scope_spec.rb spec/validators/addressable_url_validator_spec.rb spec/services/users/update_service_spec.rb spec/finders/starred_projects_finder_spec.rb spec/serializers/diff_file_entity_spec.rb spec/lib/gitlab/ci/charts_spec.rb spec/models/packages/debian/group_distribution_spec.rb spec/models/metrics/dashboard/annotation_spec.rb spec/lib/gitlab/ci/config/entry/default_spec.rb spec/services/issues/reopen_service_spec.rb spec/services/deployments/archive_in_project_service_spec.rb spec/views/notify/pipeline_success_email.html.haml_spec.rb spec/helpers/clusters_helper_spec.rb spec/lib/gitlab/doctor/secrets_spec.rb spec/services/boards/lists/create_service_spec.rb spec/services/pages_domains/obtain_lets_encrypt_certificate_service_spec.rb spec/lib/gitlab/metrics/dashboard/processor_spec.rb spec/models/generic_commit_status_spec.rb spec/models/fork_network_spec.rb spec/lib/gitlab/repo_path_spec.rb spec/finders/security/security_jobs_finder_spec.rb spec/lib/banzai/filter/references/feature_flag_reference_filter_spec.rb spec/lib/gitlab/ci/status/build/unschedule_spec.rb spec/finders/contributed_projects_finder_spec.rb spec/tasks/gitlab/git_rake_spec.rb spec/lib/gitlab/ci/ansi2json/line_spec.rb spec/models/personal_snippet_spec.rb spec/lib/gitlab/markup_helper_spec.rb spec/views/projects/commits/_commit.html.haml_spec.rb spec/lib/gitlab/diff/parser_spec.rb spec/policies/deploy_keys_project_policy_spec.rb spec/lib/gitlab/ci/pipeline/duration_spec.rb spec/lib/gitlab/ci/pipeline/logger_spec.rb spec/services/notification_recipients/builder/default_spec.rb spec/serializers/merge_request_metrics_helper_spec.rb spec/lib/gitlab/api_authentication/token_locator_spec.rb spec/services/work_items/widgets/assignees_service/update_service_spec.rb spec/services/users/activity_service_spec.rb spec/lib/bitbucket_server/representation/pull_request_spec.rb spec/lib/gitlab/database/partitioning/monthly_strategy_spec.rb spec/graphql/resolvers/base_resolver_spec.rb spec/lib/gitlab/checks/lfs_integrity_spec.rb spec/serializers/base_discussion_entity_spec.rb spec/lib/container_registry/migration_spec.rb spec/models/projects/repository_storage_move_spec.rb spec/lib/gitlab/kas_spec.rb spec/services/clusters/destroy_service_spec.rb spec/graphql/resolvers/project_jobs_resolver_spec.rb spec/lib/gitlab/database/postgres_partition_spec.rb spec/services/system_hooks_service_spec.rb spec/workers/destroy_pages_deployments_worker_spec.rb spec/services/repositories/destroy_service_spec.rb spec/models/users_statistics_spec.rb spec/tasks/migrate/schema_check_rake_spec.rb spec/presenters/packages/detail/package_presenter_spec.rb spec/lib/gitlab/background_task_spec.rb spec/workers/concerns/gitlab/github_import/object_importer_spec.rb spec/lib/gitlab/ssh/signature_spec.rb spec/services/repository_archive_clean_up_service_spec.rb spec/serializers/entity_date_helper_spec.rb spec/policies/deploy_token_policy_spec.rb spec/models/ci/instance_variable_spec.rb spec/lib/gitlab/utils/delegator_override_spec.rb spec/initializers/google_cloud_profiler_spec.rb spec/workers/gitlab/bitbucket_server_import/stage/import_pull_requests_worker_spec.rb spec/models/blob_viewer/readme_spec.rb spec/workers/group_destroy_worker_spec.rb spec/models/ci/unit_test_spec.rb spec/lib/gitlab/import_export/file_importer_spec.rb spec/lib/gitlab/database/partitioning/sliding_list_strategy_spec.rb spec/lib/gitlab/view/presenter/factory_spec.rb spec/lib/gitlab/gitaly_client/remote_service_spec.rb spec/lib/gitlab/auth/user_access_denied_reason_spec.rb spec/lib/sidebars/projects/menus/ci_cd_menu_spec.rb spec/lib/gitlab/github_import/object_counter_spec.rb spec/serializers/merge_request_user_entity_spec.rb spec/models/bulk_imports/file_transfer/group_config_spec.rb spec/lib/gitlab/metrics/elasticsearch_rack_middleware_spec.rb spec/graphql/mutations/release_asset_links/create_spec.rb spec/models/preloaders/project_policy_preloader_spec.rb spec/workers/gitlab/bitbucket_server_import/import_lfs_object_worker_spec.rb spec/models/integrations/bugzilla_spec.rb spec/policies/resource_label_event_policy_spec.rb spec/models/integrations/chat_message/deployment_message_spec.rb spec/services/members/import_project_team_service_spec.rb spec/lib/banzai/filter/inline_cluster_metrics_filter_spec.rb spec/services/import_export_clean_up_service_spec.rb spec/finders/alert_management/http_integrations_finder_spec.rb spec/models/integrations/zentao_spec.rb spec/lib/gitlab/analytics/cycle_analytics/aggregated/base_query_builder_spec.rb spec/lib/gitlab/ci/config/entry/include_spec.rb spec/tasks/gitlab/generate_sample_prometheus_data_rake_spec.rb spec/services/packages/debian/update_distribution_service_spec.rb spec/workers/delete_user_worker_spec.rb spec/models/design_user_mention_spec.rb spec/services/projects/schedule_bulk_repository_shard_moves_service_spec.rb spec/rubocop/cop/migration/batch_migrations_post_only_spec.rb spec/services/work_items/widgets/start_and_due_date_service/update_service_spec.rb spec/services/update_container_registry_info_service_spec.rb spec/workers/personal_access_tokens/expiring_worker_spec.rb spec/finders/packages/go/package_finder_spec.rb spec/serializers/ci/dag_stage_entity_spec.rb spec/serializers/merge_request_widget_commit_entity_spec.rb spec/initializers/trusted_proxies_spec.rb spec/policies/resource_milestone_event_policy_spec.rb spec/services/concerns/merge_requests/assigns_merge_params_spec.rb spec/lib/gitlab/git/raw_diff_change_spec.rb spec/models/integrations/assembla_spec.rb spec/models/alert_management/alert_assignee_spec.rb spec/lib/gitlab/middleware/speedscope_spec.rb spec/views/shared/issuable/_sidebar.html.haml_spec.rb spec/tasks/admin_mode_spec.rb spec/finders/projects/export_job_finder_spec.rb spec/models/project_import_data_spec.rb spec/models/achievements/achievement_spec.rb spec/workers/gitlab/github_import/import_issue_event_worker_spec.rb spec/graphql/mutations/clusters/agent_tokens/create_spec.rb spec/lib/gitlab/ci/reports/security/flag_spec.rb spec/lib/gitlab/x509/tag_spec.rb spec/lib/gitlab/work_items/work_item_hierarchy_spec.rb spec/services/integrations/slack_interactions/incident_management/incident_modal_closed_service_spec.rb spec/lib/gitlab/instrumentation/rate_limiting_gates_spec.rb spec/rubocop/cop/ban_catch_throw_spec.rb spec/views/layouts/project.html.haml_spec.rb spec/lib/gitlab/utils/safe_inline_hash_spec.rb spec/services/packages/conan/create_package_service_spec.rb spec/lib/gitlab/database/postgres_autovacuum_activity_spec.rb spec/finders/groups/accepting_project_imports_finder_spec.rb spec/lib/gitlab/ci/parsers/coverage/cobertura_spec.rb spec/lib/bulk_imports/groups/loaders/group_loader_spec.rb spec/models/packages/composer/metadatum_spec.rb spec/graphql/mutations/branches/create_spec.rb spec/config/application_spec.rb spec/helpers/import_helper_spec.rb spec/models/concerns/triggerable_hooks_spec.rb spec/lib/gitlab/analytics/usage_trends/workers_argument_builder_spec.rb spec/presenters/service_hook_presenter_spec.rb spec/rubocop/cop/migration/migration_record_spec.rb spec/services/packages/rubygems/create_dependencies_service_spec.rb spec/lib/container_registry/registry_spec.rb spec/components/pajamas/spinner_component_spec.rb spec/lib/gitlab/database/migration_helpers/convert_to_bigint_spec.rb spec/lib/gitlab/ci/reports/test_report_summary_spec.rb spec/lib/gitlab/middleware/memory_report_spec.rb spec/models/ml/candidate_metric_spec.rb spec/services/resource_events/synthetic_state_notes_builder_service_spec.rb spec/lib/gitlab/ci/parsers/sbom/cyclonedx_spec.rb spec/lib/gitlab/ci/pipeline/expression/lexeme/equals_spec.rb spec/lib/sidebars/user_settings/menus/applications_menu_spec.rb spec/presenters/packages/nuget/search_results_presenter_spec.rb spec/models/packages/composer/cache_file_spec.rb spec/lib/sidebars/projects/menus/shimo_menu_spec.rb spec/services/spam/ham_service_spec.rb spec/models/concerns/as_cte_spec.rb spec/graphql/resolvers/concerns/resolves_project_spec.rb spec/graphql/resolvers/saved_reply_resolver_spec.rb spec/lib/gitlab/git/diff_stats_collection_spec.rb spec/lib/gitlab/snippet_search_results_spec.rb spec/services/packages/debian/find_or_create_incoming_service_spec.rb spec/helpers/calendar_helper_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/count_issues_metric_spec.rb spec/models/bulk_imports/batch_tracker_spec.rb spec/models/performance_monitoring/prometheus_metric_spec.rb spec/models/work_items/widgets/base_spec.rb spec/lib/gitlab/performance_bar/with_top_level_warnings_spec.rb spec/lib/gitlab/github_import/representation/to_hash_spec.rb spec/lib/gitlab/prometheus/queries/validate_query_spec.rb spec/graphql/types/alert_management/status_enum_spec.rb spec/lib/gitlab/github_import/importer/lfs_object_importer_spec.rb spec/workers/ci/job_artifacts/expire_project_build_artifacts_worker_spec.rb spec/rubocop/cop/scalability/file_uploads_spec.rb spec/graphql/types/todoable_interface_spec.rb spec/helpers/tracking_helper_spec.rb spec/lib/api/github/entities_spec.rb spec/graphql/types/alert_management/integration_type_enum_spec.rb spec/graphql/mutations/saved_replies/destroy_spec.rb spec/lib/gitlab/ci/ansi2json/result_spec.rb spec/lib/gitlab/session_spec.rb spec/lib/gitlab/database/postgres_hll/buckets_spec.rb spec/lib/gitlab/metrics/dashboard/stages/metric_endpoint_inserter_spec.rb spec/lib/gitlab/sidekiq_middleware/query_analyzer_spec.rb spec/models/concerns/database_reflection_spec.rb spec/lib/gitlab/sidekiq_middleware/extra_done_log_metadata_spec.rb spec/lib/gitlab/metrics/dashboard/transformers/yml/v1/prometheus_metrics_spec.rb spec/graphql/types/packages/package_type_spec.rb spec/views/groups/settings/_general.html.haml_spec.rb spec/lib/gitlab/utils/error_message_spec.rb spec/lib/gitlab/database/grant_spec.rb spec/lib/gitlab/usage/metrics/names_suggestions/relation_parsers/joins_spec.rb spec/lib/kramdown/kramdown_spec.rb spec/lib/gitlab/metrics/dashboard/stages/track_panel_type_spec.rb spec/graphql/types/projects/branch_rule_type_spec.rb spec/models/acts_as_taggable_on/tagging_spec.rb spec/graphql/types/packages/composer/json_type_spec.rb spec/lib/gitlab/asciidoc/html5_converter_spec.rb spec/lib/gitlab/auth/otp/strategies/devise_spec.rb spec/graphql/types/ci/variable_input_type_spec.rb spec/serializers/integrations/project_serializer_spec.rb spec/workers/gitlab/github_import/stage/import_pull_requests_review_requests_worker_spec.rb spec/lib/gitlab/email/message/build_ios_app_guide_spec.rb spec/lib/api/entities/nuget/search_result_spec.rb spec/graphql/types/security/report_types_enum_spec.rb spec/presenters/deploy_key_presenter_spec.rb spec/models/merge_request_context_commit_diff_file_spec.rb spec/lib/gitlab/diff/inline_diff_markdown_marker_spec.rb spec/lib/gitlab/ci/status/core_spec.rbKnapsack report generator started!763warning: parser/current is loading parser/ruby30, which recognizes 3.0.5-compliant syntax, but you are running 3.0.6.765Run options: exclude {:quarantine=>true, :level=>"background_migration"}766Test environment set up in 0.617303137 seconds767Groups::TransferService768 handling packages769 with an npm package770 behaves like transfer allowed771 allows transfer772 with a project within subgroup773 behaves like transfer allowed774 allows transfer775 without a root namespace change776 behaves like transfer allowed777 allows transfer778 with namespaced packages present779 does not allow transfer780 namespaced package is pending destruction781 behaves like transfer allowed782 allows transfer783 when transferring a group into a root group784 behaves like transfer allowed785 allows transfer786 without an npm package787 when transferring a group into a root group788 allows transfer789 #execute790 when transforming a group into a root group791 behaves like ensuring allowed transfer for a group792 when there's an exception on GitLab shell directories793 returns false794 adds an error on group795 when the group is already a root group796 adds an error on group797 when the user does not have the right policies798 returns false799 adds an error on group800 when there is a group with the same path801 returns false802 adds an error on group803 when the group is a subgroup and the transfer is valid804 updates group attributes805 updates group children path806 updates group projects path807 when projects have project namespaces808 behaves like project namespace path is in sync with project path809 keeps project and project namespace attributes in sync810 when transferring a subgroup into another group811 behaves like ensuring allowed transfer for a group812 when there's an exception on GitLab shell directories813 returns false814 adds an error on group815 when the new parent group is the same as the previous parent group816 returns false817 adds an error on group818 when the user does not have the right policies819 returns false820 adds an error on group821 when the parent has a group with the same path822 returns false823 adds an error on group824 when the parent group has a project with the same path825 adds an error on group826 when projects have project namespaces827 behaves like project namespace path is in sync with project path828 keeps project and project namespace attributes in sync829 when the group is allowed to be transferred830 updates visibility for the group based on the parent group831 updates parent group to the new parent832 returns the group as children of the new parent833 creates a redirect for the group834 when the group has a lower visibility than the parent group835 does not update the visibility for the group836 when the group has a higher visibility than the parent group837 updates visibility level based on the parent group838 with a group integration839 with an inherited integration840 replaces inherited integrations841 with a custom integration842 does not updates the integrations843 shared runners configuration844 if parent group has disabled shared runners but allows overrides845 calls update service846 if parent group does not allow shared runners847 calls update service848 if parent group allows shared runners849 does not call update service and keeps them disabled on the group850 when a group is transferred to its subgroup851 does not execute the transfer852 when transferring a group with group descendants853 updates subgroups path854 creates redirects for the subgroups855 when the new parent has a higher visibility than the children856 does not update the children visibility857 when the new parent has a lower visibility than the children858 updates children visibility to match the new parent859 when transferring a group with project descendants860 updates projects path861 creates permanent redirects for the projects862 when the new parent has a higher visibility than the projects863 does not update projects visibility864 behaves like project namespace path is in sync with project path865 keeps project and project namespace attributes in sync866 when the new parent has a lower visibility than the projects867 updates projects visibility to match the new parent868 invokes #update_project_settings869 behaves like project namespace path is in sync with project path870 keeps project and project namespace attributes in sync871 when transferring a group with subgroups & projects descendants872 updates subgroups path873 updates projects path874 creates redirect for the subgroups and projects875 behaves like project namespace path is in sync with project path876 keeps project and project namespace attributes in sync877 when transferring a group with nested groups and projects878 updated paths879 updates subgroups path880 updates projects path881 creates redirect for the subgroups and projects882 resets project authorizations883 removes old project authorizations884 adds new project authorizations885 performs authorizations job886 for nested projects887 removes old project authorizations888 adds new project authorizations889 preserves existing project authorizations for direct project members890 for nested groups with unique members891 preserves existing project authorizations892 for groups with many projects893 adds new project authorizations for the user which makes a transfer894 adds project authorizations for users in the new hierarchy895 removes project authorizations for users in the old hierarchy896 schedules authorizations job897 transferring groups with shared_projects898 when the group that has existing project share is transferred899 behaves like drops the authorizations of ancestor members from the old hierarchy900 drops the authorizations of ancestor members from the old hierarchy901 when the group whose subgroup has an existing project share is transferred902 behaves like drops the authorizations of ancestor members from the old hierarchy903 drops the authorizations of ancestor members from the old hierarchy904 when a group that has existing group share is transferred905 retains the authorizations of direct members906 when transferring a group with two factor authentication switched on907 does not update group two factor authentication setting908 when new parent disallows two factor authentication switched on for descendants909 updates group two factor authentication setting910 schedules update of group two factor authentication setting for descendants911 when updating the group goes wrong912 restores group and projects visibility913 when group has pending builds914 updates pending builds for the group915 when transferring a subgroup into root group916 ensures there is still an owner for the transferred group917 when group has explicit owner918 does not add additional owner919 when a project has container images920 within group921 does not transfer922 within subgroup923 does not transfer924 crm925 moving up926 retains issue contacts927 behaves like publishes a GroupTransferedEvent928 is expected to publish event Groups::GroupTransferedEvent929 moving down930 retains issue contacts931 behaves like publishes a GroupTransferedEvent932 is expected to publish event Groups::GroupTransferedEvent933 moving sideways934 retains issue contacts935 behaves like publishes a GroupTransferedEvent936 is expected to publish event Groups::GroupTransferedEvent937 moving to new root group938 moves all crm objects939 retains issue contacts940 behaves like publishes a GroupTransferedEvent941 is expected to publish event Groups::GroupTransferedEvent942 moving to a subgroup within a new root group943 with permission on the root group944 moves all crm objects945 retains issue contacts946 behaves like publishes a GroupTransferedEvent947 is expected to publish event Groups::GroupTransferedEvent948 with permission on the subgroup949 raises error950 does not publish a GroupTransferedEvent951 with namespace_commit_emails concerns952 when origin is a root group953 deletes all namespace_commit_emails954 behaves like publishes a GroupTransferedEvent955 is expected to publish event Groups::GroupTransferedEvent956 when origin is not a root group957 does not attempt to delete namespace_commit_emails958ContainerRepository959 behaves like having unique enum values960 has unique values in "status"961 has unique values in "expiration_policy_cleanup_status"962 has unique values in "migration_skipped_reason"963 associations964 belongs to the project965 validations966 is expected to validate that :migration_retries_count cannot be empty/falsy967 is expected to validate that :migration_retries_count looks like a number greater than or equal to 0968 is expected to validate that :migration_aborted_in_state is either ‹"pre_importing"›, ‹"importing"›, ‹"pre_import_done"›, or ‹"default"›969 is expected to allow :migration_aborted_in_state to be ‹nil›970 migration_state971 is expected to validate that :migration_state cannot be empty/falsy972 is expected to validate that :migration_state is either ‹"default"›, ‹"pre_import_done"›, ‹"import_done"›, ‹"import_aborted"›, ‹"import_skipped"›, ‹"pre_importing"›, or ‹"importing"›973 pre_importing974 validates expected attributes975 pre_import_done976 validates expected attributes977 importing978 validates expected attributes979 import_skipped980 validates expected attributes981 import_aborted982 validates expected attributes983 :migration_state state_machine984 #start_pre_import985 behaves like transitioning from allowed states986 when transitioning from default987 returns true988 when transitioning from pre_import_done989 returns false990 when transitioning from import_done991 returns false992 when transitioning from import_aborted993 returns true994 when transitioning from import_skipped995 returns false996 when transitioning from pre_importing997 returns true998 when transitioning from importing999 returns true1000 behaves like transitioning to pre_importing1001 behaves like no action when feature flag is disabled1002 feature flag disabled1003 is expected to eq false1004 successful pre_import request1005 sets migration_pre_import_started_at and resets migration_pre_import_done_at1006 failed pre_import request1007 sets migration_pre_import_started_at and resets migration_pre_import_done_at1008 already imported1009 finishes the import1010 non-existing repository1011 finishes the import1012 #retry_pre_import1013 behaves like transitioning from allowed states1014 when transitioning from default1015 returns false1016 when transitioning from pre_import_done1017 returns false1018 when transitioning from import_done1019 returns false1020 when transitioning from import_aborted1021 returns true1022 when transitioning from import_skipped1023 returns false1024 when transitioning from pre_importing1025 returns true1026 when transitioning from importing1027 returns true1028 behaves like transitioning to pre_importing1029 behaves like no action when feature flag is disabled1030 feature flag disabled1031 is expected to eq false1032 successful pre_import request1033 sets migration_pre_import_started_at and resets migration_pre_import_done_at1034 failed pre_import request1035 sets migration_pre_import_started_at and resets migration_pre_import_done_at1036 already imported1037 finishes the import1038 non-existing repository1039 finishes the import1040 behaves like transitioning out of import_aborted1041 resets migration_aborted_at and migration_aborted_in_state1042 #finish_pre_import1043 sets migration_pre_import_done_at1044 behaves like transitioning from allowed states1045 when transitioning from default1046 returns false1047 when transitioning from pre_import_done1048 returns false1049 when transitioning from import_done1050 returns false1051 when transitioning from import_aborted1052 returns true1053 when transitioning from import_skipped1054 returns false1055 when transitioning from pre_importing1056 returns true1057 when transitioning from importing1058 returns true1059 #start_import1060 behaves like transitioning from allowed states1061 when transitioning from default1062 returns false1063 when transitioning from pre_import_done1064 returns true1065 when transitioning from import_done1066 returns false1067 when transitioning from import_aborted1068 returns true1069 when transitioning from import_skipped1070 returns false1071 when transitioning from pre_importing1072 returns true1073 when transitioning from importing1074 returns true1075 behaves like transitioning to importing1076 successful import request1077 sets migration_import_started_at and resets migration_import_done_at1078 failed import request1079 sets migration_import_started_at and resets migration_import_done_at1080 already imported1081 finishes the import1082 #retry_import1083 behaves like transitioning from allowed states1084 when transitioning from default1085 returns false1086 when transitioning from pre_import_done1087 returns false1088 when transitioning from import_done1089 returns false1090 when transitioning from import_aborted1091 returns true1092 when transitioning from import_skipped1093 returns false1094 when transitioning from pre_importing1095 returns true1096 when transitioning from importing1097 returns true1098 behaves like transitioning to importing1099 successful import request1100 sets migration_import_started_at and resets migration_import_done_at1101 failed import request1102 sets migration_import_started_at and resets migration_import_done_at1103 already imported1104 finishes the import1105 behaves like no action when feature flag is disabled1106 feature flag disabled1107 is expected to eq false1108 #finish_import1109 sets migration_import_done_at and queues the next import1110 behaves like transitioning from allowed states1111 when transitioning from default1112 returns true1113 when transitioning from pre_import_done1114 returns false1115 when transitioning from import_done1116 returns false1117 when transitioning from import_aborted1118 returns true1119 when transitioning from import_skipped1120 returns false1121 when transitioning from pre_importing1122 returns true1123 when transitioning from importing1124 returns true1125 behaves like queueing the next import1126 starts the worker1127 #already_migrated1128 sets migration_import_done_at1129 behaves like transitioning from allowed states1130 when transitioning from default1131 returns true1132 when transitioning from pre_import_done1133 returns false1134 when transitioning from import_done1135 returns false1136 when transitioning from import_aborted1137 returns false1138 when transitioning from import_skipped1139 returns false1140 when transitioning from pre_importing1141 returns false1142 when transitioning from importing1143 returns false1144 #abort_import1145 sets migration_aborted_at and migration_aborted_at, increments the retry count, and queues the next import1146 behaves like transitioning from allowed states1147 when transitioning from default1148 returns true1149 when transitioning from pre_import_done1150 returns true1151 when transitioning from import_done1152 returns false1153 when transitioning from import_aborted1154 returns false1155 when transitioning from import_skipped1156 returns false1157 when transitioning from pre_importing1158 returns true1159 when transitioning from importing1160 returns true1161 behaves like queueing the next import1162 starts the worker1163 above the max retry limit1164 skips the migration1165 #skip_import1166 sets migration_skipped_at and migration_skipped_reason1167 raises and error if a reason is not given1168 behaves like transitioning from allowed states1169 when transitioning from default1170 returns true1171 when transitioning from pre_import_done1172 returns true1173 when transitioning from import_done1174 returns false1175 when transitioning from import_aborted1176 returns true1177 when transitioning from import_skipped1178 returns false1179 when transitioning from pre_importing1180 returns true1181 when transitioning from importing1182 returns true1183 behaves like queueing the next import1184 starts the worker1185 #finish_pre_import_and_start_import1186 behaves like transitioning from allowed states1187 when transitioning from default1188 returns false1189 when transitioning from pre_import_done1190 returns false1191 when transitioning from import_done1192 returns false1193 when transitioning from import_aborted1194 returns true1195 when transitioning from import_skipped1196 returns false1197 when transitioning from pre_importing1198 returns true1199 when transitioning from importing1200 returns true1201 behaves like transitioning to importing1202 successful import request1203 sets migration_import_started_at and resets migration_import_done_at1204 failed import request1205 sets migration_import_started_at and resets migration_import_done_at1206 already imported1207 finishes the import1208 when triggering registry API requests1209 when responding to a start_pre_import event1210 behaves like a state machine configured with use_transactions: false1211 executes the registry API request outside of a transaction1212 when responding to a retry_pre_import event1213 behaves like a state machine configured with use_transactions: false1214 executes the registry API request outside of a transaction1215 when responding to a start_import event1216 behaves like a state machine configured with use_transactions: false1217 executes the registry API request outside of a transaction1218 when responding to a retry_import event1219 behaves like a state machine configured with use_transactions: false1220 executes the registry API request outside of a transaction1221 #retry_aborted_migration1222 when migration_state is not aborted1223 does nothing1224 when migration_state is aborted1225 behaves like reconciling migration_state1226 native response1227 finishes the import1228 import_in_progress response1229 behaves like enforcing states coherence to1230 leaves the repository in the expected migration_state1231 import_complete response1232 finishes the import1233 import_canceled response1234 behaves like retrying the import1235 retries the import1236 import_failed response1237 behaves like retrying the import1238 retries the import1239 pre_import_in_progress response1240 behaves like enforcing states coherence to1241 leaves the repository in the expected migration_state1242 pre_import_complete response1243 finishes the pre_import and starts the import1244 pre_import_canceled response1245 behaves like retrying the pre_import1246 retries the pre_import1247 pre_import_failed response1248 behaves like retrying the pre_import1249 retries the pre_import1250 error response1251 migration_pre_import_done_at is NULL1252 behaves like retrying the pre_import1253 retries the pre_import1254 migration_pre_import_done_at is not NULL1255 behaves like retrying the import1256 retries the import1257 #reconcile_import_status1258 behaves like reconciling migration_state1259 native response1260 finishes the import1261 import_in_progress response1262 behaves like enforcing states coherence to1263 leaves the repository in the expected migration_state1264 import_complete response1265 finishes the import1266 import_canceled response1267 behaves like retrying the import1268 retries the import1269 import_failed response1270 behaves like retrying the import1271 retries the import1272 pre_import_in_progress response1273 behaves like enforcing states coherence to1274 leaves the repository in the expected migration_state1275 pre_import_complete response1276 finishes the pre_import and starts the import1277 pre_import_canceled response1278 behaves like retrying the pre_import1279 retries the pre_import1280 pre_import_failed response1281 behaves like retrying the pre_import1282 retries the pre_import1283 #tag1284 has a test tag1285 #path1286 when project path does not contain uppercase letters1287 returns a full path to the repository1288 when path contains uppercase letters1289 returns a full path without capital letters1290 #manifest1291 returns non-empty manifest1292 #valid?1293 is a valid repository1294 #tags1295 returns non-empty tags list1296 #each_tags_page1297 with an empty page1298 behaves like iterating through a page1299 iterates through one page1300 with one page1301 with a nil created_at1302 behaves like iterating through a page1303 iterates through one page1304 with an invalid created_at1305 behaves like iterating through a page1306 iterates through one page1307 with two pages1308 iterates through two pages1309 when max pages is reached1310 raises an error1311 without a block set1312 raises an Argument error1313 without a page size set1314 uses a default size1315 with an empty client response1316 breaks the loop1317 with a nil page1318 behaves like iterating through a page1319 iterates through one page1320 calling on a non migrated repository1321 raises an Argument error1322 #tags_count1323 returns the count of tags1324 #has_tags?1325 has tags1326 #delete_tags!1327 when action succeeds1328 returns status that indicates success1329 when action fails1330 returns status that indicates failure1331 #delete_tag_by_name1332 when action succeeds1333 returns status that indicates success1334 when action fails1335 returns status that indicates failure1336 #location1337 when registry is running on a custom port1338 returns a full location of the repository1339 #root_repository?1340 when repository is a root repository1341 returns true1342 when repository is not a root repository1343 returns false1344 #start_expiration_policy!1345 sets the expiration policy started at to now1346 #size1347 supports gitlab api on .com with a recent repository1348 with a size_bytes field1349 is expected to eq 123451350 without a size_bytes field1351 is expected to eq nil1352 does not support gitlab api1353 is expected to eq nil1354 not on .com1355 is expected to eq nil1356 supports gitlab api on .com with an old repository1357 with migration_state import_done1358 is expected to eq 123451359 with migration_state not import_done1360 is expected to eq nil1361 #set_delete_ongoing_status1362 updates deletion status attributes1363 #set_delete_scheduled_status1364 updates delete attributes1365 #status_updated_at1366 when status is updated to delete_scheduled1367 updates status_changed_at1368 when status is updated to delete_ongoing1369 updates status_changed_at1370 when status is updated to delete_failed1371 updates status_changed_at1372 when status is not changed1373 does not update status_changed_at1374 registry migration1375 #migration_pre_import1376 behaves like handling the migration step1377 behaves like gitlab migration client request1378 returns the same response as the client1379 when the gitlab_api feature is not supported1380 returns :error1381 too many imports1382 raises an error when it receives too_many_imports as a response1383 #migration_import1384 behaves like handling the migration step1385 behaves like gitlab migration client request1386 returns the same response as the client1387 when the gitlab_api feature is not supported1388 returns :error1389 too many imports1390 raises an error when it receives too_many_imports as a response1391 #migration_cancel1392 behaves like gitlab migration client request1393 returns the same response as the client1394 when the gitlab_api feature is not supported1395 returns :error1396 #force_migration_cancel1397 successful cancellation1398 skips the migration1399 behaves like returning the same response as the client1400 returns the same response1401 failed cancellation1402 does not skip the migration1403 behaves like returning the same response as the client1404 returns the same response1405 when the gitlab_api feature is not supported1406 returns :error1407 .build_from_path1408 fabricates repository assigned to a correct project1409 fabricates repository with a correct name1410 is not persisted1411 .find_or_create_from_path1412 when received multi-level repository path1413 fabricates repository assigned to a correct project1414 fabricates repository with a correct name1415 when path is too long1416 does not create repository and raises error1417 when received multi-level repository with nested groups1418 fabricates repository assigned to a correct project1419 fabricates repository with a correct name1420 has path including a nested group1421 when received root repository path1422 fabricates repository assigned to a correct project1423 fabricates repository with an empty name1424 when repository already exists1425 returns the existing repository1426 when many of the same repository are created at the same time1427 does not throw validation errors and only creates one repository1428 retrieves a persisted repository for all concurrent calls1429 .find_by_path1430 when repository exists1431 finds the repository1432 when repository does not exist1433 returns nil1434 .find_by_path!1435 when repository exists1436 finds the repository1437 when repository does not exist1438 raises an exception1439 .build_root_repository1440 fabricates a root repository object1441 assignes it to the correct project1442 does not persist it1443 .for_group_and_its_subgroups1444 in a group1445 is expected to contain exactly #<ContainerRepository id: 169, project_id: 313, name: "my_image", created_at: "2023-05-25 18:04:52.37...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>1446 with a subgroup1447 is expected to contain exactly #<ContainerRepository id: 172, project_id: 316, name: "my_image", created_at: "2023-05-25 18:04:54.07...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil> and #<ContainerRepository id: 170, project_id: 314, name: "my_image", created_at: "2023-05-25 18:04:53.20...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>1448 group without container_repositories1449 is expected to eq []1450 .search_by_name1451 is expected to contain exactly #<ContainerRepository id: 174, project_id: 317, name: "my_image", created_at: "2023-05-25 18:04:54.94...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>1452 .for_project_id1453 is expected to contain exactly #<ContainerRepository id: 175, project_id: 318, name: "my_image", created_at: "2023-05-25 18:04:55.71...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>1454 .expiration_policy_started_at_nil_or_before1455 is expected to contain exactly #<ContainerRepository id: 176, project_id: 319, name: "test_image_102", created_at: "2023-05-25 18:04...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>, #<ContainerRepository id: 177, project_id: 320, name: "test_image_103", created_at: "2023-05-25 18:04...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>, and #<ContainerRepository id: 179, project_id: 322, name: "test_image_105", created_at: "2023-05-25 18:04...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>1456 .with_migration_import_started_at_nil_or_before1457 is expected to contain exactly #<ContainerRepository id: 181, project_id: 324, name: "test_image_107", created_at: "2023-05-25 18:04...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil> and #<ContainerRepository id: 182, project_id: 325, name: "test_image_108", created_at: "2023-05-25 18:04...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>1458 .with_migration_pre_import_started_at_nil_or_before1459 is expected to contain exactly #<ContainerRepository id: 184, project_id: 327, name: "test_image_110", created_at: "2023-05-25 18:04...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil> and #<ContainerRepository id: 185, project_id: 328, name: "test_image_111", created_at: "2023-05-25 18:04...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>1460 .with_migration_pre_import_done_at_nil_or_before1461 is expected to contain exactly #<ContainerRepository id: 187, project_id: 330, name: "test_image_113", created_at: "2023-05-25 18:04...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil> and #<ContainerRepository id: 188, project_id: 331, name: "test_image_114", created_at: "2023-05-25 18:04...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>1462 .with_stale_ongoing_cleanup1463 is expected to contain exactly #<ContainerRepository id: 189, project_id: 332, name: "test_image_115", created_at: "2023-05-25 18:05...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil> and #<ContainerRepository id: 191, project_id: 334, name: "test_image_117", created_at: "2023-05-25 18:05...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>1464 .with_stale_delete_at1465 is expected to contain exactly #<ContainerRepository id: 193, project_id: 336, name: "test_image_119", created_at: "2023-05-25 18:05...arted_at: "2023-05-24 18:05:01.373427004 +0000", status_updated_at: nil, verification_checksum: nil> and #<ContainerRepository id: 195, project_id: 338, name: "test_image_121", created_at: "2023-05-25 18:05...arted_at: "2023-05-18 18:05:01.986617129 +0000", status_updated_at: nil, verification_checksum: nil>1466 .waiting_for_cleanup1467 is expected to contain exactly #<ContainerRepository id: 196, project_id: 339, name: "test_image_122", created_at: "2023-05-25 18:05...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil> and #<ContainerRepository id: 197, project_id: 340, name: "test_image_123", created_at: "2023-05-25 18:05...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>1468 .exists_by_path?1469 returns true for known container repository paths1470 returns false for unknown container repository paths1471 .all_migrated?1472 with no repositories1473 is expected to be truthy1474 with only recent repositories1475 is expected to be truthy1476 with one old non migrated repository1477 is expected to be falsey1478 with one old migrated repository1479 is expected to be truthy1480 .with_enabled_policy1481 is expected to eq [#<ContainerRepository id: 202, project_id: 344, name: "test_image_127", created_at: "2023-05-25 18:0...eleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>]1482 #migration_in_active_state?1483 when in default migration_state1484 is expected to eq false1485 when in pre_import_done migration_state1486 is expected to eq false1487 when in import_done migration_state1488 is expected to eq false1489 when in import_aborted migration_state1490 is expected to eq false1491 when in import_skipped migration_state1492 is expected to eq false1493 when in pre_importing migration_state1494 is expected to eq true1495 when in importing migration_state1496 is expected to eq true1497 #migration_importing?1498 when in default migration_state1499 is expected to eq false1500 when in pre_import_done migration_state1501 is expected to eq false1502 when in import_done migration_state1503 is expected to eq false1504 when in import_aborted migration_state1505 is expected to eq false1506 when in import_skipped migration_state1507 is expected to eq false1508 when in pre_importing migration_state1509 is expected to eq false1510 when in importing migration_state1511 is expected to eq true1512 #migration_pre_importing?1513 when in default migration_state1514 is expected to eq false1515 when in pre_import_done migration_state1516 is expected to eq false1517 when in import_done migration_state1518 is expected to eq false1519 when in import_aborted migration_state1520 is expected to eq false1521 when in import_skipped migration_state1522 is expected to eq false1523 when in pre_importing migration_state1524 is expected to eq true1525 when in importing migration_state1526 is expected to eq false1527 #try_import1528 successful request1529 is expected to eq true1530 TooManyImportsError1531 tries again exponentially and aborts the migration1532 not found response1533 completes the migration1534 other response1535 aborts the migration1536 with no block given1537 raises an error1538 #retried_too_many_times?1539 migration_retries_count is equal or greater than max_retries1540 is expected to eq true1541 migration_retries_count is lower than max_retries1542 is expected to eq false1543 #nearing_or_exceeded_retry_limit?1544 migration_retries_count is 1 less than max_retries1545 is expected to eq true1546 migration_retries_count is lower than max_retries1547 is expected to eq false1548 migration_retries_count equal to or higher than max_retries1549 is expected to eq true1550 #migrated?1551 on gitlab.com1552 is expected to eq true1553 not on gitlab.com1554 is expected to eq false1555 with repositories1556 .requiring_cleanup1557 with next_run_at in the future1558 is expected to eq []1559 with next_run_at in the past1560 is expected to eq [#<ContainerRepository id: 233, project_id: 375, name: "test_image_151", created_at: "2023-05-25 18:0...eleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>]1561 with repository cleanup started at after policy next run at1562 is expected to eq []1563 .with_unfinished_cleanup1564 is expected to eq []1565 with an unfinished repository1566 is expected to eq [#<ContainerRepository id: 233, project_id: 375, name: "test_image_151", created_at: "2023-05-25 18:0...eleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>]1567 .recently_done_migration_step1568 returns completed imports by done_at date1569 .ready_for_import1570 returns valid container repositories1571 #last_import_step_done_at1572 is expected to eq 2023-05-25 17:05:25.428283716 +00001573 #external_import_status1574 returns the response from the client1575 .with_stale_migration1576 is expected to contain exactly #<ContainerRepository id: 246, project_id: 388, name: "test_image_163", created_at: "2023-05-25 18:05...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>, #<ContainerRepository id: 247, project_id: 389, name: "test_image_164", created_at: "2023-05-25 18:05...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>, #<ContainerRepository id: 249, project_id: 391, name: "test_image_166", created_at: "2023-05-25 18:05...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>, #<ContainerRepository id: 250, project_id: 392, name: "test_image_167", created_at: "2023-05-25 18:05...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>, #<ContainerRepository id: 252, project_id: 394, name: "test_image_169", created_at: "2023-05-25 18:05...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>, and #<ContainerRepository id: 253, project_id: 395, name: "test_image_170", created_at: "2023-05-25 18:05...deleted_tags_count: nil, delete_started_at: nil, status_updated_at: nil, verification_checksum: nil>1577 #registry1578 caches the client1579MergeRequests::CreateFromIssueService1580 #execute1581 no target_project_id specified1582 inherits labels1583 inherits milestones1584 sets the merge request title to: "Draft: Resolves "$issue-title"1585 behaves like a service that creates a merge request from an issue1586 returns an error when user can not create merge request on target project1587 returns an error with invalid issue iid1588 creates a branch based on issue title1589 creates a branch using passed name1590 creates the new_merge_request system note1591 tracks the mr creation when the mr is valid1592 creates the new_issue_branch system note when the branch could be created but the merge_request cannot be created1593 does not track the mr creation when the Mr is invalid1594 creates a merge request1595 sets the merge request author to current user and assigns them1596 sets the merge request source branch to the new issue branch1597 sets the merge request source branch to the passed branch name1598 sets the merge request target branch to the project default branch1599 executes quick actions if the build service sets them in the description1600 when ref branch is set1601 sets the merge request source branch to the new issue branch1602 sets the merge request target branch to the ref branch1603 when the ref is a tag1604 sets the merge request source branch to the new issue branch1605 creates a merge request1606 sets the merge request target branch to the project default branch1607 when ref branch does not exist1608 creates a merge request1609 sets the merge request target branch to the project default branch1610 target_project_id is specified1611 target project is not a fork of the project1612 returns an error about not finding the project1613 does not create merge request1614 target project is a fork of project project1615 sets the merge request title to: "Draft: $issue-branch-name1616 behaves like a service that creates a merge request from an issue1617 returns an error when user can not create merge request on target project1618 returns an error with invalid issue iid1619 creates a branch based on issue title1620 creates a branch using passed name1621 creates the new_merge_request system note1622 tracks the mr creation when the mr is valid1623 creates the new_issue_branch system note when the branch could be created but the merge_request cannot be created1624 does not track the mr creation when the Mr is invalid1625 creates a merge request1626 sets the merge request author to current user and assigns them1627 sets the merge request source branch to the new issue branch1628 sets the merge request source branch to the passed branch name1629 sets the merge request target branch to the project default branch1630 executes quick actions if the build service sets them in the description1631 when ref branch is set1632 sets the merge request source branch to the new issue branch1633 sets the merge request target branch to the ref branch1634 when the ref is a tag1635 sets the merge request source branch to the new issue branch1636 creates a merge request1637 sets the merge request target branch to the project default branch1638 when ref branch does not exist1639 creates a merge request1640 sets the merge request target branch to the project default branch1641gitlab:workhorse namespace rake task1642 install1643 clones the origin and creates a gitlab-workhorse binary1644 no dir given1645 aborts and display a help message1646 when an underlying Git command fails1647 aborts and display a help message1648Issues::MoveService1649 #execute1650 when issue creation fails1651 raises a move error1652 issue movable1653 creates resource state event1654 generic issue1655 creates a new issue in a new project1656 copies issue title1657 copies issue description1658 adds system note to old issue at the end1659 adds system note to new issue at the end1660 closes old issue1661 persists new issue1662 persists all changes1663 preserves author1664 creates a new internal id for issue1665 marks issue as moved1666 marks issue as closed1667 preserves create time1668 issue with award emoji1669 copies the award emoji1670 issue with milestone1671 does not create extra milestone events1672 issue with due date1673 does not create extra system notes1674 issue with assignee1675 preserves assignee with access to the new issue1676 ignores assignee without access to the new issue1677 issue with contacts1678 preserves contacts1679 when moving to another root group1680 does not preserve contacts1681 moving to same project1682 raises error1683 project issue hooks1684 executes project issue hooks for both projects1685 issue with notes1686 copies existing notes in order1687 issue with a design1688 calls CopyDesignCollection::QueueService1689 logs if QueueService returns an error1690 copies the design and its notes1691 issue relative position1692 behaves like copy or reset relative position1693 when moved to a project within same group hierarchy1694 does not reset the relative_position1695 when moved to a project in a different group hierarchy1696 does reset the relative_position1697 issue with escalation status1698 keeps the escalation status1699 move permissions1700 user is reporter in both projects1701 is expected not to raise Exception1702 user is reporter only in new project1703 is expected to raise StandardError with message matching /permissions/1704 user is reporter only in old project1705 is expected to raise StandardError with message matching /permissions/1706 user is reporter in one project and guest in another1707 is expected to raise StandardError with message matching /permissions/1708 issue has already been moved1709 is expected to raise StandardError with message matching /permissions/1710 issue is not persisted1711 is expected to raise StandardError with message matching /permissions/1712 #rewrite_related_issues1713 multiple related issues1714 when admin mode is enabled1715 moves all related issues and retains permissions1716 when admin mode is disabled1717 moves all related issues and retains permissions1718 updating sent notifications1719 when issue is from service desk1720 updates moved issue sent notifications1721 does not update other issues sent notifications1722 when issue is not from service desk1723 does not update sent notifications1724 copying email participants1725 copies moved issue email participants1726Banzai::Filter::References::IssueReferenceFilter1727 requires project context1728 ignores valid references contained inside 'pre' element1729 ignores valid references contained inside 'code' element1730 ignores valid references contained inside 'a' element1731 ignores valid references contained inside 'style' element1732 performance1733 does not have a N+1 query problem1734 standard internal reference1735 behaves like an internal reference1736 links to a valid reference1737 links with adjacent text1738 ignores invalid issue IDs1739 includes a title attribute1740 escapes the title attribute1741 renders non-HTML tooltips1742 includes default classes1743 includes a data-project attribute1744 includes a data-issue attribute1745 includes data attributes for issuable popover1746 includes a data-original attribute1747 does not escape the data-original attribute1748 includes a data-reference-format attribute1749 includes a data-reference-format attribute for URL references1750 includes a data-reference-format attribute for extended summary URL references1751 supports an :only_path context1752 does not process links containing issue numbers followed by text1753 behaves like a reference containing an element node1754 does not escape inner html1755 behaves like a reference with issue type information1756 contains issue-type as a data attribute1757 alternative internal_reference1758 behaves like an internal reference1759 links to a valid reference1760 links with adjacent text1761 ignores invalid issue IDs1762 includes a title attribute1763 escapes the title attribute1764 renders non-HTML tooltips1765 includes default classes1766 includes a data-project attribute1767 includes a data-issue attribute1768 includes data attributes for issuable popover1769 includes a data-original attribute1770 does not escape the data-original attribute1771 includes a data-reference-format attribute1772 includes a data-reference-format attribute for URL references1773 includes a data-reference-format attribute for extended summary URL references1774 supports an :only_path context1775 does not process links containing issue numbers followed by text1776 behaves like a reference containing an element node1777 does not escape inner html1778 behaves like a reference with issue type information1779 contains issue-type as a data attribute1780 cross-project / cross-namespace complete reference1781 ignores valid references when cross-reference project uses external tracker1782 links to a valid reference1783 link has valid text1784 has valid text1785 includes default classes1786 ignores invalid issue IDs on the referenced project1787 behaves like a reference containing an element node1788 does not escape inner html1789 behaves like a reference with issue type information1790 contains issue-type as a data attribute1791 cross-project / same-namespace complete reference1792 ignores valid references when cross-reference project uses external tracker1793 links to a valid reference1794 link has valid text1795 has valid text1796 includes default classes1797 ignores invalid issue IDs on the referenced project1798 behaves like a reference containing an element node1799 does not escape inner html1800 behaves like a reference with issue type information1801 contains issue-type as a data attribute1802 cross-project shorthand reference1803 ignores valid references when cross-reference project uses external tracker1804 links to a valid reference1805 link has valid text1806 has valid text1807 includes default classes1808 ignores invalid issue IDs on the referenced project1809 behaves like a reference containing an element node1810 does not escape inner html1811 behaves like a reference with issue type information1812 contains issue-type as a data attribute1813 cross-project URL reference1814 links to a valid reference1815 link with trailing slash1816 links with adjacent text1817 includes default classes1818 behaves like a reference containing an element node1819 does not escape inner html1820 behaves like a reference with issue type information1821 contains issue-type as a data attribute1822 cross-project reference in link href1823 links to a valid reference1824 links with adjacent text1825 includes default classes1826 behaves like a reference containing an element node1827 does not escape inner html1828 behaves like a reference with issue type information1829 contains issue-type as a data attribute1830 cross-project URL in link href1831 links to a valid reference1832 links with adjacent text1833 includes default classes1834 behaves like a reference containing an element node1835 does not escape inner html1836 behaves like a reference with issue type information1837 contains issue-type as a data attribute1838 when processing a link to the designs tab1839 includes the word "designs" after the reference in the text content1840 design management is not available1841 links to the issue, but not to the designs tab1842 group context1843 ignores shorthanded issue reference1844 ignores valid references when cross-reference project uses external tracker1845 links to a valid reference for complete cross-reference1846 ignores reference for shorthand cross-reference1847 links to a valid reference for url cross-reference1848 links to a valid reference for cross-reference in link href1849 links to a valid reference for issue reference in the link href1850 .references_in1851 yields valid references1852 doesn't yield invalid references1853 doesn't yield unsupported references1854 #object_link_text_extras1855 the link does not go to the designs tab1856 does not include designs1857 the link goes to the designs tab1858 includes designs1859 design management is disabled1860 does not include designs in the extras1861Boards::Issues::MoveService1862 #execute1863 when parent is a project1864 behaves like issues move service1865 when moving an issue between lists1866 delegates the label changes to Issues::UpdateService1867 removes the label from the list it came from and adds the label of the list it goes to1868 behaves like updating timestamps1869 updates updated_at1870 when moving to closed1871 delegates the close proceedings to Issues::CloseService1872 removes all list-labels from boards and close the issue1873 behaves like updating timestamps1874 updates updated_at1875 when moving to backlog1876 keeps labels and milestone1877 behaves like updating timestamps1878 updates updated_at1879 when moving from closed1880 delegates the re-open proceedings to Issues::ReopenService1881 adds the label of the list it goes to and reopen the issue1882 behaves like updating timestamps1883 updates updated_at1884 when moving to same list1885 returns nil1886 keeps issues labels1887 keeps issues assignees1888 sorts issues1889 does not update updated_at1890 when moving to a specific list position1891 moves issue to the top of the list1892 moves issue to a position in the middle of the list1893 moves issue to the bottom of the list1894 when given position is greater than number of issues in the list1895 moves the issue to the bottom of the list1896 when parent is a group1897 behaves like issues move service1898 when moving an issue between lists1899 delegates the label changes to Issues::UpdateService1900 removes the label from the list it came from and adds the label of the list it goes to1901 behaves like updating timestamps1902 updates updated_at1903 when moving to closed1904 delegates the close proceedings to Issues::CloseService1905 removes all list-labels from boards and close the issue1906 behaves like updating timestamps1907 updates updated_at1908 when moving to backlog1909 keeps labels and milestone1910 behaves like updating timestamps1911 updates updated_at1912 when moving from closed1913 delegates the re-open proceedings to Issues::ReopenService1914 adds the label of the list it goes to and reopen the issue1915 behaves like updating timestamps1916 updates updated_at1917 when moving to same list1918 returns nil1919 keeps issues labels1920 keeps issues assignees1921 sorts issues1922 does not update updated_at1923 when moving to a specific list position1924 moves issue to the top of the list1925 moves issue to a position in the middle of the list1926 moves issue to the bottom of the list1927 when given position is greater than number of issues in the list1928 moves the issue to the bottom of the list1929 #execute_multiple1930 returns the expected result if list of issues is empty1931 moving multiple issues1932 moves multiple issues from one list to another1933 moving a single issue1934 moves one issue1935 moving issues visually after an existing issue1936 moves one issue1937 moving issues visually before an existing issue1938 moves one issue1939Gitlab::SearchResults1940 does not list issues on private projects1941 does not list merge requests on projects with limited access1942 as a user with access1943 does not include merge requests from source projects1944 #objects1945 returns without_counts collection by default1946 returns with counts collection when requested1947 returns without counts collection when requested1948 uses page and per_page to paginate results1949 #formatted_count1950 scope: "projects", count_method: :limited_projects_count, expected: "99+"1951 returns the expected formatted count1952 scope: "issues", count_method: :limited_issues_count, expected: "99+"1953 returns the expected formatted count1954 scope: "merge_requests", count_method: :limited_merge_requests_count, expected: "99+"1955 returns the expected formatted count1956 scope: "milestones", count_method: :limited_milestones_count, expected: "99+"1957 returns the expected formatted count1958 scope: "users", count_method: :limited_users_count, expected: "99+"1959 returns the expected formatted count1960 scope: "unknown", count_method: nil, expected: nil1961 returns the expected formatted count1962 #highlight_map1963 scope: "projects", expected: {}1964 returns the expected highlight_map1965 scope: "issues", expected: {}1966 returns the expected highlight_map1967 scope: "merge_requests", expected: {}1968 returns the expected highlight_map1969 scope: "milestones", expected: {}1970 returns the expected highlight_map1971 scope: "users", expected: {}1972 returns the expected highlight_map1973 scope: "unknown", expected: {}1974 returns the expected highlight_map1975 #formatted_limited_count1976 count: 23, expected: "23"1977 returns the expected formatted limited count1978 count: 99, expected: "99"1979 returns the expected formatted limited count1980 count: 100, expected: "99+"1981 returns the expected formatted limited count1982 count: 1234, expected: "99+"1983 returns the expected formatted limited count1984 #aggregations1985 scope: "projects"1986 returns an empty array1987 scope: "issues"1988 returns an empty array1989 scope: "merge_requests"1990 returns an empty array1991 scope: "blobs"1992 returns an empty array1993 scope: "commits"1994 returns an empty array1995 scope: "wiki_blobs"1996 returns an empty array1997 scope: "epics"1998 returns an empty array1999 scope: "milestones"2000 returns an empty array2001 scope: "users"2002 returns an empty array2003 scope: "unknown"2004 returns an empty array2005 when count_limit is lower than total amount2006 #limited_projects_count2007 returns the limited amount of projects2008 #limited_merge_requests_count2009 returns the limited amount of merge requests2010 #limited_milestones_count2011 returns the limited amount of milestones2012 #limited_issues_count2013 runs single SQL query to get the limited amount of issues2014 when count_limit is higher than total amount2015 #limited_issues_count2016 runs multiple queries to get the limited amount of issues2017 #merge_requests2018 includes project filter by default2019 skips project filter if default project context is used2020 filtering2021 state not provided2022 returns opened and closed results2023 all state2024 returns opened and closed results2025 closed state2026 returns only closed results2027 opened state2028 returns only opened results2029 unsupported state2030 returns only opened results2031 ordering2032 sort: created_desc2033 sorts results by created_at2034 sort: created_asc2035 sorts results by created_at2036 sort: updated_desc2037 sorts results by updated_desc2038 sort: updated_asc2039 sorts results by updated_asc2040 #issues2041 includes project filter by default2042 skips project filter if default project context is used2043 filtering2044 state not provided2045 returns opened and closed results2046 all state2047 returns opened and closed results2048 closed state2049 returns only closed results2050 opened state2051 returns only opened results2052 unsupported state2053 returns only opened results2054 filter not provided (all behavior)2055 returns confidential and not confidential results2056 confidential filter2057 returns only confidential results2058 not confidential filter2059 returns not confidential results2060 ordering2061 sort: created_desc2062 sorts results by created_at2063 sort: created_asc2064 sorts results by created_at2065 sort: updated_desc2066 sorts results by updated_desc2067 sort: updated_asc2068 sorts results by updated_asc2069 sort: popularity_desc2070 sorts results by upvotes2071 sort: popularity_asc2072 sorts results by created_at2073 #users2074 does not call the UsersFinder when the current_user is not allowed to read users list2075 calls the UsersFinder2076 confidential issues2077 does not list confidential issues for non project members2078 does not list confidential issues for project members with guest role2079 lists confidential issues for author2080 lists confidential issues for assignee2081 lists confidential issues for project members2082 with admin user2083 when admin mode enabled2084 lists all issues2085 when admin mode disabled2086 does not list confidential issues2087 milestones2088 returns correct set of milestones2089Snippet2090 modules2091 is expected to includes the Gitlab::VisibilityLevel module2092 is expected to includes the Participable module2093 is expected to includes the Referable module2094 is expected to includes the Sortable module2095 is expected to includes the Awardable module2096 associations2097 is expected to belong to author class_name => User required: false2098 is expected to belong to project required: false2099 is expected to have many notes dependent => destroy2100 is expected to have many award_emoji dependent => destroy2101 is expected to have many user_mentions class_name => SnippetUserMention2102 is expected to have one snippet_repository2103 is expected to have one statistics class_name => SnippetStatistics dependent => destroy2104 is expected to have many repository_storage_moves class_name => Snippets::RepositoryStorageMove inverse_of => container2105 validation2106 is expected to validate that :author cannot be empty/falsy2107 is expected to validate that :title cannot be empty/falsy2108 is expected to validate that the length of :title is at most 2552109 is expected to validate that the length of :file_name is at most 2552110 is expected to validate that :content cannot be empty/falsy2111 is expected to validate that the length of :content is at most 1, producing a custom validation error on failure2112 content validations2113 with existing snippets2114 does not raise a validation error if the content is not changed2115 raises and error if the content is changed and the size is bigger than limit2116 with new snippets2117 is valid when content is smaller than the limit2118 raises error when content is bigger than setting limit2119 description validations2120 with existing snippets2121 does not raise a validation error if the description is not changed2122 raises and error if the description is changed and the size is bigger than limit2123 with new snippets2124 is valid when description is smaller than the limit2125 raises error when description is bigger than setting limit2126 callbacks2127 creates snippet statistics when the snippet is created2128 #to_reference2129 when snippet belongs to a project2130 returns a String reference to the object2131 supports a cross-project reference2132 when snippet does not belong to a project2133 returns a String reference to the object2134 still returns shortest reference when project arg present2135 #file_name2136 file_name is nil2137 returns an empty string2138 file_name is not nil2139 returns the file_name2140 #content_html_invalidated?2141 invalidates the HTML cache of content when the filename changes2142 .search2143 returns snippets with a matching title2144 returns snippets with a partially matching title2145 returns snippets with a matching title regardless of the casing2146 returns snippets with a matching file name2147 returns snippets with a partially matching file name2148 returns snippets with a matching file name regardless of the casing2149 returns snippets with a matching description2150 when default snippet visibility set to internal2151 attribute_name: :visibility, value: "private"2152 sets the visibility level2153 attribute_name: :visibility_level, value: 02154 sets the visibility level2155 attribute_name: "visibility", value: "private"2156 sets the visibility level2157 attribute_name: "visibility_level", value: 02158 sets the visibility level2159 .with_optional_visibility2160 when a visibility level is provided2161 returns snippets with the given visibility2162 when a visibility level is not provided2163 returns all snippets2164 .only_personal_snippets2165 returns snippets not associated with any projects2166 .only_include_projects_visible_to2167 when a user is provided2168 returns snippets visible to the user2169 when a user is not provided2170 returns snippets visible to anonymous users2171 only_include_projects_with_snippets_enabled2172 includes snippets for projects with snippets enabled2173 when snippet_access_level is private2174 when the include_private option is enabled2175 includes snippets for projects with snippets set to private2176 when the include_private option is not enabled2177 does not include snippets for projects that have snippets set to private2178 .only_include_authorized_projects2179 only includes snippets for projects the user is authorized to see2180 .for_project_with_user2181 when a user is provided2182 returns an empty collection if the user can not view the snippets2183 returns the snippets if the user is a member of the project2184 returns public snippets for a public project the user is not a member of2185 when a user is not provided2186 returns an empty collection for a private project2187 returns public snippets for a public project2188 .visible_to_or_authored_by2189 returns snippets visible to the user2190 .find_by_project_title_trunc_created_at2191 returns a record if arguments match2192 returns nil if project does not match2193 returns nil if title does not match2194 returns nil if created_at does not match2195 #participants2196 includes the snippet author and note authors2197 #check_for_spam2198 when public and spammable attributes changed2199 returns true2200 when private2201 returns false2202 returns true when switching to public2203 when spammable attributes have not changed2204 returns false2205 #blob2206 returns a blob representing the snippet data2207 #all_files2208 lists files from the repository with the default branch2209 #blobs2210 when repository does not exist2211 returns empty array2212 when repository exists2213 returns array of blobs2214 when file does not exist2215 removes nil values from the blobs array2216 when some blobs are not retrievable from repository2217 does not include unretrievable blobs2218 #to_json2219 excludes secret_token from generated json2220 does not override existing exclude option value2221 #storage2222 stores snippet in @snippets dir2223 #track_snippet_repository2224 when a snippet repository entry does not exist2225 creates a new entry2226 tracks the snippet storage location2227 when a tracking entry exists2228 does not create a new entry in the database2229 updates the snippet storage location2230 #create_repository2231 creates the repository2232 sets the default branch2233 tracks snippet repository2234 sets same shard in snippet repository as in the repository storage2235 when repository exists2236 does not try to create repository2237 when snippet_repository exists2238 does not create a new snippet repository2239 when snippet_repository does not exist2240 creates a snippet_repository2241 #repository_storage2242 returns repository storage from ApplicationSetting2243 when snippet_project is already created2244 returns repository_storage from snippet_project2245 #repository_size_checker2246 sets up size checker2247 #can_cache_field?2248 field: :title, file_name: nil, result: true2249 is expected to eq true2250 field: :title, file_name: "foo.bar", result: true2251 is expected to eq true2252 field: :description, file_name: nil, result: true2253 is expected to eq true2254 field: :description, file_name: "foo.bar", result: true2255 is expected to eq true2256 field: :content, file_name: nil, result: false2257 is expected to eq false2258 field: :content, file_name: "bar.foo", result: false2259 is expected to eq false2260 field: :content, file_name: "markdown.md", result: true2261 is expected to eq true2262 #url_to_repo2263 with personal snippet2264 is expected to eq "git@localhost:snippets/59.git"2265 with project snippet2266 is expected to eq "git@localhost:namespace561/project-622/snippets/60.git"2267 .max_file_limit2268 returns 102269 #list_files2270 when snippet has a repository2271 lists files from the repository with the ref2272 when ref is nil2273 lists files from the repository from the deafult_branch2274 when snippet does not have a repository2275 returns an empty array2276 #multiple_files?2277 when snippet has multiple files2278 is expected to be truthy2279 when snippet does not have multiple files2280 is expected to be falsey2281 when the snippet does not have a repository2282 is expected to be falsey2283 #git_transfer_in_progress?2284 returns true when there are git transfers2285 returns false when there are not git transfers2286 behaves like can move repository storage2287 #set_repository_read_only!2288 makes the repository read-only2289 raises an error if the project is already read-only2290 raises an error when there is an existing git transfer in progress2291 skip_git_transfer_check is true2292 makes the project read-only when git transfers are in progress2293 #set_repository_writable!2294 sets repository_read_only to false2295 #reference_counter2296 returns a Gitlab::ReferenceCounter object2297Ci::Stage2298 behaves like having unique enum values2299 has unique values in "status"2300 associations2301 #statuses2302 returns all commit statuses2303 #builds2304 returns only builds2305 .by_position2306 finds stages by position2307 .by_name2308 finds stages by name2309 #status2310 when stage is pending2311 has a correct status value2312 when stage is success2313 has a correct status value2314 when stage status is not defined2315 sets the default value2316 #set_status2317 from_status: :created, to_status: :waiting_for_resource2318 is expected to eq true2319 from_status: :created, to_status: :preparing2320 is expected to eq true2321 from_status: :created, to_status: :pending2322 is expected to eq true2323 from_status: :created, to_status: :running2324 is expected to eq true2325 from_status: :created, to_status: :failed2326 is expected to eq true2327 from_status: :created, to_status: :success2328 is expected to eq true2329 from_status: :created, to_status: :canceled2330 is expected to eq true2331 from_status: :created, to_status: :skipped2332 is expected to eq true2333 from_status: :created, to_status: :manual2334 is expected to eq true2335 from_status: :created, to_status: :scheduled2336 is expected to eq true2337 from_status: :waiting_for_resource, to_status: :waiting_for_resource2338 is expected to eq false2339 from_status: :waiting_for_resource, to_status: :preparing2340 is expected to eq true2341 from_status: :waiting_for_resource, to_status: :pending2342 is expected to eq true2343 from_status: :waiting_for_resource, to_status: :running2344 is expected to eq true2345 from_status: :waiting_for_resource, to_status: :failed2346 is expected to eq true2347 from_status: :waiting_for_resource, to_status: :success2348 is expected to eq true2349 from_status: :waiting_for_resource, to_status: :canceled2350 is expected to eq true2351 from_status: :waiting_for_resource, to_status: :skipped2352 is expected to eq true2353 from_status: :waiting_for_resource, to_status: :manual2354 is expected to eq true2355 from_status: :waiting_for_resource, to_status: :scheduled2356 is expected to eq true2357 from_status: :preparing, to_status: :waiting_for_resource2358 is expected to eq true2359 from_status: :preparing, to_status: :preparing2360 is expected to eq false2361 from_status: :preparing, to_status: :pending2362 is expected to eq true2363 from_status: :preparing, to_status: :running2364 is expected to eq true2365 from_status: :preparing, to_status: :failed2366 is expected to eq true2367 from_status: :preparing, to_status: :success2368 is expected to eq true2369 from_status: :preparing, to_status: :canceled2370 is expected to eq true2371 from_status: :preparing, to_status: :skipped2372 is expected to eq true2373 from_status: :preparing, to_status: :manual2374 is expected to eq true2375 from_status: :preparing, to_status: :scheduled2376 is expected to eq true2377 from_status: :pending, to_status: :waiting_for_resource2378 is expected to eq true2379 from_status: :pending, to_status: :preparing2380 is expected to eq true2381 from_status: :pending, to_status: :pending2382 is expected to eq false2383 from_status: :pending, to_status: :running2384 is expected to eq true2385 from_status: :pending, to_status: :failed2386 is expected to eq true2387 from_status: :pending, to_status: :success2388 is expected to eq true2389 from_status: :pending, to_status: :canceled2390 is expected to eq true2391 from_status: :pending, to_status: :skipped2392 is expected to eq true2393 from_status: :pending, to_status: :manual2394 is expected to eq true2395 from_status: :pending, to_status: :scheduled2396 is expected to eq true2397 from_status: :running, to_status: :waiting_for_resource2398 is expected to eq true2399 from_status: :running, to_status: :preparing2400 is expected to eq true2401 from_status: :running, to_status: :pending2402 is expected to eq true2403 from_status: :running, to_status: :running2404 is expected to eq false2405 from_status: :running, to_status: :failed2406 is expected to eq true2407 from_status: :running, to_status: :success2408 is expected to eq true2409 from_status: :running, to_status: :canceled2410 is expected to eq true2411 from_status: :running, to_status: :skipped2412 is expected to eq true2413 from_status: :running, to_status: :manual2414 is expected to eq true2415 from_status: :running, to_status: :scheduled2416 is expected to eq true2417 from_status: :failed, to_status: :waiting_for_resource2418 is expected to eq true2419 from_status: :failed, to_status: :preparing2420 is expected to eq true2421 from_status: :failed, to_status: :pending2422 is expected to eq true2423 from_status: :failed, to_status: :running2424 is expected to eq true2425 from_status: :failed, to_status: :failed2426 is expected to eq false2427 from_status: :failed, to_status: :success2428 is expected to eq true2429 from_status: :failed, to_status: :canceled2430 is expected to eq true2431 from_status: :failed, to_status: :skipped2432 is expected to eq true2433 from_status: :failed, to_status: :manual2434 is expected to eq true2435 from_status: :failed, to_status: :scheduled2436 is expected to eq true2437 from_status: :success, to_status: :waiting_for_resource2438 is expected to eq true2439 from_status: :success, to_status: :preparing2440 is expected to eq true2441 from_status: :success, to_status: :pending2442 is expected to eq true2443 from_status: :success, to_status: :running2444 is expected to eq true2445 from_status: :success, to_status: :failed2446 is expected to eq true2447 from_status: :success, to_status: :success2448 is expected to eq false2449 from_status: :success, to_status: :canceled2450 is expected to eq true2451 from_status: :success, to_status: :skipped2452 is expected to eq true2453 from_status: :success, to_status: :manual2454 is expected to eq true2455 from_status: :success, to_status: :scheduled2456 is expected to eq true2457 from_status: :canceled, to_status: :waiting_for_resource2458 is expected to eq true2459 from_status: :canceled, to_status: :preparing2460 is expected to eq true2461 from_status: :canceled, to_status: :pending2462 is expected to eq true2463 from_status: :canceled, to_status: :running2464 is expected to eq true2465 from_status: :canceled, to_status: :failed2466 is expected to eq true2467 from_status: :canceled, to_status: :success2468 is expected to eq true2469 from_status: :canceled, to_status: :canceled2470 is expected to eq false2471 from_status: :canceled, to_status: :skipped2472 is expected to eq true2473 from_status: :canceled, to_status: :manual2474 is expected to eq true2475 from_status: :canceled, to_status: :scheduled2476 is expected to eq true2477 from_status: :skipped, to_status: :waiting_for_resource2478 is expected to eq true2479 from_status: :skipped, to_status: :preparing2480 is expected to eq true2481 from_status: :skipped, to_status: :pending2482 is expected to eq true2483 from_status: :skipped, to_status: :running2484 is expected to eq true2485 from_status: :skipped, to_status: :failed2486 is expected to eq true2487 from_status: :skipped, to_status: :success2488 is expected to eq true2489 from_status: :skipped, to_status: :canceled2490 is expected to eq true2491 from_status: :skipped, to_status: :skipped2492 is expected to eq false2493 from_status: :skipped, to_status: :manual2494 is expected to eq true2495 from_status: :skipped, to_status: :scheduled2496 is expected to eq true2497 from_status: :manual, to_status: :waiting_for_resource2498 is expected to eq true2499 from_status: :manual, to_status: :preparing2500 is expected to eq true2501 from_status: :manual, to_status: :pending2502 is expected to eq true2503 from_status: :manual, to_status: :running2504 is expected to eq true2505 from_status: :manual, to_status: :failed2506 is expected to eq true2507 from_status: :manual, to_status: :success2508 is expected to eq true2509 from_status: :manual, to_status: :canceled2510 is expected to eq true2511 from_status: :manual, to_status: :skipped2512 is expected to eq true2513 from_status: :manual, to_status: :manual2514 is expected to eq false2515 from_status: :manual, to_status: :scheduled2516 is expected to eq true2517 from_status: :scheduled, to_status: :waiting_for_resource2518 is expected to eq true2519 from_status: :scheduled, to_status: :preparing2520 is expected to eq true2521 from_status: :scheduled, to_status: :pending2522 is expected to eq true2523 from_status: :scheduled, to_status: :running2524 is expected to eq true2525 from_status: :scheduled, to_status: :failed2526 is expected to eq true2527 from_status: :scheduled, to_status: :success2528 is expected to eq true2529 from_status: :scheduled, to_status: :canceled2530 is expected to eq true2531 from_status: :scheduled, to_status: :skipped2532 is expected to eq true2533 from_status: :scheduled, to_status: :manual2534 is expected to eq true2535 from_status: :scheduled, to_status: :scheduled2536 is expected to eq false2537 #update_status2538 when stage objects needs to be updated2539 updates stage status correctly2540 when stage has only created builds2541 updates status to skipped2542 when stage is skipped because of skipped builds2543 updates status to skipped2544 when stage is scheduled because of scheduled builds2545 updates status to scheduled2546 when build is waiting for resource2547 updates status to waiting for resource2548 when stage is skipped because is empty2549 updates status to skipped2550 when stage object is locked2551 retries a lock to update a stage status2552 when statuses status was not recognized2553 raises an exception2554 #detailed_status2555 statuses: ["created"], label: :created2556 has a correct label2557 statuses: ["success"], label: :passed2558 has a correct label2559 statuses: ["pending"], label: :pending2560 has a correct label2561 statuses: ["skipped"], label: :skipped2562 has a correct label2563 statuses: ["canceled"], label: :canceled2564 has a correct label2565 statuses: ["success", "failed"], label: :failed2566 has a correct label2567 statuses: ["running", "pending"], label: :running2568 has a correct label2569 when stage has warnings2570 is passed with warnings2571 #groups2572 groups stage builds by name2573 #delay2574 updates stage status2575 #position2576 when stage has been imported and does not have position index set2577 when stage has statuses2578 recalculates index before updating status2579 when stage has statuses with nil idx2580 sets index to a non-empty value2581 when stage does not have statuses2582 fallbacks to zero2583 when stage has warnings2584 #has_warnings?2585 returns true2586 #number_of_warnings2587 returns a lazy stage warnings counter2588 when stage does not have warnings2589 #has_warnings?2590 returns false2591 behaves like manual playable stage2592 #manual_playable?2593 when is manual2594 is expected to be truthy2595 when is scheduled2596 is expected to be truthy2597 when is skipped2598 is expected to be truthy2599 loose foreign key on ci_stages.project_id2600 behaves like cleanup by a loose foreign key2601 cleans up (delete or nullify) the model2602 partitioning2603 with pipeline2604 copies the partition_id from pipeline2605 when it is already set2606 does not change the partition_id value2607 without pipeline2608 is expected to validate that :partition_id cannot be empty/falsy2609 does not change the partition_id value2610Releases::GroupReleasesFinder2611 when parent is a group2612 without subgroups2613 behaves like preload2614 preloads associations2615 when preload is false2616 does not preload associations2617 behaves like when the user is not part of the group2618 returns no releases2619 when the user is a project guest on one sibling project2620 does not return any releases2621 when the user is a guest on the group2622 sorts by release date and id2623 with subgroups2624 with a single-level subgroup2625 behaves like when the user is not part of the group2626 returns no releases2627 when the user a project guest in the subgroup project2628 does not return any releases2629 when the user is a guest on the group2630 returns all releases2631 with a multi-level subgroup2632 behaves like when the user is not part of the group2633 returns no releases2634 when the user a project guest in the subgroup and subsubgroup project2635 does not return any releases2636 when the user a project guest in the subsubgroup project2637 does not return any releases2638 performance testing2639 behaves like avoids N+1 queries2640 with subgroups2641 subgroups avoids N+1 queries2642Gitlab::Auth::AuthFinders2643 #find_user_from_bearer_token2644 when the token is passed as an oauth token2645 behaves like find user from job token2646 when route is allowed to be authenticated2647 for an invalid token2648 returns an Unauthorized exception2649 with a running job2650 return user2651 with a job that is not running2652 returns an Unauthorized exception2653 when route is not allowed to be authenticated2654 with a running job2655 returns an Unauthorized exception2656 with oauth token2657 is expected to eq #<User id:1228 @user589>2658 with a personal access token2659 is expected to eq #<User id:1228 @user589>2660 #find_user_from_warden2661 with CSRF token2662 with invalid credentials2663 returns nil2664 with valid credentials2665 returns the user2666 without CSRF token2667 returns nil2668 #find_user_from_feed_token2669 when the request format is atom2670 when feed_token param is provided2671 returns user if valid feed_token2672 returns nil if valid feed_token and disabled2673 returns nil if feed_token is blank2674 returns exception if invalid feed_token2675 when rss_token param is provided2676 returns user if valid rss_token2677 returns nil if rss_token is blank2678 returns exception if invalid rss_token2679 when the request format is not atom2680 returns nil2681 when the request format is empty2682 the method call does not modify the original value2683 #find_user_from_static_object_token2684 when request format is archive2685 behaves like static object request2686 when token header param is present2687 when token is correct2688 returns the user2689 when token is incorrect2690 returns the user2691 when token query param is present2692 when token is correct2693 returns the user2694 when token is incorrect2695 returns the user2696 when request format is blob2697 behaves like static object request2698 when token header param is present2699 when token is correct2700 returns the user2701 when token is incorrect2702 returns the user2703 when token query param is present2704 when token is correct2705 returns the user2706 when token is incorrect2707 returns the user2708 when request format is not archive nor blob2709 returns nil2710 #deploy_token_from_request2711 is expected to be nil2712 with deploy token headers2713 with valid deploy token2714 is expected to eq #<DeployToken id: 1, revoked: false, read_repository: true, read_registry: true, expires_at: "2023-05...write_registry: false, read_package_registry: false, write_package_registry: false, creator_id: nil>2715 behaves like an unauthenticated route2716 when route is not allowed to use deploy_tokens2717 is expected to be nil2718 with incorrect token2719 is expected to be nil2720 with oauth headers2721 with valid token2722 is expected to eq #<DeployToken id: 1, revoked: false, read_repository: true, read_registry: true, expires_at: "2023-05...write_registry: false, read_package_registry: false, write_package_registry: false, creator_id: nil>2723 behaves like an unauthenticated route2724 when route is not allowed to use deploy_tokens2725 is expected to be nil2726 with invalid token2727 is expected to be nil2728 with basic auth headers2729 is expected to eq #<DeployToken id: 1, revoked: false, read_repository: true, read_registry: true, expires_at: "2023-05...write_registry: false, read_package_registry: false, write_package_registry: false, creator_id: nil>2730 behaves like an unauthenticated route2731 when route is not allowed to use deploy_tokens2732 is expected to be nil2733 with incorrect token2734 is expected to be nil2735 when the the deploy token is restricted with external_authorization2736 is expected to be nil2737 #find_user_from_access_token2738 returns nil if no access_token present2739 when run for kubernetes internal API endpoint2740 returns nil2741 when validate_access_token! returns valid2742 returns user2743 returns exception if token has no user2744 with OAuth headers2745 with valid personal access token2746 returns user2747 with invalid personal_access_token2748 returns exception2749 when using a non-prefixed access token2750 returns user2751 #find_user_from_web_access_token2752 returns exception if token has no user2753 returns the user for RSS requests2754 returns the user for ICS requests2755 returns the user for ARCHIVE requests2756 returns the user for DOWNLOAD requests2757 no feed, API, archive or download requests2758 returns nil if the request is not RSS2759 returns nil if the request is not ICS2760 returns nil if the request is not API2761 returns nil if the request is not ARCHIVE2762 returns nil if the request is not DOWNLOAD2763 for API requests2764 returns the user2765 returns nil if URL does not start with /api/2766 when the token has read_api scope2767 raises InsufficientScopeError by default2768 finds the user when the read_api scope is passed2769 when relative_url_root is set2770 returns the user2771 #find_personal_access_token2772 returns nil if no personal_access_token2773 returns exception if invalid personal_access_token2774 passed as header2775 returns token if valid personal_access_token2776 passed as param2777 returns token if valid personal_access_token2778 #find_oauth_access_token2779 returns nil if no oauth_access_token2780 passed as header2781 returns token if valid oauth_access_token2782 passed as param2783 returns user if valid oauth_access_token2784 with invalid token2785 returns exception if invalid oauth_access_token2786 #find_personal_access_token_from_http_basic_auth2787 access token is valid2788 finds the token from basic auth2789 access token is not valid2790 returns nil2791 route_setting is not set2792 returns nil2793 route_setting is not correct2794 returns nil2795 #find_user_from_basic_auth_job2796 when the request does not have AUTHORIZATION header2797 is expected to be nil2798 with wrong credentials2799 returns nil without user and password2800 returns nil without password2801 returns nil without user2802 returns nil without CI username2803 with CI username2804 behaves like find user from job token2805 when route is allowed to be authenticated2806 for an invalid token2807 returns an Unauthorized exception2808 with a running job2809 return user2810 with a job that is not running2811 returns an Unauthorized exception2812 when route is not allowed to be authenticated2813 with a running job2814 returns the user2815 #find_user_from_basic_auth_password2816 returns nil without user and password2817 returns nil without password2818 returns nil without user2819 returns nil with CI username2820 returns nil with wrong password2821 returns user with correct credentials2822 when the request does not have AUTHORIZATION header2823 is expected to be nil2824 #find_user_from_lfs_token2825 returns nil without user and token2826 returns nil without token2827 returns nil without user2828 returns nil with wrong token2829 returns user with correct user and correct token2830 returns nil with wrong user and correct token2831 when the request does not have AUTHORIZATION header2832 is expected to be nil2833 #find_user_from_personal_access_token2834 returns nil without access token2835 returns user with correct access token2836 returns exception if access token has no user2837 #validate_access_token!2838 returns nil if no access_token present2839 with a job token2840 does not raise an error2841 token is not valid2842 returns Gitlab::Auth::ExpiredError if token expired2843 returns Gitlab::Auth::RevokedError if token revoked2844 returns Gitlab::Auth::InsufficientScopeError if invalid token scope2845 with impersonation token2846 when impersonation is disabled2847 returns Gitlab::Auth::ImpersonationDisabled2848 #find_user_from_job_token2849 when route setting allows job_token2850 when the token is in the headers2851 behaves like find user from job token2852 when route is allowed to be authenticated2853 for an invalid token2854 returns an Unauthorized exception2855 with a running job2856 return user2857 with a job that is not running2858 returns an Unauthorized exception2859 when route is not allowed to be authenticated2860 with a running job2861 returns nil2862 when the token is in the job_token param2863 behaves like find user from job token2864 when route is allowed to be authenticated2865 for an invalid token2866 returns an Unauthorized exception2867 with a running job2868 return user2869 with a job that is not running2870 returns an Unauthorized exception2871 when route is not allowed to be authenticated2872 with a running job2873 returns nil2874 when the token is in the token param2875 behaves like find user from job token2876 when route is allowed to be authenticated2877 for an invalid token2878 returns an Unauthorized exception2879 with a running job2880 return user2881 with a job that is not running2882 returns an Unauthorized exception2883 when route is not allowed to be authenticated2884 with a running job2885 returns nil2886 when route setting is basic auth2887 when the token is provided via basic auth2888 is expected to eq #<User id:1228 @user589>2889 when the token is in the headers2890 behaves like find user from job token2891 when route is allowed to be authenticated2892 for an invalid token2893 returns an Unauthorized exception2894 with a running job2895 return user2896 with a job that is not running2897 returns an Unauthorized exception2898 when route is not allowed to be authenticated2899 with a running job2900 returns nil2901 when the token is in the job_token param2902 behaves like find user from job token2903 when route is allowed to be authenticated2904 for an invalid token2905 returns an Unauthorized exception2906 with a running job2907 return user2908 with a job that is not running2909 returns an Unauthorized exception2910 when route is not allowed to be authenticated2911 with a running job2912 returns nil2913 when the token is in the token param2914 behaves like find user from job token2915 when route is allowed to be authenticated2916 for an invalid token2917 returns an Unauthorized exception2918 with a running job2919 return user2920 with a job that is not running2921 returns an Unauthorized exception2922 when route is not allowed to be authenticated2923 with a running job2924 returns nil2925 when route setting job_token_allowed is invalid2926 when the token is provided2927 is expected to be nil2928 #cluster_agent_token_from_authorization_token2929 when route_setting is empty2930 is expected to be nil2931 when route_setting allows cluster agent token2932 Authorization header is empty2933 is expected to be nil2934 Authorization header is incorrect2935 is expected to be nil2936 Authorization header is malformed2937 is expected to be nil2938 Authorization header matches agent token2939 is expected to eq #<Clusters::AgentToken id: 1, created_at: "2023-05-25 18:15:40.342270779 +0000", updated_at: "2023-05...ated_by_user_id: 1234, description: nil, name: "agent-token-1", last_used_at: nil, status: "active">2940 agent token has been revoked2941 is expected to be nil2942 #find_runner_from_token2943 with API requests2944 returns the runner if token is valid2945 returns nil if token is not present2946 returns nil if token is blank2947 returns exception if invalid token2948 without API requests2949 returns nil if token is valid2950 returns nil if token is blank2951 returns nil if invalid token2952RepositoryForkWorker2953 modules2954 includes ProjectImportOptions2955 #perform2956 only project ID passed2957 behaves like RepositoryForkWorker performing2958 creates a new repository from a fork2959 protects the default branch2960 flushes various caches2961 handles bad fork2962 calls Projects::LfsPointers::LfsLinkService#execute with OIDs of source project LFS objects2963 handles LFS objects link failure2964 when a worker was reset without cleanup2965 creates a new repository from a fork2966 project ID, storage and repo paths passed2967 behaves like RepositoryForkWorker performing2968 creates a new repository from a fork2969 protects the default branch2970 flushes various caches2971 handles bad fork2972 calls Projects::LfsPointers::LfsLinkService#execute with OIDs of source project LFS objects2973 handles LFS objects link failure2974 when a worker was reset without cleanup2975 creates a new repository from a fork2976Gitlab::HTTP2977 calls a block2978 when allow_local_requests2979 sends the request to the correct URI2980 when not allow_local_requests2981 sends the request to the correct URI2982 when reading the response is too slow2983 raises an error2984 and timeout option is greater than DEFAULT_READ_TOTAL_TIMEOUT2985 does not raise an error2986 and stream_body option is truthy2987 does not raise an error2988 allow_local_requests_from_web_hooks_and_services is2989 disabled2990 deny requests to localhost2991 deny requests to private network2992 if allow_local_requests set to true2993 override the global value and allow requests to localhost or private network2994 enabled2995 allow requests to localhost2996 allow requests to private network2997 if allow_local_requests set to false2998 override the global value and ban requests to localhost or private network2999 handle redirect loops3000 handles GET requests3001 handles POST requests3002 handles PUT requests3003 handles DELETE requests3004 handles HEAD requests3005 setting default timeouts3006 when no timeouts are set3007 sets default open and read and write timeouts3008 when :timeout is set3009 does not set any default timeouts3010 when :open_timeout is set3011 only sets default read and write timeout3012 when :read_timeout is set3013 only sets default open and write timeout3014 when :write_timeout is set3015 only sets default open and read timeout3016 .try_get3017 with Net::OpenTimeout3018 with path3019 handles requests without extra_log_info3020 handles requests with extra_log_info as hash3021 handles requests with extra_log_info as proc3022 with path and options3023 handles requests without extra_log_info3024 handles requests with extra_log_info as hash3025 handles requests with extra_log_info as proc3026 with path, options, and block3027 handles requests without extra_log_info3028 handles requests with extra_log_info as hash3029 handles requests with extra_log_info as proc3030 with Net::ReadTimeout3031 with path3032 handles requests without extra_log_info3033 handles requests with extra_log_info as hash3034 handles requests with extra_log_info as proc3035 with path and options3036 handles requests without extra_log_info3037 handles requests with extra_log_info as hash3038 handles requests with extra_log_info as proc3039 with path, options, and block3040 handles requests without extra_log_info3041 handles requests with extra_log_info as hash3042 handles requests with extra_log_info as proc3043 with Net::WriteTimeout3044 with path3045 handles requests without extra_log_info3046 handles requests with extra_log_info as hash3047 handles requests with extra_log_info as proc3048 with path and options3049 handles requests without extra_log_info3050 handles requests with extra_log_info as hash3051 handles requests with extra_log_info as proc3052 with path, options, and block3053 handles requests without extra_log_info3054 handles requests with extra_log_info as hash3055 handles requests with extra_log_info as proc3056 with Gitlab::HTTP::ReadTotalTimeout3057 with path3058 handles requests without extra_log_info3059 handles requests with extra_log_info as hash3060 handles requests with extra_log_info as proc3061 with path and options3062 handles requests without extra_log_info3063 handles requests with extra_log_info as hash3064 handles requests with extra_log_info as proc3065 with path, options, and block3066 handles requests without extra_log_info3067 handles requests with extra_log_info as hash3068 handles requests with extra_log_info as proc3069 with EOFError3070 with path3071 handles requests without extra_log_info3072 handles requests with extra_log_info as hash3073 handles requests with extra_log_info as proc3074 with path and options3075 handles requests without extra_log_info3076 handles requests with extra_log_info as hash3077 handles requests with extra_log_info as proc3078 with path, options, and block3079 handles requests without extra_log_info3080 handles requests with extra_log_info as hash3081 handles requests with extra_log_info as proc3082 with SocketError3083 with path3084 handles requests without extra_log_info3085 handles requests with extra_log_info as hash3086 handles requests with extra_log_info as proc3087 with path and options3088 handles requests without extra_log_info3089 handles requests with extra_log_info as hash3090 handles requests with extra_log_info as proc3091 with path, options, and block3092 handles requests without extra_log_info3093 handles requests with extra_log_info as hash3094 handles requests with extra_log_info as proc3095 with OpenSSL::SSL::SSLError3096 with path3097 handles requests without extra_log_info3098 handles requests with extra_log_info as hash3099 handles requests with extra_log_info as proc3100 with path and options3101 handles requests without extra_log_info3102 handles requests with extra_log_info as hash3103 handles requests with extra_log_info as proc3104 with path, options, and block3105 handles requests without extra_log_info3106 handles requests with extra_log_info as hash3107 handles requests with extra_log_info as proc3108 with OpenSSL::OpenSSLError3109 with path3110 handles requests without extra_log_info3111 handles requests with extra_log_info as hash3112 handles requests with extra_log_info as proc3113 with path and options3114 handles requests without extra_log_info3115 handles requests with extra_log_info as hash3116 handles requests with extra_log_info as proc3117 with path, options, and block3118 handles requests without extra_log_info3119 handles requests with extra_log_info as hash3120 handles requests with extra_log_info as proc3121 with Errno::ECONNRESET3122 with path3123 handles requests without extra_log_info3124 handles requests with extra_log_info as hash3125 handles requests with extra_log_info as proc3126 with path and options3127 handles requests without extra_log_info3128 handles requests with extra_log_info as hash3129 handles requests with extra_log_info as proc3130 with path, options, and block3131 handles requests without extra_log_info3132 handles requests with extra_log_info as hash3133 handles requests with extra_log_info as proc3134 with Errno::ECONNREFUSED3135 with path3136 handles requests without extra_log_info3137 handles requests with extra_log_info as hash3138 handles requests with extra_log_info as proc3139 with path and options3140 handles requests without extra_log_info3141 handles requests with extra_log_info as hash3142 handles requests with extra_log_info as proc3143 with path, options, and block3144 handles requests without extra_log_info3145 handles requests with extra_log_info as hash3146 handles requests with extra_log_info as proc3147 with Errno::EHOSTUNREACH3148 with path3149 handles requests without extra_log_info3150 handles requests with extra_log_info as hash3151 handles requests with extra_log_info as proc3152 with path and options3153 handles requests without extra_log_info3154 handles requests with extra_log_info as hash3155 handles requests with extra_log_info as proc3156 with path, options, and block3157 handles requests without extra_log_info3158 handles requests with extra_log_info as hash3159 handles requests with extra_log_info as proc3160 with Errno::ENETUNREACH3161 with path3162 handles requests without extra_log_info3163 handles requests with extra_log_info as hash3164 handles requests with extra_log_info as proc3165 with path and options3166 handles requests without extra_log_info3167 handles requests with extra_log_info as hash3168 handles requests with extra_log_info as proc3169 with path, options, and block3170 handles requests without extra_log_info3171 handles requests with extra_log_info as hash3172 handles requests with extra_log_info as proc3173 with Gitlab::HTTP::BlockedUrlError3174 with path3175 handles requests without extra_log_info3176 handles requests with extra_log_info as hash3177 handles requests with extra_log_info as proc3178 with path and options3179 handles requests without extra_log_info3180 handles requests with extra_log_info as hash3181 handles requests with extra_log_info as proc3182 with path, options, and block3183 handles requests without extra_log_info3184 handles requests with extra_log_info as hash3185 handles requests with extra_log_info as proc3186 with Gitlab::HTTP::RedirectionTooDeep3187 with path3188 handles requests without extra_log_info3189 handles requests with extra_log_info as hash3190 handles requests with extra_log_info as proc3191 with path and options3192 handles requests without extra_log_info3193 handles requests with extra_log_info as hash3194 handles requests with extra_log_info as proc3195 with path, options, and block3196 handles requests without extra_log_info3197 handles requests with extra_log_info as hash3198 handles requests with extra_log_info as proc3199 with Net::HTTPBadResponse3200 with path3201 handles requests without extra_log_info3202 handles requests with extra_log_info as hash3203 handles requests with extra_log_info as proc3204 with path and options3205 handles requests without extra_log_info3206 handles requests with extra_log_info as hash3207 handles requests with extra_log_info as proc3208 with path, options, and block3209 handles requests without extra_log_info3210 handles requests with extra_log_info as hash3211 handles requests with extra_log_info as proc3212 silent mode3213 when silent mode is enabled3214 allows GET requests3215 allows HEAD requests3216 allows OPTIONS requests3217 blocks POST requests3218 blocks PUT requests3219 blocks DELETE requests3220 logs blocked requests3221 when silent mode is disabled3222 allows GET requests3223 allows HEAD requests3224 allows OPTIONS requests3225 blocks POST requests3226 blocks PUT requests3227 blocks DELETE requests3228Feature3229 .get3230 returns the Flipper feature3231 .persisted_names3232 returns the names of the persisted features3233 returns an empty Array when no features are presisted3234 caches the feature names when request store is active3235 fetches all flags once in a single query3236 .persisted_name?3237 when the feature is persisted3238 returns true when feature name is a string3239 returns true when feature name is a symbol3240 when the feature is not persisted3241 returns false when feature name is a string3242 returns false when feature name is a symbol3243 .all3244 returns the Flipper features as an array3245 .flipper3246 when request store is inactive3247 memoizes the Flipper instance but does not not enable Flipper memoization3248 when request store is active3249 memoizes the Flipper instance3250 .enabled?3251 returns false (and tracks / raises exception for dev) for undefined feature3252 returns false for undefined feature with default_enabled_if_undefined: false3253 returns true for undefined feature with default_enabled_if_undefined: true3254 returns false for existing disabled feature in the database3255 returns true for existing enabled feature in the database3256 is expected to eq #<ActiveSupport::Cache::MemoryStore entries=0, size=0, options={:compress=>false}>3257 is expected to eq #<Gitlab::Redis::FeatureFlag::FeatureFlagStore options={:namespace=>"cache:gitlab", :compress=>true, ...le:0x00007f8fc8bde3e0>, @shutdown_block=nil>, @key=:"pool-203060", @key_count=:"pool-203060-count">>3258 caches the status in L1 and L2 caches3259 returns the default value when the database does not exist3260 when using redis cache3261 does not make recursive feature-flag calls3262 when self-recursive3263 returns the default value3264 detects self recursion3265 when deeply recursive3266 detects deep recursion3267 logging is enabled3268 does not log feature_flag_state_logs3269 logs other feature flags3270 cached feature flag3271 caches the status in L1 cache for the first minute3272 caches the status in L2 cache after 2 minutes3273 fetches the status after an hour3274 with a group member3275 is true for all group members3276 is false for any other actor3277 with an individual actor3278 returns true when same actor is informed3279 returns false when different actor is informed3280 returns false when no actor is informed3281 with invalid actor3282 when is dev_or_test_env3283 does raise exception3284 validates usage of feature flag with YAML definition3285 when usage is correct3286 when invalid type is used3287 when default_enabled: is false in the YAML definition3288 reads the default from the YAML definition3289 when default_enabled: is true in the YAML definition3290 reads the default from the YAML definition3291 and feature has been disabled3292 is not enabled3293 with a cached value and the YAML definition is changed thereafter3294 reads new default value3295 when YAML definition does not exist for an optional type3296 when in dev or test environment3297 raises an error for dev3298 when in production3299 when database exists3300 checks the persisted status and returns false3301 when database does not exist3302 returns false without checking the status in the database3303 .disable?3304 returns true (and tracks / raises exception for dev) for undefined feature3305 returns true for undefined feature with default_enabled_if_undefined: false3306 returns false for undefined feature with default_enabled_if_undefined: true3307 returns true for existing disabled feature in the database3308 returns false for existing enabled feature in the database3309 .enable3310 returns true3311 behaves like logging3312 logs the event3313 when thing is an actor3314 behaves like logging3315 logs the event3316 .disable3317 returns true3318 behaves like logging3319 logs the event3320 when thing is an actor3321 behaves like logging3322 logs the event3323 when the feature flag was enabled for this actor3324 marks this thing as disabled3325 does not change the global value3326 is possible to re-enable the feature3327 when the feature flag is enabled globally3328 does not mark this thing as disabled3329 does not change the global value3330 opt_out3331 when thing is an actor3332 marks this thing as disabled3333 does not change the global value3334 stores the opt-out information as a gate3335 behaves like logging3336 logs the event3337 when thing is a group3338 has no effect3339 remove_opt_out3340 when thing is an actor3341 re-enables this thing3342 does not change the global value3343 removes the opt-out information3344 behaves like logging3345 logs the event3346 when thing is a group3347 has no effect3348 .enable_percentage_of_time3349 behaves like logging3350 logs the event3351 when the flag is on3352 fails with InvalidOperation3353 .disable_percentage_of_time3354 behaves like logging3355 logs the event3356 .enable_percentage_of_actors3357 behaves like logging3358 logs the event3359 when the flag is on3360 fails with InvalidOperation3361 .disable_percentage_of_actors3362 behaves like logging3363 logs the event3364 .remove3365 behaves like logging3366 logs the event3367 for a non-persisted feature3368 returns nil3369 returns true, and cleans up3370 .log_feature_flag_states?3371 when flag is feature_flag_state_logs3372 is expected to be falsey3373 when flag is old3374 is expected to be falsey3375 when flag is old while log_state_changes is not present3376 is expected to be falsey3377 when flag is old but log_state_changes is true3378 is expected to be truthy3379 when flag is new and not feature_flag_state_logs3380 is expected to be truthy3381 when milestone is nil3382 is expected to be falsey3383 caching with stale reads from the database3384 gives the correct value when enabling for an additional actor3385 gives the correct value when enabling for percentage of time3386 gives the correct value when disabling the flag3387 gives the correct value when deleting the flag3388 Feature::Target3389 #targets3390 returns all found targets3391 when repository target works with different types of repositories3392 returns all found targets3393Label3394 modules3395 is expected to includes the Referable module3396 is expected to includes the Subscribable module3397 associations3398 is expected to have many issues through label_links source => target3399 is expected to have many label_links dependent => destroy3400 is expected to have many lists dependent => destroy3401 is expected to have many priorities class_name => LabelPriority3402 validation3403 is expected to validate that :title is case-sensitively unique within the scope of :group_id and :project_id3404 validates color code3405 validates title3406 scopes3407 .on_board3408 returns only the board labels3409 #color3410 strips color3411 uses default color if color is missing3412 #text_color3413 uses default color if color is missing3414 #title3415 sanitizes title3416 strips title3417 #description3418 sanitizes description3419 accepts an empty string3420 priorization3421 #prioritize!3422 when label is not prioritized3423 creates a label priority3424 sets label priority3425 when label is prioritized3426 does not create a label priority3427 updates label priority3428 #unprioritize!3429 removes label priority3430 #priority3431 when label is not prioritized3432 returns nil3433 when label is prioritized3434 returns label priority3435 .search3436 returns labels with a partially matching title3437 returns labels with a partially matching description3438 returns nothing3439 .subscribed_by3440 returns subscribed labels3441 returns nothing3442 .top_labels_by_target3443 returns distinct labels, ordered by usage in the given target relation3444 excludes labels that are not assigned to any records in the given target relation3445 .optionally_subscribed_by3446 returns subscribed labels3447 returns all labels if user_id is nil3448 #templates3449 with invalid template labels3450 returns only valid template labels3451 .pluck_titles3452 returns the audit event type of the event type filter3453Submodules::UpdateService3454 #execute3455 when the user is not authorized3456 behaves like returns error result3457 is expected to eq "You are not allowed to push into this branch"3458 when the user is authorized3459 updates the submodule reference3460 when the branch is protected3461 behaves like returns error result3462 is expected to eq "You are not allowed to push into this branch"3463 validations3464 when submodule3465 is empty3466 behaves like returns error result3467 is expected to eq "Invalid parameters"3468 is not present3469 behaves like returns error result3470 is expected to eq "Invalid parameters"3471 is invalid3472 behaves like returns error result3473 is expected to eq "Invalid submodule path"3474 does not exist3475 behaves like returns error result3476 is expected to eq "Invalid submodule path"3477 has traversal path3478 behaves like returns error result3479 is expected to eq "Invalid submodule path"3480 commit_sha3481 is empty3482 behaves like returns error result3483 is expected to eq "Invalid parameters"3484 is not present3485 behaves like returns error result3486 is expected to eq "Invalid parameters"3487 is invalid3488 behaves like returns error result3489 is expected to eq "Invalid parameters"3490 is the same as the current ref3491 behaves like returns error result3492 is expected to eq "The submodule six is already at 409f37c4f05865e4fb208c771485f211a22c4c2d"3493 branch_name3494 is empty3495 behaves like returns error result3496 is expected to eq "You can only create or edit files when you are on a branch"3497 is not present3498 behaves like returns error result3499 is expected to eq "Invalid parameters"3500 does not exist3501 behaves like returns error result3502 is expected to eq "You can only create or edit files when you are on a branch"3503 when commit message is empty3504 a default commit message is set3505 when there is an unexpected error3506 behaves like returns error result3507 is expected to eq "error message"3508 when submodule is inside a directory3509 updates the submodule reference3510 when repository is empty3511 behaves like returns error result3512 is expected to eq "The repository is empty"3513Operations::FeatureFlag3514 behaves like includes Limitable concern3515 #exceeds_limits?3516 without plan limits configured3517 is expected to eq false3518 without plan limits configured3519 is expected to eq false3520 with an existing model3521 is expected to eq true3522 validations3523 is expected to be a kind of Limitable3524 without plan limits configured3525 can create new models3526 with plan limits configured3527 can create new models3528 with an existing model3529 cannot create new models exceeding the plan limits3530 associations3531 is expected to belong to project required: false3532 is expected to have many strategies3533 default values3534 is expected to be active3535 is expected to eq "new_version_flag"3536 .reference_pattern3537 is expected to match "[feature_flag:123]"3538 is expected to match "[feature_flag:gitlab-org/gitlab/123]"3539 .link_reference_pattern3540 is expected to match "http://localhost/gitlab-org/gitlab/-/feature_flags/123/edit"3541 is expected not to match "http://localhost/gitlab-org/gitlab/issues/123/edit"3542 is expected not to match "gitlab-org/gitlab/-/feature_flags/123/edit"3543 #to_reference3544 returns feature flag id3545 returns complete path to the feature flag with full: true3546 validations3547 is expected to validate that :project cannot be empty/falsy3548 is expected to validate that :name cannot be empty/falsy3549 is expected to validate that :name is case-sensitively unique within the scope of :project_id3550 is expected to define :version as an enum backed by an integer with values ‹{new_version_flag: 2}›3551 a version 2 feature flag3552 is valid if associated with Operations::FeatureFlags::Strategy models3553 behaves like AtomicInternalId3554 .has_internal_id3555 Module inclusion3556 is expected to includes the AtomicInternalId module3557 Validation3558 when presence validation is required3559 when creating an object3560 raises an error if the internal id is blank3561 when updating an object3562 raises an error if the internal id is blank3563 when presence validation is not required3564 when creating an object3565 does not raise an error if the internal id is blank (PENDING: No reason given)3566 when updating an object3567 does not raise an error if the internal id is blank (PENDING: No reason given)3568 Creating an instance3569 saves a new instance properly3570 internal id generation3571 calls InternalId.generate_next and sets internal id attribute3572 does not overwrite an existing internal id3573 when the instance has an internal ID set3574 calls InternalId.update_last_value and sets the `last_value` to that of the instance3575 unsetting the instance internal id on rollback3576 when the internal id has been changed3577 when the internal id is automatically set3578 clears it on the instance3579 when the internal id is manually set3580 does not clear it on the instance3581 when the internal id has not been changed3582 preserves the value on the instance3583 supply of internal ids3584 provides a persistent supply of IID values, sensitive to the current state3585 #reset_scope_internal_id_attribute3586 rewinds the allocated IID3587 allocates the same IID3588 .enabled3589 when the feature flag is active3590 returns the flag3591 when the feature flag is inactive3592 does not return the flag3593 .disabled3594 when the feature flag is active3595 does not return the flag3596 when the feature flag is inactive3597 returns the flag3598 .for_unleash_client3599 matches wild cards in the scope3600 matches wild cards case sensitively3601 returns feature flags ordered by id3602 #hook_attrs3603 includes expected attributes3604Ci::Processable3605 delegations3606 is expected to delegate #merge_request? to the #pipeline object3607 is expected to delegate #merge_request_ref? to the #pipeline object3608 is expected to delegate #legacy_detached_merge_request_pipeline? to the #pipeline object3609 #clone3610 when the processable to be cloned is a bridge3611 behaves like clones the processable3612 creates a new processable that represents the old processable3613 clone accessors3614 clones the processable attributes3615 clones only the needs attributes3616 when the processable has protected: nil3617 clones the protected job attribute3618 reject accessors3619 does not clone rejected attributes3620 when the processable to be cloned is a build3621 has the correct number of known attributes3622 behaves like clones the processable3623 creates a new processable that represents the old processable3624 clone accessors3625 clones the processable attributes3626 clones only the needs attributes3627 when the processable has protected: nil3628 clones the protected job attribute3629 reject accessors3630 does not clone rejected attributes3631 when it has a deployment3632 persists the expanded environment name3633 when it has a dynamic environment3634 re-uses the previous persisted environment3635 when the processable has job variables3636 only clones the internal job variables3637 #retryable3638 when the processable is a bridge3639 behaves like retryable processable3640 when processable is successful3641 is expected to be retryable3642 when processable is failed3643 is expected to be retryable3644 when processable is canceled3645 is expected to be retryable3646 when the processable is a build3647 when the processable is retryable3648 behaves like retryable processable3649 when processable is successful3650 is expected to be retryable3651 when processable is failed3652 is expected to be retryable3653 when processable is canceled3654 is expected to be retryable3655 when deployment is rejected3656 is expected not to be retryable3657 when build is waiting for deployment approval3658 is expected not to be retryable3659 when the processable is non-retryable3660 behaves like non-retryable processable3661 when processable is skipped3662 is expected not to be retryable3663 when processable is degenerated3664 is expected not to be retryable3665 when a canceled processable has been retried already3666 is expected not to be retryable3667 when processable is running3668 is expected not to be retryable3669 #aggregated_needs_names3670 with created status3671 with needs3672 returns all processables3673 returns all needs3674 without needs3675 returns all processables3676 returns empty needs3677 validate presence of scheduling_type3678 importing: false, should_validate: true3679 on create3680 validates presence3681 on update3682 is expected not to validate that :scheduling_type cannot be empty/falsy3683 importing: true, should_validate: false3684 on create3685 validates presence3686 on update3687 is expected not to validate that :scheduling_type cannot be empty/falsy3688 .populate_scheduling_type!3689 populates scheduling_type of processables3690 does not affect processables from other pipelines3691 #needs_attributes3692 with needs3693 returns all needs attributes3694 without needs3695 is expected to be empty3696 state transition with resource group3697 when build status is created3698 is waiting for resource when build is enqueued3699 when build is waiting for resource3700 is enqueued when build requests resource3701 releases a resource when build finished3702 re-checks the resource group even if the processable does not retain a resource3703 when build has prerequisites3704 is preparing when build is enqueued3705 when there are no available resources3706 stays as waiting for resource when build requests resource3707Milestones::TransferService3708 #execute3709 when old_group is present3710 without existing milestone at the new group level3711 recreates the missing group milestones at project level3712 applies new project milestone to issues with group milestone3713 deletes milestone counters cache for both milestones3714 does not apply new project milestone to issues with project milestone3715 applies new project milestone to merge_requests with group milestone3716 does not apply new project milestone to issuables with project milestone3717 does not recreate missing group milestones that are not applied to issues or merge requests3718 when milestone is from an ancestor group3719 recreates the missing group milestones at project level3720 when find_or_create_milestone returns nil3721 removes issues group milestone3722 removes merge requests group milestone3723 with existing milestone at the new group level3724 does not create a new milestone3725 applies existing milestone to issues with group milestone3726 applies existing milestone to merge_requests with group milestone3727 when old_group is not present3728 returns nil3729UserPreference3730 validations3731 diffs_deletion_color and diffs_addition_color3732 color: "#000000"3733 is expected to allow :diffs_deletion_color to be ‹"#000000"›3734 is expected to allow :diffs_addition_color to be ‹"#000000"›3735 color: "#123456"3736 is expected to allow :diffs_deletion_color to be ‹"#123456"›3737 is expected to allow :diffs_addition_color to be ‹"#123456"›3738 color: "#abcdef"3739 is expected to allow :diffs_deletion_color to be ‹"#abcdef"›3740 is expected to allow :diffs_addition_color to be ‹"#abcdef"›3741 color: "#AbCdEf"3742 is expected to allow :diffs_deletion_color to be ‹"#AbCdEf"›3743 is expected to allow :diffs_addition_color to be ‹"#AbCdEf"›3744 color: "#ffffff"3745 is expected to allow :diffs_deletion_color to be ‹"#ffffff"›3746 is expected to allow :diffs_addition_color to be ‹"#ffffff"›3747 color: "#fFfFfF"3748 is expected to allow :diffs_deletion_color to be ‹"#fFfFfF"›3749 is expected to allow :diffs_addition_color to be ‹"#fFfFfF"›3750 color: "#000"3751 is expected to allow :diffs_deletion_color to be ‹"#000"›3752 is expected to allow :diffs_addition_color to be ‹"#000"›3753 color: "#123"3754 is expected to allow :diffs_deletion_color to be ‹"#123"›3755 is expected to allow :diffs_addition_color to be ‹"#123"›3756 color: "#abc"3757 is expected to allow :diffs_deletion_color to be ‹"#abc"›3758 is expected to allow :diffs_addition_color to be ‹"#abc"›3759 color: "#AbC"3760 is expected to allow :diffs_deletion_color to be ‹"#AbC"›3761 is expected to allow :diffs_addition_color to be ‹"#AbC"›3762 color: "#fff"3763 is expected to allow :diffs_deletion_color to be ‹"#fff"›3764 is expected to allow :diffs_addition_color to be ‹"#fff"›3765 color: "#fFf"3766 is expected to allow :diffs_deletion_color to be ‹"#fFf"›3767 is expected to allow :diffs_addition_color to be ‹"#fFf"›3768 color: ""3769 is expected to allow :diffs_deletion_color to be ‹""›3770 is expected to allow :diffs_addition_color to be ‹""›3771 color: "#1"3772 is expected not to allow :diffs_deletion_color to be ‹"#1"›3773 is expected not to allow :diffs_addition_color to be ‹"#1"›3774 color: "#12"3775 is expected not to allow :diffs_deletion_color to be ‹"#12"›3776 is expected not to allow :diffs_addition_color to be ‹"#12"›3777 color: "#1234"3778 is expected not to allow :diffs_deletion_color to be ‹"#1234"›3779 is expected not to allow :diffs_addition_color to be ‹"#1234"›3780 color: "#12345"3781 is expected not to allow :diffs_deletion_color to be ‹"#12345"›3782 is expected not to allow :diffs_addition_color to be ‹"#12345"›3783 color: "#1234567"3784 is expected not to allow :diffs_deletion_color to be ‹"#1234567"›3785 is expected not to allow :diffs_addition_color to be ‹"#1234567"›3786 color: "123456"3787 is expected not to allow :diffs_deletion_color to be ‹"123456"›3788 is expected not to allow :diffs_addition_color to be ‹"123456"›3789 color: "#12345x"3790 is expected not to allow :diffs_deletion_color to be ‹"#12345x"›3791 is expected not to allow :diffs_addition_color to be ‹"#12345x"›3792 pass_user_identities_to_ci_jwt3793 is expected to allow :pass_user_identities_to_ci_jwt to be ‹true›3794 is expected to allow :pass_user_identities_to_ci_jwt to be ‹false›3795 is expected not to allow :pass_user_identities_to_ci_jwt to be ‹nil›3796 is expected not to allow :pass_user_identities_to_ci_jwt to be ‹""›3797 visibility_pipeline_id_type3798 is set to 0 by default3799 is expected to define :visibility_pipeline_id_type as an enum backed by an integer with values ‹{id: 0, iid: 1}›3800 notes filters global keys3801 contains expected values3802 #set_notes_filter3803 when filter is set to all notes3804 behaves like setting system notes3805 returns updated discussion filter3806 updates discussion filter for issuable class3807 when filter is set to only comments3808 behaves like setting system notes3809 returns updated discussion filter3810 updates discussion filter for issuable class3811 when filter is set to only activity3812 behaves like setting system notes3813 returns updated discussion filter3814 updates discussion filter for issuable class3815 when notes_filter parameter is invalid3816 returns the current notes filter3817 sort_by preferences3818 merge_requests_sort attribute3819 behaves like a sort_by preference3820 allows nil sort fields3821 issues_sort attribute3822 behaves like a sort_by preference3823 allows nil sort fields3824 #tab_width3825 is set to 8 by default3826 returns default value when assigning nil3827 returns default value when the value is NULL3828 is expected to validate that :tab_width looks like an integer greater than or equal to 1 and less than or equal to 123829 #tab_width=3830 sets to default value when nil3831 sets user values3832 #time_display_relative3833 is set to true by default3834 returns default value when assigning nil3835 returns default value when the value is NULL3836 returns assigned value3837 #time_display_relative=3838 sets to default value when nil3839 sets user values3840 #project_shortcut_buttons3841 is set to true by default3842 returns assigned value3843 #render_whitespace_in_code3844 is set to false by default3845 returns default value when assigning nil3846 returns default value when the value is NULL3847 returns assigned value3848 #render_whitespace_in_code=3849 sets to default value when nil3850 sets user values3851BlobPolicy3852 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 13853 grants permission3854 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 13855 grants permission3856 project_level: :public, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 13857 grants permission3858 project_level: :public, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 13859 grants permission3860 project_level: :public, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 13861 grants permission3862 project_level: :public, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 13863 grants permission3864 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 13865 grants permission3866 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 03867 grants permission3868 project_level: :public, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 13869 grants permission3870 project_level: :public, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 13871 grants permission3872 project_level: :public, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 03873 grants permission3874 project_level: :public, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 03875 grants permission3876 project_level: :public, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 03877 grants permission3878 project_level: :public, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 03879 grants permission3880 project_level: :public, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 03881 grants permission3882 project_level: :public, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 03883 grants permission3884 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 13885 grants permission3886 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 13887 grants permission3888 project_level: :internal, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 13889 grants permission3890 project_level: :internal, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 13891 grants permission3892 project_level: :internal, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 13893 grants permission3894 project_level: :internal, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 03895 grants permission3896 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 13897 grants permission3898 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 03899 grants permission3900 project_level: :internal, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 13901 grants permission3902 project_level: :internal, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 13903 grants permission3904 project_level: :internal, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 03905 grants permission3906 project_level: :internal, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 03907 grants permission3908 project_level: :internal, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 03909 grants permission3910 project_level: :internal, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 03911 grants permission3912 project_level: :internal, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 03913 grants permission3914 project_level: :internal, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 03915 grants permission3916 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 13917 grants permission3918 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 03919 grants permission3920 project_level: :private, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 13921 grants permission3922 project_level: :private, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 03923 grants permission3924 project_level: :private, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 03925 grants permission3926 project_level: :private, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 03927 grants permission3928 project_level: :private, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 03929 grants permission3930 project_level: :private, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 03931 grants permission3932 project_level: :private, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 03933 grants permission3934 project_level: :private, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 03935 grants permission3936Pages::InvalidateDomainCacheWorker3937 when a project have multiple domains3938 clears the cache with Gitlab::Pages::CacheControl3939 behaves like clears caches with3940 clears the cache with Gitlab::Pages::CacheControl3941 behaves like subscribes to event3942 consumes the published event3943 behaves like an idempotent worker3944 is labeled as idempotent3945 performs multiple times sequentially without raising an exception3946 behaves like clears caches with3947 clears the cache with Gitlab::Pages::CacheControl3948 behaves like subscribes to event3949 consumes the published event3950 behaves like an idempotent worker3951 is labeled as idempotent3952 performs multiple times sequentially without raising an exception3953 behaves like clears caches with3954 clears the cache with Gitlab::Pages::CacheControl3955 behaves like subscribes to event3956 consumes the published event3957 behaves like an idempotent worker3958 is labeled as idempotent3959 performs multiple times sequentially without raising an exception3960 behaves like clears caches with3961 clears the cache with Gitlab::Pages::CacheControl3962 behaves like subscribes to event3963 consumes the published event3964 behaves like an idempotent worker3965 is labeled as idempotent3966 performs multiple times sequentially without raising an exception3967 behaves like clears caches with3968 clears the cache with Gitlab::Pages::CacheControl3969 behaves like subscribes to event3970 consumes the published event3971 behaves like an idempotent worker3972 is labeled as idempotent3973 performs multiple times sequentially without raising an exception3974 behaves like clears caches with3975 clears the cache with Gitlab::Pages::CacheControl3976 behaves like subscribes to event3977 consumes the published event3978 behaves like an idempotent worker3979 is labeled as idempotent3980 performs multiple times sequentially without raising an exception3981 behaves like clears caches with3982 clears the cache with Gitlab::Pages::CacheControl3983 behaves like subscribes to event3984 consumes the published event3985 behaves like an idempotent worker3986 is labeled as idempotent3987 performs multiple times sequentially without raising an exception3988 behaves like clears caches with3989 clears the cache with Gitlab::Pages::CacheControl3990 behaves like subscribes to event3991 consumes the published event3992 behaves like an idempotent worker3993 is labeled as idempotent3994 performs multiple times sequentially without raising an exception3995 behaves like clears caches with3996 clears the cache with Gitlab::Pages::CacheControl3997 behaves like subscribes to event3998 consumes the published event3999 behaves like an idempotent worker4000 is labeled as idempotent4001 performs multiple times sequentially without raising an exception4002 behaves like clears caches with4003 clears the cache with Gitlab::Pages::CacheControl4004 behaves like subscribes to event4005 consumes the published event4006 behaves like an idempotent worker4007 is labeled as idempotent4008 performs multiple times sequentially without raising an exception4009 behaves like clears caches with4010 clears the cache with Gitlab::Pages::CacheControl4011 behaves like subscribes to event4012 consumes the published event4013 behaves like an idempotent worker4014 is labeled as idempotent4015 performs multiple times sequentially without raising an exception4016 behaves like clears caches with4017 clears the cache with Gitlab::Pages::CacheControl4018 behaves like subscribes to event4019 consumes the published event4020 behaves like an idempotent worker4021 is labeled as idempotent4022 performs multiple times sequentially without raising an exception4023 behaves like clears caches with4024 clears the cache with Gitlab::Pages::CacheControl4025 behaves like subscribes to event4026 consumes the published event4027 behaves like an idempotent worker4028 is labeled as idempotent4029 performs multiple times sequentially without raising an exception4030 when project attributes change4031 behaves like clears caches with4032 clears the cache with Gitlab::Pages::CacheControl4033 behaves like subscribes to event4034 consumes the published event4035 behaves like an idempotent worker4036 is labeled as idempotent4037 performs multiple times sequentially without raising an exception4038 behaves like clears caches with4039 clears the cache with Gitlab::Pages::CacheControl4040 behaves like subscribes to event4041 consumes the published event4042 behaves like an idempotent worker4043 is labeled as idempotent4044 performs multiple times sequentially without raising an exception4045 behaves like ignores the published event4046 does not consume the published event4047 when project features change4048 behaves like clears caches with4049 clears the cache with Gitlab::Pages::CacheControl4050 behaves like subscribes to event4051 consumes the published event4052 behaves like an idempotent worker4053 is labeled as idempotent4054 performs multiple times sequentially without raising an exception4055 behaves like ignores the published event4056 does not consume the published event4057 when namespace based cache keys are duplicated4058 behaves like clears caches with4059 clears the cache with Gitlab::Pages::CacheControl4060 behaves like subscribes to event4061 consumes the published event4062 behaves like an idempotent worker4063 is labeled as idempotent4064 performs multiple times sequentially without raising an exception4065Gitlab::PathRegex4066 TOP_LEVEL_ROUTES4067 includes all the top level namespaces4068 does not allow expansion4069 GROUP_ROUTES4070 don't contain a second wildcard4071 does not allow expansion4072 PROJECT_WILDCARD_ROUTES4073 includes all paths that can be used after a namespace/project path4074 does not allow expansion4075 .root_namespace_route_regex4076 rejects top level routes4077 accepts project wildcard routes4078 accepts group routes4079 is not case sensitive4080 does not allow extra slashes4081 .full_namespace_path_regex4082 is not case sensitive4083 does not allow extra slashes4084 at the top level4085 when the final level4086 rejects top level routes4087 accepts project wildcard routes4088 accepts group routes4089 when more levels follow4090 rejects top level routes4091 accepts project wildcard routes4092 accepts group routes4093 at the second level4094 when the final level4095 accepts top level routes4096 rejects project wildcard routes4097 rejects group routes4098 when more levels follow4099 accepts top level routes4100 rejects project wildcard routes4101 rejects group routes4102 .project_route_regex4103 accepts top level routes4104 rejects project wildcard routes4105 accepts group routes4106 is not case sensitive4107 does not allow extra slashes4108 .full_project_path_regex4109 accepts top level routes4110 rejects project wildcard routes4111 accepts group routes4112 is not case sensitive4113 does not allow extra slashes4114 .namespace_format_regex4115 is expected to match "gitlab-ce"4116 is expected to match "gitlab_git"4117 is expected to match "_underscore.js"4118 is expected to match "100px.com"4119 is expected to match "gitlab.org"4120 is expected not to match "?gitlab"4121 is expected not to match "git lab"4122 is expected not to match "gitlab.git"4123 is expected not to match "gitlab.org."4124 is expected not to match "gitlab.org/"4125 is expected not to match "/gitlab.org"4126 is expected not to match "gitlab git"4127 is expected not to match "gitlab?"4128 is expected to match "gitlab.org-"4129 is expected to match "gitlab.org_"4130 .project_path_format_regex4131 is expected to match "gitlab-ce"4132 is expected to match "gitlab_git"4133 is expected to match "_underscore.js"4134 is expected to match "100px.com"4135 is expected not to match "?gitlab"4136 is expected not to match "git lab"4137 is expected not to match "gitlab.git"4138 is expected not to match "gitlab?"4139 is expected not to match "gitlab git"4140 is expected to match "gitlab.org"4141 is expected to match "gitlab.org-"4142 is expected to match "gitlab.org_"4143 is expected to match "gitlab.org."4144 is expected not to match "gitlab.org/"4145 is expected not to match "/gitlab.org"4146 repository routes4147 .repository_route_regex4148 matches the expected paths4149 .repository_git_route_regex4150 matches the expected paths4151 .repository_git_lfs_route_regex4152 matches the expected paths4153 .repository_wiki_git_route_regex4154 matches the expected paths4155 is expected not to match "snippets/1.wiki.git"4156 .full_snippets_repository_path_regex4157 matches the expected paths4158 is expected not to match "root/snippets/1"4159 is expected not to match "gitlab-org/gitlab-test/snippets/foo"4160 .container_image_regex4161 is expected to match "gitlab-foss"4162 is expected to match "gitlab_foss"4163 is expected to match "gitlab-org/gitlab-foss"4164 is expected to match "a/b/c/d/e"4165 is expected to match "100px.com/100px.ruby"4166 does not match beyond 4 slashes4167 does not match other non-word characters4168 .container_image_blob_sha_regex4169 is expected to match "sha256:asdf1234567890ASDF"4170 is expected to match "foo:123"4171 is expected to match "a12bc3f590szp"4172 is expected not to match ""4173 does not match malicious characters4174 .dependency_proxy_route_regex4175 is expected to match "/v2/group1/dependency_proxy/containers/alpine/manifests/latest"4176 is expected to match "/v2/group1/dependency_proxy/containers/alpine/blobs/sha256:14119a10abf4669e8cdbdff324a9f9605d99697215a0d21c360fe8dfa8471bab"4177 is expected not to match ""4178 is expected not to match "/v3/group1/dependency_proxy/containers/alpine/manifests/latest"4179 is expected not to match "/v2/group1/dependency_proxy/container/alpine/manifests/latest"4180 is expected not to match "/v2/group1/dependency_prox/containers/alpine/manifests/latest"4181 is expected not to match "/v2/group1/dependency_proxy/containers/alpine/manifest/latest"4182 is expected not to match "/v2/group1/dependency_proxy/containers/alpine/manifest/la%2Ftest"4183 is expected not to match "/v2/group1/dependency_proxy/containers/alpine/manifest/latest/../one"4184 is expected not to match "/v3/group1/dependency_proxy/containers/alpine/blobs/sha256:14119a10abf4669e8cdbdff324a9f9605d99697215a0d21c360fe8dfa8471bab"4185 is expected not to match "/v2/group1/dependency_proxy/container/alpine/blobs/sha256:14119a10abf4669e8cdbdff324a9f9605d99697215a0d21c360fe8dfa8471bab"4186 is expected not to match "/v2/group1/dependency_prox/containers/alpine/blobs/sha256:14119a10abf4669e8cdbdff324a9f9605d99697215a0d21c360fe8dfa8471bab"4187 is expected not to match "/v2/group1/dependency_proxy/containers/alpine/blob/sha256:14119a10abf4669e8cdbdff324a9f9605d99697215a0d21c360fe8dfa8471bab"4188 is expected not to match "/v2/group1/dependency_proxy/containers/alpine/blob/sha256:F14119a10abf4669e8cdbdff324a9f9605d99697215a0d21c360fe8dfa8471bab/../latest"4189 is expected not to match "/v2/group1/dependency_proxy/containers/alpine/blob/sha256:F14119a10abf4669e8cdbdff324a9f9605d99697215a0d21c360fe8dfa8471bab/latest"4190Banzai::ColorParser4191 .parse4192 HEX format4193 parses the valid hex color #abc4194 parses the valid hex color #ABC4195 parses the valid hex color #d2d2d24196 parses the valid hex color #D2D2D24197 parses the valid hex color #123a4198 parses the valid hex color #123A4199 parses the valid hex color #123456aa4200 parses the valid hex color #123456AA4201 does not parse the invalid hex color #4202 does not parse the invalid hex color #14203 does not parse the invalid hex color #124204 does not parse the invalid hex color #12g4205 does not parse the invalid hex color #12G4206 does not parse the invalid hex color #123454207 does not parse the invalid hex color #r2r2r24208 does not parse the invalid hex color #R2R2R24209 does not parse the invalid hex color #12345674210 does not parse the invalid hex color # 1234211 does not parse the invalid hex color # 12344212 does not parse the invalid hex color # 1234564213 does not parse the invalid hex color # 123456784214 does not parse the invalid hex color #1 2 34215 does not parse the invalid hex color #123 44216 does not parse the invalid hex color #12 34 564217 does not parse the invalid hex color #123456 784218 RGB format4219 parses the valid rgb color rgb(0,0,0)4220 parses the valid rgb color rgb(255,255,255)4221 parses the valid rgb color rgb(0, 0, 0)4222 parses the valid rgb color RGB(0,0,0)4223 parses the valid rgb color rgb(0,0,0,0)4224 parses the valid rgb color rgb(0,0,0,0.0)4225 parses the valid rgb color rgb(0,0,0,.0)4226 parses the valid rgb color rgb(0,0,0, 0)4227 parses the valid rgb color rgb(0,0,0, 0.0)4228 parses the valid rgb color rgb(0,0,0, .0)4229 parses the valid rgb color rgb(0,0,0,1)4230 parses the valid rgb color rgb(0,0,0,1.0)4231 parses the valid rgb color rgba(0,0,0)4232 parses the valid rgb color rgba(0,0,0,0)4233 parses the valid rgb color RGBA(0,0,0)4234 parses the valid rgb color rgb(0%,0%,0%)4235 parses the valid rgb color rgba(0%,0%,0%,0%)4236 does not parse the invalid rgb color FOOrgb(0,0,0)4237 does not parse the invalid rgb color rgb(0,0,0)BAR4238 does not parse the invalid rgb color rgb(0,0,-1)4239 does not parse the invalid rgb color rgb(0,0,-0)4240 does not parse the invalid rgb color rgb(0,0,256)4241 does not parse the invalid rgb color rgb(0,0,0,-0.1)4242 does not parse the invalid rgb color rgb(0,0,0,-0.0)4243 does not parse the invalid rgb color rgb(0,0,0,-.1)4244 does not parse the invalid rgb color rgb(0,0,0,1.1)4245 does not parse the invalid rgb color rgb(0,0,0,2)4246 does not parse the invalid rgb color rgba(0,0,0,)4247 does not parse the invalid rgb color rgba(0,0,0,0.)4248 does not parse the invalid rgb color rgba(0,0,0,1.)4249 does not parse the invalid rgb color rgb(0,0,0%)4250 does not parse the invalid rgb color rgb(101%,0%,0%)4251 HSL format4252 parses the valid hsl color hsl(0,0%,0%)4253 parses the valid hsl color hsl(0,100%,100%)4254 parses the valid hsl color hsl(540,0%,0%)4255 parses the valid hsl color hsl(-720,0%,0%)4256 parses the valid hsl color hsl(0deg,0%,0%)4257 parses the valid hsl color hsl(0DEG,0%,0%)4258 parses the valid hsl color hsl(0, 0%, 0%)4259 parses the valid hsl color HSL(0,0%,0%)4260 parses the valid hsl color hsl(0,0%,0%,0)4261 parses the valid hsl color hsl(0,0%,0%,0.0)4262 parses the valid hsl color hsl(0,0%,0%,.0)4263 parses the valid hsl color hsl(0,0%,0%, 0)4264 parses the valid hsl color hsl(0,0%,0%, 0.0)4265 parses the valid hsl color hsl(0,0%,0%, .0)4266 parses the valid hsl color hsl(0,0%,0%,1)4267 parses the valid hsl color hsl(0,0%,0%,1.0)4268 parses the valid hsl color hsla(0,0%,0%)4269 parses the valid hsl color hsla(0,0%,0%,0)4270 parses the valid hsl color HSLA(0,0%,0%)4271 parses the valid hsl color hsl(1rad,0%,0%)4272 parses the valid hsl color hsl(1.1rad,0%,0%)4273 parses the valid hsl color hsl(.1rad,0%,0%)4274 parses the valid hsl color hsl(-1rad,0%,0%)4275 parses the valid hsl color hsl(1RAD,0%,0%)4276 does not parse the invalid hsl color hsl(+0,0%,0%)4277 does not parse the invalid hsl color hsl(0,0,0%)4278 does not parse the invalid hsl color hsl(0,0%,0)4279 does not parse the invalid hsl color hsl(0 deg,0%,0%)4280 does not parse the invalid hsl color hsl(0,-0%,0%)4281 does not parse the invalid hsl color hsl(0,101%,0%)4282 does not parse the invalid hsl color hsl(0,-1%,0%)4283 does not parse the invalid hsl color hsl(0,0%,0%,-0.1)4284 does not parse the invalid hsl color hsl(0,0%,0%,-.1)4285 does not parse the invalid hsl color hsl(0,0%,0%,1.1)4286 does not parse the invalid hsl color hsl(0,0%,0%,2)4287 does not parse the invalid hsl color hsl(0,0%,0%,)4288 does not parse the invalid hsl color hsl(0,0%,0%,0.)4289 does not parse the invalid hsl color hsl(0,0%,0%,1.)4290 does not parse the invalid hsl color hsl(deg,0%,0%)4291 does not parse the invalid hsl color hsl(rad,0%,0%)4292MergeRequests::LinkLfsObjectsService4293 when no oldrev and newrev passed4294 behaves like linking LFS objects4295 when source project is the same as target project4296 does not call Projects::LfsPointers::LfsLinkService#execute4297 when source project is different from target project4298 and there are changes4299 and there are LFS objects added4300 calls Projects::LfsPointers::LfsLinkService#execute with OIDs of LFS objects in merge request4301 but there are no LFS objects added4302 does not call Projects::LfsPointers::LfsLinkService#execute4303 and there are no changes4304 does not call Projects::LfsPointers::LfsLinkService#execute4305 when oldrev and newrev are passed4306 behaves like linking LFS objects4307 when source project is the same as target project4308 does not call Projects::LfsPointers::LfsLinkService#execute4309 when source project is different from target project4310 and there are changes4311 and there are LFS objects added4312 calls Projects::LfsPointers::LfsLinkService#execute with OIDs of LFS objects in merge request4313 but there are no LFS objects added4314 does not call Projects::LfsPointers::LfsLinkService#execute4315 and there are no changes4316 does not call Projects::LfsPointers::LfsLinkService#execute4317Packages::Debian::DistributionReleaseFileUploader4318 Packages::Debian::ProjectDistribution4319 behaves like builds correct paths4320 #store_dir4321 behaves like matches the method pattern4322 is expected to match /^\h{2}\/\h{2}\/\h{64}\/debian_project_distribution\/\d+$/4323 #cache_dir4324 behaves like matches the method pattern4325 is expected to match /\/packages\/tmp\/cache$/4326 #work_dir4327 behaves like matches the method pattern4328 is expected to match /\/packages\/tmp\/work$/4329 #upload_path4330 behaves like matches the method pattern4331 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4332 #relative_path4333 is relative (PENDING: Path not set, skipping.)4334 .absolute_path4335 behaves like matches the method pattern4336 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4337 .base_dir4338 behaves like matches the method pattern4339 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4340 path traversal exploits4341 throws an exception4342 object store is remote4343 behaves like builds correct paths4344 #store_dir4345 behaves like matches the method pattern4346 is expected to match /^\h{2}\/\h{2}\/\h{64}\/debian_project_distribution\/\d+$/4347 #cache_dir4348 behaves like matches the method pattern4349 is expected to match /\/packages\/tmp\/cache$/4350 #work_dir4351 behaves like matches the method pattern4352 is expected to match /\/packages\/tmp\/work$/4353 #upload_path4354 behaves like matches the method pattern4355 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4356 #relative_path4357 is relative (PENDING: Path not set, skipping.)4358 .absolute_path4359 behaves like matches the method pattern4360 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4361 .base_dir4362 behaves like matches the method pattern4363 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4364 path traversal exploits4365 throws an exception4366 remote file4367 with object storage enabled4368 can store file remotely4369 #filename4370 is expected to eq "Release"4371 with signed_file4372 is expected to eq "InRelease"4373 Packages::Debian::GroupDistribution4374 behaves like builds correct paths4375 #store_dir4376 behaves like matches the method pattern4377 is expected to match /^\h{2}\/\h{2}\/\h{64}\/debian_group_distribution\/\d+$/4378 #cache_dir4379 behaves like matches the method pattern4380 is expected to match /\/packages\/tmp\/cache$/4381 #work_dir4382 behaves like matches the method pattern4383 is expected to match /\/packages\/tmp\/work$/4384 #upload_path4385 behaves like matches the method pattern4386 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4387 #relative_path4388 is relative (PENDING: Path not set, skipping.)4389 .absolute_path4390 behaves like matches the method pattern4391 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4392 .base_dir4393 behaves like matches the method pattern4394 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4395 path traversal exploits4396 throws an exception4397 object store is remote4398 behaves like builds correct paths4399 #store_dir4400 behaves like matches the method pattern4401 is expected to match /^\h{2}\/\h{2}\/\h{64}\/debian_group_distribution\/\d+$/4402 #cache_dir4403 behaves like matches the method pattern4404 is expected to match /\/packages\/tmp\/cache$/4405 #work_dir4406 behaves like matches the method pattern4407 is expected to match /\/packages\/tmp\/work$/4408 #upload_path4409 behaves like matches the method pattern4410 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4411 #relative_path4412 is relative (PENDING: Path not set, skipping.)4413 .absolute_path4414 behaves like matches the method pattern4415 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4416 .base_dir4417 behaves like matches the method pattern4418 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4419 path traversal exploits4420 throws an exception4421 remote file4422 with object storage enabled4423 can store file remotely4424 #filename4425 is expected to eq "Release"4426 with signed_file4427 is expected to eq "InRelease"4428StubFeatureFlags4429 #stub_feature_flags4430 subsquent run changes state4431 when checking global state4432 feature_actors: false, expected_result: false4433 is expected to eq false4434 is expected not to eq false4435 default_enabled_if_undefined does not impact feature state4436 is expected to eq false4437 is expected not to eq false4438 feature_actors: true, expected_result: true4439 is expected to eq true4440 is expected not to eq true4441 default_enabled_if_undefined does not impact feature state4442 is expected to eq true4443 is expected not to eq true4444 feature_actors: :A, expected_result: false4445 is expected to eq false4446 is expected not to eq false4447 default_enabled_if_undefined does not impact feature state4448 is expected to eq false4449 is expected not to eq false4450 feature_actors: [:A], expected_result: false4451 is expected to eq false4452 is expected not to eq false4453 default_enabled_if_undefined does not impact feature state4454 is expected to eq false4455 is expected not to eq false4456 feature_actors: [:A, :B], expected_result: false4457 is expected to eq false4458 is expected not to eq false4459 default_enabled_if_undefined does not impact feature state4460 is expected to eq false4461 is expected not to eq false4462 when checking scoped state4463 feature_actors: false, tested_actor: nil, expected_result: false4464 is expected to eq false4465 is expected not to eq false4466 default_enabled_if_undefined does not impact feature state4467 is expected to eq false4468 is expected not to eq false4469 feature_actors: true, tested_actor: nil, expected_result: true4470 is expected to eq true4471 is expected not to eq true4472 default_enabled_if_undefined does not impact feature state4473 is expected to eq true4474 is expected not to eq true4475 feature_actors: false, tested_actor: :A, expected_result: false4476 is expected to eq false4477 is expected not to eq false4478 default_enabled_if_undefined does not impact feature state4479 is expected to eq false4480 is expected not to eq false4481 feature_actors: true, tested_actor: :A, expected_result: true4482 is expected to eq true4483 is expected not to eq true4484 default_enabled_if_undefined does not impact feature state4485 is expected to eq true4486 is expected not to eq true4487 feature_actors: :A, tested_actor: nil, expected_result: false4488 is expected to eq false4489 is expected not to eq false4490 default_enabled_if_undefined does not impact feature state4491 is expected to eq false4492 is expected not to eq false4493 feature_actors: :A, tested_actor: :A, expected_result: true4494 is expected to eq true4495 is expected not to eq true4496 default_enabled_if_undefined does not impact feature state4497 is expected to eq true4498 is expected not to eq true4499 feature_actors: :A, tested_actor: :B, expected_result: false4500 is expected to eq false4501 is expected not to eq false4502 default_enabled_if_undefined does not impact feature state4503 is expected to eq false4504 is expected not to eq false4505 feature_actors: [:A], tested_actor: nil, expected_result: false4506 is expected to eq false4507 is expected not to eq false4508 default_enabled_if_undefined does not impact feature state4509 is expected to eq false4510 is expected not to eq false4511 feature_actors: [:A], tested_actor: :A, expected_result: true4512 is expected to eq true4513 is expected not to eq true4514 default_enabled_if_undefined does not impact feature state4515 is expected to eq true4516 is expected not to eq true4517 feature_actors: [:A], tested_actor: :B, expected_result: false4518 is expected to eq false4519 is expected not to eq false4520 default_enabled_if_undefined does not impact feature state4521 is expected to eq false4522 is expected not to eq false4523 feature_actors: [:A, :B], tested_actor: nil, expected_result: false4524 is expected to eq false4525 is expected not to eq false4526 default_enabled_if_undefined does not impact feature state4527 is expected to eq false4528 is expected not to eq false4529 feature_actors: [:A, :B], tested_actor: :A, expected_result: true4530 is expected to eq true4531 is expected not to eq true4532 default_enabled_if_undefined does not impact feature state4533 is expected to eq true4534 is expected not to eq true4535 feature_actors: [:A, :B], tested_actor: :B, expected_result: true4536 is expected to eq true4537 is expected not to eq true4538 default_enabled_if_undefined does not impact feature state4539 is expected to eq true4540 is expected not to eq true4541 type handling4542 raises error4543 feature_actors: "string"4544 is expected to raise ArgumentError with message matching /accepts only/4545 feature_actors: 14546 is expected to raise ArgumentError with message matching /accepts only/4547 feature_actors: 1.04548 is expected to raise ArgumentError with message matching /accepts only/4549 feature_actors: #<Object:0x00007f8f86cb9ba8>4550 is expected to raise ArgumentError with message matching /accepts only/4551 does not raise error4552 feature_actors: true4553 is expected not to raise Exception4554 feature_actors: false4555 is expected not to raise Exception4556 feature_actors: nil4557 is expected not to raise Exception4558 feature_actors: #<StubFeatureFlags::StubFeatureGate:0x00007f8f86bd9080 @flipper_id=100>4559 is expected not to raise Exception4560 feature_actors: #<User id: @>4561 is expected not to raise Exception4562 stub timing4563 let_it_be variable4564 is expected to eq true4565 before_all variable4566 is expected to eq true4567 before(:all) variable4568 is expected to eq true4569 with stub_feature_flags meta4570 as true4571 is expected to eq true4572 as false4573 is expected to eq false4574Pages::MigrateFromLegacyStorageService4575 #execute_with_threads4576 does not try to migrate pages if pages are not deployed4577 when pages are marked as deployed4578 when pages directory does not exist4579 counts project as errored4580 when mark_projects_as_not_deployed is set4581 counts project as migrated4582 when pages directory exists on disk4583 migrates pages projects without deployments4584 when deployed already exists for the project4585 does not try to migrate project4586 when there is work for multiple threads4587 uses multiple threads4588 #execute_for_batch4589 does not try to migrate pages if pages are not deployed4590 only tries to migrate projects with passed ids4591 when pages are marked as deployed4592 when pages directory does not exist4593 counts project as errored4594 when mark_projects_as_not_deployed is set4595 counts project as migrated4596 when pages directory exists on disk4597 migrates pages projects without deployments4598 when deployed already exists for the project4599 does not try to migrate project4600Gitlab::DataBuilder::Issuable4601 #build4602 behaves like issuable hook data4603 contains project data4604 contains deprecated repository data4605 with a issue4606 contains issuable data4607 does not contain certain keys4608 changes are given4609 populates the :changes hash4610 does not contain certain keys4611 behaves like issuable hook data4612 contains project data4613 contains deprecated repository data4614 with a merge_request4615 contains issuable data4616 does not contain certain keys4617 changes are given4618 populates the :changes hash4619 does not contain certain keys4620 issue is assigned4621 returns correct hook data4622 merge_request is assigned4623 returns correct hook data4624 merge_request is assigned reviewers4625 returns correct hook data4626 when merge_request does not have reviewers and assignees4627 returns correct hook data4628Ci::JobToken::Scope4629 #outbound_projects4630 when no projects are added to the scope4631 returns the project defining the scope4632 when projects are added to the scope4633 returns all projects that can be accessed from a given scope4634 #inbound_projects4635 when no projects are added to the scope4636 returns the project defining the scope4637 when projects are added to the scope4638 returns all projects that can be accessed from a given scope4639 add!4640 with inbound4641 adds the project4642 with outbound4643 adds the project4644 with inbound only enabled4645 provides access4646 accessible?4647 with inbound and outbound scopes enabled4648 when inbound and outbound access setup4649 accessed_project: current_project, result: true4650 allows self and projects allowed from both directions4651 accessed_project: inbound_allowlist_project, result: false4652 allows self and projects allowed from both directions4653 accessed_project: unscoped_project1, result: false4654 allows self and projects allowed from both directions4655 accessed_project: unscoped_project2, result: false4656 allows self and projects allowed from both directions4657 accessed_project: outbound_allowlist_project, result: false4658 allows self and projects allowed from both directions4659 accessed_project: inbound_accessible_project, result: false4660 allows self and projects allowed from both directions4661 accessed_project: fully_accessible_project, result: true4662 allows self and projects allowed from both directions4663 with inbound scope enabled and outbound scope disabled4664 accessed_project: current_project, result: true4665 is expected to eq true4666 accessed_project: inbound_allowlist_project, result: false4667 is expected to eq false4668 accessed_project: unscoped_project1, result: false4669 is expected to eq false4670 accessed_project: unscoped_project2, result: false4671 is expected to eq false4672 accessed_project: outbound_allowlist_project, result: false4673 is expected to eq false4674 accessed_project: inbound_accessible_project, result: true4675 is expected to eq true4676 accessed_project: fully_accessible_project, result: true4677 is expected to eq true4678 with inbound scope disabled and outbound scope enabled4679 accessed_project: current_project, result: true4680 is expected to eq true4681 accessed_project: inbound_allowlist_project, result: false4682 is expected to eq false4683 accessed_project: unscoped_project1, result: false4684 is expected to eq false4685 accessed_project: unscoped_project2, result: false4686 is expected to eq false4687 accessed_project: outbound_allowlist_project, result: true4688 is expected to eq true4689 accessed_project: inbound_accessible_project, result: false4690 is expected to eq false4691 accessed_project: fully_accessible_project, result: true4692 is expected to eq true4693AddressableUrlValidator4694 #validate4695 with no options4696 allows http,https schemes by default4697 checks that the url structure is valid4698 with schemes4699 allows urls with the defined schemes4700 add error if the url scheme does not match the selected ones4701 validations4702 returns error when url is nil4703 returns error when url is empty4704 allows urls with encoded CR or LF characters4705 does not allow urls with CR or LF characters4706 provides all arguments to UrlBlocker.validate!4707 by default4708 does not block urls pointing to localhost4709 does not block urls pointing to the local network4710 does block nil urls4711 does block blank urls4712 strips urls4713 allows urls that cannot be resolved4714 when message is set4715 does block nil url with provided error message4716 when blocked_message is set4717 blocks url with provided error message4718 when allow_nil is set to true4719 does not block nil urls4720 when allow_blank is set to true4721 does not block blank urls4722 when allow_localhost is set to false4723 blocks urls pointing to localhost4724 when allow_setting_local_requests is set to true4725 does not block urls pointing to localhost4726 when allow_local_network is set to false4727 blocks urls pointing to the local network4728 when allow_setting_local_requests is set to true4729 does not block urls pointing to local network4730 when ports is4731 empty4732 does not block any port4733 set4734 blocks urls with a different port4735 when enforce_user is4736 true4737 checks user format4738 false (default)4739 does not check user format4740 when ascii_only is4741 true4742 prevents unicode characters4743 false (default)4744 does not prevent unicode characters4745 when deny_all_requests_except_allowed is4746 true4747 prevents the url4748 false4749 allows the url4750 not given4751 when app setting is true4752 prevents the url4753 when app setting is false4754 allows the url4755 when enforce_sanitization is4756 true4757 prevents unsafe urls4758 prevents unsafe internal urls4759 allows safe urls4760 false4761 allows unsafe urls4762 when dns_rebind_protection is4763 true4764 raises error4765 false4766 allows urls that cannot be resolved4767Users::UpdateService4768 #execute4769 updates time preferences4770 returns an error result when record cannot be updated4771 includes namespace error messages4772 updates the status if status params were given4773 does not delete the status if no status param was passed4774 includes status error messages4775 updates user detail with provided attributes4776 does not try to reset unconfirmed email for a new user4777 updating canonical email4778 if email was changed4779 calls canonicalize_email4780 when race condition4781 updates email for stale user4782 when check_password is true4783 returns error if no password confirmation was passed4784 returns error if wrong password confirmation was passed4785 does not require password if it was automatically set4786 does not require a password if the attribute changed does not require it4787 when check_password is left to false4788 does not require a password check4789 if email was NOT changed4790 skips update canonicalize email service call4791 does not reset unconfirmed email4792 updates the enabled_following4793WARNING: Active Record does not support composite primary key.4794user_follow_users has composite primary key. Composite primary key is ignored.4795 removes followers and followees4796 does not remove followers/followees if feature flag is off4797 when there is more followers/followees then batch limit4798 removes followers and followees4799 #execute!4800 updates the name4801 raises an error when record cannot be updated4802 fires system hooks when a new user is saved4803StarredProjectsFinder4804 #execute4805 user has a public profile4806 as same user4807 is expected to contain exactly #<Project id:1049 namespace835/project-974>>, #<Project id:1050 namespace836/project-975>>, and #<Project id:1051 namespace837/project-976>>4808 as other user4809 is expected to contain exactly #<Project id:1052 namespace838/project-977>> and #<Project id:1053 namespace839/project-978>>4810 as no user4811 is expected to contain exactly #<Project id:1055 namespace841/project-980>> and #<Project id:1056 namespace842/project-981>>4812 user has a private profile4813 as same user4814 is expected to contain exactly #<Project id:1058 namespace844/project-983>>, #<Project id:1059 namespace845/project-984>>, and #<Project id:1060 namespace846/project-985>>4815 as other user4816 user does not have access to view the private profile4817 is expected to be empty4818 user has access to view the private profile4819 is expected to contain exactly #<Project id:1064 namespace850/project-989>>, #<Project id:1065 namespace851/project-990>>, and #<Project id:1066 namespace852/project-991>>4820 as no user4821 is expected to be empty4822DiffFileEntity4823 when there is no merge request4824 behaves like diff file entity4825 exposes correct attributes4826 behaves like diff file base entity4827 exposes essential attributes4828 when diff file does not have a blob and content sha4829 exposes some attributes as nil4830 when a viewer4831 matches the schema4832 when it is a whitespace only change4833 has whitespace_only true4834 when the highlighted lines arent shown4835 has whitespace_only nil4836 when it is a new file4837 has whitespace_only false4838 when it is a collapsed file4839 has whitespace_only false4840 diff files4841 when diff_view is parallel4842 contains only the parallel diff lines4843 when diff_view is parallel4844 contains only the inline diff lines4845 when there is a merge request4846 exposes additional attributes4847 points all urls to merge request target project4848 exposes load_collapsed_diff_url if the file viewer is collapsed4849 behaves like diff file entity4850 exposes correct attributes4851 behaves like diff file base entity4852 exposes essential attributes4853 when diff file does not have a blob and content sha4854 exposes some attributes as nil4855 when a viewer4856 matches the schema4857 when it is a whitespace only change4858 has whitespace_only true4859 when the highlighted lines arent shown4860 has whitespace_only nil4861 when it is a new file4862 has whitespace_only false4863 when it is a collapsed file4864 has whitespace_only false4865 diff files4866 when diff_view is parallel4867 contains only the parallel diff lines4868 when diff_view is parallel4869 contains only the inline diff lines4870 when diff_view is unknown4871 hides highlighted_diff_lines and parallel_diff_lines4872 #parallel_diff_lines4873 exposes parallel diff lines correctly4874 #highlighted_diff_lines4875 calls diff_lines_for_serializer on diff_file4876 behaves like diff file with conflict_type4877 #conflict_type4878 returns nil by default4879 when there is matching conflict file4880 returns false4881Gitlab::Ci::Charts4882 yearchart4883 goes until the end of the current month (including the whole last day of the month)4884 starts at the beginning of the current year4885 uses %B %Y as labels format4886 returns count of pipelines run each day in the current year4887 monthchart4888 includes the whole current day4889 starts one month ago4890 uses %d %B as labels format4891 returns count of pipelines run each day in the current month4892 weekchart4893 includes the whole current day4894 starts one week ago4895 uses %d %B as labels format4896 returns count of pipelines run each day in the current week4897 weekchart_utc4898 uses a utc time zone for range times4899 returns count of pipelines run each day in the current week4900 weekchart_non_utc4901 uses a non-utc time zone for range times4902 returns count of pipelines run each day in the current week4903 pipeline_times4904 returns pipeline times in minutes4905 handles nil pipeline times4906Packages::Debian::GroupDistribution4907 behaves like Debian Distribution for common behavior4908 relationships4909 is expected to belong to creator class_name => User required: false4910 validations4911 #creator4912 is expected not to validate that :creator cannot be empty/falsy4913 #codename4914 is expected to validate that :codename cannot be empty/falsy4915 is expected to allow :codename to be ‹"buster"›4916 is expected to allow :codename to be ‹"buster-updates"›4917 is expected to allow :codename to be ‹"Debian10.5"›4918 is expected not to allow :codename to be ‹"jessie/updates"›4919 is expected not to allow :codename to be ‹"hé"›4920 #suite4921 is expected to allow :suite to be ‹nil›4922 is expected to allow :suite to be ‹"testing"›4923 is expected not to allow :suite to be ‹"hé"›4924 #origin4925 is expected to allow :origin to be ‹nil›4926 is expected to allow :origin to be ‹"Debian"›4927 is expected not to allow :origin to be ‹"hé"›4928 #label4929 is expected to allow :label to be ‹nil›4930 is expected to allow :label to be ‹"Debian"›4931 is expected not to allow :label to be ‹"hé"›4932 #version4933 is expected to allow :version to be ‹nil›4934 is expected to allow :version to be ‹"10.6"›4935 is expected not to allow :version to be ‹"hé"›4936 #description4937 is expected to allow :description to be ‹nil›4938 is expected to allow :description to be ‹"Debian 10.6 Released 26 September 2020"›4939 is expected to allow :description to be ‹"Hé !"›4940 #valid_time_duration_seconds4941 is expected to allow :valid_time_duration_seconds to be ‹nil›4942 is expected to allow :valid_time_duration_seconds to be ‹86400›4943 is expected not to allow :valid_time_duration_seconds to be ‹43200›4944 #file4945 is expected not to validate that :file cannot be empty/falsy4946 #file_store4947 is expected to validate that :file_store cannot be empty/falsy4948 #file_signature4949 is expected not to validate that :file_signature is empty/falsy4950 #signed_file4951 is expected not to validate that :signed_file cannot be empty/falsy4952 #signed_file_store4953 is expected to validate that :signed_file_store cannot be empty/falsy4954 scopes4955 .with_container4956 does not return other distributions4957 .with_codename4958 does not return other distributions4959 .with_suite4960 does not return other distributions4961 .with_codename_or_suite4962 passing codename4963 does not return other distributions4964 passing suite4965 does not return other distributions4966 behaves like Debian Distribution with group container4967 behaves like Debian Distribution for specific behavior4968 #unique_debian_suite_and_codename4969 with_existing_suite: false, suite: nil, codename: :keep, errors: nil4970 debian_group_distribution4971 is expected to be valid4972 with_existing_suite: false, suite: "testing", codename: :keep, errors: nil4973 debian_group_distribution4974 is expected to be valid4975 with_existing_suite: false, suite: nil, codename: :codename, errors: ["Codename has already been taken"]4976 debian_group_distribution4977 is expected to eq ["Codename has already been taken"]4978 with_existing_suite: false, suite: :codename, codename: :keep, errors: ["Suite has already been taken as Codename"]4979 debian_group_distribution4980 is expected to eq ["Suite has already been taken as Codename"]4981 with_existing_suite: false, suite: :codename, codename: :codename, errors: ["Codename has already been taken", "Suite has already been taken as Codename"]4982 debian_group_distribution4983 is expected to eq ["Codename has already been taken", "Suite has already been taken as Codename"]4984 with_existing_suite: true, suite: nil, codename: :keep, errors: nil4985 debian_group_distribution4986 is expected to be valid4987 with_existing_suite: true, suite: "testing", codename: :keep, errors: nil4988 debian_group_distribution4989 is expected to be valid4990 with_existing_suite: true, suite: nil, codename: :codename, errors: ["Codename has already been taken"]4991 debian_group_distribution4992 is expected to eq ["Codename has already been taken"]4993 with_existing_suite: true, suite: :codename, codename: :keep, errors: ["Suite has already been taken as Codename"]4994 debian_group_distribution4995 is expected to eq ["Suite has already been taken as Codename"]4996 with_existing_suite: true, suite: :codename, codename: :codename, errors: ["Codename has already been taken", "Suite has already been taken as Codename"]4997 debian_group_distribution4998 is expected to eq ["Codename has already been taken", "Suite has already been taken as Codename"]4999 with_existing_suite: true, suite: nil, codename: :suite, errors: ["Codename has already been taken as Suite"]5000 debian_group_distribution5001 is expected to eq ["Codename has already been taken as Suite"]5002 with_existing_suite: true, suite: :suite, codename: :keep, errors: ["Suite has already been taken"]5003 debian_group_distribution5004 is expected to eq ["Suite has already been taken"]5005 with_existing_suite: true, suite: :suite, codename: :suite, errors: ["Suite has already been taken", "Codename has already been taken as Suite"]5006 debian_group_distribution5007 is expected to eq ["Suite has already been taken", "Codename has already been taken as Suite"]5008 relationships5009 is expected to belong to group required: false5010 is expected to have one key class_name => Packages::Debian::GroupDistributionKey inverse_of => distribution5011 is expected to have many components class_name => Packages::Debian::GroupComponent inverse_of => distribution5012 is expected to have many architectures class_name => Packages::Debian::GroupArchitecture inverse_of => distribution5013 #group5014 is expected to validate that :group cannot be empty/falsy5015 group distribution specifics5016 #packages5017 returns only public packages with same codename5018 #package_files5019 returns only files from public packages with same codename5020 with pending destruction package files5021 does not return them5022Metrics::Dashboard::Annotation5023 associations5024 is expected to belong to environment required: false inverse_of => metrics_dashboard_annotations5025 is expected to belong to cluster class_name => Clusters::Cluster required: false inverse_of => metrics_dashboard_annotations5026 validation5027 is expected to validate that :description cannot be empty/falsy5028 is expected to validate that :dashboard_path cannot be empty/falsy5029 is expected to validate that :starting_at cannot be empty/falsy5030 is expected to validate that the length of :dashboard_path is at most 2555031 is expected to validate that the length of :panel_xid is at most 2555032 is expected to validate that the length of :description is at most 2555033 orphaned annotation5034 is expected not to be valid5035 reports error about both missing relations5036 ending_at_after_starting_at5037 starting_at: Tue, 23 May 2023 00:00:00.000000000 UTC +00:00, ending_at: Wed, 24 May 2023 00:00:00.000000000 UTC +00:00, valid?: true, message: nil5038 is expected to equal true5039 starting_at: Wed, 24 May 2023 00:00:00.000000000 UTC +00:00, ending_at: nil, valid?: true, message: nil5040 is expected to equal true5041 starting_at: Wed, 24 May 2023 00:00:00.000000000 UTC +00:00, ending_at: Wed, 24 May 2023 00:00:00.000000000 UTC +00:00, valid?: true, message: nil5042 is expected to equal true5043 starting_at: Wed, 24 May 2023 00:00:00.000000000 UTC +00:00, ending_at: Tue, 23 May 2023 00:00:00.000000000 UTC +00:00, valid?: false, message: /Ending at can't be before starting_at time/5044 is expected to include /Ending at can't be before starting_at time/5045 starting_at: nil, ending_at: Tue, 23 May 2023 00:00:00.000000000 UTC +00:00, valid?: false, message: /Starting at can't be blank/5046 is expected to include /Starting at can't be blank/5047 starting_at: nil, ending_at: nil, valid?: false, message: /Starting at can't be blank/5048 is expected to include /Starting at can't be blank/5049 environments annotation5050 is expected to be valid5051 clusters annotation5052 is expected to be valid5053 annotation with shared ownership5054 reports error about both shared ownership5055 scopes5056 #after5057 returns only younger annotations5058 #before5059 returns only older annotations5060 #for_dashboard5061 returns annotations only for appointed dashboard5062 #ending_before5063 returns annotations only for appointed dashboard5064Gitlab::Ci::Config::Entry::Default5065 behaves like with inheritable CI config5066 does prepend an Inheritable mixin5067 all inheritable entries are covered5068 all entries do have inherit flag5069 for non-inheritable entries5070 entry_key: :hooks5071 inheritable_class does not define entry5072 entry_key: :interruptible5073 inheritable_class does not define entry5074 entry_key: :timeout5075 inheritable_class does not define entry5076 entry_key: :retry5077 inheritable_class does not define entry5078 entry_key: :tags5079 inheritable_class does not define entry5080 entry_key: :artifacts5081 inheritable_class does not define entry5082 for inheritable entries5083 entry_key: :before_script, entry_class: Gitlab::Ci::Config::Entry::Commands5084 inheritable_class does define entry5085 when is specified5086 does inherit value5087 when entry is specified5088 does not inherit value5089 when inheritable does not specify5090 does not inherit value5091 entry_key: :after_script, entry_class: Gitlab::Ci::Config::Entry::Commands5092 inheritable_class does define entry5093 when is specified5094 does inherit value5095 when entry is specified5096 does not inherit value5097 when inheritable does not specify5098 does not inherit value5099 entry_key: :cache, entry_class: Gitlab::Ci::Config::Entry::Caches5100 inheritable_class does define entry5101 when is specified5102 does inherit value5103 when entry is specified5104 does not inherit value5105 when inheritable does not specify5106 does not inherit value5107 entry_key: :image, entry_class: Gitlab::Ci::Config::Entry::Image5108 inheritable_class does define entry5109 when is specified5110 does inherit value5111 when entry is specified5112 does not inherit value5113 when inheritable does not specify5114 does not inherit value5115 entry_key: :services, entry_class: Gitlab::Ci::Config::Entry::Services5116 inheritable_class does define entry5117 when is specified5118 does inherit value5119 when entry is specified5120 does not inherit value5121 when inheritable does not specify5122 does not inherit value5123 .nodes5124 returns a hash5125 when filtering all the entry/node names5126 contains the expected node names5127 validations5128 when default entry value is correct5129 #valid?5130 is valid5131 when default entry is empty5132 #valid5133 is valid5134 when default entry is not correct5135 incorrect config value type5136 #errors5137 reports error about a config type5138 when unknown keys detected5139 #valid5140 is not valid5141 #compose!5142 when default entry inherits configuration from root5143 raises error5144 when default entry inherits a non-defined configuration from root5145 inherits non-defined configuration entries5146Issues::ReopenService5147 #execute5148 when user is not authorized to reopen issue5149 does not reopen the issue5150 when skip_authorization is true5151 does close the issue even if user is not authorized5152 when user is authorized to reopen issue5153 invalidates counter cache for assignees5154 refreshes the number of opened issues5155 deletes milestone issue counters cache5156 does not create timeline event5157 issue is incident type5158 creates a timeline event5159 behaves like an incident management tracked event5160 .track_event5161 tracks the event using redis5162 behaves like Snowplow event tracking with RedisHLL context5163 behaves like Snowplow event tracking5164 is emitted5165 when issue is not confidential5166 executes issue hooks5167 when issue is confidential5168 executes confidential issue hooks5169Deployments::ArchiveInProjectService5170 #execute5171 when there are archivable deployments5172 returns result code5173 archives the deployment5174 when ref does not exist by some reason5175 does not raise an error5176 when there are no archivable deployments5177 returns result code5178notify/pipeline_success_email.html.haml5179 behaves like pipeline status changes email5180 when the pipeline contains a failed job5181 behaves like renders the pipeline status changes email correctly5182 pipeline with user5183 renders the email correctly5184 behaves like correct pipeline information for pipelines for merge requests5185 when pipeline for merge request5186 renders a source ref of the pipeline5187 pipeline without user5188 renders the email correctly5189 when the latest failed job is a bridge job5190 behaves like renders the pipeline status changes email correctly5191 pipeline with user5192 renders the email correctly5193 behaves like correct pipeline information for pipelines for merge requests5194 when pipeline for merge request5195 renders a source ref of the pipeline5196 pipeline without user5197 renders the email correctly5198ClustersHelper5199 #has_rbac_enabled?5200 when kubernetes platform has been created5201 returns kubernetes platform value5202 when kubernetes platform has not been created yet5203 delegates to cluster provider5204 when ABAC cluster is created5205 delegates to cluster provider5206 #js_clusters_list_data5207 displays endpoint path5208 generates svg image data5209 displays and ancestor_help_path5210 displays empty image path5211 displays add cluster using certificate path5212 displays create cluster path5213 displays project default branch5214 displays project path5215 displays kas address5216 displays GitLab version5217 displays KAS version5218 user has no permissions to create a cluster5219 displays that user can't add cluster5220 user is a maintainer5221 displays that the user can add cluster5222 project cluster5223 doesn't display empty state help text5224 displays display_cluster_agents as true5225 group cluster5226 displays empty state help text5227 displays display_cluster_agents as false5228 does not include a default branch5229 does not include a project path5230 certificate based clusters enabled5231 feature flag is enabled5232 is expected to eq "true"5233 feature flag is disabled5234 is expected to eq "false"5235 #render_cluster_info_tab_content5236 environments5237 renders environemtns tab5238 health5239 renders details tab5240 apps5241 renders apps tab5242 integrations5243 renders details tab5244 settings5245 renders settings tab5246 details5247 renders details tab5248 when remove_monitor_metrics FF is disabled5249 health5250 renders health tab5251 integrations5252 renders integrations tab5253 #cluster_type_label5254 project cluster5255 is expected to eq "Project cluster"5256 group cluster5257 is expected to eq "Group cluster"5258 instance cluster5259 is expected to eq "Instance cluster"5260 other values5261 diplays generic cluster and reports error5262 #display_cluster_agents?5263 when clusterable is a project5264 allows agents to display5265 when clusterable is a group5266 does not allow agents to display5267 #default_branch_name5268 when clusterable is a project without a repository5269 allows default branch name to display default name from settings5270 when clusterable is a project with a repository5271 allows default branch name to display repository root branch5272 when clusterable is a group5273 does not allow default branch name to display5274Gitlab::Doctor::Secrets5275 when not ran in a Rake runtime5276 raises an error5277 when encrypted attributes are properly set5278 detects decryptable secrets5279 when attr_encrypted values are not decrypting5280 marks undecryptable values as bad5281 when TokenAuthenticatable values are not decrypting5282 marks undecryptable values as bad5283 when initializers attempt to use encrypted data5284 skips the initializers and detects bad data5285 resets the initializers after the task runs5286 when GrafanaIntegration token is set via private method5287 can access GrafanaIntegration token value5288Boards::Lists::CreateService5289 when board parent is a project5290 behaves like board lists create service5291 #execute5292 when board lists is empty5293 creates a new list at beginning of the list5294 when board lists has the done list5295 creates a new list at beginning of the list5296 when board lists has labels lists5297 creates a new list at end of the lists5298 when board lists has label and done lists5299 creates a new list at end of the label lists5300 when provided label does not belong to the parent5301 returns an error5302 when backlog param is sent5303 creates one and only one backlog list5304 when board parent is a group5305 behaves like board lists create service5306 #execute5307 when board lists is empty5308 creates a new list at beginning of the list5309 when board lists has the done list5310 creates a new list at beginning of the list5311 when board lists has labels lists5312 creates a new list at end of the lists5313 when board lists has label and done lists5314 creates a new list at end of the label lists5315 when provided label does not belong to the parent5316 returns an error5317 when backlog param is sent5318 creates one and only one backlog list5319PagesDomains::ObtainLetsEncryptCertificateService5320 when there is no acme order5321 creates acme order and schedules next step5322 when there is expired acme order5323 removes acme order and creates new one5324 there is an order in 'pending' status5325 does not raise errors5326 there is an order in 'processing' status5327 does not raise errors5328 when order is ready5329 request certificate and schedules next step5330 when order is valid5331 saves private_key and certificate for domain5332 marks certificate as gitlab_provided5333 removes order from database5334 when order is invalid5335 saves error to domain and deletes acme order5336 sends notification5337Gitlab::Metrics::Dashboard::Processor5338 process5339 includes an id for each dashboard panel5340 includes boolean to indicate if panel group has custom metrics5341 when the dashboard is not present5342 returns nil5343 when dashboard config corresponds to common metrics5344 inserts metric ids into the config5345 when the project has associated metrics5346 includes project-specific metrics5347 display groups and panels in the order they are defined5348 when the project has multiple metrics in the same group5349 includes multiple metrics5350 when the dashboard should not include project metrics5351 includes only dashboard metrics5352 when sample_metrics are requested5353 includes a sample metrics path for the prometheus endpoint with each metric5354 when there are no alerts5355 does not insert an alert_path5356 when the dashboard is missing panel_groups5357 behaves like errors with message5358 raises a DashboardLayoutError5359 when the dashboard contains a panel_group which is missing panels5360 behaves like errors with message5361 raises a DashboardLayoutError5362 when the dashboard contains a panel which is missing metrics5363 behaves like errors with message5364 raises a DashboardLayoutError5365 when the dashboard contains a metric which is missing a query5366 behaves like errors with message5367 raises a DashboardLayoutError5368GenericCommitStatus5369 validations5370 is expected to validate that the length of :target_url is at most 2555371 is expected to allow :target_url to be ‹nil›5372 is expected to allow :target_url to be ‹"http://gitlab.com/s"›5373 is expected not to allow :target_url to be ‹"javascript:alert(1)"›5374 #name_uniqueness_across_types5375 without attributes5376 behaves like it does not have uniqueness errors5377 does not return errors5378 with only a pipeline5379 without name5380 behaves like it does not have uniqueness errors5381 does not return errors5382 with only a name5383 without pipeline5384 behaves like it does not have uniqueness errors5385 does not return errors5386 with pipeline and name5387 without other statuses5388 behaves like it does not have uniqueness errors5389 does not return errors5390 with generic statuses5391 behaves like it does not have uniqueness errors5392 does not return errors5393 with ci_build statuses5394 returns name error5395 #context5396 is expected to eq "my_context"5397 #tags5398 is expected to eq [:external]5399 #detailed_status5400 returns detailed status object5401 when user has ability to see datails5402 details path points to an external URL5403 when user should not see details5404 does not have details5405 #present5406 is expected to be a kind of GenericCommitStatusPresenter5407ForkNetwork5408 #add_root_as_member5409 adds the root project as a member when creating a new root network5410 #find_fork_in5411 finds all fork of the current network in al collection5412 #merge_requests5413 finds merge requests within the fork network5414 for a deleted project5415 keeps the fork network5416 allows multiple fork networks where the root project is deleted5417Gitlab::RepoPath5418 .parse5419 returns the default type for non existent paths5420 a repository storage path5421 parses a full project repository path5422 parses a full project wiki repository path5423 parses a personal snippet repository path5424 parses a project snippet repository path5425 a relative path5426 parses a relative repository path5427 parses a relative wiki path5428 parses a relative path starting with /5429 of a redirected project5430 parses a relative repository path5431 parses a relative wiki path5432 parses a relative path starting with /5433 parses a redirected project snippet repository path5434 .find_project5435 when finding a project by its canonical path5436 when the cases match5437 returns the project5438 when the cases do not match5439 returns the project5440 when finding a project via a redirect5441 returns the project5442 .find_snippet5443 extracts path and id from personal snippet route5444 extracts path and id from project snippet route5445 returns nil for invalid snippet paths5446 returns nil for snippets not associated with the project5447 when finding a project snippet via a redirect5448 returns the project snippet5449Security::SecurityJobsFinder5450 behaves like Security::JobsFinder5451 #new5452 does not get initialized for unsupported job types5453 #execute5454 behaves like JobsFinder core functionality5455 when the pipeline has no jobs5456 is expected to be empty5457 when the pipeline has no Secure jobs5458 is expected to be empty5459 when the pipeline only has jobs without report artifacts5460 is expected to be empty5461 when the pipeline only has jobs with reports unrelated to Secure products5462 is expected to be empty5463 when the pipeline only has jobs with reports with paths similar but not identical to Secure reports5464 is expected to be empty5465 when there is more than one pipeline5466 returns jobs associated with provided pipeline5467 #execute5468 with specific secure job types5469 returns only those requested5470 with combination of security jobs and license scanning jobs5471 returns only the security jobs5472Banzai::Filter::References::FeatureFlagReferenceFilter5473 requires project context5474 ignores valid references contained inside 'pre' element5475 ignores valid references contained inside 'code' element5476 ignores valid references contained inside 'a' element5477 ignores valid references contained inside 'style' element5478 with internal reference5479 links to a valid reference5480 links with adjacent text5481 ignores invalid feature flag IIDs5482 includes a title attribute5483 escapes the title attribute5484 includes default classes5485 includes a data-project attribute5486 includes a data-feature-flag attribute5487 supports an :only_path context5488 with cross-project / cross-namespace complete reference5489 links to a valid reference5490 produces a valid text in a link5491 produces a valid text5492 ignores invalid feature flag IIDs on the referenced project5493 with cross-project / same-namespace complete reference5494 links to a valid reference5495 produces a valid text in a link5496 produces a valid text5497 ignores invalid feature flag IIDs on the referenced project5498 with cross-project shorthand reference5499 links to a valid reference5500 produces a valid text in a link5501 produces a valid text5502 ignores invalid feature flag IDs on the referenced project5503 with cross-project URL reference5504 links to a valid reference5505 links with adjacent text5506 ignores invalid feature flag IIDs on the referenced project5507 with group context5508 links to a valid reference5509 ignores internal references5510Gitlab::Ci::Status::Build::Unschedule5511 #label5512 is expected to eq "unschedule action"5513 action details5514 #has_action?5515 when user is allowed to update build5516 is expected to have action5517 when user is not allowed to update build5518 is expected not to have action5519 #action_path5520 is expected to include "123/unschedule"5521 #action_icon5522 is expected to eq "time-out"5523 #action_title5524 is expected to eq "Unschedule"5525 #action_button_title5526 is expected to eq "Unschedule job"5527 .matches?5528 when build is scheduled5529 when build unschedules an delayed job5530 is a correct match5531 when build unschedules an normal job5532 does not match5533 #status_tooltip5534 does not override status status_tooltip5535 #badge_tooltip5536 does not override status badge_tooltip5537ContributedProjectsFinder5538 activity without a current user5539 does only return public projects5540 does return all projects when visibility gets ignored5541 activity with a current user5542 is expected to contain exactly #<Project id:1212 namespace1001/project-1148>>, #<Project id:1213 namespace1002/project-1149>>, and #<Project id:1211 namespace1000/project-1147>>5543 user with private profile5544 does not return contributed projects5545gitlab:git rake tasks5546 fsck5547 outputs the integrity check for a repo5548 checksum_projects5549 outputs the checksum for a repo5550 outputs blank checksum for no repo5551 outputs zeroes for empty repo5552 outputs errors5553Gitlab::Ci::Ansi2json::Line5554 #<<5555 appends new data to the current segment5556 #style5557 when style is passed to the initializer5558 returns the same style5559 when style is not passed to the initializer5560 returns the default style5561 #update_style5562 sets the style5563 #add_section5564 appends a new section to the list5565 #set_section_options5566 sets the current section's options5567 #set_as_section_header5568 change the section_header to true5569 #set_section_duration5570 duration: nil, result: "00:00"5571 is expected to eq "00:00"5572 duration: "string", result: "00:00"5573 is expected to eq "00:00"5574 duration: 0 seconds, result: "00:00"5575 is expected to eq "00:00"5576 duration: 7 seconds, result: "00:07"5577 is expected to eq "00:07"5578 duration: 75, result: "01:15"5579 is expected to eq "01:15"5580 duration: 1 minute and 15 seconds, result: "01:15"5581 is expected to eq "01:15"5582 duration: 13 hours, 14 minutes, and 15 seconds, result: "13:14:15"5583 is expected to eq "13:14:15"5584 duration: 1 day, 13 hours, 14 minutes, and 15 seconds, result: "37:14:15"5585 is expected to eq "37:14:15"5586 duration: 1.7976931348623157e+308, result: "8765:00:00"5587 is expected to eq "8765:00:00"5588 duration: 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, result: "8765:00:00"5589 is expected to eq "8765:00:00"5590 #flush_current_segment!5591 when current segment is not empty5592 adds the segment to the list5593 updates the current segment pointer propagating the style5594 when current segment is empty5595 does not add any segments to the list5596 does not change the current segment5597 #to_h5598 when sections are present5599 when section header is set5600 serializes the attributes set5601 when section duration is set5602 serializes the attributes set5603 when there are no sections5604 serializes the attributes set5605PersonalSnippet5606 #embeddable?5607 returns true when snippet is public5608 returns true when snippet is public5609 returns true when snippet is public5610 behaves like model with repository5611 container class includes HasRepository5612 #commits_by5613 retrieves several commits from the repository by oid5614 #web_url5615 when given the only_path option5616 when only_path is false5617 returns the full web URL for this repo5618 when only_path is true5619 returns the relative web URL for this repo5620 when only_path is nil5621 returns the full web URL for this repo5622 when not given the only_path option5623 returns the full web URL for this repo5624 #url_to_repo5625 returns the SSH URL to the repository5626 #ssh_url_to_repo5627 returns the SSH URL to the repository5628 #http_url_to_repo5629 returns the HTTP URL to the repository5630 #repository5631 returns valid repo5632 uses the same container5633 #storage5634 returns valid storage5635 #full_path5636 returns valid full_path5637 #lfs_enabled?5638 returns the expected value5639 #empty_repo?5640 when the repo does not exist5641 returns true5642 when the repo exists5643 returns the empty state of the repository5644 #valid_repo?5645 is expected to equal false5646 is expected to equal true5647 #repository_exists?5648 is expected to equal false5649 is expected to equal true5650 #repo_exists?5651 is expected to equal false5652 is expected to equal true5653 #root_ref5654 is expected to equal true5655 is expected to equal false5656 is expected to equal false5657 Respond to5658 is expected to respond to #base_dir5659 is expected to respond to #disk_path5660 is expected to respond to #gitlab_shell5661 #change_head5662 delegates #change_head to repository5663 #after_repository_change_head5664 calls #reload_default_branch5665 #parent_user5666 returns the snippet author5667Gitlab::MarkupHelper5668 #markup?5669 returns true for textile files5670 returns true for rdoc files5671 returns true for org files5672 returns true for creole files5673 returns true for wiki files5674 returns true for mediawiki files5675 returns true for rst files5676 returns true for adoc files5677 returns true for ad files5678 returns true for asciidoc files5679 returns true for mdown files5680 returns true for md files5681 returns true for markdown files5682 returns false when given a non-markup filename5683 #gitlab_markdown?5684 returns true for mdown files5685 returns true for mkd files5686 returns true for mkdn files5687 returns true for md files5688 returns true for markdown files5689 returns false when given a non-markdown filename5690 #asciidoc?5691 returns true for adoc files5692 returns true for ad files5693 returns true for asciidoc files5694 returns true for ADOC files5695 returns false when given a non-asciidoc filename5696projects/commits/_commit.html.haml5697 with different committer5698 renders committed by user5699 with a signed commit5700 does not display a loading spinner for GPG status5701 with ci status5702 when pipelines are disabled5703 does not display a ci status icon5704 when pipelines are enabled5705 when user has access5706 displays a ci status icon5707 when user does not have access5708 does not display a ci status icon5709Gitlab::Diff::Parser5710 #parse5711 is expected to eq 305712 lines5713 first line5714 is expected to eq "match"5715 is expected to eq 65716 is expected to eq 65717 is expected to eq "@@ -6,12 +6,18 @@ module Popen"5718 removal line5719 is expected to eq "old"5720 is expected to eq 145721 is expected to eq 135722 is expected to eq "- options = { chdir: path }"5723 addition line5724 is expected to eq "new"5725 is expected to eq 155726 is expected to eq 185727 is expected to eq "+ options = {"5728 unchanged line5729 is expected to eq nil5730 is expected to eq 245731 is expected to eq 315732 is expected to eq " @cmd_output << stderr.read"5733 \ No newline at end of file5734 parses nonewline in one file correctly5735 parses nonewline in two files correctly5736 when lines is empty5737 is expected to eq []5738 is expected to eq []5739 when it is a binary notice5740 is expected to eq []5741 tolerates special diff markers in a content5742 counts lines correctly5743DeployKeysProjectPolicy5744 updating a deploy_keys_project5745 when a project maintainer5746 tries to update private deploy key attached to project5747 is expected to be disallowed :update_deploy_keys_project5748 tries to update public deploy key attached to project5749 is expected to be allowed :update_deploy_keys_project5750 when a non-maintainer project member5751 tries to update private deploy key attached to project5752 is expected to be disallowed :update_deploy_keys_project5753 tries to update public deploy key attached to project5754 is expected to be disallowed :update_deploy_keys_project5755 when a user is not a project member5756 tries to update public deploy key attached to project5757 is expected to be disallowed :update_deploy_keys_project5758Gitlab::Ci::Pipeline::Duration5759 .from_periods5760 test sample A5761 behaves like calculating duration5762 is expected to eq 45763 test sample B5764 behaves like calculating duration5765 is expected to eq 45766 test sample C5767 behaves like calculating duration5768 is expected to eq 85769 test sample D5770 behaves like calculating duration5771 is expected to eq 45772 test sample E5773 behaves like calculating duration5774 is expected to eq 75775 test sample F5776 behaves like calculating duration5777 is expected to eq 65778 test sample G5779 behaves like calculating duration5780 is expected to eq 45781 .from_pipeline5782 returns the duration of the running build5783 does not generate N+1 queries if more builds are added5784 does not generate N+1 queries if more bridges and their pipeline builds are added5785 when there is no running build5786 returns the duration for all the builds5787 when there are direct bridge jobs5788 returns the duration of the running build5789 when there is no running build5790 returns the duration for all the builds (including self and downstreams)5791 when there are downstream bridge jobs5792 returns the duration of the running build5793 when there is no running build5794 returns the duration for all the builds (including self and downstreams)5795Gitlab::Ci::Pipeline::Logger5796 #log_when5797 stores blocks for later evaluation5798 #instrument5799 returns the block's value5800 records durations of instrumented operations5801 raises an error when block is not provided5802 when once: true5803 logs only one observation5804 #instrument_once_with_sql5805 with a single query5806 is expected to eq 05807 includes SQL metrics5808 with multiple queries5809 is expected to eq 05810 includes SQL metrics5811 when there are not SQL operations5812 is expected to eq 1235813 does not include SQL metrics5814 #observe5815 records durations of observed operations5816 when once: true5817 records the latest observation5818 logs data as expected5819 #commit5820 when the feature flag is enabled5821 logs to application.json5822 with log conditions5823 does not log when the conditions are false5824 logs when a condition is true5825 with unexistent observations in condition5826 does not commit the log5827 when project is not passed and pipeline is not persisted5828 logs to application.json5829 when the feature flag is disabled5830 does not log5831NotificationRecipients::Builder::Default5832 #build!5833 participants and project watchers5834 adds all participants and watchers5835 subscribers5836 adds all subscribers5837 custom notifications5838 behaves like custom notification recipients5839 with project custom notification setting5840 adds the user to the recipients5841 with the project custom notification setting in another project5842 does not add the user to the recipients5843 with group custom notification setting5844 adds the user to the recipients5845 with the group custom notification setting in another group5846 does not add the user to the recipients5847 with project global custom notification setting5848 with global custom notification setting5849 adds the user to the recipients5850 without global custom notification setting5851 does not add the user to the recipients5852 with group global custom notification setting5853 with global custom notification setting5854 adds the user to the recipients5855 without global custom notification setting5856 does not add the user to the recipients5857 with group custom notification setting in deeply nested parent group5858 adds the user to the recipients5859 without a project or group5860 does not add the user to the recipients5861MergeRequestMetricsHelper5862 #build_metrics5863 when closed and metrics exists5864 does not call the merge request metrics class5865 returns the metrics for the given merge request5866 when merged and metrics exists5867 does not call the merge request metrics class5868 returns the metrics for the given merge request5869 when merged and metrics do not exists5870 rebuilds the merge request metrics5871Gitlab::APIAuthentication::TokenLocator5872 .new5873 with a valid type5874 creates a new instance5875 with an invalid type5876 raises ActiveModel::ValidationError5877 #extract5878 with :http_basic_auth5879 without credentials5880 returns nil5881 with credentials5882 returns the credentials5883 with :http_token5884 without credentials5885 returns nil5886 with credentials5887 returns the credentials5888 with :http_bearer_token5889 without credentials5890 returns nil5891 with credentials5892 returns the credentials5893 with :http_deploy_token_header5894 without credentials5895 returns nil5896 with credentials5897 returns the credentials5898 with :http_job_token_header5899 without credentials5900 returns nil5901 with credentials5902 returns the credentials5903 with :http_private_token_header5904 without credentials5905 returns nil5906 with credentials5907 returns the credentials5908 with :token_param5909 without credentials5910 returns nil5911 with credentials5912 returns the credentials5913WorkItems::Widgets::AssigneesService::UpdateService5914 #before_update_in_transaction5915 updates the assignees and sets updated_at to the current time5916 when passing an empty array5917 removes existing assignees5918 when user does not have access5919 does not update the assignees5920 when multiple assignees are given5921 when work item allows multiple assignees5922 sets all the given assignees5923 when work item does not allow multiple assignees5924 only sets the first assignee5925 when assignee does not have access to the work item5926 does not set the assignee5927 when assignee ids are the same as the existing ones5928 does not touch updated_at5929 when widget does not exist in new type5930 resets the work item's assignees5931Users::ActivityService5932 #execute5933 when last activity is nil5934 updates last_activity_on for the user5935 when last activity is in the past5936 updates last_activity_on for the user5937 tries to obtain ExclusiveLease5938 tracks RedisHLL event5939 behaves like Snowplow event tracking with RedisHLL context5940 behaves like Snowplow event tracking5941 is emitted5942 when a bad object is passed5943 does not record activity5944 when last activity is today5945 does not try to obtain ExclusiveLease5946 behaves like does not update last_activity_on5947 does not update user attribute5948 does not track Snowplow event5949 when in GitLab read-only instance5950 behaves like does not update last_activity_on5951 does not update user attribute5952 does not track Snowplow event5953 when a lease could not be obtained5954 behaves like does not update last_activity_on5955 does not update user attribute5956 does not track Snowplow event5957 with DB Load Balancing5958 when last activity is in the past5959 database load balancing is configured5960 does not stick to primary5961 database load balancing is not configured5962 updates user without error5963BitbucketServer::Representation::PullRequest5964 #author5965 is expected to eq "root"5966 #author_email5967 is expected to eq "joe.montana@49ers.com"5968 #author_username5969 returns username5970 when username is absent5971 returns slug5972 when slug and username are absent5973 returns displayName5974 #description5975 is expected to eq "Test"5976 #iid5977 is expected to eq 75978 #state5979 is expected to eq "merged"5980 declined pull requests5981 returns closed5982 open pull requests5983 returns open5984 #merged?5985 is expected to be truthy5986 #created_at5987 is expected to eq 15306006355988 #updated_at5989 is expected to eq 15306006485990 #title5991 is expected to eq "Added a new line"5992 #source_branch_name5993 is expected to eq "refs/heads/root/CODE_OF_CONDUCTmd-1530600625006"5994 #source_branch_sha5995 is expected to eq "074e2b4dddc5b99df1bf9d4a3f66cfc15481fdc8"5996 #target_branch_name5997 is expected to eq "refs/heads/master"5998 #target_branch_sha5999 is expected to eq "839fa9a2d434eb697815b8fcafaecc51accfdbbc"6000 #to_hash6001 is expected to match (a hash including {:author_email => "joe.montana@49ers.com", :author_username => "username", :author => "root", :description => "Test", :source_branch_name => "refs/heads/root/CODE_OF_CONDUCTmd-1530600625006", :target_branch_name => "refs/heads/master", :target_branch_sha => "839fa9a2d434eb697815b8fcafaecc51accfdbbc", :title => "Added a new line"})6002Gitlab::Database::Partitioning::MonthlyStrategy6003 #current_partitions6004 detects both partitions6005 #missing_partitions6006 with existing partitions6007 detects the gap and the missing partition in May 20206008 detects the missing partitions at the end of the range and expects a partition for July 20206009 detects the missing partitions at the end of the range and expects a partition for August 20206010 creates partitions 6 months out from now (Sep 2020 through Feb 2021)6011 detects all missing partitions6012 when pruning partitions before June 20206013 does not include the missing partition from May 2020 because it would be dropped6014 detects the missing partition for 1 month ago (July 2020)6015 without existing partitions6016 detects the missing catch-all partition at the beginning6017 detects the missing partition for today and expects a partition for August 20206018 creates partitions 6 months out from now (Sep 2020 through Feb 20216019 detects all missing partitions6020 when pruning partitions before June 20206021 detects exactly the set of partitions from June 2020 to March 20216022 with a regular partition but no catchall (MINVALUE, to) partition6023 detects a missing catch-all partition to add before the existing partition6024 #extra_partitions6025 with existing partitions6026 without a time retention policy6027 has no extra partitions to prune6028 with a time retention policy that excludes no partitions6029 has no extra partitions to prune6030 with a time retention policy of 3 months6031 prunes the unbounded partition ending 2020-05-016032 with a time retention policy of 2 months6033 prunes the unbounded partition and the partition for May-June6034 when the retain_non_empty_partitions is true6035 prunes empty partitions6036 does not prune non-empty partitions6037Resolvers::BaseResolver6038 .singular_type6039 for a connection of scalars6040 is expected to eq GraphQL::Types::Int6041 for a connection of objects6042 is expected to eq #<Class:0x00007f8f8c2f9ae0>6043 for a list type6044 is expected to eq GraphQL::Types::String6045 for a scalar type6046 is expected to eq GraphQL::Types::Boolean6047 .single6048 returns a subclass from the resolver6049 has the correct (singular) type6050 returns the same subclass every time6051 returns a resolver that gives the first result from the original resolver6052 .when_single6053 does not apply the block to the resolver6054 applies the block to the single version of the resolver6055 multiple when_single blocks6056 applies both blocks to the single version of the resolver6057 inheritance6058 applies both blocks to the single version of the resolver6059 when the resolver returns early6060 runs correctly in our test framework6061 single selects the first early return value6062 last selects the last early return value6063 .last6064 returns a subclass from the resolver6065 returns the same subclass every time6066 returns a resolver that gives the last result from the original resolver6067 when field is a connection6068 increases complexity based on arguments6069 does not increase complexity when filtering by iids6070 #object6071 returns object6072 when object is a presenter6073 returns presented object6074 #offset_pagination6075 is sugar for OffsetPaginatedRelation.new6076Gitlab::Checks::LfsIntegrity6077 #objects_missing?6078 with LFS not enabled6079 skips integrity check6080 with LFS enabled6081 is true if any LFS blobs are missing6082 is false if LFS objects have already been uploaded6083 nil rev6084 skips integrity check6085 deletion6086 skips integrity check6087 no changes6088 skips integrity check6089BaseDiscussionEntity6090 exposes correct attributes6091 when is LegacyDiffDiscussion6092 exposes correct attributes6093 when diff file is present6094 exposes diff file attributes6095 when issues are disabled in a project6096 does not show a new issues path6097ContainerRegistry::Migration6098 .enabled?6099 is expected to eq true6100 feature flag disabled6101 is expected to eq false6102 .limit_gitlab_org?6103 is expected to eq true6104 feature flag disabled6105 is expected to eq false6106 .enqueue_waiting_time6107 slow_enabled: false, fast_enabled: false, expected_result: 45 minutes6108 is expected to eq 45 minutes6109 slow_enabled: true, fast_enabled: false, expected_result: 165 minutes6110 is expected to eq 165 minutes6111 slow_enabled: false, fast_enabled: true, expected_result: 06112 is expected to eq 06113 slow_enabled: true, fast_enabled: true, expected_result: 06114 is expected to eq 06115 .capacity6116 ff_1_enabled: false, ff_2_enabled: false, ff_5_enabled: false, ff_10_enabled: false, ff_25_enabled: false, ff_40_enabled: false, expected_result: 06117 is expected to eq 06118 ff_1_enabled: true, ff_2_enabled: false, ff_5_enabled: false, ff_10_enabled: false, ff_25_enabled: false, ff_40_enabled: false, expected_result: 16119 is expected to eq 16120 ff_1_enabled: false, ff_2_enabled: true, ff_5_enabled: false, ff_10_enabled: false, ff_25_enabled: false, ff_40_enabled: false, expected_result: 26121 is expected to eq 26122 ff_1_enabled: true, ff_2_enabled: true, ff_5_enabled: false, ff_10_enabled: false, ff_25_enabled: false, ff_40_enabled: false, expected_result: 26123 is expected to eq 26124 ff_1_enabled: false, ff_2_enabled: false, ff_5_enabled: true, ff_10_enabled: false, ff_25_enabled: false, ff_40_enabled: false, expected_result: 56125 is expected to eq 56126 ff_1_enabled: true, ff_2_enabled: true, ff_5_enabled: true, ff_10_enabled: false, ff_25_enabled: false, ff_40_enabled: false, expected_result: 56127 is expected to eq 56128 ff_1_enabled: false, ff_2_enabled: false, ff_5_enabled: false, ff_10_enabled: true, ff_25_enabled: false, ff_40_enabled: false, expected_result: 106129 is expected to eq 106130 ff_1_enabled: true, ff_2_enabled: true, ff_5_enabled: true, ff_10_enabled: true, ff_25_enabled: false, ff_40_enabled: false, expected_result: 106131 is expected to eq 106132 ff_1_enabled: false, ff_2_enabled: false, ff_5_enabled: false, ff_10_enabled: false, ff_25_enabled: true, ff_40_enabled: false, expected_result: 256133 is expected to eq 256134 ff_1_enabled: true, ff_2_enabled: true, ff_5_enabled: true, ff_10_enabled: true, ff_25_enabled: true, ff_40_enabled: false, expected_result: 256135 is expected to eq 256136 ff_1_enabled: false, ff_2_enabled: false, ff_5_enabled: false, ff_10_enabled: false, ff_25_enabled: false, ff_40_enabled: true, expected_result: 406137 is expected to eq 406138 ff_1_enabled: true, ff_2_enabled: true, ff_5_enabled: true, ff_10_enabled: true, ff_25_enabled: true, ff_40_enabled: true, expected_result: 406139 is expected to eq 406140 .max_tags_count6141 returns the matching application_setting6142 .max_retries6143 returns the matching application_setting6144 .start_max_retries6145 returns the matching application_setting6146 .max_step_duration6147 returns the matching application_setting6148 .target_plan_name6149 returns the matching application_setting6150 .created_before6151 returns the matching application_setting6152 .pre_import_timeout6153 returns the matching application_setting6154 .import_timeout6155 returns the matching application_setting6156 .pre_import_tags_rate6157 returns the matching application_setting6158 .target_plans6159 target_plan: "free", result: ["free", "early_adopter", nil]6160 is expected to eq ["free", "early_adopter", nil]6161 target_plan: "premium", result: ["premium", "bronze", "silver", "premium_trial"]6162 is expected to eq ["premium", "bronze", "silver", "premium_trial"]6163 target_plan: "ultimate", result: ["ultimate", "gold", "ultimate_trial"]6164 is expected to eq ["ultimate", "gold", "ultimate_trial"]6165 .all_plans?6166 is expected to eq true6167 feature flag disabled6168 is expected to eq false6169 .delete_container_repository_worker_support?6170 is expected to eq true6171 feature flag disabled6172 is expected to eq false6173 .dynamic_pre_import_timeout_for6174 returns the expected seconds6175Projects::RepositoryStorageMove6176 behaves like handles repository moves6177 associations6178 is expected to belong to container required: false6179 validations6180 is expected to validate that :container cannot be empty/falsy6181 is expected to validate that :state cannot be empty/falsy6182 is expected to validate that :source_storage_name cannot be empty/falsy6183 is expected to validate that :destination_storage_name cannot be empty/falsy6184 source_storage_name inclusion6185 does not allow repository storages that don't match a label in the configuration6186 destination_storage_name inclusion6187 does not allow repository storages that don't match a label in the configuration6188 container repository read-only6189 does not allow the container to be read-only on create6190 defaults6191 destination_storage_name6192 can pick new storage6193 state transitions6194 when in the default state6195 and transits to scheduled6196 triggers the corresponding repository storage worker6197 when the transition fails6198 does not trigger the corresponding repository storage worker and adds an error6199 and transits to started6200 does not allow the transition6201 when started6202 and transits to replicated6203 marks the container as writable6204 updates the updated_at column of the container6205 and transits to failed6206 marks the container as writable6207 state transitions6208 when started6209 and transits to replicated6210 sets the repository storage and marks the container as writable6211Gitlab::Kas6212 .verify_api_request6213 returns nil if fails to validate the JWT6214 returns the decoded JWT6215 .secret_path6216 returns default gitlab config6217 .enabled?6218 gitlab_config is not enabled6219 is expected to be falsey6220 gitlab_config is enabled6221 is expected to be truthy6222 enabled is unset6223 is expected to be falsey6224 .external_url6225 returns gitlab_kas external_url config6226 .tunnel_url6227 with a gitlab_kas.external_k8s_proxy_url setting6228 is expected to eq "abc"6229 without a gitlab_kas.external_k8s_proxy_url setting6230 external_url uses wss://6231 is expected to eq "https://kas.gitlab.example.com/k8s-proxy"6232 external_url uses ws://6233 is expected to eq "http://kas.gitlab.example.com/k8s-proxy"6234 external_url uses grpcs://6235 is expected to eq "https://kas.gitlab.example.com/k8s-proxy"6236 external_url uses grpc://6237 is expected to eq "http://kas.gitlab.example.com/k8s-proxy"6238 .internal_url6239 returns gitlab_kas internal_url config6240 .version6241 returns gitlab_kas version config6242 .version_info6243 returns gitlab_kas version config, including suffix6244 .ensure_secret!6245 secret file exists6246 does not call write_secret6247 secret file does not exist6248 calls write_secret6249Clusters::DestroyService6250 #execute6251 when correct params6252 when params are empty6253 behaves like only removes cluster6254 does not start cleanup6255 destroys the cluster6256 when cleanup param is false6257 behaves like only removes cluster6258 does not start cleanup6259 destroys the cluster6260 when cleanup param is true6261 does not destroy cluster6262 transition cluster#cleanup_status from cleanup_not_started to cleanup_removing_project_namespaces6263Resolvers::ProjectJobsResolver6264 #resolve6265 with authorized user6266 with statuses argument6267 is expected to contain exactly #<Ci::Build status: "success", finished_at: "2023-05-25 08:53:29.000000000 +0000", created_at: "2023-...rocessed: false, scheduling_type: "stage", id: 176, stage_id: 222, partition_id: 100, tag_list: nil> and #<Ci::Build status: "success", finished_at: "2023-05-25 08:53:29.000000000 +0000", created_at: "2023-...rocessed: false, scheduling_type: "stage", id: 177, stage_id: 222, partition_id: 100, tag_list: nil>6268 with multiple statuses6269 is expected to contain exactly #<Ci::Build status: "success", finished_at: "2023-05-25 08:53:29.000000000 +0000", created_at: "2023-...rocessed: false, scheduling_type: "stage", id: 176, stage_id: 222, partition_id: 100, tag_list: nil>, #<Ci::Build status: "success", finished_at: "2023-05-25 08:53:29.000000000 +0000", created_at: "2023-...rocessed: false, scheduling_type: "stage", id: 177, stage_id: 222, partition_id: 100, tag_list: nil>, and #<Ci::Build status: "failed", finished_at: "2023-05-25 08:53:29.000000000 +0000", created_at: "2023-0...rocessed: false, scheduling_type: "stage", id: 178, stage_id: 222, partition_id: 100, tag_list: nil>6270 without statuses argument6271 is expected to contain exactly #<Ci::Build status: "success", finished_at: "2023-05-25 08:53:29.000000000 +0000", created_at: "2023-...rocessed: false, scheduling_type: "stage", id: 176, stage_id: 222, partition_id: 100, tag_list: nil>, #<Ci::Build status: "success", finished_at: "2023-05-25 08:53:29.000000000 +0000", created_at: "2023-...rocessed: false, scheduling_type: "stage", id: 177, stage_id: 222, partition_id: 100, tag_list: nil>, #<Ci::Build status: "failed", finished_at: "2023-05-25 08:53:29.000000000 +0000", created_at: "2023-0...rocessed: false, scheduling_type: "stage", id: 178, stage_id: 222, partition_id: 100, tag_list: nil>, and #<Ci::Build status: "pending", finished_at: nil, created_at: "2023-05-25 08:50:29.000000000 +0000", u...rocessed: false, scheduling_type: "stage", id: 179, stage_id: 222, partition_id: 100, tag_list: nil>6272 with unauthorized user6273 is expected to be nil6274Gitlab::Database::PostgresPartition6275 associations6276 is expected to belong to postgres_partitioned_table required: false6277 behaves like a postgres model6278 .by_identifier6279 finds the Gitlab::Database::PostgresPartition6280 raises an error if not found6281 raises ArgumentError if given a non-fully qualified identifier6282 #to_s6283 returns the name6284 #schema6285 returns the schema6286 #name6287 returns the name6288 .for_parent_table6289 returns partitions for the parent table in the current schema6290 returns the partitions if the parent table schema is included in the table name6291 does not return partitions for tables not in the current schema6292 does not return partitions for tables if the schema is not the current6293 #parent_identifier6294 returns the parent table identifier6295 #condition6296 returns the condition for the partitioned values6297 .partition_exists?6298 when the partition exists6299 is expected to be truthy6300 when the partition does not exist6301 is expected to be falsey6302 .legacy_partition_exists?6303 when the partition exists6304 is expected to be truthy6305 when the partition does not exist6306 is expected to be falsey6307SystemHooksService6308 #execute_hooks_for6309 model_name: :group_member, builder_class: Gitlab::HookData::GroupMemberBuilder6310 builds the data with the relevant builder class and then calls #execute_hooks with the obtained data6311 model_name: :group, builder_class: Gitlab::HookData::GroupBuilder6312 builds the data with the relevant builder class and then calls #execute_hooks with the obtained data6313 model_name: :project_member, builder_class: Gitlab::HookData::ProjectMemberBuilder6314 builds the data with the relevant builder class and then calls #execute_hooks with the obtained data6315 model_name: :user, builder_class: Gitlab::HookData::UserBuilder6316 builds the data with the relevant builder class and then calls #execute_hooks with the obtained data6317 model_name: :project, builder_class: Gitlab::HookData::ProjectBuilder6318 builds the data with the relevant builder class and then calls #execute_hooks with the obtained data6319 model_name: :key, builder_class: Gitlab::HookData::KeyBuilder6320 builds the data with the relevant builder class and then calls #execute_hooks with the obtained data6321 model_name: :deploy_key, builder_class: Gitlab::HookData::KeyBuilder6322 builds the data with the relevant builder class and then calls #execute_hooks with the obtained data6323 #execute_hooks6324 executes system hooks with the given data6325 executes FileHook with the given data6326DestroyPagesDeploymentsWorker6327 doesn't fail if project is already removed6328 can be called without last_deployment_id6329 calls destroy service6330Repositories::DestroyService6331 removes the repository6332 flushes the repository cache6333 does not perform any action if repository path does not exist and returns success6334 gracefully handles exception if the repository does not exist on disk6335 on a read-only instance6336 schedules the repository deletion6337 with a project wiki repository6338 schedules the repository deletion6339UsersStatistics6340 scopes6341 .order_created_at_desc6342 returns the entries ordered by created at descending6343 .latest6344 returns the latest entry6345 .create_current_stats!6346 when successful6347 creates an entry with the current statistics values6348 when unsuccessful6349 raises an ActiveRecord::RecordInvalid exception6350 #active6351 sums users statistics values without the value for blocked6352 #total6353 sums all users statistics values6354schema_version_check rake task6355 allows migrations on databases meeting the min schema version requirement6356 raises an error when schema version is too old to migrate6357 skips running validation when passed the skip env variable6358 allows migrations on fresh databases6359Packages::Detail::PackagePresenter6360 #detail_view6361 with build_info6362 returns details with pipeline6363 with multiple build_infos6364 returns details with two pipelines6365 with package_file_build_infos6366 returns details with package_file pipeline6367 without build info6368 returns details without pipeline6369 with conan metadata6370 returns conan_metadatum6371 with composer metadata6372 returns composer_metadatum6373 with nuget_metadatum6374 returns nuget_metadatum6375 with dependency_links6376 returns the correct dependency link6377 with package files pending destruction6378 is expected not to include 446379Gitlab::BackgroundTask6380 when stopped6381 is not running6382 #start6383 runs the given task on a background thread6384 returns self6385 when installing exit handler6386 stops a running background task6387 when task responds to start6388 calls start6389 when start returns true6390 runs the task6391 when start returns false6392 does not run the task6393 when synchronous is set to true6394 calls join on the thread6395 #stop6396 is a no-op6397 when running6398 #start6399 raises an error6400 #stop6401 stops running6402 when task responds to stop6403 calls stop6404 when task stop raises an error6405 stops gracefully6406 reports the error6407 when task run raises exception6408#<Thread:0x00007f8f99734990@test_background_task /builds/gitlab-org/gitlab/lib/gitlab/background_task.rb:58 run> terminated with exception (report_on_exception is true):6409/builds/gitlab-org/gitlab/spec/lib/gitlab/background_task_spec.rb:189:in `block (5 levels) in <top (required)>': task error (RuntimeError)6410 from /builds/gitlab-org/gitlab/lib/gitlab/background_task.rb:60:in `block (2 levels) in start'6411 stops gracefully6412#<Thread:0x00007f8f9a5e8a68@test_background_task /builds/gitlab-org/gitlab/lib/gitlab/background_task.rb:58 run> terminated with exception (report_on_exception is true):6413/builds/gitlab-org/gitlab/spec/lib/gitlab/background_task_spec.rb:189:in `block (5 levels) in <top (required)>': task error (RuntimeError)6414 from /builds/gitlab-org/gitlab/lib/gitlab/background_task.rb:60:in `block (2 levels) in start'6415 reports the error6416Gitlab::GithubImport::ObjectImporter6417 #import6418 imports the object6419 logs info if the import state is canceled6420 logs error when the import fails6421 without github_identifiers defined6422 logs error when representation does not have a github_id6423 when the record is invalid6424 logs an error6425 updates external_identifiers of the correct failure6426 #increment_object_counter?6427 returns true6428 .sidekiq_retries_exhausted6429 updates external_identifiers of the correct failure6430 when all arguments are given6431 notifies the JobWaiter6432 when not all arguments are given6433 does not notify the JobWaiter6434Gitlab::Ssh::Signature6435 signature verification6436 when signature is valid and user email is verified6437 behaves like verified signature6438 reports verified status6439 when using an RSA key6440 behaves like verified signature6441 reports verified status6442 when signed text is an empty string6443 behaves like verified signature6444 reports verified status6445 when signed text is nil6446 behaves like unverified signature6447 reports unverified status6448 when committer_email is empty6449 behaves like unverified signature6450 reports unverified status6451 when committer_email is nil6452 behaves like unverified signature6453 reports unverified status6454 when signature_text is empty6455 behaves like unverified signature6456 reports unverified status6457 when signature_text is nil6458 behaves like unverified signature6459 reports unverified status6460 when user email is not verified6461 reports unverified status6462 when no user exist with the committer email6463 reports other_user status6464 when no user exists with the committer email6465 reports other_user status6466 when signature is invalid6467 behaves like unverified signature6468 reports unverified status6469 when signature is for a different namespace6470 behaves like unverified signature6471 reports unverified status6472 when signature is for a different message6473 behaves like unverified signature6474 reports unverified status6475 when message has been tampered6476 behaves like unverified signature6477 reports unverified status6478 when the signing key does not exist in GitLab6479 when the key is not a signing one6480 reports unknown_key status6481 when the key is removed6482 reports unknown_key status6483 when key belongs to someone other than the committer6484 reports other_user status6485 #key_fingerprint6486 returns the pubkey sha256 fingerprint6487RepositoryArchiveCleanUpService6488 #execute (new archive locations)6489 removes outdated archives and directories in a new-style path6490 removes outdated archives and directories in a versioned path6491 does not remove directories when they contain outdated non-archives6492 does not remove in-date archives in a new-style path6493 #execute (legacy archive locations)6494 when the downloads directory does not exist6495 does not remove any archives6496 when the downloads directory exists6497 removes files older than 2 hours that matches valid archive extensions6498 with files older than 2 hours that does not matches valid archive extensions6499 behaves like invalid archive files6500 does not remove files and directory6501 with files older than 2 hours inside invalid directories6502 behaves like invalid archive files6503 does not remove files and directory6504 with files newer than 2 hours that matches valid archive extensions6505 behaves like invalid archive files6506 does not remove files and directory6507 with files newer than 2 hours that does not matches valid archive extensions6508 behaves like invalid archive files6509 does not remove files and directory6510 with files newer than 2 hours inside invalid directories6511 behaves like invalid archive files6512 does not remove files and directory6513EntityDateHelper6514 converts 0 seconds6515 converts 40 seconds6516 converts 60 seconds6517 converts 70 seconds6518 converts 3600 seconds6519 converts 3750 seconds6520 converts 86400 seconds6521 converts 86560 seconds6522 converts 86760 seconds6523 converts 986760 seconds6524 #remaining_days_in_words6525 when less than 31 days remaining6526 returns days remaining6527 when milestone due date is today6528 returns today6529 when milestone due date is tomorrow6530 returns 1 day remaining6531 when queried mid-day6532 returns 1 day remaining6533 when less than 1 year and more than 30 days remaining6534 returns months remaining6535 when more than 1 year remaining6536 returns years remaining6537 when milestone is expired6538 returns "Past due"6539 when milestone has start_date in the future6540 returns "Upcoming"6541 when milestone has start_date in the past6542 returns days elapsed6543DeployTokenPolicy6544 creating a deploy key6545 when user is maintainer6546 is expected to be allowed :create_deploy_token6547 when user is not maintainer6548 is expected to be disallowed :create_deploy_token6549 updating a deploy key6550 when user is maintainer6551 is expected to be allowed :update_deploy_token6552 when user is not maintainer6553 is expected to be disallowed :update_deploy_token6554Ci::InstanceVariable6555 is expected to includes the Ci::Maskable module6556 is expected to validate that :key is case-sensitively unique, producing a custom validation error on failure6557 is expected to validate that the length of :value is at most 10000, producing a custom validation error on failure6558 behaves like CI variable6559 is expected to includes the Ci::HasVariable module6560 strips whitespaces when assigning key6561 can convert to runner variable6562 variable type6563 defines variable types6564 defaults variable type to env_var6565 supports variable type file6566 behaves like includes Limitable concern6567 #exceeds_limits?6568 without plan limits configured6569 is expected to eq false6570 without plan limits configured6571 is expected to eq false6572 with an existing model6573 is expected to eq true6574 validations6575 is expected to be a kind of Limitable6576 without plan limits configured6577 can create new models6578 with plan limits configured6579 can create new models6580 with an existing model6581 cannot create new models exceeding the plan limits6582 #value6583 without application limit6584 when value is over the limit6585 raises a database level error6586 when value is under the limit6587 does not raise database level error6588 .unprotected6589 when variable is protected6590 returns nothing6591 when variable is not protected6592 returns the variable6593 .all_cached6594 is expected to contain exactly #<Ci::InstanceVariable id: 11, variable_type: "env_var", masked: false, protected: true, key: [FILTER...i2A0+j4y9XzSfT6v7DUnrpc3vIpEGM\n", encrypted_value_iv: "19oGswNXVaLwLvKf\n", raw: false, value: nil> and #<Ci::InstanceVariable id: 10, variable_type: "env_var", masked: false, protected: false, key: [FILTE...MFFSl3nYKBKVz1vlB1OPtmyNSPvTyh\n", encrypted_value_iv: "E2YYdybNbUC0y4W9\n", raw: false, value: nil>6595 memoizes the result6596 removes scopes6597 resets the cache when records are deleted6598 resets the cache when records are inserted6599 .unprotected_cached6600 is expected to contain exactly #<Ci::InstanceVariable id: 13, variable_type: "env_var", masked: false, protected: false, key: [FILTE...rS0De0I0aragqOXV8sYT8ivCwksHhw\n", encrypted_value_iv: "bDLQoXd1zRsGD+Wo\n", raw: false, value: nil>6601 memoizes the result6602Gitlab::Utils::DelegatorOverride6603 # order random6604 .delegator_target6605 sets the delegator target to the validator6606 when the class does not inherit SimpleDelegator6607 raises an error6608 .verify!6609 does not raise an error when an override is in allowlist6610 raises an error when there is an override6611 .delegator_override6612 adds the method name to the allowlist6613 .delegator_override_with6614 adds the method names of the module to the allowlist6615google cloud profiler6616 # order random6617 when GITLAB_GOOGLE_CLOUD_PROFILER_ENABLED is set to false6618 is expected not to receive new(*(any args)) 0 times6619 when GITLAB_GOOGLE_CLOUD_PROFILER_ENABLED is set to true6620 when GITLAB_GOOGLE_CLOUD_PROFILER_PROJECT_ID is not set6621 is expected not to receive new(*(any args)) 0 times6622 when GITLAB_GOOGLE_CLOUD_PROFILER_PROJECT_ID is set6623 when run in Puma context6624 calls the agent6625 when run in Sidekiq context6626 is expected not to receive new(*(any args)) 0 times6627 when run in another context6628 is expected not to receive new(*(any args)) 0 times6629 when GITLAB_GOOGLE_CLOUD_PROFILER_ENABLED is not set6630 is expected not to receive new(*(any args)) 0 times6631Gitlab::BitbucketServerImport::Stage::ImportPullRequestsWorker6632 # order random6633 #perform6634 when the import succeeds6635 schedules the next stage6636 logs stage start and finish6637 when project does not exists6638 does not call the importer6639 when project import state is not `started`6640 does not call the importer6641 when the importer fails6642 does not schedule the next stage and raises error6643 behaves like Gitlab::BitbucketServerImport::StageMethods6644 .sidekiq_retries_exhausted6645 tracks the import failure6646BlobViewer::Readme6647 #render_error6648 when there is no wiki6649 returns :no_wiki6650 when there is an external wiki6651 returns nil6652 when there is a local wiki6653 when the wiki is empty6654 returns :no_wiki6655 when the wiki is not empty6656 returns nil6657GroupDestroyWorker6658 is labeled as idempotent6659 performs multiple times sequentially without raising an exception6660 does not change groups when run twice6661 #perform6662 deletes the group and associated projects6663Ci::UnitTest6664 behaves like cleanup by a loose foreign key6665 cleans up (delete or nullify) the model6666 relationships6667 is expected to belong to project required: false6668 is expected to have many unit_test_failures6669 validations6670 is expected to validate that :project cannot be empty/falsy6671 is expected to validate that :key_hash cannot be empty/falsy6672 is expected to validate that :name cannot be empty/falsy6673 is expected to validate that :suite_name cannot be empty/falsy6674 .find_or_create_by_batch6675 finds or creates records for the given unit test keys6676 when a given name or suite_name exceeds the string size limit6677 truncates the values before storing the information6678Gitlab::ImportExport::FileImporter6679 normal run6680 removes symlinks in root folder6681 removes hidden symlinks in root folder6682 removes evil symlinks in root folder6683 removes symlinks in subfolders6684 removes symlinks without any file permissions6685 does not remove a valid file6686 does not change a valid file permissions6687 creates the file in the right subfolder6688 when the import file is not remote6689 downloads the file from a remote object storage6690 when the import file is remote6691 downloads the file from a remote object storage6692 error6693 removes symlinks in root folder6694 removes hidden symlinks in root folder6695 removes symlinks in subfolders6696 does not remove a valid file6697 when file exceeds acceptable decompressed size6698 when validate_import_decompressed_archive_size feature flag is enabled6699 returns false6700 when validate_import_decompressed_archive_size feature flag is disabled6701 skips validation6702Gitlab::Database::Partitioning::SlidingListStrategy6703 #current_partitions6704 detects both partitions6705 #validate_and_fix6706 does not call change_column_default if the partitioning in a valid state6707 calls change_column_default on partition_key with the most default partition number6708 does not change the default column if it has been changed in the meanwhile by another process6709 #active_partition6710 is the partition with the largest value6711 #missing_partitions6712 when next_partition_if returns true6713 is a partition definition for the next partition in the series6714 when next_partition_if returns false6715 is empty6716 when there are no partitions for the table6717 returns a partition for value 16718 #extra_partitions6719 when some partitions are true for detach_partition_if6720 is the leading set of partitions before that value6721 when all partitions are true for detach_partition_if6722 is all but the most recent partition6723 #initial_partition6724 starts with the value 16725 #next_partition6726 is one after the active partition6727 #ensure_partitioning_column_ignored!6728 raises when the column is not ignored6729 does not raise when the column is ignored6730 redirecting inserts as the active partition changes6731 redirects to the new partition6732Gitlab::View::Presenter::Factory6733 #initialize6734 without optional parameters6735 takes a subject and optional params6736 with optional parameters6737 takes a subject and optional params6738 #fabricate!6739 detects the presenter based on the given subject6740 uses the presenter_class if given on #initialize6741Gitlab::GitalyClient::RemoteService6742 #find_remote_root_ref6743 sends an find_remote_root_ref message and returns the root ref6744 ensure ref is a valid UTF-8 string6745 #update_remote_mirror6746 sends an update_remote_mirror message6747 .exists?6748 when the remote doesn't exist6749 returns false6750Gitlab::Auth::UserAccessDeniedReason6751 #rejection_message6752 when a user is blocked6753 is expected to match /blocked/6754 a user did not accept the enforced terms6755 is expected to match /must accept the Terms of Service/6756 is expected to include "user962"6757 is expected to include "http://localhost"6758 when the user is internal6759 is expected to match /This action cannot be performed by internal users/6760 when the user is deactivated6761 is expected to eq "Your account has been deactivated by your administrator. Please log back in from a web browser to reactivate your account at http://localhost"6762 when the user is unconfirmed6763 is expected to match /Your primary email address is not confirmed/6764 when the user is blocked pending approval6765 is expected to eq "Your account is pending approval from your administrator and hence blocked."6766 when the user has expired password6767 is expected to eq "Your password expired. Please access GitLab from a web browser to update your password."6768Sidebars::Projects::Menus::CiCdMenu6769 #render?6770 when user cannot read builds6771 returns false6772 when user can read builds6773 returns true6774 Menu items6775 Pipelines Editor6776 when user cannot view pipeline editor6777 does not include pipeline editor menu item6778 when user can view pipeline editor6779 includes pipeline editor menu item6780 Artifacts6781 includes artifacts menu item6782Gitlab::GithubImport::ObjectCounter6783 validates the operation being incremented6784 increments the counter and saves the key to be listed in the summary later6785 does not increment the counter if the given value is <= 06786 expires etag cache of relevant realtime change endpoints on increment6787 .summary6788 when there are cached import statistics6789 includes cached object counts stats in response6790 when there are no cached import statistics6791 when project import is in progress6792 includes an empty object counts stats in response6793 when project import is not in progress6794 includes project import checksums in response6795MergeRequestUserEntity6796 #as_json6797 exposes needed attributes6798 when `status` is not preloaded6799 does not expose the availability attribute6800 when the user has not approved the merge-request6801 exposes that the user has not approved the MR6802 when the user has approved the merge-request6803 exposes that the user has approved the MR6804 when `status` is preloaded6805 exposes the availibility attribute6806 performance6807 is linear in the number of merge requests (PENDING: See: https://gitlab.com/gitlab-org/gitlab/-/issues/322549)6808BulkImports::FileTransfer::GroupConfig6809 #portable_tree6810 returns portable tree6811 #export_path6812 returns tmpdir location6813 #portable_relations6814 returns a list of top level exportable relations6815 does not include skipped relations6816 #top_relation_tree6817 returns relation tree of a top level relation6818 #relation_excluded_keys6819 returns excluded keys for relation6820 #batchable_relation?6821 when relation is batchable6822 returns true6823 when relation is not batchable6824 returns false6825 when relation is not listed as portable6826 returns false6827 #batchable_relations6828 returns a list of collection associations for a group6829 #export_service_for6830 when relation is a tree6831 returns TreeExportService6832 when relation is a file6833 returns FileExportService6834 when relation is unknown6835 raises6836Gitlab::Metrics::ElasticsearchRackMiddleware6837 #call6838 calls the app6839 records elasticsearch metrics6840 records elasticsearch metrics if an error is raised6841 when there are no elasticsearch requests6842 does not record any metrics6843Mutations::ReleaseAssetLinks::Create6844 #resolve6845 when the user has access and no validation errors occur6846 creates a new release asset link6847 with protected tag6848 when user has access to the protected tag6849 does not have errors6850 when user does not have access to the protected tag6851 has an access error6852 when the user doesn't have access to the project6853 generates an error6854 when the project doesn't exist6855 generates an error6856 when a validation errors occur6857 when the release doesn't exist6858 behaves like returns errors-as-data6859 is expected to eq ["Release with tag \"nonexistent-tag\" was not found"]6860 when the URL is badly formatted6861 behaves like returns errors-as-data6862 is expected to eq ["Url is blocked: Only allowed schemes are http, https, ftp"]6863 when the name is not provided6864 behaves like returns errors-as-data6865 is expected to eq ["Name can't be blank"]6866 when the link already exists6867 behaves like returns errors-as-data6868 is expected to eq ["Url has already been taken", "Name has already been taken", "Filepath has already been taken"]6869Preloaders::ProjectPolicyPreloader6870 # order random6871 avoids N+1 queries when authorizing a list of projects6872Gitlab::BitbucketServerImport::ImportLfsObjectWorker6873 # order random6874 behaves like Gitlab::BitbucketServerImport::ObjectImporter6875 .sidekiq_retries_exhausted6876 notifies the waiter6877 #perform6878 when project does not exist6879 behaves like notifies the waiter6880 is expected to receive notify("key", anything) 1 time6881 when project has import started6882 calls the importer6883 behaves like notifies the waiter6884 is expected to receive notify("key", anything) 1 time6885 when project import has been cancelled6886 does not call the importer6887 behaves like notifies the waiter6888 is expected to receive notify("key", anything) 1 time6889Integrations::Bugzilla6890 Validations6891 when integration is active6892 is expected to validate that :project_url cannot be empty/falsy6893 is expected to validate that :issues_url cannot be empty/falsy6894 is expected to validate that :new_issue_url cannot be empty/falsy6895 behaves like issue tracker integration URL attribute6896 is expected to allow :project_url to be ‹"https://example.com"›6897 is expected not to allow :project_url to be ‹"example.com"›6898 is expected not to allow :project_url to be ‹"ftp://example.com"›6899 is expected not to allow :project_url to be ‹"herp-and-derp"›6900 behaves like issue tracker integration URL attribute6901 is expected to allow :issues_url to be ‹"https://example.com"›6902 is expected not to allow :issues_url to be ‹"example.com"›6903 is expected not to allow :issues_url to be ‹"ftp://example.com"›6904 is expected not to allow :issues_url to be ‹"herp-and-derp"›6905 behaves like issue tracker integration URL attribute6906 is expected to allow :new_issue_url to be ‹"https://example.com"›6907 is expected not to allow :new_issue_url to be ‹"example.com"›6908 is expected not to allow :new_issue_url to be ‹"ftp://example.com"›6909 is expected not to allow :new_issue_url to be ‹"herp-and-derp"›6910 when integration is inactive6911 is expected not to validate that :project_url cannot be empty/falsy6912 is expected not to validate that :issues_url cannot be empty/falsy6913 is expected not to validate that :new_issue_url cannot be empty/falsy6914ResourceLabelEventPolicy6915 #read_resource_label_event6916 with non-member user6917 does not allow to read event6918 with member user6919 allows to read event for accessible label6920 does not allow to read event for not accessible label6921 #read_label6922 allows to read deleted label6923 allows to read accessible label6924 does not allow to read not accessible label6925Integrations::ChatMessage::DeploymentMessage6926 behaves like Integrations::ChatMessage6927 when input contains link markup6928 strips all link markup characters6929 #pretext6930 returns a message with the data returned by the deployment data builder6931 returns a message for a successful deployment6932 returns a message for a failed deployment6933 returns a message for a canceled deployment6934 returns a message for a deployment to another environment6935 returns a message for a deployment with any other status6936 returns a message for a running deployment6937 #attachments6938 returns attachments with the data returned by the deployment data builder6939 returns attachments for a failed deployment6940 returns attachments for a canceled deployment6941 uses a neutral color for a deployment with any other status6942Members::ImportProjectTeamService6943 #execute6944 when project team members are imported successfully6945 returns true6946 when the project team import fails6947 when the target project cannot be found6948 returns false6949 when the source project cannot be found6950 returns false6951 when the user doing the import does not exist6952 returns false6953 when the user does not have permission to read the source project members6954 returns false6955 when the user does not have permission to admin the target project6956 returns false6957 when the source and target project are valid but the ProjectTeam#import command fails6958 returns false6959Banzai::Filter::InlineClusterMetricsFilter6960 behaves like a metrics embed filter6961 when the document has an external link6962 leaves regular non-metrics links unchanged6963 when the document contains an embeddable link6964 leaves the original link unchanged6965 appends a metrics charts placeholder6966 in a paragraph6967 appends a metrics charts placeholder after the enclosing paragraph6968 when metrics dashboard feature is unavailable6969 does not append a metrics chart placeholder6970ImportExportCleanUpService6971 #execute6972 when the import/export tmp storage directory does not exist6973 does not remove any archives6974 when the import/export tmp storage directory exists6975 removes old files and logs6976 does not remove new files or logs6977 removes old files and logs6978 does not remove new files or logs6979 with uploader exports6980 removes old files and logs6981 does not remove new files or logs6982AlertManagement::HttpIntegrationsFinder6983 #execute6984 empty params6985 is expected to contain exactly #<AlertManagement::HttpIntegration id: 1, created_at: "2023-05-25 18:25:02.397311000 +0000", updated_... "DataDog", payload_example: {}, payload_attribute_mapping: {}, type_identifier: "http", token: nil> and #<AlertManagement::HttpIntegration id: 3, created_at: "2023-05-25 18:25:02.458303497 +0000", updated_...Dog", payload_example: {}, payload_attribute_mapping: {}, type_identifier: "prometheus", token: nil>6986 endpoint_identifier param given6987 is expected to contain exactly #<AlertManagement::HttpIntegration id: 1, created_at: "2023-05-25 18:25:02.397311000 +0000", updated_... "DataDog", payload_example: {}, payload_attribute_mapping: {}, type_identifier: "http", token: nil>6988 matches an unavailable integration6989 is expected to be empty6990 but unknown6991 is expected to be empty6992 but blank6993 is expected to contain exactly #<AlertManagement::HttpIntegration id: 1, created_at: "2023-05-25 18:25:02.397311000 +0000", updated_... "DataDog", payload_example: {}, payload_attribute_mapping: {}, type_identifier: "http", token: nil> and #<AlertManagement::HttpIntegration id: 3, created_at: "2023-05-25 18:25:02.458303497 +0000", updated_...Dog", payload_example: {}, payload_attribute_mapping: {}, type_identifier: "prometheus", token: nil>6994 active param given6995 is expected to contain exactly #<AlertManagement::HttpIntegration id: 1, created_at: "2023-05-25 18:25:02.397311000 +0000", updated_... "DataDog", payload_example: {}, payload_attribute_mapping: {}, type_identifier: "http", token: nil>6996 but blank6997 is expected to contain exactly #<AlertManagement::HttpIntegration id: 1, created_at: "2023-05-25 18:25:02.397311000 +0000", updated_... "DataDog", payload_example: {}, payload_attribute_mapping: {}, type_identifier: "http", token: nil> and #<AlertManagement::HttpIntegration id: 3, created_at: "2023-05-25 18:25:02.458303497 +0000", updated_...Dog", payload_example: {}, payload_attribute_mapping: {}, type_identifier: "prometheus", token: nil>6998 type_identifier param given6999 is expected to contain exactly #<AlertManagement::HttpIntegration id: 1, created_at: "2023-05-25 18:25:02.397311000 +0000", updated_... "DataDog", payload_example: {}, payload_attribute_mapping: {}, type_identifier: "http", token: nil>7000 matches an unavailable integration7001 is expected to contain exactly #<AlertManagement::HttpIntegration id: 3, created_at: "2023-05-25 18:25:02.458303497 +0000", updated_...Dog", payload_example: {}, payload_attribute_mapping: {}, type_identifier: "prometheus", token: nil>7002 but unknown7003 is expected to contain exactly #<AlertManagement::HttpIntegration id: 1, created_at: "2023-05-25 18:25:02.397311000 +0000", updated_... "DataDog", payload_example: {}, payload_attribute_mapping: {}, type_identifier: "http", token: nil> and #<AlertManagement::HttpIntegration id: 3, created_at: "2023-05-25 18:25:02.458303497 +0000", updated_...Dog", payload_example: {}, payload_attribute_mapping: {}, type_identifier: "prometheus", token: nil>7004 but blank7005 is expected to contain exactly #<AlertManagement::HttpIntegration id: 1, created_at: "2023-05-25 18:25:02.397311000 +0000", updated_... "DataDog", payload_example: {}, payload_attribute_mapping: {}, type_identifier: "http", token: nil> and #<AlertManagement::HttpIntegration id: 3, created_at: "2023-05-25 18:25:02.458303497 +0000", updated_...Dog", payload_example: {}, payload_attribute_mapping: {}, type_identifier: "prometheus", token: nil>7006 project has no integrations7007 is expected to be empty7008Integrations::Zentao7009 behaves like Integrations::ResetSecretFields7010 #exposing_secrets_fields7011 returns an array of strings7012 #reset_secret_fields?7013 returns false if no exposing field has changed7014 returns true if any exposing field has changed7015 validation callback7016 when an exposing field has changed7017 clears all secret fields7018 when a secret field has been updated7019 does not clear this secret field7020 when a secret field has been updated with the same value7021 does not clear this secret field7022 when no exposing field has changed7023 does not clear any secret fields7024 set_default_data7025 when gitlab.yml was initialized7026 is prepopulated with the settings7027 #create7028 stores data in data_fields correctly7029 #fields7030 returns custom fields7031 #test7032 gets response from Gitlab::Zentao::Client#ping7033 #help7034 renders prompt information7035 #client_url7036 when api_url is set7037 returns the api_url7038 when api_url is not set7039 returns the url7040Gitlab::Analytics::CycleAnalytics::Aggregated::BaseQueryBuilder7041 scopes the query for the given project7042 author_username param7043 returns stage events associated with the given author7044 returns empty result when unknown author is given7045 milestone_title param7046 returns stage events associated with the milestone7047 returns empty result when unknown milestone is given7048 label_name param7049 returns stage events associated with multiple labels7050 does not include records with partial label match7051 assignee_username param7052 returns stage events associated assignee7053 timestamp filtering7054 filters by the end event time range7055 when in_progress items are requested7056 filters by the start event time range7057Gitlab::Ci::Config::Entry::Include7058 validations7059 when value is a string7060 is expected to be valid7061 when value is hash7062 when using not allowed keys7063 is expected not to be valid7064 when using "local"7065 is expected to be valid7066 when using "file"7067 is expected to be valid7068 when using "template"7069 is expected to be valid7070 when using "component"7071 is expected to be valid7072 when using "artifact"7073 and specifying "job"7074 is expected to be valid7075 without "job"7076 is expected not to be valid7077 has specific error7078 when using "project"7079 and specifying "ref" and "file"7080 is expected to be valid7081 without "ref"7082 is expected to be valid7083 without "file"7084 is expected not to be valid7085 has specific error7086 when using with "rules"7087 is expected to be valid7088 when rules is not an array of hashes7089 is expected not to be valid7090 has specific error7091 when value is something else7092 is expected not to be valid7093 #value7094 when config is a string7095 is expected to eq "test.yml"7096 when config is a hash7097 is expected to eq {:local=>"test.yml"}7098 when config has "rules"7099 is expected to eq {:local=>"test.yml", :rules=>[{:if=>"$VARIABLE"}]}7100gitlab:generate_sample_prometheus_data rake task7101 # order random7102 creates the file correctly7103Packages::Debian::UpdateDistributionService7104 behaves like Debian Update Distribution Service7105 with a Debian project distribution7106 with valid simple params7107 behaves like Update Debian Distribution7108 returns ServiceResponse7109 with invalid simple params7110 behaves like Update Debian Distribution7111 returns ServiceResponse7112 with valid components and architectures7113 behaves like Update Debian Distribution7114 returns ServiceResponse7115 with invalid components7116 behaves like Update Debian Distribution7117 returns ServiceResponse7118 with invalid architectures7119 behaves like Update Debian Distribution7120 returns ServiceResponse7121 behaves like Debian Update Distribution Service7122 with a Debian group distribution7123 with valid simple params7124 behaves like Update Debian Distribution7125 returns ServiceResponse7126 with invalid simple params7127 behaves like Update Debian Distribution7128 returns ServiceResponse7129 with valid components and architectures7130 behaves like Update Debian Distribution7131 returns ServiceResponse7132 with invalid components7133 behaves like Update Debian Distribution7134 returns ServiceResponse7135 with invalid architectures7136 behaves like Update Debian Distribution7137 returns ServiceResponse7138DeleteUserWorker7139 calls the DeleteUserWorker with the params it was given7140 uses symbolized keys7141 when user is banned7142 behaves like does nothing7143 does not instantiate a DeleteUserWorker7144 when delay_delete_own_user feature flag is disabled7145 proceeds with deletion7146 when user to delete does not exist7147 behaves like does nothing7148 does not instantiate a DeleteUserWorker7149 when current user does not exist7150 behaves like does nothing7151 does not instantiate a DeleteUserWorker7152 when user to delete and current user do not exist7153 behaves like does nothing7154 does not instantiate a DeleteUserWorker7155DesignUserMention7156 associations7157 is expected to belong to design required: false7158 is expected to belong to note required: false7159 behaves like has user mentions7160 #has_mentions?7161 when no mentions7162 returns false7163 when mentioned_users_ids not null7164 returns true7165 when mentioned projects7166 returns true7167 when mentioned groups7168 returns true7169Projects::ScheduleBulkRepositoryShardMovesService7170 behaves like moves repository shard in bulk7171 #execute7172 schedules container repository storage moves7173 read-only repository7174 does not get scheduled7175 .enqueue7176 defers to the worker7177RuboCop::Cop::Migration::BatchMigrationsPostOnly7178 # order random7179 when methods appear in a regular migration7180 does not allow 'ensure_batched_background_migration_is_finished' to be called7181 does not allow 'queue_batched_background_migration' to be called7182 does not allow 'delete_batched_background_migration' to be called7183 does not allow 'ensure_batched_background_migration_is_finished' to be called7184 allows arbitrary other method to be called7185 when methods appear in a post-deployment migration7186 allows 'ensure_batched_background_migration_is_finished' to be called7187 allows 'queue_batched_background_migration' to be called7188 allows 'delete_batched_background_migration' to be called7189 allows 'ensure_batched_background_migration_is_finished' to be called7190 allows arbitrary other method to be called7191WorkItems::Widgets::StartAndDueDateService::UpdateService7192 #before_update_callback7193 when start and due date params are present7194 correctly sets date values7195 when date params are not present7196 does not change work item date values7197 when work item had both date values already set7198 when one of the two params is null7199 sets only one date to null7200 when widget does not exist in new type7201 sets both dates to null7202UpdateContainerRegistryInfoService7203 #execute7204 when container registry is disabled7205 behaves like invalid config7206 does not update the application settings7207 does not raise an error7208 when container registry api_url is blank7209 behaves like invalid config7210 does not update the application settings7211 does not raise an error7212 when creating a registry client instance7213 uses a token with no access permissions7214 when unabled to detect the container registry type7215 sets the application settings to their defaults7216 when able to detect the container registry type7217 when using the GitLab container registry7218 updates application settings accordingly7219 when using a third-party container registry7220 updates application settings accordingly7221PersonalAccessTokens::ExpiringWorker7222 #perform7223 when a token needs to be notified7224 uses notification service to send the email7225 marks the notification as delivered7226 when no tokens need to be notified7227 doesn't use notification service to send the email7228 doesn't change the notification delivered of the token7229 when a token is an impersonation token7230 doesn't use notification service to send the email7231 doesn't change the notification delivered of the token7232Packages::Go::PackageFinder7233 #exists?7234 with a valid name and version7235 executes SELECT 17236 is expected to eq true7237 with an invalid name7238 is expected to eq false7239 with an invalid version7240 is expected to eq false7241 #execute7242 with a valid name and version7243 executes a single query7244 is expected to eq #<Packages::Package id: 17, project_id: 1355, created_at: "2023-05-25 18:25:25.570561000 +0000", upda...ion: "v1.0.1", package_type: "golang", creator_id: 2120, status: "default", last_downloaded_at: nil>7245 with an uninstallable package7246 is expected to eq nil7247 with an invalid name7248 is expected to eq nil7249 with an invalid version7250 is expected to eq nil7251Ci::DagStageEntity7252 #as_json7253 contains valid name7254 contains the job groups7255 matches schema7256MergeRequestWidgetCommitEntity7257 as json7258 is expected to eq "Merge branch 'branch-merged' into 'master'\r\n\r\nadds bar folder and branch-test text file to check Repository merged_to_root_ref method\r\n\r\n\r\n\r\nSee merge request !12"7259 is expected to eq "b83d6e39"7260 is expected to eq "Merge branch 'branch-merged' into 'master'"7261trusted_proxies7262 with default config7263 preserves private IPs7264 filters out localhost7265 filters out bad values7266 with private IP ranges added7267 filters out private and local IPs7268 with proxy IP added7269 filters out proxy IP7270 handles invalid ip addresses7271ResourceMilestoneEventPolicy7272 # order random7273 #read_resource_milestone_event7274 with non-member user7275 does not allow to read event7276 with member user7277 allows to read event for accessible milestone7278 does not allow to read event for not accessible milestone7279 #read_milestone7280 allows to read deleted milestone7281 allows to read accessible milestone7282 does not allow to read not accessible milestone7283MergeRequests::AssignsMergeParams7284 raises an error when used from an instance that does not respond to #current_user7285 #assign_allowed_merge_params7286 only assigns known parameters to the merge request7287 returns a hash without the known merge params7288 the force_remove_source_branch param7289 assigns the param if the user is allowed to do that7290 only removes the param if the user is not allowed to do that7291Gitlab::Git::RawDiffChange7292 bad input7293 does not set most of the attrs7294 adding a file7295 initialize the proper attrs7296 renaming a file7297 initialize the proper attrs7298 modifying a file7299 initialize the proper attrs7300 deleting a file7301 initialize the proper attrs7302Integrations::Assembla7303 behaves like Integrations::ResetSecretFields7304 #exposing_secrets_fields7305 returns an array of strings7306 #reset_secret_fields?7307 returns false if no exposing field has changed7308 returns true if any exposing field has changed7309 validation callback7310 when an exposing field has changed7311 clears all secret fields7312 when a secret field has been updated7313 does not clear this secret field7314 when a secret field has been updated with the same value7315 does not clear this secret field7316 when no exposing field has changed7317 does not clear any secret fields7318 Execute7319 calls Assembla API7320AlertManagement::AlertAssignee7321 associations7322 is expected to belong to alert required: false7323 is expected to belong to assignee class_name => User required: false inverse_of => alert_assignees7324 validations7325 is expected to validate that :alert cannot be empty/falsy7326 is expected to validate that :assignee cannot be empty/falsy7327 is expected to validate that :assignee is case-sensitively unique within the scope of :alert_id7328Gitlab::Middleware::Speedscope7329 #call7330 when flamegraph is not requested7331 behaves like returns original response7332 returns original response7333 when flamegraph requested7334 when user is not allowed7335 behaves like returns original response7336 returns original response7337 when user is allowed7338 returns a flamegraph7339 when the stackprof_mode parameter is set and valid7340 runs StackProf in the mode specified in the stackprof_mode parameter7341 when the stackprof_mode parameter is not set7342 runs StackProf in wall mode7343 when the stackprof_mode parameter is invalid7344 runs StackProf in wall mode7345 when the stackprof_mode parameter is set to object mode7346 runs StackProf with an interval of 1007347 when the stackprof_mode parameter is not set to object mode7348 runs StackProf with an interval of 10_1007349shared/issuable/_sidebar.html.haml7350 project in a group7351 issuable that does not support escalations7352 shows escalation policy dropdown7353 issuable that supports escalations7354 does not show escalation policy dropdown7355 crm contacts widget7356 without permission7357 is expected not to be shown7358 without contacts7359 is expected not to be shown7360 with permission and contacts7361 is expected to be shown7362admin mode on tasks7363 with a regular user7364 matches the expected admin mode7365 with an admin7366 matches the expected admin mode7367Projects::ExportJobFinder7368 #execute7369 when queried for a project7370 scopes to the project7371 when queried by job id7372 filters records7373 when queried by status7374 filters records7375 when queried by invalid status7376 raises exception7377ProjectImportData7378 #merge_data7379 writes the Hash to the attribute if it is nil7380 merges the Hash into an existing Hash if one was present7381 #merge_credentials7382 writes the Hash to the attribute if it is nil7383 merges the Hash into an existing Hash if one was present7384 #clear_credentials7385 clears out the Hash7386Achievements::Achievement7387 # order random7388 associations7389 is expected to belong to namespace required: true7390 is expected to have many user_achievements inverse_of => achievement7391 is expected to have many users through user_achievements inverse_of => achievements7392 #name7393 strips name7394 validations7395 is expected to validate that :name cannot be empty/falsy7396 is expected to validate that :name is case-insensitively unique within the scope of :namespace_id7397 is expected to validate that the length of :name is at most 2557398 is expected to validate that the length of :description is at most 10247399 modules7400 is expected to includes the Avatarable module7401Gitlab::GithubImport::ImportIssueEventWorker7402 #import7403 imports an issue event7404Mutations::Clusters::AgentTokens::Create7405 is expected to require graphql authorizations :create_cluster7406 #resolve7407 without token permissions7408 raises an error if the resource is not accessible to the user7409 with user permissions7410 creates a new token7411 returns token information7412 when the active agent tokens limit is reached7413 raises an error7414Gitlab::Ci::Reports::Security::Flag7415 #initialize7416 when all params are given7417 initializes an instance7418 #to_h7419 returns expected hash7420 #false_positive?7421 is expected to be truthy7422Gitlab::X509::Tag7423 #signature7424 signed tag7425 is expected not to be nil7426 is expected to eq :unverified7427 is expected to have attributes {:email => "r.meier@siemens.com", :serial_number => 3664232660, :subject => "CN=Meier Roger,O=Siemens,SN=Me...r=Z000NWDH", :subject_key_identifier => "21:7E:82:45:29:5D:0E:B1:19:CD:24:45:65:EE:0C:5C:73:03:5E:33"}7428 is expected to have attributes {:crl_url => "http://ch.siemens.com/pki?ZZZZZZA6.crl", :subject => "CN=Siemens Issuing CA Medium Strength...ayern,C=DE", :subject_key_identifier => "F8:15:5D:47:0C:6C:77:7B:72:C4:02:17:91:68:A2:B6:F7:6A:09:44"}7429 unsigned tag7430 is expected to be nil7431Gitlab::WorkItems::WorkItemHierarchy7432 # order random7433 #base_and_ancestors7434 includes the base and its ancestors7435 can find ancestors upto a certain level7436 when same_type option is used7437 includes the base and its ancestors7438 hierarchy_order option7439 for :asc7440 orders by child to ancestor7441 for :desc7442 orders by ancestor to child7443 #base_and_descendants7444 includes the base and its descendants7445 when same_type option is used7446 includes the base and its ancestors7447 when with_depth is true7448 includes depth in the results7449Integrations::SlackInteractions::IncidentManagement::IncidentModalClosedService7450 # order random7451 #execute7452 when executed7453 makes the POST call and closes the modal7454 when the POST call raises an HTTP exception7455 tracks the exception and returns an error response7456 when response is not ok7457 returns error response and tracks the exception7458Gitlab::Instrumentation::RateLimitingGates7459 .gates7460 returns an empty array when no gates are tracked7461 returns all gates used in the request7462 deduplicates its results7463 .payload7464 returns the gates in a hash7465RuboCop::Cop::BanCatchThrow7466 # order random7467 registers an offense when `catch` or `throw` are used7468 does not register an offense for a method called catch or throw7469layouts/project7470 # order random7471 with ability to invite members7472 is expected to have visible css ".js-invite-members-modal"7473 without ability to invite members7474 is expected not to have visible css ".js-invite-members-modal"7475Gitlab::Utils::SafeInlineHash7476 # order random7477 .merge_keys!7478 when hash is too big7479 raises an exception7480 when hash has an acceptaable size7481 returns a result of InlineHash7482Packages::Conan::CreatePackageService7483 #execute7484 valid params7485 creates a new package7486 behaves like assigns the package creator7487 assigns the package creator7488 behaves like assigns build to package7489 with build info7490 assigns the pipeline to the package7491 behaves like assigns status to package7492 with status param7493 assigns the status to the package7494 invalid params7495 fails7496Gitlab::Database::PostgresAutovacuumActivity7497 is expected to be a kind of Gitlab::Database::SharedModel(abstract)7498 .for_tables7499 returns autovacuum activity for queries tables7500Groups::AcceptingProjectImportsFinder7501 # order random7502 #execute7503 only returns groups where the user has access to import projects7504Gitlab::Ci::Parsers::Coverage::Cobertura7505 uses Sax parser7506BulkImports::Groups::Loaders::GroupLoader7507 #load7508 when path is missing7509 raises an error7510 when destination namespace is not a group7511 raises an error7512 when there are other group errors7513 raises an error with those errors7514 when user can create group7515 when there is no parent group7516 calls Group Create Service to create a new group7517 when there is parent group7518 calls Group Create Service to create a new group7519 when user cannot create group7520 when there is no parent group7521 does not create new group7522 when there is parent group7523 does not create new group7524Packages::Composer::Metadatum7525 relationships7526 is expected to belong to package required: false7527 validations7528 is expected to validate that :package cannot be empty/falsy7529 is expected to validate that :target_sha cannot be empty/falsy7530 is expected to validate that :composer_json cannot be empty/falsy7531 #composer_package_type7532 when the metadatum package_type is Composer7533 is expected to be valid7534 when the metadatum has no associated package7535 behaves like an invalid record7536 is expected to include "Package type must be Composer"7537 when the metadatum package_type is not Composer7538 behaves like an invalid record7539 is expected to include "Package type must be Composer"7540 scopes7541 .for_package7542 is expected to eq [#<Packages::Composer::Metadatum package_id: 22, target_sha: "419d959ab90d55bbf38449face1f4eab3bcd1ff5", composer_json: {"name"=>"sample-project"}, version_cache_sha: nil>]7543Mutations::Branches::Create7544 #resolve7545 raises an error if the resource is not accessible to the user7546 when the user can create a branch7547 when service successfully creates a new branch7548 returns a new branch7549 when service fails to create a new branch7550 is expected to be nil7551 is expected to eq ["Branch already exists"]7552Gitlab::Application7553 config.filter_parameters7554 when parameters are logged7555 rails does not leak confidential parameters7556 input_url: "/", output_query: {}7557 is expected to eq {}7558 input_url: "/?safe=1", output_query: {"safe"=>"1"}7559 is expected to eq {"safe"=>"1"}7560 input_url: "/?private_token=[MASKED] output_query: {"private_token"=>"[FILTERED]"}7561 is expected to eq {"private_token"=>"[FILTERED]"}7562 input_url: "/?mixed=1&private_token=[MASKED] output_query: {"mixed"=>"1", "private_token"=>"[FILTERED]"}7563 is expected to eq {"mixed"=>"1", "private_token"=>"[FILTERED]"}7564 input_url: "/?note=secret¬eable=1&prefix_note=2", output_query: {"note"=>"[FILTERED]", "noteable"=>"1", "prefix_note"=>"2"}7565 is expected to eq {"note"=>"[FILTERED]", "noteable"=>"1", "prefix_note"=>"2"}7566 input_url: "/?note[note]=secret&target_type=1", output_query: {"note"=>"[FILTERED]", "target_type"=>"1"}7567 is expected to eq {"note"=>"[FILTERED]", "target_type"=>"1"}7568 input_url: "/?safe[note]=secret&target_type=1", output_query: {"safe"=>{"note"=>"[FILTERED]"}, "target_type"=>"1"}7569 is expected to eq {"safe"=>{"note"=>"[FILTERED]"}, "target_type"=>"1"}7570 clear_active_connections_again initializer7571 is included in list of Rails initializers7572 is configured after set_routes_reloader_hook7573 functionality7574 clears all connections7575ImportHelper7576 #sanitize_project_name7577 removes leading tildes7578 removes whitespace7579 removes disallowed characters7580 #import_project_target7581 when current user can create namespaces7582 returns project namespace7583 when current user can not create namespaces7584 takes the current user's namespace7585 #provider_project_link_url7586 appends repo full path to provider host url7587 #import_configure_github_admin_message7588 returns note for admin7589 returns note for other user7590TriggerableHooks7591 scopes7592 defines a scope for each of the requested triggers7593 .hooks_for7594 the model has the required trigger scope7595 returns the record7596 the model does not have the required trigger scope7597 returns an empty relation7598 the stock scope ".all" is accepted7599 returns the record7600 .select_active7601 returns hooks that match the active filter7602 returns empty list if no hooks match the active filter7603Gitlab::Analytics::UsageTrends::WorkersArgumentBuilder7604 when no measurement identifiers are given7605 returns empty array7606 when measurement identifiers are given7607 returns worker arguments7608 when bogus measurement identifiers are given7609 skips bogus measurement identifiers7610 when custom min and max queries are present7611 uses custom min/max for ids7612ServiceHookPresenter7613 #logs_details_path7614 is expected to eq "/namespace1203/project-1355/-/settings/integrations/drone_ci/hook_logs/1"7615 #logs_retry_path7616 is expected to eq "/namespace1204/project-1356/-/settings/integrations/drone_ci/hook_logs/2/retry"7617RuboCop::Cop::Migration::MigrationRecord7618 # order random7619 in migration7620 in an old migration7621 behaves like a disabled cop7622 does not register any offenses7623 that is recent7624 adds an offense if inheriting from ActiveRecord::Base7625 adds an offense if inheriting from ::ActiveRecord::Base7626 in migration7627 in an old migration7628 behaves like a disabled cop7629 does not register any offenses7630 that is recent7631 adds an offense if inheriting from ApplicationRecord7632 adds an offense if inheriting from ::ApplicationRecord7633 outside of a migration7634 behaves like a disabled cop7635 does not register any offenses7636 outside of a migration7637 behaves like a disabled cop7638 does not register any offenses7639Packages::Rubygems::CreateDependenciesService7640 #execute7641 creates dependencies7642 links dependencies to the package7643ContainerRegistry::Registry7644 is expected to respond to #client7645 is expected to respond to #uri7646 is expected to respond to #path7647 is expected not to be nil7648 #path7649 path from URL7650 is expected to eq "example.com"7651 custom path7652 is expected to eq "registry.example.com"7653 #gitlab_api_client7654 returns a GitLabApiClient with an import token7655Pajamas::SpinnerComponent7656 class7657 has the correct custom class7658 color7659 by default7660 is dark7661 set to light7662 is light7663 inline7664 by default7665 renders a div7666 set to true7667 renders a span7668 label7669 by default7670 has "Loading" as aria-label7671 when set to something else7672 has a custom aria-label7673 size7674 has the correct size class7675Gitlab::Database::MigrationHelpers::ConvertToBigint7676 # order random7677 com_or_dev_or_test_but_not_jh?7678 dot_com: true, dev_or_test: true, jh: true, expectation: true7679 returns true for GitLab.com (but not JH), dev, or test7680 dot_com: true, dev_or_test: false, jh: true, expectation: false7681 returns true for GitLab.com (but not JH), dev, or test7682 dot_com: false, dev_or_test: true, jh: true, expectation: true7683 returns true for GitLab.com (but not JH), dev, or test7684 dot_com: false, dev_or_test: false, jh: true, expectation: false7685 returns true for GitLab.com (but not JH), dev, or test7686 dot_com: true, dev_or_test: true, jh: false, expectation: true7687 returns true for GitLab.com (but not JH), dev, or test7688 dot_com: true, dev_or_test: false, jh: false, expectation: true7689 returns true for GitLab.com (but not JH), dev, or test7690 dot_com: false, dev_or_test: true, jh: false, expectation: true7691 returns true for GitLab.com (but not JH), dev, or test7692 dot_com: false, dev_or_test: false, jh: false, expectation: false7693 returns true for GitLab.com (but not JH), dev, or test7694Gitlab::Ci::Reports::TestReportSummary7695 #total7696 when test report summary has several build report results7697 returns all the total count in a hash7698 #test_suites7699 when test report summary has several build report results7700 returns test suites grouped by name7701Gitlab::Middleware::MemoryReport7702 #call7703 when the Rails environment is not development7704 behaves like returns original response7705 returns original response7706 does not call the MemoryProfiler7707 when the Rails environment is development7708 when memory report is not requested7709 behaves like returns original response7710 returns original response7711 does not call the MemoryProfiler7712 when memory report is requested7713 returns a memory report7714 when something goes wrong with creating the report7715 logs the error7716 returns the error7717Ml::CandidateMetric7718 associations7719 is expected to belong to candidate required: false7720 scope :latest7721 fetches only the last metric for the name7722ResourceEvents::SyntheticStateNotesBuilderService7723 #execute7724 behaves like filters by paginated notes7725 only returns given notes7726 when paginated notes is empty7727 does not return any notes7728Gitlab::Ci::Parsers::Sbom::Cyclonedx7729 when report JSON is invalid7730 handles errors and adds them to the report7731 when report uses an unsupported spec version7732 reports unsupported version as an error7733 when report does not conform to the CycloneDX schema7734 reports all errors returned by the validator7735 when cyclonedx report has no components7736 skips component processing7737 when report has components7738 adds each component, ignoring unused attributes7739 when a component has an invalid purl7740 adds an error to the report7741 when report has metadata properties7742 passes them to the properties parser7743Gitlab::Ci::Pipeline::Expression::Lexeme::Equals7744 .build7745 with non-evaluable operands7746 creates a new instance of the token7747 with evaluable operands7748 creates a new instance of the token7749 .type7750 is an operator7751 .precedence7752 has a precedence7753 #evaluate7754 when left and right are equal7755 left_value: "string", right_value: "string"7756 is expected to eq true7757 when left and right are not equal7758 left_value: "one string", right_value: "two string"7759 is expected to eq false7760 left_value: "two string", right_value: "one string"7761 is expected to eq false7762Sidebars::UserSettings::Menus::ApplicationsMenu7763 # order random7764 behaves like User settings menu #render? method7765 #render?7766 when user is logged in7767 renders7768 when user is not logged in7769 does not render7770 behaves like User settings menu7771 does not contain any sub menu7772 renders the correct link7773 renders the correct title7774 renders the correct icon7775 defines correct active route7776Packages::Nuget::SearchResultsPresenter7777 #total_count7778 expects to have 3 total elements7779 #data7780 returns the proper data structure7781Packages::Composer::CacheFile7782 relationships7783 is expected to belong to group required: false7784 is expected to belong to namespace required: false7785 validations7786 is expected to validate that :namespace cannot be empty/falsy7787 scopes7788 .with_namespace7789 is expected to eq [#<Packages::Composer::CacheFile id: 1, created_at: "2023-05-25 18:26:25.247650850 +0000", updated_at...00", delete_at: nil, namespace_id: 4230, file_store: 1, file: "123456.json", file_sha256: "123456">]7790 .with_sha7791 is expected to eq [#<Packages::Composer::CacheFile id: 1, created_at: "2023-05-25 18:26:25.247650850 +0000", updated_at...00", delete_at: nil, namespace_id: 4230, file_store: 1, file: "123456.json", file_sha256: "123456">]7792Sidebars::Projects::Menus::ShimoMenu7793 #render?7794 without a valid Shimo integration7795 doesn't render the menu7796 with a valid Shimo integration7797 when integration is active7798 renders the menu7799 renders menu link7800 when integration is inactive7801 doesn't render the menu7802Spam::HamService7803 #execute7804 AkismetService returns false (Akismet cannot be reached, etc)7805 returns false7806 does not update the record7807 if spam log record has already been marked as spam7808 does not update the record7809 Akismet ham submission is successful7810 returns true7811 updates the record7812AsCte7813 .as_cte7814 is expected to be a kind of Gitlab::SQL::CTE7815 is expected to eq #<ActiveRecord::Relation []>7816 is expected to eq "klass_cte"7817 with materialized parameter7818 as true7819 is expected to match /MATERIALIZE/7820 as false7821 is expected not to match /MATERIALIZE/7822ResolvesProject7823 can resolve projects by path7824 can resolve projects by id7825 complains when both are present7826 complains when neither is present7827Resolvers::SavedReplyResolver7828 # order random7829 feature flag disabled7830 does not return saved reply7831 feature flag enabled7832 returns users saved reply7833 returns nil when saved reply is not found7834 returns nil when saved reply is another users7835Gitlab::Git::DiffStatsCollection7836 #find_by_path7837 returns stats by path when found7838 returns nil when stats is not found by path7839 #paths7840 returns only modified paths7841 #real_size7842 returns the number of modified files7843 returns capped number when it is bigger than max_files7844Gitlab::SnippetSearchResults7845 #snippet_titles_count7846 returns the amount of matched snippet titles7847 #formatted_count7848 returns the expected formatted count7849 #highlight_map7850 returns the expected highlight map7851 #objects7852 uses page and per_page to paginate results7853Packages::Debian::FindOrCreateIncomingService7854 #execute7855 run once7856 creates a new package7857 behaves like assigns the package creator7858 assigns the package creator7859 run twice7860 returns the same object7861CalendarHelper7862 #calendar_url_options7863 when signed in7864 includes the current_user's feed_token7865 when signed out7866 does not have a feed_token7867 when feed token disabled7868 does not have a feed_token7869Gitlab::Usage::Metrics::Instrumentations::CountIssuesMetric7870 behaves like a correct instrumented metric value and query7871 behaves like a correct instrumented metric value7872 has correct value7873 behaves like a correct instrumented metric query7874 has correct generate query7875BulkImports::BatchTracker7876 # order random7877 associations7878 is expected to belong to tracker required: false7879 validations7880 is expected to validate that :batch_number cannot be empty/falsy7881 is expected to validate that :batch_number is case-sensitively unique within the scope of :tracker_id7882PerformanceMonitoring::PrometheusMetric7883 .from_json7884 creates a PrometheusMetric object7885 validations7886 json_content is not a hash7887 is expected to raise ActiveModel::ValidationError7888 when unit is missing7889 is expected to raise ActiveModel::ValidationError7890 when query and query_range is missing7891 is expected to raise ActiveModel::ValidationError7892 when query_range is missing but query is available7893 is expected to be valid7894WorkItems::Widgets::Base7895 .type7896 is expected to eq :base7897 #type7898 is expected to eq :base7899Gitlab::PerformanceBar::WithTopLevelWarnings7900 #has_warnings?7901 has_warnings: false, results: {:data=>{}}7902 is expected to eq false7903 has_warnings: false, results: {:data=>{:gitaly=>{:warnings=>[]}}}7904 is expected to eq false7905 has_warnings: true, results: {:data=>{:gitaly=>{:warnings=>[1]}}}7906 is expected to eq true7907 has_warnings: true, results: {:data=>{:gitaly=>{:warnings=>[]}, :redis=>{:warnings=>[1]}}}7908 is expected to eq true7909Gitlab::GithubImport::Representation::ToHash7910 #to_hash7911 converts an object to a Hash7912 converts nested objects to Hashes7913 converts Array values to Hashes7914 keeps values as-is if they do not respond to #to_hash7915Gitlab::Prometheus::Queries::ValidateQuery7916 valid query7917 passess query to prometheus7918 invalid query7919 returns invalid7920 when exceptions occur7921 Gitlab::HTTP::BlockedUrlError7922 catches exception and returns invalid7923Types::AlertManagement::StatusEnum7924 is expected to eq "AlertManagementStatus"7925 statuses7926 status_name: "TRIGGERED", status_value: :triggered7927 exposes a status with the correct value7928 status_name: "ACKNOWLEDGED", status_value: :acknowledged7929 exposes a status with the correct value7930 status_name: "RESOLVED", status_value: :resolved7931 exposes a status with the correct value7932 status_name: "IGNORED", status_value: :ignored7933 exposes a status with the correct value7934Gitlab::GithubImport::Importer::LfsObjectImporter7935 #execute7936 calls the LfsDownloadService with the lfs object attributes7937Ci::JobArtifacts::ExpireProjectBuildArtifactsWorker7938 #perform7939 executes ExpireProjectArtifactsService service with the project7940 when project does not exist7941 does nothing7942RuboCop::Cop::Scalability::FileUploads7943 # order random7944 with optional params7945 detects File in types array7946 detects File as type argument7947 with required params7948 detects File in types array7949 detects File as type argument7950Types::TodoableInterface7951 exposes the expected fields7952 .resolve_type7953 knows the correct type for objects7954 raises an error for an unknown type7955TrackingHelper7956 #tracking_attrs7957 returns no data if snowplow is disabled7958 returns data hash7959 can return data directly7960API::Github::Entities7961 API::Github::Entities::User7962 aggregate_failures7963 with avatar7964 is expected to include "http://localhost/uploads/-/system/user/avatar/"7965Types::AlertManagement::IntegrationTypeEnum7966 is expected to eq "AlertManagementIntegrationType"7967 statuses7968 name: "PROMETHEUS", value: :prometheus7969 exposes a type with the correct value7970 name: "HTTP", value: :http7971 exposes a type with the correct value7972Mutations::SavedReplies::Destroy7973 #resolve7974 when feature is disabled7975 raises Gitlab::Graphql::Errors::ResourceNotAvailable7976 when feature is enabled for current user7977 when service fails to delete a new saved reply7978 raises Gitlab::Graphql::Errors::ResourceNotAvailable7979 when service successfully deletes the saved reply7980 is expected to be empty7981Gitlab::Ci::Ansi2json::Result7982 #size7983 when offset is at the start7984 returns the full size7985 when offset is not zero7986 returns the remaining size7987 #total7988 returns size of stread7989Gitlab::Session7990 uses the current thread as a data store7991 #with_session7992 sets session hash7993 restores current store after7994Gitlab::Database::PostgresHll::Buckets7995 #estimated_distinct_count7996 provides estimated cardinality7997 #merge_hash!7998 merges two hashes together into union of two sets7999 #to_json8000 serialize HyperLogLog buckets as hash8001Gitlab::Metrics::Dashboard::Stages::MetricEndpointInserter8002 #transform!8003 generates prometheus_endpoint_path without newlines8004 includes a path for the prometheus endpoint with each metric8005 works when query/query_range is a number8006Gitlab::SidekiqMiddleware::QueryAnalyzer8007 the PreventCrossDatabaseModification8008 #call8009 when there is a cross modification8010 detects cross modifications and tracks exception8011 when the detect_cross_database_modification is disabled8012 does not detect cross modifications8013 when there is no cross modification8014 does not log anything8015DatabaseReflection8016 .reflect8017 returns a Reflection instance8018 memoizes the result8019Gitlab::SidekiqMiddleware::ExtraDoneLogMetadata8020 #call8021 merges Application#logging_extras in to job8022 does not raise when the worker does not respond to #done_log_extra_metadata8023Gitlab::Metrics::Dashboard::Transformers::Yml::V1::PrometheusMetrics8024 #execute8025 valid dashboard8026 returns collection of metrics with correct attributes8027 invalid dashboard8028 raises missing attribute error8029Types::Packages::PackageType8030 is expected to eq "Represents a package with pipelines in the Package Registry"8031 is expected to require graphql authorizations :read_package8032 includes all the package fields and pipelines8033groups/settings/_general.html.haml8034 # order random8035 Group Settings README8036 renders #js-group-settings-readme8037Gitlab::Utils::ErrorMessage8038 # order random8039 #prefixed_error_message8040 returns a message with the given prefix8041 #to_user_facing8042 returns a user-facing error message with the UF prefix8043Gitlab::Database::Grant8044 .create_and_execute_trigger8045 returns true when the user can create and execute a trigger8046 returns false when the user can not create and/or execute a trigger8047Gitlab::Usage::Metrics::NamesSuggestions::RelationParsers::Joins8048 #accept8049 with join added via string8050 collects join parts8051 with join added via arel node8052 collects join parts8053Ensure kramdown detects invalid syntax highlighting formatters8054 with invalid formatter8055 falls back to standard HTML and disallows CSV8056 with valid formatter8057 allows formatter8058Gitlab::Metrics::Dashboard::Stages::TrackPanelType8059 #transform!8060 creates tracking event8061Types::Projects::BranchRuleType8062 # order random8063 is expected to have graphql fields :name, :isDefault, :branch_protection, :matching_branches_count, :created_at, and :updated_at8064 is expected to require graphql authorizations :read_protected_branch8065ActsAsTaggableOn::Tagging8066 has the same connection as Ci::ApplicationRecord8067 has the same sticking as Ci::ApplicationRecord8068Types::Packages::Composer::JsonType8069 is expected to eq "PackageComposerJsonType"8070 includes composer json files8071Gitlab::Asciidoc::Html5Converter8072 convert AsciiDoc to HTML58073 appends user-content- prefix on ref (anchor)8074Gitlab::Auth::Otp::Strategies::Devise8075 calls Devise8076Types::Ci::VariableInputType8077 has the correct arguments8078Integrations::ProjectSerializer8079 represents Integrations::ProjectEntity entities8080Gitlab::GithubImport::Stage::ImportPullRequestsReviewRequestsWorker8081 # order random8082 #import8083 imports all PR review requests8084Gitlab::Email::Message::BuildIosAppGuide8085 contains the correct message8086API::Entities::Nuget::SearchResult8087 is expected to eq {:@type=>"Package", :authors=>"Author", :iconUrl=>"http://sandbox.com/icon", :id=>"PackageTest", :lic..."1.2.3", :versions=>[{:@id=>"http://sandbox.com/json/package", :downloads=>100, :version=>"1.2.3"}]}8088Types::Security::ReportTypeEnum8089 exposes all security report types8090DeployKeyPresenter8091 # order random8092 #humanized_error_message8093 when public key is unsupported8094 returns the custom error message8095MergeRequestContextCommitDiffFile8096 associations8097 is expected to belong to merge_request_context_commit required: false8098Gitlab::Diff::InlineDiffMarkdownMarker8099 #mark8100 does not escape html etities and marks the range8101Gitlab::Ci::Status::Core8102 #cache_key8103 uses the subject's cache key8104Knapsack report was generated. Preview:8105{8106 "spec/services/groups/transfer_service_spec.rb": 245.300546918,8107 "spec/models/container_repository_spec.rb": 155.30521477699995,8108 "spec/services/merge_requests/create_from_issue_service_spec.rb": 130.13892824799996,8109 "spec/tasks/gitlab/workhorse_rake_spec.rb": 89.91816205700002,8110 "spec/services/issues/move_service_spec.rb": 83.25256537400014,8111 "spec/lib/banzai/filter/references/issue_reference_filter_spec.rb": 77.06879830599996,8112 "spec/services/boards/issues/move_service_spec.rb": 63.918705902000056,8113 "spec/lib/gitlab/search_results_spec.rb": 48.96685763200003,8114 "spec/models/snippet_spec.rb": 25.82037001400022,8115 "spec/models/ci/stage_spec.rb": 37.769764453000334,8116 "spec/finders/releases/group_releases_finder_spec.rb": 42.11238511900001,8117 "spec/lib/gitlab/auth/auth_finders_spec.rb": 12.940863613000147,8118 "spec/workers/repository_fork_worker_spec.rb": 34.27900996800008,8119 "spec/lib/gitlab/http_spec.rb": 13.36374469500015,8120 "spec/lib/feature_spec.rb": 11.454150911999932,8121 "spec/models/label_spec.rb": 13.440959968000243,8122 "spec/services/submodules/update_service_spec.rb": 20.348839360000056,8123 "spec/models/operations/feature_flag_spec.rb": 12.731798030999926,8124 "spec/models/ci/processable_spec.rb": 14.121545163000064,8125 "spec/services/milestones/transfer_service_spec.rb": 21.817762653000045,8126 "spec/models/user_preference_spec.rb": 4.0280033340000045,8127 "spec/policies/blob_policy_spec.rb": 12.773605855999904,8128 "spec/workers/pages/invalidate_domain_cache_worker_spec.rb": 3.4507198500000413,8129 "spec/lib/gitlab/path_regex_spec.rb": 3.889972381000007,8130 "spec/lib/banzai/color_parser_spec.rb": 3.460725937999996,8131 "spec/services/merge_requests/link_lfs_objects_service_spec.rb": 14.823527074999674,8132 "spec/uploaders/packages/debian/distribution_release_file_uploader_spec.rb": 11.279504414999792,8133 "spec/support_specs/helpers/stub_feature_flags_spec.rb": 3.643327149000015,8134 "spec/services/pages/migrate_from_legacy_storage_service_spec.rb": 14.723529748000146,8135 "spec/lib/gitlab/data_builder/issuable_spec.rb": 14.725664246000179,8136 "spec/models/ci/job_token/scope_spec.rb": 8.629817311000352,8137 "spec/validators/addressable_url_validator_spec.rb": 4.607720229000279,8138 "spec/services/users/update_service_spec.rb": 8.793459197000175,8139 "spec/finders/starred_projects_finder_spec.rb": 12.354132171999936,8140 "spec/serializers/diff_file_entity_spec.rb": 11.111339485999906,8141 "spec/lib/gitlab/ci/charts_spec.rb": 8.96518770099965,8142 "spec/models/packages/debian/group_distribution_spec.rb": 5.610976308000318,8143 "spec/models/metrics/dashboard/annotation_spec.rb": 6.35539861999996,8144 "spec/lib/gitlab/ci/config/entry/default_spec.rb": 3.3179768469999544,8145 "spec/services/issues/reopen_service_spec.rb": 10.181734990000223,8146 "spec/services/deployments/archive_in_project_service_spec.rb": 9.172912342000018,8147 "spec/views/notify/pipeline_success_email.html.haml_spec.rb": 8.473337016000187,8148 "spec/helpers/clusters_helper_spec.rb": 3.133556839999983,8149 "spec/lib/gitlab/doctor/secrets_spec.rb": 8.163158372999987,8150 "spec/services/boards/lists/create_service_spec.rb": 4.670181730999957,8151 "spec/services/pages_domains/obtain_lets_encrypt_certificate_service_spec.rb": 5.435291176000192,8152 "spec/lib/gitlab/metrics/dashboard/processor_spec.rb": 5.259585584999968,8153 "spec/models/generic_commit_status_spec.rb": 5.890512384999965,8154 "spec/models/fork_network_spec.rb": 7.159150664000208,8155 "spec/lib/gitlab/repo_path_spec.rb": 2.772263242000008,8156 "spec/finders/security/security_jobs_finder_spec.rb": 5.351413265000247,8157 "spec/lib/banzai/filter/references/feature_flag_reference_filter_spec.rb": 3.7087645970000267,8158 "spec/lib/gitlab/ci/status/build/unschedule_spec.rb": 6.971972055999686,8159 "spec/finders/contributed_projects_finder_spec.rb": 7.269370260999949,8160 "spec/tasks/gitlab/git_rake_spec.rb": 7.317631437000273,8161 "spec/lib/gitlab/ci/ansi2json/line_spec.rb": 1.280716697999651,8162 "spec/models/personal_snippet_spec.rb": 2.2507955300002322,8163 "spec/lib/gitlab/markup_helper_spec.rb": 1.2208395949996884,8164 "spec/views/projects/commits/_commit.html.haml_spec.rb": 5.006436412999847,8165 "spec/lib/gitlab/diff/parser_spec.rb": 1.2917624759998034,8166 "spec/policies/deploy_keys_project_policy_spec.rb": 4.281182583999907,8167 "spec/lib/gitlab/ci/pipeline/duration_spec.rb": 5.669699590000164,8168 "spec/lib/gitlab/ci/pipeline/logger_spec.rb": 1.5845280949997687,8169 "spec/services/notification_recipients/builder/default_spec.rb": 5.53191727300009,8170 "spec/serializers/merge_request_metrics_helper_spec.rb": 6.5240098879999096,8171 "spec/lib/gitlab/api_authentication/token_locator_spec.rb": 2.3483521279999877,8172 "spec/services/work_items/widgets/assignees_service/update_service_spec.rb": 3.150170547000016,8173 "spec/services/users/activity_service_spec.rb": 3.020119261000218,8174 "spec/lib/bitbucket_server/representation/pull_request_spec.rb": 1.0879194490003101,8175 "spec/lib/gitlab/database/partitioning/monthly_strategy_spec.rb": 1.9804839290000018,8176 "spec/graphql/resolvers/base_resolver_spec.rb": 1.283902016000411,8177 "spec/lib/gitlab/checks/lfs_integrity_spec.rb": 5.878731324,8178 "spec/serializers/base_discussion_entity_spec.rb": 4.11931099200001,8179 "spec/lib/container_registry/migration_spec.rb": 2.029335403999994,8180 "spec/models/projects/repository_storage_move_spec.rb": 1.5217829609996443,8181 "spec/lib/gitlab/kas_spec.rb": 0.9037194089996774,8182 "spec/services/clusters/destroy_service_spec.rb": 6.985372423999706,8183 "spec/graphql/resolvers/project_jobs_resolver_spec.rb": 3.126204613000027,8184 "spec/lib/gitlab/database/postgres_partition_spec.rb": 1.2398417520003022,8185 "spec/services/system_hooks_service_spec.rb": 1.338693320999937,8186 "spec/workers/destroy_pages_deployments_worker_spec.rb": 2.9848037179999665,8187 "spec/services/repositories/destroy_service_spec.rb": 5.047606049000024,8188 "spec/models/users_statistics_spec.rb": 4.657798241999899,8189 "spec/tasks/migrate/schema_check_rake_spec.rb": 2.5090820409996013,8190 "spec/presenters/packages/detail/package_presenter_spec.rb": 4.7310635439998805,8191 "spec/lib/gitlab/background_task_spec.rb": 1.3101484849998997,8192 "spec/workers/concerns/gitlab/github_import/object_importer_spec.rb": 1.583802444000412,8193 "spec/lib/gitlab/ssh/signature_spec.rb": 1.553016387000298,8194 "spec/services/repository_archive_clean_up_service_spec.rb": 2.2670132080002077,8195 "spec/serializers/entity_date_helper_spec.rb": 1.0612815629997385,8196 "spec/policies/deploy_token_policy_spec.rb": 3.0988208349999695,8197 "spec/models/ci/instance_variable_spec.rb": 3.42594083899985,8198 "spec/lib/gitlab/utils/delegator_override_spec.rb": 1.0836024300001554,8199 "spec/initializers/google_cloud_profiler_spec.rb": 0.7298477790000106,8200 "spec/workers/gitlab/bitbucket_server_import/stage/import_pull_requests_worker_spec.rb": 1.2804976180000267,8201 "spec/models/blob_viewer/readme_spec.rb": 4.033132910999939,8202 "spec/workers/group_destroy_worker_spec.rb": 3.516171480000139,8203 "spec/models/ci/unit_test_spec.rb": 3.7695908409996264,8204 "spec/lib/gitlab/import_export/file_importer_spec.rb": 2.270052178000242,8205 "spec/lib/gitlab/database/partitioning/sliding_list_strategy_spec.rb": 1.6222442199996294,8206 "spec/lib/gitlab/view/presenter/factory_spec.rb": 0.5804035249998378,8207 "spec/lib/gitlab/gitaly_client/remote_service_spec.rb": 2.4597748670003057,8208 "spec/lib/gitlab/auth/user_access_denied_reason_spec.rb": 3.2322890599998573,8209 "spec/lib/sidebars/projects/menus/ci_cd_menu_spec.rb": 1.9651378020002994,8210 "spec/lib/gitlab/github_import/object_counter_spec.rb": 1.052753144000235,8211 "spec/serializers/merge_request_user_entity_spec.rb": 3.7100651669998115,8212 "spec/models/bulk_imports/file_transfer/group_config_spec.rb": 0.9333864159998484,8213 "spec/lib/gitlab/metrics/elasticsearch_rack_middleware_spec.rb": 0.38993813600018257,8214 "spec/graphql/mutations/release_asset_links/create_spec.rb": 2.64931386499984,8215 "spec/models/preloaders/project_policy_preloader_spec.rb": 3.0555610199999137,8216 "spec/workers/gitlab/bitbucket_server_import/import_lfs_object_worker_spec.rb": 1.2839118869997037,8217 "spec/models/integrations/bugzilla_spec.rb": 1.5273615189998964,8218 "spec/policies/resource_label_event_policy_spec.rb": 1.652987506000045,8219 "spec/models/integrations/chat_message/deployment_message_spec.rb": 2.0485933720001412,8220 "spec/services/members/import_project_team_service_spec.rb": 2.7825169410002673,8221 "spec/lib/banzai/filter/inline_cluster_metrics_filter_spec.rb": 3.1853566869999668,8222 "spec/services/import_export_clean_up_service_spec.rb": 1.6671051349999289,8223 "spec/finders/alert_management/http_integrations_finder_spec.rb": 2.0843417790001695,8224 "spec/models/integrations/zentao_spec.rb": 2.0616912010000306,8225 "spec/lib/gitlab/analytics/cycle_analytics/aggregated/base_query_builder_spec.rb": 2.1991593860002467,8226 "spec/lib/gitlab/ci/config/entry/include_spec.rb": 1.0441936140000507,8227 "spec/tasks/gitlab/generate_sample_prometheus_data_rake_spec.rb": 3.3356494190002195,8228 "spec/services/packages/debian/update_distribution_service_spec.rb": 2.4526261670002896,8229 "spec/workers/delete_user_worker_spec.rb": 2.752074594000078,8230 "spec/models/design_user_mention_spec.rb": 0.53459150100025,8231 "spec/services/projects/schedule_bulk_repository_shard_moves_service_spec.rb": 1.1670120899998437,8232 "spec/rubocop/cop/migration/batch_migrations_post_only_spec.rb": 0.8674997529997199,8233 "spec/services/work_items/widgets/start_and_due_date_service/update_service_spec.rb": 1.0476956829998016,8234 "spec/services/update_container_registry_info_service_spec.rb": 1.8658066019997932,8235 "spec/workers/personal_access_tokens/expiring_worker_spec.rb": 0.9235950680003953,8236 "spec/finders/packages/go/package_finder_spec.rb": 1.8587027539997507,8237 "spec/serializers/ci/dag_stage_entity_spec.rb": 0.9802772909997657,8238 "spec/serializers/merge_request_widget_commit_entity_spec.rb": 2.6594844440000998,8239 "spec/initializers/trusted_proxies_spec.rb": 0.5285785900000519,8240 "spec/policies/resource_milestone_event_policy_spec.rb": 2.396350386999984,8241 "spec/services/concerns/merge_requests/assigns_merge_params_spec.rb": 0.5516807980002341,8242 "spec/lib/gitlab/git/raw_diff_change_spec.rb": 0.47991475800017724,8243 "spec/models/integrations/assembla_spec.rb": 1.6511734650002836,8244 "spec/models/alert_management/alert_assignee_spec.rb": 2.0260186149998844,8245 "spec/lib/gitlab/middleware/speedscope_spec.rb": 2.192335202999857,8246 "spec/views/shared/issuable/_sidebar.html.haml_spec.rb": 3.2152671300000293,8247 "spec/tasks/admin_mode_spec.rb": 2.682419579999987,8248 "spec/finders/projects/export_job_finder_spec.rb": 2.091026975999739,8249 "spec/models/project_import_data_spec.rb": 0.46556618000022354,8250 "spec/models/achievements/achievement_spec.rb": 1.4575735199996416,8251 "spec/workers/gitlab/github_import/import_issue_event_worker_spec.rb": 0.6926776400000563,8252 "spec/graphql/mutations/clusters/agent_tokens/create_spec.rb": 2.000160467999649,8253 "spec/lib/gitlab/ci/reports/security/flag_spec.rb": 0.3482564949999869,8254 "spec/lib/gitlab/x509/tag_spec.rb": 1.593784630999835,8255 "spec/lib/gitlab/work_items/work_item_hierarchy_spec.rb": 1.313269529000081,8256 "spec/services/integrations/slack_interactions/incident_management/incident_modal_closed_service_spec.rb": 0.40666460699958407,8257 "spec/lib/gitlab/instrumentation/rate_limiting_gates_spec.rb": 0.41301243600037196,8258 "spec/rubocop/cop/ban_catch_throw_spec.rb": 0.3369886069999666,8259 "spec/views/layouts/project.html.haml_spec.rb": 1.3864253379997535,8260 "spec/lib/gitlab/utils/safe_inline_hash_spec.rb": 0.31348904900005437,8261 "spec/services/packages/conan/create_package_service_spec.rb": 1.428116872999908,8262 "spec/lib/gitlab/database/postgres_autovacuum_activity_spec.rb": 0.5133671430003233,8263 "spec/finders/groups/accepting_project_imports_finder_spec.rb": 2.1004999859997042,8264 "spec/lib/gitlab/ci/parsers/coverage/cobertura_spec.rb": 0.346693533999769,8265 "spec/lib/bulk_imports/groups/loaders/group_loader_spec.rb": 1.0224016869997286,8266 "spec/models/packages/composer/metadatum_spec.rb": 1.181355534999966,8267 "spec/graphql/mutations/branches/create_spec.rb": 1.554304366999986,8268 "spec/config/application_spec.rb": 0.8113062639999953,8269 "spec/helpers/import_helper_spec.rb": 0.9519477950002511,8270 "spec/models/concerns/triggerable_hooks_spec.rb": 1.1456029410001065,8271 "spec/lib/gitlab/analytics/usage_trends/workers_argument_builder_spec.rb": 1.415568135000285,8272 "spec/presenters/service_hook_presenter_spec.rb": 1.7808903070003907,8273 "spec/rubocop/cop/migration/migration_record_spec.rb": 0.6912946590000502,8274 "spec/services/packages/rubygems/create_dependencies_service_spec.rb": 1.1299596929998188,8275 "spec/lib/container_registry/registry_spec.rb": 0.5910998230001496,8276 "spec/components/pajamas/spinner_component_spec.rb": 0.6840818509999735,8277 "spec/lib/gitlab/database/migration_helpers/convert_to_bigint_spec.rb": 0.7783514880002258,8278 "spec/lib/gitlab/ci/reports/test_report_summary_spec.rb": 1.7804760969997915,8279 "spec/lib/gitlab/middleware/memory_report_spec.rb": 0.5726005840001562,8280 "spec/models/ml/candidate_metric_spec.rb": 1.293196812000133,8281 "spec/services/resource_events/synthetic_state_notes_builder_service_spec.rb": 1.753778020000027,8282 "spec/lib/gitlab/ci/parsers/sbom/cyclonedx_spec.rb": 0.5966210520000459,8283 "spec/lib/gitlab/ci/pipeline/expression/lexeme/equals_spec.rb": 0.6351844369996797,8284 "spec/lib/sidebars/user_settings/menus/applications_menu_spec.rb": 0.7059647980004229,8285 "spec/presenters/packages/nuget/search_results_presenter_spec.rb": 1.014670157999717,8286 "spec/models/packages/composer/cache_file_spec.rb": 0.666836973000045,8287 "spec/lib/sidebars/projects/menus/shimo_menu_spec.rb": 0.8375364409998838,8288 "spec/services/spam/ham_service_spec.rb": 0.6407976760001475,8289 "spec/models/concerns/as_cte_spec.rb": 0.5062093040000946,8290 "spec/graphql/resolvers/concerns/resolves_project_spec.rb": 0.7239270049999504,8291 "spec/graphql/resolvers/saved_reply_resolver_spec.rb": 0.6349718080000457,8292 "spec/lib/gitlab/git/diff_stats_collection_spec.rb": 0.4353402740002821,8293 "spec/lib/gitlab/snippet_search_results_spec.rb": 0.7130899169997065,8294 "spec/services/packages/debian/find_or_create_incoming_service_spec.rb": 0.7575774709998768,8295 "spec/helpers/calendar_helper_spec.rb": 0.696393179000097,8296 "spec/lib/gitlab/usage/metrics/instrumentations/count_issues_metric_spec.rb": 0.6664045929996973,8297 "spec/models/bulk_imports/batch_tracker_spec.rb": 0.557204897000247,8298 "spec/models/performance_monitoring/prometheus_metric_spec.rb": 0.4684415390001959,8299 "spec/models/work_items/widgets/base_spec.rb": 0.6573691539997526,8300 "spec/lib/gitlab/performance_bar/with_top_level_warnings_spec.rb": 0.4124799559999701,8301 "spec/lib/gitlab/github_import/representation/to_hash_spec.rb": 0.42172977500013076,8302 "spec/lib/gitlab/prometheus/queries/validate_query_spec.rb": 0.5510834780002369,8303 "spec/graphql/types/alert_management/status_enum_spec.rb": 0.4799726770002053,8304 "spec/lib/gitlab/github_import/importer/lfs_object_importer_spec.rb": 0.6987452190001022,8305 "spec/workers/ci/job_artifacts/expire_project_build_artifacts_worker_spec.rb": 0.7127051070001471,8306 "spec/rubocop/cop/scalability/file_uploads_spec.rb": 0.4391957919997367,8307 "spec/graphql/types/todoable_interface_spec.rb": 0.47083654900006877,8308 "spec/helpers/tracking_helper_spec.rb": 0.4152434960001301,8309 "spec/lib/api/github/entities_spec.rb": 0.5715624549998211,8310 "spec/graphql/types/alert_management/integration_type_enum_spec.rb": 0.3710052020001058,8311 "spec/graphql/mutations/saved_replies/destroy_spec.rb": 0.5037575639998977,8312 "spec/lib/gitlab/ci/ansi2json/result_spec.rb": 0.40363847700018596,8313 "spec/lib/gitlab/session_spec.rb": 0.4237135739999758,8314 "spec/lib/gitlab/database/postgres_hll/buckets_spec.rb": 0.39716408799995406,8315 "spec/lib/gitlab/metrics/dashboard/stages/metric_endpoint_inserter_spec.rb": 0.45574415999999474,8316 "spec/lib/gitlab/sidekiq_middleware/query_analyzer_spec.rb": 0.4579952899998716,8317 "spec/models/concerns/database_reflection_spec.rb": 0.3234997280001153,8318 "spec/lib/gitlab/sidekiq_middleware/extra_done_log_metadata_spec.rb": 0.3448694250000699,8319 "spec/lib/gitlab/metrics/dashboard/transformers/yml/v1/prometheus_metrics_spec.rb": 0.34473511499982123,8320 "spec/graphql/types/packages/package_type_spec.rb": 0.3756818510000812,8321 "spec/views/groups/settings/_general.html.haml_spec.rb": 0.44475243199985925,8322 "spec/lib/gitlab/utils/error_message_spec.rb": 0.3247944180002378,8323 "spec/lib/gitlab/database/grant_spec.rb": 0.35697952300006364,8324 "spec/lib/gitlab/usage/metrics/names_suggestions/relation_parsers/joins_spec.rb": 0.32200822799995876,8325 "spec/lib/kramdown/kramdown_spec.rb": 0.3346937770002114,8326 "spec/lib/gitlab/metrics/dashboard/stages/track_panel_type_spec.rb": 0.3174582480000936,8327 "spec/graphql/types/projects/branch_rule_type_spec.rb": 0.34790103399973304,8328 "spec/models/acts_as_taggable_on/tagging_spec.rb": 0.33744479599999977,8329 "spec/graphql/types/packages/composer/json_type_spec.rb": 0.341228276000038,8330 "spec/lib/gitlab/asciidoc/html5_converter_spec.rb": 0.29472582100015643,8331 "spec/lib/gitlab/auth/otp/strategies/devise_spec.rb": 0.37848833099997137,8332 "spec/graphql/types/ci/variable_input_type_spec.rb": 0.288927552000132,8333 "spec/serializers/integrations/project_serializer_spec.rb": 0.2890702719996625,8334 "spec/workers/gitlab/github_import/stage/import_pull_requests_review_requests_worker_spec.rb": 0.30401940999990984,8335 "spec/lib/gitlab/email/message/build_ios_app_guide_spec.rb": 0.30006835099993623,8336 "spec/lib/api/entities/nuget/search_result_spec.rb": 0.30580267000004824,8337 "spec/graphql/types/security/report_types_enum_spec.rb": 0.29774017099998673,8338 "spec/presenters/deploy_key_presenter_spec.rb": 0.3417070959999364,8339 "spec/models/merge_request_context_commit_diff_file_spec.rb": 0.3407455859996844,8340 "spec/lib/gitlab/diff/inline_diff_markdown_marker_spec.rb": 0.30990276900001845,8341 "spec/lib/gitlab/ci/status/core_spec.rb": 0.31175952000012338342}8343Knapsack global time execution for tests: 28m 01s8344Pending: (Failures listed here are expected and do not affect your suite's status)8345 1) Operations::FeatureFlag validations behaves like AtomicInternalId .has_internal_id Validation when presence validation is not required when creating an object does not raise an error if the internal id is blank8346 # No reason given8347 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:498348 2) Operations::FeatureFlag validations behaves like AtomicInternalId .has_internal_id Validation when presence validation is not required when updating an object does not raise an error if the internal id is blank8349 # No reason given8350 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:578351 3) Packages::Debian::DistributionReleaseFileUploader Packages::Debian::ProjectDistribution behaves like builds correct paths #upload_path behaves like matches the method pattern 8352 # No pattern provided, skipping.8353 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88354 4) Packages::Debian::DistributionReleaseFileUploader Packages::Debian::ProjectDistribution behaves like builds correct paths #relative_path is relative8355 # Path not set, skipping.8356 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:408357 5) Packages::Debian::DistributionReleaseFileUploader Packages::Debian::ProjectDistribution behaves like builds correct paths .absolute_path behaves like matches the method pattern 8358 # No pattern provided, skipping.8359 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88360 6) Packages::Debian::DistributionReleaseFileUploader Packages::Debian::ProjectDistribution behaves like builds correct paths .base_dir behaves like matches the method pattern 8361 # No pattern provided, skipping.8362 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88363 7) Packages::Debian::DistributionReleaseFileUploader Packages::Debian::ProjectDistribution object store is remote behaves like builds correct paths #upload_path behaves like matches the method pattern 8364 # No pattern provided, skipping.8365 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88366 8) Packages::Debian::DistributionReleaseFileUploader Packages::Debian::ProjectDistribution object store is remote behaves like builds correct paths #relative_path is relative8367 # Path not set, skipping.8368 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:408369 9) Packages::Debian::DistributionReleaseFileUploader Packages::Debian::ProjectDistribution object store is remote behaves like builds correct paths .absolute_path behaves like matches the method pattern 8370 # No pattern provided, skipping.8371 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88372 10) Packages::Debian::DistributionReleaseFileUploader Packages::Debian::ProjectDistribution object store is remote behaves like builds correct paths .base_dir behaves like matches the method pattern 8373 # No pattern provided, skipping.8374 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88375 11) Packages::Debian::DistributionReleaseFileUploader Packages::Debian::GroupDistribution behaves like builds correct paths #upload_path behaves like matches the method pattern 8376 # No pattern provided, skipping.8377 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88378 12) Packages::Debian::DistributionReleaseFileUploader Packages::Debian::GroupDistribution behaves like builds correct paths #relative_path is relative8379 # Path not set, skipping.8380 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:408381 13) Packages::Debian::DistributionReleaseFileUploader Packages::Debian::GroupDistribution behaves like builds correct paths .absolute_path behaves like matches the method pattern 8382 # No pattern provided, skipping.8383 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88384 14) Packages::Debian::DistributionReleaseFileUploader Packages::Debian::GroupDistribution behaves like builds correct paths .base_dir behaves like matches the method pattern 8385 # No pattern provided, skipping.8386 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88387 15) Packages::Debian::DistributionReleaseFileUploader Packages::Debian::GroupDistribution object store is remote behaves like builds correct paths #upload_path behaves like matches the method pattern 8388 # No pattern provided, skipping.8389 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88390 16) Packages::Debian::DistributionReleaseFileUploader Packages::Debian::GroupDistribution object store is remote behaves like builds correct paths #relative_path is relative8391 # Path not set, skipping.8392 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:408393 17) Packages::Debian::DistributionReleaseFileUploader Packages::Debian::GroupDistribution object store is remote behaves like builds correct paths .absolute_path behaves like matches the method pattern 8394 # No pattern provided, skipping.8395 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88396 18) Packages::Debian::DistributionReleaseFileUploader Packages::Debian::GroupDistribution object store is remote behaves like builds correct paths .base_dir behaves like matches the method pattern 8397 # No pattern provided, skipping.8398 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88399 19) MergeRequestUserEntity#as_json performance is linear in the number of merge requests8401 Failure/Error:8402 expect do8403 a = described_class.new(user_a, request: request, merge_request: merge_request_b)8404 b = described_class.new(user_b, request: request, merge_request: merge_request_b)8406 a.as_json8407 b.as_json8408 end.not_to exceed_query_limit(baseline)8409 Expected a maximum of 10 queries, got 20:8410 Query Diff:8411 -----------8412 SELECT "users".* FROM "users"...8413 -- (expected: 1, got: 0)8414 WHERE "users"."id" = 2044 LIMIT 18415 SELECT MAX("project_authorizations"."access_level") AS maximum_access_level, "project_authorizations"."user_id" AS project_authorizations_user_id FROM "project_authorizations"...8416 -- (expected: 4, got: 0)8417 WHERE "project_authorizations"."project_id" = 1317 AND "project_authorizations"."user_id" = 2046 GROUP BY "project_authorizations"."user_id"8418 -- (expected: 3, got: 0)8419 WHERE "project_authorizations"."project_id" = 1317 AND "project_authorizations"."user_id" = 2044 GROUP BY "project_authorizations"."user_id"8420 -- (expected: 0, got: 4)8421 WHERE "project_authorizations"."project_id" = 1318 AND "project_authorizations"."user_id" = 2046 GROUP BY "project_authorizations"."user_id"8422 -- (expected: 0, got: 6)8423 WHERE "project_authorizations"."project_id" = 1318 AND "project_authorizations"."user_id" = 2044 GROUP BY "project_authorizations"."user_id"8424 -- (expected: 0, got: 4)8425 WHERE "project_authorizations"."project_id" = 1318 AND "project_authorizations"."user_id" = 2047 GROUP BY "project_authorizations"."user_id"8426 SELECT "merge_requests".* FROM "merge_requests"...8427 -- (expected: 1, got: 0)8428 WHERE "merge_requests"."source_project_id" = 1317 AND ("merge_requests"."state_id" IN (1)) AND "merge_requests"."allow_maintainer_to_push" = TRUE AND "merge_requests"."source_branch" = 'feature'8429 -- (expected: 0, got: 2)8430 WHERE "merge_requests"."source_project_id" = 1318 AND ("merge_requests"."state_id" IN (1)) AND "merge_requests"."allow_maintainer_to_push" = TRUE AND "merge_requests"."source_branch" = 'feature'8431 SELECT "merge_request_reviewers".* FROM "merge_request_reviewers"...8432 -- (expected: 1, got: 0)8433 WHERE "merge_request_reviewers"."merge_request_id" = 141 AND "merge_request_reviewers"."user_id" = 2046 LIMIT 18434 -- (expected: 0, got: 1)8435 WHERE "merge_request_reviewers"."merge_request_id" = 142 AND "merge_request_reviewers"."user_id" = 2046 LIMIT 18436 -- (expected: 0, got: 1)8437 WHERE "merge_request_reviewers"."merge_request_id" = 142 AND "merge_request_reviewers"."user_id" = 2047 LIMIT 18438 SELECT "protected_branches".* FROM ((SELECT "protected_branches".* FROM "protected_branches"...8439 -- (expected: 0, got: 1)8440 WHERE "protected_branches"."project_id" = 1318)) protected_branches8441 SELECT "approvals".* FROM "approvals"...8442 -- (expected: 0, got: 1)8443 WHERE "approvals"."merge_request_id" = 1428444 # ./spec/serializers/merge_request_user_entity_spec.rb:71:in `block (4 levels) in <top (required)>'8445 # ./spec/spec_helper.rb:425:in `block (3 levels) in <top (required)>'8446 # ./spec/support/sidekiq_middleware.rb:18:in `with_sidekiq_server_middleware'8447 # ./spec/spec_helper.rb:416:in `block (2 levels) in <top (required)>'8448 # ./spec/spec_helper.rb:412:in `block (3 levels) in <top (required)>'8449 # ./lib/gitlab/application_context.rb:61:in `with_raw_context'8450 # ./spec/spec_helper.rb:412:in `block (2 levels) in <top (required)>'8451 # ./spec/spec_helper.rb:243:in `block (2 levels) in <top (required)>'8452 # ./spec/support/system_exit_detected.rb:7:in `block (2 levels) in <top (required)>'8453 # ./spec/support/fast_quarantine.rb:23:in `block (2 levels) in <top (required)>'8454 # ./spec/support/database/prevent_cross_joins.rb:108:in `block (3 levels) in <top (required)>'8455 # ./spec/support/database/prevent_cross_joins.rb:62:in `with_cross_joins_prevented'8456 # ./spec/support/database/prevent_cross_joins.rb:108:in `block (2 levels) in <top (required)>'8457Finished in 28 minutes 6 seconds (files took 55.82 seconds to load)84583767 examples, 0 failures, 19 pending8459Randomized with seed 471648460[TEST PROF INFO] Time spent in factories: 16:31.622 (58.58% of total time)8461RSpec exited with 0.8462No examples to retry, congrats!8464Not uploading cache ruby-gems-debian-bullseye-ruby-3.0-16 due to policy8466Uploading artifacts...8467coverage/: found 5 matching artifact files and directories 8468WARNING: crystalball/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 8469WARNING: deprecations/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 8470knapsack/: found 4 matching artifact files and directories 8471query_recorder/: found 2 matching artifact files and directories 8472rspec/: found 9 matching artifact files and directories 8473WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 8474log/*.log: found 16 matching artifact files and directories 8475WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4353249489/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com8476WARNING: Retrying... context=artifacts-uploader error=request redirected8477Uploading artifacts as "archive" to coordinator... 201 Created id=4353249489 responseStatus=201 Created token=64_8T4RT8478Uploading artifacts...8479rspec/junit_rspec.xml: found 1 matching artifact files and directories 8480WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4353249489/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com8481WARNING: Retrying... context=artifacts-uploader error=request redirected8482Uploading artifacts as "junit" to coordinator... 201 Created id=4353249489 responseStatus=201 Created token=64_8T4RT8484Job succeeded