rspec unit pg13 28/28
Passed Started
by
@dgruzd

Dmitry Gruzd
1Running with gitlab-runner 16.1.0~beta.5.gf131a6a2 (f131a6a2)2 on blue-2.shared-gitlab-org.runners-manager.gitlab.com/default NL4gfoBe, system ID: s_74c3e13161643 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-nl4gfobe-project-278964-concurrent-0 via runner-nl4gfobe-shared-gitlab-org-1685037272-abed737a...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 | 28.73 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...44Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/ruby-gems-debian-bullseye-ruby-3.0-16 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_zaUY-49Downloading artifacts for retrieve-tests-metadata (4353249362)...50Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4353249362 responseStatus=200 OK token=64_zaUY-51Downloading artifacts for setup-test-env (4353249356)...52Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4353249356 responseStatus=200 OK token=64_zaUY-54Using 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_28_28_report.json755FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json756FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg13_28_28_report.json757NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg13_28_28_report.json758SKIPPED_TESTS_REPORT_PATH: rspec/skipped_tests_rspec_unit_pg13_28_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/models/environment_spec.rb spec/lib/gitlab/background_migration/backfill_snippet_repositories_spec.rb spec/tasks/gitlab/usage_data_rake_spec.rb spec/services/merge_requests/create_service_spec.rb spec/services/merge_requests/squash_service_spec.rb spec/services/issues/close_service_spec.rb spec/lib/gitlab/background_migration/backfill_topics_title_spec.rb spec/lib/gitlab/auth/o_auth/user_spec.rb spec/services/application_settings/update_service_spec.rb spec/lib/gitlab/utils/strong_memoize_spec.rb spec/lib/gitlab/background_migration/backfill_releases_author_id_spec.rb spec/serializers/ci/job_entity_spec.rb spec/graphql/types/project_type_spec.rb spec/lib/gitlab/import_export/project/object_builder_spec.rb spec/helpers/submodule_helper_spec.rb spec/models/discussion_spec.rb spec/workers/database/batched_background_migration_worker_spec.rb spec/lib/gitlab/background_migration/migrate_remediations_for_vulnerability_findings_spec.rb spec/services/issues/export_csv_service_spec.rb spec/services/design_management/delete_designs_service_spec.rb spec/services/web_hook_service_spec.rb spec/lib/gitlab/alert_management/payload/prometheus_spec.rb spec/services/packages/debian/process_package_file_service_spec.rb spec/services/resource_events/change_state_service_spec.rb spec/lib/gitlab/database/with_lock_retries_spec.rb spec/lib/gitlab/usage/metric_definition_spec.rb spec/lib/container_registry/path_spec.rb spec/services/pages/migrate_legacy_storage_to_deployment_service_spec.rb spec/services/issues/set_crm_contacts_service_spec.rb spec/models/ml/candidate_spec.rb spec/lib/gitlab/background_migration/batching_strategies/loose_index_scan_batching_strategy_spec.rb spec/lib/api/entities/merge_request_basic_spec.rb spec/lib/gitlab/checks/single_change_access_spec.rb spec/finders/merge_requests/oldest_per_commit_finder_spec.rb spec/lib/gitlab/redis/repository_cache_spec.rb spec/lib/expand_variables_spec.rb spec/lib/object_storage/config_spec.rb spec/lib/gitlab/json_spec.rb spec/lib/gitlab/json_cache_spec.rb spec/presenters/projects/settings/deploy_keys_presenter_spec.rb spec/lib/container_registry/blob_spec.rb spec/lib/gitlab/diff/lines_unfolder_spec.rb spec/serializers/issue_sidebar_basic_entity_spec.rb spec/models/dependency_proxy/blob_spec.rb spec/lib/gitlab/import_export/group/tree_saver_spec.rb spec/models/plan_limits_spec.rb spec/tasks/gitlab/artifacts/migrate_rake_spec.rb spec/helpers/nav_helper_spec.rb spec/services/projects/hashed_storage/rollback_attachments_service_spec.rb spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job_spec.rb spec/lib/gitlab/popen_spec.rb spec/models/dependency_proxy/manifest_spec.rb spec/lib/gitlab/ci/config/entry/service_spec.rb spec/helpers/releases_helper_spec.rb spec/services/issues/referenced_merge_requests_service_spec.rb spec/lib/banzai/filter/broadcast_message_sanitization_filter_spec.rb spec/services/labels/create_service_spec.rb spec/lib/gitlab/middleware/compressed_json_spec.rb spec/lib/gitlab/ci/reports/test_case_spec.rb spec/lib/gitlab/git/compare_spec.rb spec/services/ci/build_erase_service_spec.rb spec/models/pages_domain_acme_order_spec.rb spec/lib/gitlab/ci/templates/terraform_module_gitlab_ci_yaml_spec.rb spec/models/customer_relations/issue_contact_spec.rb spec/services/webauthn/destroy_service_spec.rb spec/finders/ci/freeze_periods_finder_spec.rb spec/graphql/mutations/issues/set_locked_spec.rb spec/services/repositories/housekeeping_service_spec.rb spec/lib/gitlab/ci/pipeline/chain/evaluate_workflow_rules_spec.rb spec/policies/metrics/dashboard/annotation_policy_spec.rb spec/services/projects/update_statistics_service_spec.rb spec/helpers/users/callouts_helper_spec.rb spec/lib/gitlab/ci/pipeline/chain/populate_metadata_spec.rb spec/lib/gitlab/ci/reports/test_suite_comparer_spec.rb spec/helpers/version_check_helper_spec.rb spec/graphql/types/release_type_spec.rb spec/services/users/update_canonical_email_service_spec.rb spec/components/pajamas/toggle_component_spec.rb spec/tasks/dev_rake_spec.rb spec/tooling/danger/feature_flag_spec.rb spec/lib/banzai/filter/blockquote_fence_filter_spec.rb spec/lib/sidebars/admin/menus/abuse_reports_menu_spec.rb spec/lib/gitlab/database/reindexing/grafana_notifier_spec.rb spec/lib/gitlab/safe_request_store_spec.rb spec/services/error_tracking/issue_latest_event_service_spec.rb spec/serializers/import/github_failure_entity_spec.rb spec/rubocop/cop/graphql/descriptions_spec.rb spec/lib/gitlab/form_builders/gitlab_ui_form_builder_spec.rb spec/tooling/lib/tooling/fast_quarantine_spec.rb spec/models/concerns/clusters/agents/authorizations/ci_access/config_scopes_spec.rb spec/finders/sentry_issue_finder_spec.rb spec/finders/concerns/finder_methods_spec.rb spec/helpers/ci/status_helper_spec.rb spec/services/lfs/push_service_spec.rb spec/helpers/broadcast_messages_helper_spec.rb spec/services/ci/daily_build_group_report_result_service_spec.rb spec/workers/analytics/usage_trends/counter_job_worker_spec.rb spec/models/service_desk/custom_email_credential_spec.rb spec/lib/gitlab/usage/metrics/aggregates/aggregate_spec.rb spec/lib/gitlab/memory/watchdog/event_reporter_spec.rb spec/lib/gitlab/security/scan_configuration_spec.rb spec/lib/gitlab/webpack/manifest_spec.rb spec/services/error_tracking/issue_details_service_spec.rb spec/rubocop/cop/performance/active_record_subtransaction_methods_spec.rb spec/lib/gitlab/kubernetes/rollout_instances_spec.rb spec/workers/rebase_worker_spec.rb spec/services/achievements/create_service_spec.rb spec/lib/gitlab/slash_commands/presenters/access_spec.rb spec/finders/incident_management/timeline_events_finder_spec.rb spec/views/profiles/keys/_form.html.haml_spec.rb spec/models/concerns/checksummable_spec.rb spec/graphql/types/board_list_type_spec.rb spec/services/import/github/notes/create_service_spec.rb spec/services/alert_management/http_integrations/create_service_spec.rb spec/lib/gitlab/diff/rendered/notebook/diff_file_helper_spec.rb spec/services/branches/create_service_spec.rb spec/graphql/mutations/customer_relations/contacts/create_spec.rb spec/services/ci/build_report_result_service_spec.rb spec/lib/gitlab/ci/config/edge_stages_injector_spec.rb spec/lib/gitlab/background_migration/backfill_project_namespace_details_spec.rb spec/lib/gitlab/ci/templates/MATLAB_spec.rb spec/lib/gitlab/ci/config/external/rules_spec.rb spec/lib/gitlab/prometheus/adapter_spec.rb spec/graphql/resolvers/alert_management/integrations_resolver_spec.rb spec/tasks/gitlab/feature_categories_rake_spec.rb spec/models/concerns/legacy_bulk_insert_spec.rb spec/lib/gitlab/branch_push_merge_commit_analyzer_spec.rb spec/lib/gitlab/file_finder_spec.rb spec/lib/gitlab/counters/legacy_counter_spec.rb spec/rubocop/cop/usage_data/instrumentation_superclass_spec.rb spec/models/raw_usage_data_spec.rb spec/workers/gitlab/github_import/advance_stage_worker_spec.rb spec/lib/sidebars/groups/super_sidebar_panel_spec.rb spec/models/merge_request/approval_removal_settings_spec.rb spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/client_spec.rb spec/graphql/mutations/labels/create_spec.rb spec/lib/security/ci_configuration/container_scanning_build_action_spec.rb spec/lib/sidebars/user_settings/menus/gpg_keys_menu_spec.rb spec/services/google_cloud/enable_cloud_run_service_spec.rb spec/services/groups/merge_requests_count_service_spec.rb spec/workers/gitlab/jira_import/stage/import_issues_worker_spec.rb spec/models/concerns/integrations/has_web_hook_spec.rb spec/rubocop/cop/migration/with_lock_retries_disallowed_method_spec.rb spec/lib/gitlab/database/load_balancing/rack_middleware_spec.rb spec/lib/gitlab/import_export/hash_util_spec.rb spec/lib/gitlab/database/postgresql_adapter/empty_query_ping_spec.rb spec/services/metrics/sample_metrics_service_spec.rb spec/lib/gitlab/sanitizers/svg_spec.rb spec/models/concerns/partitioned_table_spec.rb spec/graphql/types/customer_relations/contact_state_counts_type_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/count_users_creating_issues_metric_spec.rb spec/lib/api/entities/ci/job_request/port_spec.rb spec/graphql/types/clusters/agent_activity_event_type_spec.rb spec/rubocop/cop/gitlab/json_spec.rb spec/models/blob_viewer/changelog_spec.rb spec/lib/gitlab/database/schema_cache_with_renamed_table_spec.rb spec/lib/gitlab/gitaly_client/call_spec.rb spec/graphql/types/group_member_relation_enum_spec.rb spec/workers/cleanup_container_repository_worker_spec.rb spec/workers/bulk_imports/entity_worker_spec.rb spec/models/preloaders/group_policy_preloader_spec.rb spec/lib/bulk_imports/groups/pipelines/group_pipeline_spec.rb spec/services/ci/build_unschedule_service_spec.rb spec/lib/gitlab/request_endpoints_spec.rb spec/serializers/feature_flag_serializer_spec.rb spec/graphql/types/work_items/widgets/notifications_type_spec.rb spec/views/dashboard/projects/_blank_state_welcome.html.haml_spec.rb spec/views/projects/commits/show.html.haml_spec.rb spec/services/packages/update_tags_service_spec.rb spec/services/import/bitbucket_server_service_spec.rb spec/lib/bulk_imports/common/pipelines/labels_pipeline_spec.rb spec/workers/gitlab/github_import/import_pull_request_worker_spec.rb spec/lib/gitlab/favicon_spec.rb spec/services/packages/remove_tag_service_spec.rb spec/lib/gitlab/allowable_spec.rb spec/lib/gitlab/ci/config/entry/kubernetes_spec.rb spec/lib/banzai/filter/kroki_filter_spec.rb spec/rubocop/cop/code_reuse/worker_spec.rb spec/workers/ci/daily_build_group_report_results_worker_spec.rb spec/lib/gitlab/analytics/cycle_analytics/average_spec.rb spec/views/dashboard/milestones/index.html.haml_spec.rb spec/lib/gitlab/database/query_analyzers/gitlab_schemas_metrics_spec.rb spec/views/shared/milestones/_top.html.haml_spec.rb spec/routing/directs/subscription_portal_spec.rb spec/workers/jira_connect/sync_builds_worker_spec.rb spec/views/groups/new.html.haml_spec.rb spec/graphql/types/issuable_type_spec.rb spec/lib/gitlab/database/migrations/lock_retries_helpers_spec.rb spec/workers/ci/pipeline_artifacts/expire_artifacts_worker_spec.rb spec/graphql/types/time_type_spec.rb spec/finders/autocomplete/acts_as_taggable_on/tags_finder_spec.rb spec/rubocop/cop/destroy_all_spec.rb spec/helpers/git_helper_spec.rb spec/lib/gitlab/grape_logging/loggers/urgency_logger_spec.rb spec/lib/gitlab/github_import/sequential_importer_spec.rb spec/rubocop/cop/code_reuse/finder_spec.rb spec/graphql/types/milestone_type_spec.rb spec/rubocop/cop/database/disable_referential_integrity_spec.rb spec/lib/gitlab/memory/watchdog/monitor/rss_memory_limit_spec.rb spec/lib/banzai/filter_array_spec.rb spec/graphql/resolvers/topics_resolver_spec.rb spec/lib/gitlab/ci/build/artifacts/adapters/raw_stream_spec.rb spec/lib/gitlab/database/migrations/observers/query_statistics_spec.rb spec/uploaders/packages/npm/metadata_cache_uploader_spec.rb spec/serializers/group_link/group_link_entity_spec.rb spec/rubocop/cop/qa/selector_usage_spec.rb spec/views/projects/packages/index.html.haml_spec.rb spec/models/license_template_spec.rb spec/lib/gitlab/import/database_helpers_spec.rb spec/lib/gitlab/email/message/in_product_marketing/create_spec.rb spec/helpers/web_ide_button_helper_spec.rb spec/graphql/types/customer_relations/contact_type_spec.rb spec/graphql/types/projects/fork_details_type_spec.rb spec/models/resource_event_spec.rb spec/graphql/types/ci/config/stage_type_spec.rb spec/lib/api/entities/ci/job_artifact_file_spec.rb spec/db/production/import_common_metrics_spec.rb spec/lib/gitlab/graphql/loaders/lazy_relation_loader/relation_proxy_spec.rb spec/lib/gitlab/changes_list_spec.rb spec/lib/gitlab/graphql/tracers/timer_tracer_spec.rb spec/lib/gitlab/email/hook/additional_headers_interceptor_spec.rb spec/lib/gitlab/middleware/sidekiq_web_static_spec.rb spec/lib/sidebars/projects/super_sidebar_menus/build_menu_spec.rb spec/lib/error_tracking/sentry_client/token_spec.rb spec/policies/concerns/archived_abilities_spec.rb spec/graphql/types/ci/runner_architecture_type_spec.rb spec/lib/bulk_imports/common/extractors/graphql_extractor_spec.rb spec/services/notes/render_service_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_instance_type_active_online_metric_spec.rb spec/workers/gitlab/github_import/import_protected_branch_worker_spec.rb spec/serializers/project_mirror_entity_spec.rb spec/lib/bitbucket/paginator_spec.rb spec/presenters/member_presenter_spec.rb spec/graphql/types/dependency_proxy/blob_type_spec.rb spec/routing/projects/security/configuration_controller_routing_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/incoming_email_encrypted_secrets_enabled_metric_spec.rb spec/models/synthetic_note_spec.rb spec/workers/ci/schedule_delete_objects_cron_worker_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 2.348251751 seconds767Environment768 is expected to be a kind of ReactiveCaching769 is expected to nullify if blank :external_url770 is expected to belong to project required: true771 is expected to belong to merge_request optional: true772 is expected to belong to cluster_agent optional: true773 is expected to have many deployments774 is expected to have many metrics_dashboard_annotations775 is expected to have many alert_management_alerts776 is expected to have one upcoming_deployment777 is expected to have one latest_opened_most_severe_alert778 is expected to delegate #manual_actions to the #last_deployment object779 is expected to validate that :name cannot be empty/falsy780 is expected to validate that :name is case-sensitively unique within the scope of :project_id781 is expected to validate that the length of :name is at most 255782 is expected to validate that :slug is case-sensitively unique within the scope of :project_id783 is expected to validate that the length of :slug is at most 24784 is expected to validate that the length of :external_url is at most 255785 validation786 does not become invalid record when external_url is empty787 does not allow changes to merge_request788 for an environment that has no merge request associated789 for an environment that has a merge request associated790 tier791 presence is checked792 during create and update793 when FF is disabled794 is expected to validate that :tier cannot be empty/falsy795 is expected not to validate that :tier cannot be empty/falsy796 validate and sanitize external url797 source_external_url: nil, expected_error_message: nil798 sets an external URL or an error799 source_external_url: "http://example.com", expected_error_message: nil800 sets an external URL or an error801 source_external_url: "example.com", expected_error_message: nil802 sets an external URL or an error803 source_external_url: "www.example.io", expected_error_message: nil804 sets an external URL or an error805 source_external_url: "http://$URL", expected_error_message: nil806 sets an external URL or an error807 source_external_url: "http://$(URL)", expected_error_message: nil808 sets an external URL or an error809 source_external_url: "custom://example.com", expected_error_message: nil810 sets an external URL or an error811 source_external_url: "1.1.1.1", expected_error_message: nil812 sets an external URL or an error813 source_external_url: "$BASE_URL/${CI_COMMIT_REF_NAME}", expected_error_message: nil814 sets an external URL or an error815 source_external_url: "$ENVIRONMENT_URL", expected_error_message: nil816 sets an external URL or an error817 source_external_url: "https://$SUB.$MAIN", expected_error_message: nil818 sets an external URL or an error819 source_external_url: "https://$SUB-$REGION.$MAIN", expected_error_message: nil820 sets an external URL or an error821 source_external_url: "https://example.com?param={()}", expected_error_message: nil822 sets an external URL or an error823 source_external_url: "http://XSS?x=<script>alert(1)</script>", expected_error_message: nil824 sets an external URL or an error825 source_external_url: "https://user:${VARIABLE}@example.io", expected_error_message: nil826 sets an external URL or an error827 source_external_url: "https://example.com/test?param={data}", expected_error_message: nil828 sets an external URL or an error829 source_external_url: "http://${URL}", expected_error_message: "URI is invalid"830 sets an external URL or an error831 source_external_url: "https://${URL}.example/test", expected_error_message: "URI is invalid"832 sets an external URL or an error833 source_external_url: "http://test${CI_MERGE_REQUEST_IID}.example.com", expected_error_message: "URI is invalid"834 sets an external URL or an error835 source_external_url: "javascript:alert(\"hello\")", expected_error_message: "javascript scheme is not allowed"836 sets an external URL or an error837 .before_save838 ensures environment tier when a new object is created839 ensures environment tier when an existing object is updated840 does not overwrite the existing environment tier841 .order_by_last_deployed_at842 returns the environments in ascending order of having been last deployed843 returns the environments in descending order of having been last deployed844 .stopped_review_apps845 is expected to contain exactly #<Environment id: 30, project_id: 28, name: "review/1", created_at: "2023-04-24 18:00:38.336343169 +0...top_at: nil, auto_delete_at: nil, tier: "development", merge_request_id: nil, cluster_agent_id: nil>846 current timestamp847 is expected to contain exactly #<Environment id: 30, project_id: 28, name: "review/1", created_at: "2023-04-24 18:00:38.336343169 +0...top_at: nil, auto_delete_at: nil, tier: "development", merge_request_id: nil, cluster_agent_id: nil> and #<Environment id: 31, project_id: 28, name: "review/2", created_at: "2023-05-25 18:00:38.524678554 +0...top_at: nil, auto_delete_at: nil, tier: "development", merge_request_id: nil, cluster_agent_id: nil>848 scheduled deletion849 .scheduled_for_deletion850 is expected to contain exactly #<Environment id: 36, project_id: 29, name: "environment34", created_at: "2023-05-25 18:00:39.7347976... "2023-05-25 18:00:38.890619359 +0000", tier: "other", merge_request_id: nil, cluster_agent_id: nil>851 .not_scheduled_for_deletion852 is expected to contain exactly #<Environment id: 37, project_id: 30, name: "environment35", created_at: "2023-05-25 18:00:40.4670558...auto_stop_at: nil, auto_delete_at: nil, tier: "other", merge_request_id: nil, cluster_agent_id: nil>853 .schedule_to_delete854 schedules the record for deletion855 state machine856 invalidates the cache after a change857 when environment has auto stop period858 clears auto stop period when the environment has stopped859 does not clear auto stop period when the environment has not stopped860 .for_name_like861 returns a found name862 when query is production863 returns a found name864 when query is productionA865 returns empty array866 when query is empty867 returns a found name868 when query is nil869 raises an error870 when query is partially matched in the middle of environment name871 returns empty array872 when query contains a wildcard character873 prevents wildcard injection874 .for_name_like_within_folder875 returns a found name876 does not return environment without folder877 when query is test-app878 returns a found name879 when query is test-app-a880 returns empty array881 when query is empty string882 returns only the foldered environments883 when query is nil884 raises an error885 when query is partially matched in the middle of environment name886 returns empty array887 when query contains a wildcard character888 prevents wildcard injection889 .auto_stoppable890 when environment is auto-stoppable891 is expected to eq [#<Environment id: 65, project_id: 49, name: "environment39", created_at: "2023-05-25 18:00:58.584358...573848316 +0000", auto_delete_at: nil, tier: "other", merge_request_id: nil, cluster_agent_id: nil>]892 when environment is not auto-stoppable893 is expected to be empty894 .auto_deletable895 when environment is auto-deletable896 is expected to eq [#<Environment id: 67, project_id: 51, name: "environment41", created_at: "2023-05-25 18:01:00.443217..."2023-05-24 18:01:00.431130814 +0000", tier: "other", merge_request_id: nil, cluster_agent_id: nil>]897 when environment is not auto-deletable898 is expected to be empty899 .pluck_names900 plucks names901 .for_tier902 returns the production environment when searching for production tier903 returns nothing when searching for staging tier904 .for_type905 filters by type906 #guess_tier907 name: "review/feature", tier: 3908 is expected to eq 3909 name: "review/product", tier: 3910 is expected to eq 3911 name: "DEV", tier: 3912 is expected to eq 3913 name: "development", tier: 3914 is expected to eq 3915 name: "trunk", tier: 3916 is expected to eq 3917 name: "dev", tier: 3918 is expected to eq 3919 name: "review/app", tier: 3920 is expected to eq 3921 name: "PRODUCTION", tier: 0922 is expected to eq 0923 name: "prod", tier: 0924 is expected to eq 0925 name: "prod-east-2", tier: 0926 is expected to eq 0927 name: "us-prod-east", tier: 0928 is expected to eq 0929 name: "fe-production", tier: 0930 is expected to eq 0931 name: "test", tier: 2932 is expected to eq 2933 name: "TEST", tier: 2934 is expected to eq 2935 name: "testing", tier: 2936 is expected to eq 2937 name: "testing-prd", tier: 2938 is expected to eq 2939 name: "acceptance-testing", tier: 2940 is expected to eq 2941 name: "production-test", tier: 2942 is expected to eq 2943 name: "test-production", tier: 2944 is expected to eq 2945 name: "QC", tier: 2946 is expected to eq 2947 name: "qa-env-2", tier: 2948 is expected to eq 2949 name: "gstg", tier: 1950 is expected to eq 1951 name: "staging", tier: 1952 is expected to eq 1953 name: "stage", tier: 1954 is expected to eq 1955 name: "Model", tier: 1956 is expected to eq 1957 name: "MODL", tier: 1958 is expected to eq 1959 name: "Pre-production", tier: 1960 is expected to eq 1961 name: "pre", tier: 1962 is expected to eq 1963 name: "Demo", tier: 1964 is expected to eq 1965 name: "staging", tier: 1966 is expected to eq 1967 name: "pre-prod", tier: 1968 is expected to eq 1969 name: "blue-kit-stage", tier: 1970 is expected to eq 1971 name: "nonprod", tier: 1972 is expected to eq 1973 name: "nonlive", tier: 1974 is expected to eq 1975 name: "non-prod", tier: 1976 is expected to eq 1977 name: "non-live", tier: 1978 is expected to eq 1979 name: "gprd", tier: 0980 is expected to eq 0981 name: "gprd-cny", tier: 0982 is expected to eq 0983 name: "production", tier: 0984 is expected to eq 0985 name: "Production", tier: 0986 is expected to eq 0987 name: "PRODUCTION", tier: 0988 is expected to eq 0989 name: "Production/eu", tier: 0990 is expected to eq 0991 name: "production/eu", tier: 0992 is expected to eq 0993 name: "PRODUCTION/EU", tier: 0994 is expected to eq 0995 name: "productioneu", tier: 0996 is expected to eq 0997 name: "store-produce", tier: 0998 is expected to eq 0999 name: "unproductive", tier: 01000 is expected to eq 01001 name: "production/www.gitlab.com", tier: 01002 is expected to eq 01003 name: "prod", tier: 01004 is expected to eq 01005 name: "PROD", tier: 01006 is expected to eq 01007 name: "Live", tier: 01008 is expected to eq 01009 name: "canary", tier: 41010 is expected to eq 41011 name: "other", tier: 41012 is expected to eq 41013 name: "EXP", tier: 41014 is expected to eq 41015 name: "something-else", tier: 41016 is expected to eq 41017 #expire_etag_cache1018 changes the cached value1019 .with_deployment1020 when deployment has the specified sha1021 is expected to eq [#<Environment id: 75, project_id: 59, name: "environment45", created_at: "2023-05-25 18:01:10.696543...uto_stop_at: nil, auto_delete_at: nil, tier: "other", merge_request_id: nil, cluster_agent_id: nil>]1022 with success status filter1023 is expected to be empty1024 with created status filter1025 is expected to contain exactly #<Environment id: 77, project_id: 61, name: "environment47", created_at: "2023-05-25 18:01:12.7370584...auto_stop_at: nil, auto_delete_at: nil, tier: "other", merge_request_id: nil, cluster_agent_id: nil>1026 when deployment does not have the specified sha1027 is expected to be empty1028 #folder_name1029 when it is inside a folder1030 returns a top-level folder name1031 when the environment if a top-level item itself1032 returns an environment name1033 #name_without_type1034 when it is inside a folder1035 returns name without folder1036 when the environment if a top-level item itself1037 returns full name1038 #includes_commit?1039 without a last deployment1040 returns false1041 with a last deployment1042 in the same branch1043 returns true1044 not in the same branch1045 returns false1046 #environment_type1047 sets a environment type if name has multiple segments1048 nullifies a type if it's a simple name1049 #stop_actions_available?1050 when no other actions1051 is expected to be falsey1052 when matching action is defined1053 when environment is available1054 is expected to be truthy1055 when environment is stopped1056 is expected to be falsey1057 #stop_with_actions!1058 when no other actions1059 environment is available1060 is expected to contain exactly1061 environment is already stopped1062 is expected to be stopped1063 when matching action is defined1064 when user is not allowed to stop environment1065 raises an exception1066 when user is allowed to stop environment1067 when action did not yet finish1068 returns the same action1069 environment is not stopped1070 if action did finish1071 returns a new action of the same type1072 close action does not raise ActiveRecord::StaleObjectError1073 successfully plays the build even if the build was a stale object1074 when there are more then one stop action for the environment1075 returns the same actions1076 when there are failed builds1077 returns only stop actions from successful builds1078 #stop_actions1079 when there are no deployments and builds1080 returns empty array1081 when there are multiple deployments with actions1082 returns only the stop actions1083 #last_deployment_group1084 when there are no deployments and builds1085 is expected to eq #<ActiveRecord::Relation []>1086 when there are deployments for multiple pipelines1087 returns the successful deployment jobs for the last deployment pipeline1088 recently_updated_on_branch?1089 when last deployment to environment is the most recent one1090 is expected to equal true1091 when last deployment to environment is not the most recent1092 is expected to equal false1093 #reset_auto_stop1094 nullifies the auto_stop_at1095 #actions_for1096 returns a list of actions with matching environment1097 .deployments1098 when there is a deployment record with created status1099 does not return the record1100 when there is a deployment record with running status1101 does not return the record1102 when there is a deployment record with success status1103 returns the record1104 .last_deployment1105 when there is an old deployment record1106 when there is a deployment record with created status1107 returns the previous deployment1108 when there is a deployment record with running status1109 returns the previous deployment1110 when there is a deployment record with failed status1111 returns the previous deployment1112 when there is a deployment record with success status1113 returns the latest successful deployment1114 returns the deployment with the latest finished_at1115 Last deployment relations1116 returns the last success deployment1117 returns the last failed deployment1118 returns the last canceled deployment1119 returns the last created deployment1120 returns the last blocked deployment1121 returns the last running deployment1122 #last_deployable1123 does not join across databases1124 when called1125 #last_deployment_pipeline1126 does not join across databases1127 #last_visible_deployment1128 when there is an old deployment record1129 when there is a deployment record with created status1130 is expected to eq #<Deployment id: 68, iid: 1, project_id: 110, environment_id: 124, ref: "master", tag: false, sha: "b...shed_at: "2023-05-25 18:02:11.666705208 +0000", cluster_id: nil, deployable_id: 89, archived: false>1131 when there is a deployment record with running status1132 is expected to eq #<Deployment id: 71, iid: 2, project_id: 111, environment_id: 125, ref: "master", tag: false, sha: "b...stop: nil, status: "running", finished_at: nil, cluster_id: nil, deployable_id: 92, archived: false>1133 when there is a deployment record with success status1134 is expected to eq #<Deployment id: 73, iid: 2, project_id: 112, environment_id: 126, ref: "master", tag: false, sha: "b...shed_at: "2023-05-25 18:02:14.112032860 +0000", cluster_id: nil, deployable_id: 94, archived: false>1135 when there is a deployment record with failed status1136 is expected to eq #<Deployment id: 75, iid: 2, project_id: 113, environment_id: 127, ref: "master", tag: false, sha: "b...shed_at: "2023-05-25 18:02:15.296588568 +0000", cluster_id: nil, deployable_id: 96, archived: false>1137 when there is a deployment record with canceled status1138 is expected to eq #<Deployment id: 77, iid: 2, project_id: 114, environment_id: 128, ref: "master", tag: false, sha: "b...shed_at: "2023-05-25 18:02:16.533884744 +0000", cluster_id: nil, deployable_id: 98, archived: false>1139 #last_visible_deployable1140 fetches the deployable through the last visible deployment1141 #last_visible_pipeline1142 fetches the pipeline through the last visible deployment1143 #upcoming_deployment1144 when environment has a successful deployment1145 is expected to be nil1146 when environment has a running deployment1147 is expected to eq #<Deployment id: 81, iid: 1, project_id: 119, environment_id: 132, ref: "master", tag: false, sha: "b...top: nil, status: "running", finished_at: nil, cluster_id: nil, deployable_id: 102, archived: false>1148 when environment has a blocked deployment1149 is expected to eq #<Deployment id: 82, iid: 1, project_id: 120, environment_id: 133, ref: "master", tag: false, sha: "b...top: nil, status: "blocked", finished_at: nil, cluster_id: nil, deployable_id: 103, archived: false>1150 #has_terminals?1151 when the environment is available1152 with a deployment service1153 when user configured kubernetes from CI/CD > Clusters1154 with deployment1155 is expected to be truthy1156 without deployments1157 is expected to be falsy1158 without a deployment service1159 is expected to be falsy1160 when the environment is unavailable1161 is expected to be falsy1162 #deployment_platform1163 checks deployment platforms associated with a project1164 when there is a deployment platform for environment1165 finds a deployment platform1166 when there is no deployment platform for environment1167 returns nil1168 #deployment_namespace1169 no deployment platform available1170 is expected to be nil1171 deployment platform is available1172 retrieves a namespace from the cluster1173 #terminals1174 reactive cache configuration1175 does not continue to spawn jobs1176 reactive cache is empty1177 is expected to be nil1178 reactive cache has pod data1179 retrieves terminals from the deployment platform1180 #calculate_reactive_cache1181 overrides default reactive_cache_hard_limit to 10 Mb1182 returns cache data from the deployment platform1183 environment does not have terminals available1184 is expected to be nil1185 project is pending deletion1186 is expected to be nil1187 #has_metrics?1188 when the environment is available1189 with a deployment service1190 and a deployment1191 is expected to be truthy1192 and no deployments1193 is expected to be truthy1194 and the prometheus adapter is not configured1195 is expected to be falsy1196 without a monitoring service1197 is expected to be falsy1198 when sample metrics are enabled1199 with no prometheus adapter configured1200WARNING: An expectation of `:configured?` was set on `nil`. To allow expectations on `nil` and suppress this message, set `RSpec::Mocks.configuration.allow_message_expectations_on_nil` to `true`. To disallow expectations on `nil`, set `RSpec::Mocks.configuration.allow_message_expectations_on_nil` to `false`. Called from /builds/gitlab-org/gitlab/spec/models/environment_spec.rb:1422:in `block (6 levels) in <top (required)>'.1201 is expected to be truthy1202 #has_sample_metrics?1203 when sample metrics are enabled1204 with no prometheus adapter configured1205WARNING: An expectation of `:configured?` was set on `nil`. To allow expectations on `nil` and suppress this message, set `RSpec::Mocks.configuration.allow_message_expectations_on_nil` to `true`. To disallow expectations on `nil`, set `RSpec::Mocks.configuration.allow_message_expectations_on_nil` to `false`. Called from /builds/gitlab-org/gitlab/spec/models/environment_spec.rb:1442:in `block (6 levels) in <top (required)>'.1206 is expected to be truthy1207 with the environment stopped1208 is expected to be falsy1209 when sample metrics are not enabled1210 is expected to be falsy1211 when the environment is unavailable1212 is expected to be falsy1213 #has_running_deployments?1214 return false when no deployments exist1215 when deployment is running on the environment1216 return true1217 #metrics1218 when the environment has metrics1219 returns the metrics from the deployment service1220 and the prometheus client is not present1221 is expected to be nil1222 when the environment does not have metrics1223 is expected to be nil1224 #additional_metrics1225 when the environment has additional metrics1226 returns the additional metrics from the deployment service1227 when time window arguments are provided1228 queries with the expected parameters1229 when the environment does not have metrics1230 is expected to be nil1231 #slug1232 is automatically generated1233 is not regenerated if name changes1234 regenerates the slug if nil1235 #ref_path1236 returns a path that uses the slug and does not have spaces1237 doesn't change when the slug is nil initially1238 #external_url_for1239 when the public path is not known1240 returns nil1241 when the public path is known1242 external_url: "http://example.com", public_path: "file.html", full_url: "http://example.com/file.html"1243 returns the full external URL1244 external_url: "http://example.com/", public_path: "file.html", full_url: "http://example.com/file.html"1245 returns the full external URL1246 external_url: "http://example.com", public_path: "/file.html", full_url: "http://example.com/file.html"1247 returns the full external URL1248 external_url: "http://example.com/", public_path: "/file.html", full_url: "http://example.com/file.html"1249 returns the full external URL1250 external_url: "http://example.com/subpath", public_path: "public/file.html", full_url: "http://example.com/subpath/public/file.html"1251 returns the full external URL1252 external_url: "http://example.com/subpath/", public_path: "public/file.html", full_url: "http://example.com/subpath/public/file.html"1253 returns the full external URL1254 external_url: "http://example.com/subpath", public_path: "/public/file.html", full_url: "http://example.com/subpath/public/file.html"1255 returns the full external URL1256 external_url: "http://example.com/subpath/", public_path: "/public/file.html", full_url: "http://example.com/subpath/public/file.html"1257 returns the full external URL1258 #prometheus_adapter1259 calls prometheus adapter service1260 #knative_services_finder1261 environment has no deployments1262 is expected to be nil1263 environment has a deployment1264 with no cluster associated1265 is expected to be nil1266 with a cluster associated1267 calls the service finder1268 #auto_stop_in1269 when environment will be expired1270 returns when it will expire1271 when environment is not expired1272 is expected to be nil1273 #auto_stop_in=1274 value: "2 days", expected_result: 1728001275 new assignment sets correct auto_stop_in1276 is expected to eq 1728001277 resets older value1278 is expected to eq 1728001279 value: "1 week", expected_result: 6048001280 new assignment sets correct auto_stop_in1281 is expected to eq 6048001282 resets older value1283 is expected to eq 6048001284 value: "2h20min", expected_result: 84001285 new assignment sets correct auto_stop_in1286 is expected to eq 84001287 resets older value1288 is expected to eq 84001289 value: "abcdef", expected_result: ChronicDuration::DurationParseError1290 new assignment sets correct auto_stop_in1291 is expected to raise ChronicDuration::DurationParseError1292 resets older value1293 is expected to raise ChronicDuration::DurationParseError1294 value: "", expected_result: nil1295 new assignment sets correct auto_stop_in1296 is expected to eq nil1297 resets older value1298 is expected to eq nil1299 value: nil, expected_result: nil1300 new assignment sets correct auto_stop_in1301 is expected to eq nil1302 resets older value1303 is expected to eq nil1304 value: "never", expected_result: nil1305 new assignment sets correct auto_stop_in1306 is expected to eq nil1307 resets older value1308 is expected to eq nil1309 .for_id_and_slug1310 is expected not to be nil1311 .find_or_create_by_name1312 finds an existing environment if it exists1313 creates an environment if it does not exist1314 #destroy1315 remove the deployment refs from gitaly1316 .count_by_state1317 returns zero state counts when environments are empty1318 when environments are not empty1319 returns the environments count grouped by state1320 returns the environments count grouped by state with zero value1321 #has_opened_alert?1322 when environment has an triggered alert1323 is expected to equal true1324 when environment has an resolved alert1325 is expected to equal false1326 when environment does not have an alert1327 is expected to equal false1328 #cancel_deployment_jobs!1329 cancels an active deployment job1330 when deployable does not exist1331 does not raise an error1332 #rollout_status1333 environment does not have a deployment board available1334 is expected to be nil1335 cached rollout status is present1336 fetches the rollout status from the deployment platform1337 cached rollout status is not present yet1338 falls back to a loading status1339 #ingresses1340 when rollout status is available1341 fetches ingresses from the deployment platform1342 when rollout status is not available1343 does nothing1344 #patch_ingress1345 when rollout status is available1346 fetches ingresses from the deployment platform1347 when rollout status is not available1348 does nothing1349 #clear_all_caches1350 clears all caches on the environment1351 #should_link_to_merge_requests?1352 when environment is foldered1353 when environment is production tier1354 is expected to eq true1355 when environment is development tier1356 is expected to eq false1357 when environment is unfoldered1358 when environment is production tier1359 is expected to eq true1360 when environment is development tier1361 is expected to eq true1362 #deploy_freezes1363 returns the freeze periods of the associated project1364 caches the freeze periods1365 #deployed_and_updated_before1366 excludes environments with recent deployments1367 includes environments with no deployments1368 excludes environments that have been recently updated with no deployments1369 excludes environments that have been recently updated with stale deployments1370gitlab:usage data take tasks1371 dump_sql_in_yaml1372 dumps SQL queries in yaml format1373 dump_sql_in_json1374 dumps SQL queries in json format1375 dump_non_sql_in_json1376 dumps non SQL data in json format1377 generate_sql_metrics_fixture1378 generates fixture file correctly1379 generate_and_send1380 generates and sends Service Ping payload1381MergeRequests::CreateService1382 #execute1383 valid params1384 creates an MR1385 does not execute hooks1386 refreshes the number of open merge requests1387 creates exactly 1 create MR event1388 sets the merge_status to preparing1389 when marked with /draft1390 in title and in description1391 sets MR to draft1392 in description only1393 sets MR to draft1394 when merge request is assigned to someone1395 is expected to eq [#<User id:267 @user51>]1396 when reviewer is assigned1397 is expected to eq [#<User id:270 @user53>]1398 invalidates counter cache for reviewers1399 when head pipelines already exist for merge request source branch1400 sets head pipeline1401 when the new pipeline is associated with an old sha1402 sets an old pipeline with associated with the latest sha as the head pipeline1403 when there are no pipelines with the diff head sha1404 does not set the head pipeline1405 Pipelines for merge requests1406 when .[MASKED].yml has merge_requests keywords1407 creates a detached merge request pipeline and sets it as a head pipeline1408 when merge request is submitted from forked project1409 create detached merge request pipeline for fork merge request1410 when there are no commits between source branch and target branch1411 does not create a detached merge request pipeline1412 when branch pipeline was created before a merge request pipline has been created1413 sets the latest detached merge request pipeline as the head pipeline1414 when .[MASKED].yml does not have merge_requests keywords1415 does not create a detached merge request pipeline1416 when .[MASKED].yml is invalid1417 persists a pipeline with config error1418 after_save callback to store_mentions1419 when mentionable attributes change1420 saves mentions1421 when mentionable attributes do not change1422 does not call store_mentions1423 when save fails1424 does not call store_mentions1425 with a milestone1426 deletes the cache key for milestone merge request counter1427 behaves like reviewer_ids filter1428 filter_reviewer1429 without reviewer_ids1430 contains no reviewer_ids1431 with reviewer_ids1432 when the current user can admin the merge_request1433 with a reviewer who can read the merge_request1434 contains reviewers who can read the merge_request1435 when the current_user cannot admin the merge_request1436 contains no reviewers1437 when called in a transaction1438 does not raise an error1439 behaves like issuable record that supports quick actions1440 with labels in command only1441 attaches labels to issuable1442 with labels in params and command1443 attaches all labels to issuable1444 with assignee and milestone in command only1445 assigns and sets milestone to issuable1446 Quick actions1447 with assignee and milestone in params and command1448 assigns and sets milestone to issuable from command1449 merge request create service1450 asssignee_id1451 removes assignee_id when user id is invalid1452 removes assignee_id when user id is 01453 saves assignee when user id is valid1454 when assignee is set1455 invalidates open merge request counter for assignees when merge request is assigned1456 records the assignee assignment event1457 when issuable feature is private1458 removes not authorized assignee when project is Internal1459 removes not authorized assignee when project is Public1460 behaves like when source and target projects are different1461 when user can not access source project1462 raises an error1463 when user can not access target project1464 raises an error1465 when the user has access to both projects1466 creates the merge request1467 does not create the merge request when the target project is archived1468 when user sets source project id1469 ignores source_project_id1470MergeRequests::SquashService1471 #execute1472 when there is only one commit in the merge request1473 returns the squashed commit SHA1474 cleans up the temporary directory1475 does not keep the branch push event1476 when there is a single commit in the merge request1477 will still perform the squash1478 when squash message matches commit message1479 returns that commit SHA1480 does not perform any git actions1481 when squash message matches commit message but without trailing new line1482 returns that commit SHA1483 does not perform any git actions1484 the squashed commit1485 copies the author info from the merge request1486 sets the current user as the committer1487 has the same diff as the merge request, but a different SHA1488 has a default squash commit message if no message was provided1489 if a message was provided1490 has the same message as the message provided1491 when squashing only new files1492 returns the squashed commit SHA1493 cleans up the temporary directory1494 does not keep the branch push event1495 when there is a single commit in the merge request1496 will still perform the squash1497 when squash message matches commit message1498 returns that commit SHA1499 does not perform any git actions1500 when squash message matches commit message but without trailing new line1501 returns that commit SHA1502 does not perform any git actions1503 the squashed commit1504 copies the author info from the merge request1505 sets the current user as the committer1506 has the same diff as the merge request, but a different SHA1507 has a default squash commit message if no message was provided1508 if a message was provided1509 has the same message as the message provided1510 when squashing is disabled by default on the project1511 returns the squashed commit SHA1512 cleans up the temporary directory1513 does not keep the branch push event1514 when there is a single commit in the merge request1515 will still perform the squash1516 when squash message matches commit message1517 returns that commit SHA1518 does not perform any git actions1519 when squash message matches commit message but without trailing new line1520 returns that commit SHA1521 does not perform any git actions1522 the squashed commit1523 copies the author info from the merge request1524 sets the current user as the committer1525 has the same diff as the merge request, but a different SHA1526 has a default squash commit message if no message was provided1527 if a message was provided1528 has the same message as the message provided1529 when squashing is forbidden on the project1530 raises a squash error1531 when squashing is enabled by default on the project1532 returns the squashed commit SHA1533 cleans up the temporary directory1534 does not keep the branch push event1535 when there is a single commit in the merge request1536 will still perform the squash1537 when squash message matches commit message1538 returns that commit SHA1539 does not perform any git actions1540 when squash message matches commit message but without trailing new line1541 returns that commit SHA1542 does not perform any git actions1543 the squashed commit1544 copies the author info from the merge request1545 sets the current user as the committer1546 has the same diff as the merge request, but a different SHA1547 has a default squash commit message if no message was provided1548 if a message was provided1549 has the same message as the message provided1550 when squashing with files too large to display1551 returns the squashed commit SHA1552 cleans up the temporary directory1553 does not keep the branch push event1554 when there is a single commit in the merge request1555 will still perform the squash1556 when squash message matches commit message1557 returns that commit SHA1558 does not perform any git actions1559 when squash message matches commit message but without trailing new line1560 returns that commit SHA1561 does not perform any git actions1562 the squashed commit1563 copies the author info from the merge request1564 sets the current user as the committer1565 has the same diff as the merge request, but a different SHA1566 has a default squash commit message if no message was provided1567 if a message was provided1568 has the same message as the message provided1569 git errors1570 with an error in Gitaly UserSquash RPC1571 logs the error1572 returns an error1573 when any other exception is thrown1574 logs the error1575 returns an error1576 cleans up the temporary directory1577Issues::CloseService1578 #execute1579 checks if the user is authorized to update the issue1580 does not close the issue when the user is not authorized to do so1581 closes the external issue even when the user is not authorized to do so1582 closes the issue when the user is authorized to do so1583 refreshes the number of open issues1584 invalidates counter cache for assignees1585 does not change escalation status1586 when skip_authorization is true1587 does close the issue even if user is not authorized1588 issue is incident type1589 creates a new escalation resolved escalation status1590 behaves like an incident management tracked event1591 .track_event1592 tracks the event using redis1593 behaves like Snowplow event tracking with RedisHLL context1594 behaves like Snowplow event tracking1595 is emitted1596 when there is an escalation status1597 changes escalations status to resolved1598 adds a system note1599 adds a timeline event1600 when the escalation status did not change to resolved1601 does not create a system note1602 does not create a timeline event1603 #close_issue1604 with external issue1605 with an active external issue tracker supporting close_issue1606 closes the issue on the external issue tracker1607 with inactive external issue tracker supporting close_issue1608WARNING: An expectation of `:close_issue` was set on `nil`. To allow expectations on `nil` and suppress this message, set `RSpec::Mocks.configuration.allow_message_expectations_on_nil` to `true`. To disallow expectations on `nil`, set `RSpec::Mocks.configuration.allow_message_expectations_on_nil` to `false`. Called from /builds/gitlab-org/gitlab/spec/services/issues/close_service_spec.rb:179:in `block (5 levels) in <top (required)>'.1609 does not close the issue on the external issue tracker1610 with an active external issue tracker not supporting close_issue1611 does not close the issue on the external issue tracker1612 closed by a merge request1613 mentions closure via a merge request1614 behaves like records an onboarding progress action1615 is expected to receive execute({:action=>:issue_auto_closed}) 1 time1616 updating `metrics.first_mentioned_in_commit_at`1617 when `metrics.first_mentioned_in_commit_at` is not set1618 uses the first commit authored timestamp1619 when `metrics.first_mentioned_in_commit_at` is already set1620 does not update the metrics1621 when merge request has no commits1622 does not update the metrics1623 closed by a commit1624 mentions closure via a commit1625 valid params1626 verifies the number of queries1627 closes the issue1628 records closed user1629 sends notification1630 creates resource state event about the issue being closed1631 marks todos as done1632 deletes milestone issue counters cache1633 when closing the issue fails1634 does not assign a closed_by value for the issue1635 when there is an associated Alert Management Alert1636 when alert can be resolved1637 resolves an alert and sends a system note1638 when alert cannot be resolved1639 writes a warning into the log1640 when there are several associated Alert Management Alerts1641 when alerts can be resolved1642 resolves an alert and sends a system note1643 behaves like does not record an onboarding progress action1644 is expected not to receive new(*(any args)) 0 times1645 when issue is not confidential1646 executes issue hooks1647 when issue is confidential1648 executes confidential issue hooks1649 internal issues disabled1650 does not close the issue1651Gitlab::Auth::OAuth::User1652 .find_by_uid_and_provider1653 retrieves the correct user1654 #persisted?1655 finds an existing user based on uid and provider (facebook)1656 returns false if user is not found in database1657 #save1658 when account exists on server1659 does not mark the user as external1660 signup1661 marks user as having password_automatically_set1662 when signup is disabled1663 creates the user1664 does not repeat the default user password1665 has the password length within specified range1666 when user confirmation email is enabled1667 creates and confirms the user anyway1668 when the current minimum password length is different from the default minimum password length1669 creates the user1670 with auto_link_user disabled (default)1671 provider is marked as external1672 marks user as external1673 provider was external, now has been removed1674 does not mark external user as internal1675 provider is not external1676 when adding a new OAuth identity1677 does not promote an external user to internal1678 with new allow_single_sign_on enabled syntax1679 creates a user from Omniauth1680 with old allow_single_sign_on enabled syntax1681 creates a user from Omniauth1682 with new allow_single_sign_on disabled syntax1683 throws an error1684 with old allow_single_sign_on disabled (Default)1685 throws an error1686 with auto_link_user enabled for a different provider1687 and a current GitLab user with a matching email1688 adds the OmniAuth identity to the GitLab user account1689 and no current GitLab user with a matching email1690 provider is marked as external1691 marks user as external1692 provider was external, now has been removed1693 does not mark external user as internal1694 provider is not external1695 when adding a new OAuth identity1696 does not promote an external user to internal1697 with new allow_single_sign_on enabled syntax1698 creates a user from Omniauth1699 with old allow_single_sign_on enabled syntax1700 creates a user from Omniauth1701 with new allow_single_sign_on disabled syntax1702 throws an error1703 with old allow_single_sign_on disabled (Default)1704 throws an error1705 with auto_link_user enabled for the correct provider1706 and a current GitLab user with a matching email1707 adds the OmniAuth identity to the GitLab user account1708 and no current GitLab user with a matching email1709 provider is marked as external1710 marks user as external1711 provider was external, now has been removed1712 does not mark external user as internal1713 provider is not external1714 when adding a new OAuth identity1715 does not promote an external user to internal1716 with new allow_single_sign_on enabled syntax1717 creates a user from Omniauth1718 with old allow_single_sign_on enabled syntax1719 creates a user from Omniauth1720 with new allow_single_sign_on disabled syntax1721 throws an error1722 with old allow_single_sign_on disabled (Default)1723 throws an error1724 with auto_link_user enabled for all providers1725 and a current GitLab user with a matching email1726 adds the OmniAuth identity to the GitLab user account1727 and no current GitLab user with a matching email1728 provider is marked as external1729 marks user as external1730 provider was external, now has been removed1731 does not mark external user as internal1732 provider is not external1733 when adding a new OAuth identity1734 does not promote an external user to internal1735 with new allow_single_sign_on enabled syntax1736 creates a user from Omniauth1737 with old allow_single_sign_on enabled syntax1738 creates a user from Omniauth1739 with new allow_single_sign_on disabled syntax1740 throws an error1741 with old allow_single_sign_on disabled (Default)1742 throws an error1743 with auto_link_ldap_user disabled (default)1744 provider is marked as external1745 marks user as external1746 provider was external, now has been removed1747 does not mark external user as internal1748 provider is not external1749 when adding a new OAuth identity1750 does not promote an external user to internal1751 with new allow_single_sign_on enabled syntax1752 creates a user from Omniauth1753 with old allow_single_sign_on enabled syntax1754 creates a user from Omniauth1755 with new allow_single_sign_on disabled syntax1756 throws an error1757 with old allow_single_sign_on disabled (Default)1758 throws an error1759 and other providers1760 when sync_name is disabled1761 updates the gl_user name1762 when sync_name is enabled1763 updates the gl_user name1764 with auto_link_ldap_user enabled1765 and no LDAP provider defined1766 provider is marked as external1767 marks user as external1768 provider was external, now has been removed1769 does not mark external user as internal1770 provider is not external1771 when adding a new OAuth identity1772 does not promote an external user to internal1773 with new allow_single_sign_on enabled syntax1774 creates a user from Omniauth1775 with old allow_single_sign_on enabled syntax1776 creates a user from Omniauth1777 with new allow_single_sign_on disabled syntax1778 throws an error1779 with old allow_single_sign_on disabled (Default)1780 throws an error1781 and at least one LDAP provider is defined1782 and a corresponding LDAP person1783 and no account for the LDAP user1784 when the LDAP user is found by UID1785 does not repeat the default user password1786 creates a user with dual LDAP and omniauth identities1787 has name and email set as synced1788 has name and email set as read-only1789 has synced attributes provider set to ldapmain1790 when the LDAP user is found by email address1791 creates the LDAP identity1792 and LDAP user has an account already1793 when sync_name is disabled1794 does not update the user name1795 when sync_name is enabled1796 updates the user name1797 when an LDAP person is not found by uid1798 tries to find an LDAP person by email and adds the omniauth identity to the user1799 when also not found by email1800 tries to find an LDAP person by DN and adds the omniauth identity to the user1801 when there is an LDAP connection error1802 does not save the identity1803 and a corresponding LDAP person with a non-default username1804 and no account for the LDAP user1805 creates a user favoring the LDAP username and strips email domain1806 and no corresponding LDAP person1807 provider is marked as external1808 marks user as external1809 provider was external, now has been removed1810 does not mark external user as internal1811 provider is not external1812 when adding a new OAuth identity1813 does not promote an external user to internal1814 with new allow_single_sign_on enabled syntax1815 creates a user from Omniauth1816 with old allow_single_sign_on enabled syntax1817 creates a user from Omniauth1818 with new allow_single_sign_on disabled syntax1819 throws an error1820 with old allow_single_sign_on disabled (Default)1821 throws an error1822 with both auto_link_user and auto_link_ldap_user enabled1823 and at least one LDAP provider is defined1824 and a corresponding LDAP person1825 and no account for the LDAP user1826 creates a user with dual LDAP and omniauth identities1827 has name and email set as synced1828 has name and email set as read-only1829 has synced attributes provider set to ldapmain1830 and LDAP user has an account already1831 adds the omniauth identity to the LDAP account1832 blocking1833 signup with SAML1834 does not repeat the default user password1835 behaves like being blocked on creation1836 when blocking on creation1837 creates a blocked user1838 when a sign up user cap has been set up but has not been reached yet1839 still creates a blocked user1840 behaves like not being blocked on creation1841 when not blocking on creation1842 creates a non-blocked user1843 signup with omniauth only1844 behaves like being blocked on creation1845 when blocking on creation1846 creates a blocked user1847 when a sign up user cap has been set up but has not been reached yet1848 still creates a blocked user1849 behaves like not being blocked on creation1850 when not blocking on creation1851 creates a non-blocked user1852 signup with linked omniauth and LDAP account1853 and no account for the LDAP user1854 behaves like being blocked on creation1855 when blocking on creation1856 creates a blocked user1857 when a sign up user cap has been set up but has not been reached yet1858 still creates a blocked user1859 behaves like not being blocked on creation1860 when not blocking on creation1861 creates a non-blocked user1862 and LDAP user has an account already1863 behaves like not being blocked on creation1864 when not blocking on creation1865 creates a non-blocked user1866 behaves like not being blocked on creation1867 when not blocking on creation1868 creates a non-blocked user1869 sign-in1870 behaves like not being blocked on creation1871 when not blocking on creation1872 creates a non-blocked user1873 behaves like not being blocked on creation1874 when not blocking on creation1875 creates a non-blocked user1876 behaves like not being blocked on creation1877 when not blocking on creation1878 creates a non-blocked user1879 behaves like not being blocked on creation1880 when not blocking on creation1881 creates a non-blocked user1882 ensure backwards compatibility with sync email from provider option1883 when provider sets an email1884 updates the user email1885 has email set as synced1886 has email set as read-only1887 has synced attributes provider set to my-provider1888 when provider doesn't set an email1889 does not update the user email1890 has email set as not synced1891 does not have email set as read-only1892 generating username1893 when no collision with existing user1894 generates the username with no counter1895 when collision with existing user1896 generates the username with a counter1897 when username is a reserved word1898 generates the username with a counter1899 updating email with sync profile1900 when provider sets an email1901 updates the user email1902 has email set as synced1903 has email set as read-only1904 has synced attributes provider set to my-provider1905 when provider doesn't set an email1906 does not update the user email1907 has email set as not synced1908 does not have email set as read-only1909 updating name1910 when provider sets a name1911 updates the user name1912 when provider doesn't set a name1913 does not update the user name1914 updating location1915 when provider sets a location1916 updates the user location1917 when provider doesn't set a location1918 does not update the user location1919 updating user info1920 update all info1921 updates the user email1922 updates the user name1923 updates the user location1924 sets my-provider as the attributes provider1925 update only requested info1926 updates the user name1927 updates the user location1928 does not update the user email1929 update default_scope1930 updates the user email1931 update no info when profile sync is nil1932 does not have sync_attribute1933 does not update the user email1934 does not update the user name1935 does not update the user location1936 does not create associated user synced attributes metadata1937 when gl_user is nil1938 does not raise NoMethodError1939 ._uid_and_provider1940 normalizes extern_uid1941 #find_ldap_person1942 when LDAP connection fails1943 returns nil1944 #bypass_two_factor?1945 when with allow_bypass_two_factor disabled (Default)1946 when with allow_bypass_two_factor enabled1947 when provider in allow_bypass_two_factor array1948 when provider not in allow_bypass_two_factor array1949 #protocol_name1950 is OAuth1951ApplicationSettings::UpdateService1952 updating terms1953 when the passed terms are blank1954 does not create terms1955 when passing terms1956 creates the terms1957 does not create terms if they are the same as the existing ones1958 updates terms if they already existed1959 only queries once when the terms are changed1960 updating outbound_local_requests_whitelist1961 when params is blank1962 does not add to allowlist1963 when param add_to_outbound_local_requests_whitelist contains values1964 adds to allowlist1965 when param outbound_local_requests_allowlist_raw is passed1966 overwrites the existing allowlist1967 markdown cache invalidators1968 behaves like invalidates markdown cache1969 increments cache1970 behaves like invalidates markdown cache1971 increments cache1972 behaves like invalidates markdown cache1973 increments cache1974 behaves like invalidates markdown cache1975 increments cache1976 behaves like invalidates markdown cache1977 increments cache1978 when also setting the local_markdown_version1979 does not increment1980 do not invalidate if value does not change1981 does not increment1982 performance bar settings1983 params_performance_bar_enabled: true, params_performance_bar_allowed_group_path: "", previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: nil, expected_valid: true1984 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true1985 adds errors to the model for invalid params1986 params_performance_bar_enabled: true, params_performance_bar_allowed_group_path: "", previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: nil, expected_valid: true1987 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true1988 adds errors to the model for invalid params1989 params_performance_bar_enabled: true, params_performance_bar_allowed_group_path: nil, previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: nil, expected_valid: true1990 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true1991 adds errors to the model for invalid params1992 params_performance_bar_enabled: true, params_performance_bar_allowed_group_path: nil, previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: nil, expected_valid: true1993 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true1994 adds errors to the model for invalid params1995 params_performance_bar_enabled: true, params_performance_bar_allowed_group_path: "foo", previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: nil, expected_valid: false1996 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true1997 adds errors to the model for invalid params1998 params_performance_bar_enabled: true, params_performance_bar_allowed_group_path: "foo", previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: 42000000, expected_valid: false1999 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2000 adds errors to the model for invalid params2001 params_performance_bar_enabled: true, params_performance_bar_allowed_group_path: "group_a", previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: 42000000, expected_valid: true2002 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2003 adds errors to the model for invalid params2004 params_performance_bar_enabled: true, params_performance_bar_allowed_group_path: "group_b", previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: 43000000, expected_valid: true2005 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2006 adds errors to the model for invalid params2007 params_performance_bar_enabled: true, params_performance_bar_allowed_group_path: "group_b/", previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: 43000000, expected_valid: true2008 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2009 adds errors to the model for invalid params2010 params_performance_bar_enabled: true, params_performance_bar_allowed_group_path: "group_a", previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: 42000000, expected_valid: true2011 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2012 adds errors to the model for invalid params2013 params_performance_bar_enabled: false, params_performance_bar_allowed_group_path: "", previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: nil, expected_valid: true2014 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2015 adds errors to the model for invalid params2016 params_performance_bar_enabled: false, params_performance_bar_allowed_group_path: "", previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: nil, expected_valid: true2017 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2018 adds errors to the model for invalid params2019 params_performance_bar_enabled: false, params_performance_bar_allowed_group_path: nil, previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: nil, expected_valid: true2020 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2021 adds errors to the model for invalid params2022 params_performance_bar_enabled: false, params_performance_bar_allowed_group_path: nil, previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: nil, expected_valid: true2023 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2024 adds errors to the model for invalid params2025 params_performance_bar_enabled: false, params_performance_bar_allowed_group_path: "foo", previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: nil, expected_valid: true2026 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2027 adds errors to the model for invalid params2028 params_performance_bar_enabled: false, params_performance_bar_allowed_group_path: "foo", previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: nil, expected_valid: true2029 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2030 adds errors to the model for invalid params2031 params_performance_bar_enabled: false, params_performance_bar_allowed_group_path: "group_a", previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: nil, expected_valid: true2032 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2033 adds errors to the model for invalid params2034 params_performance_bar_enabled: false, params_performance_bar_allowed_group_path: "group_b", previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: nil, expected_valid: true2035 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2036 adds errors to the model for invalid params2037 params_performance_bar_enabled: false, params_performance_bar_allowed_group_path: "group_a", previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: nil, expected_valid: true2038 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2039 adds errors to the model for invalid params2040 params_performance_bar_enabled: nil, params_performance_bar_allowed_group_path: "", previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: nil, expected_valid: true2041 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2042 adds errors to the model for invalid params2043 params_performance_bar_enabled: nil, params_performance_bar_allowed_group_path: "foo", previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: nil, expected_valid: false2044 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2045 adds errors to the model for invalid params2046 params_performance_bar_enabled: nil, params_performance_bar_allowed_group_path: "group_a", previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: 42000000, expected_valid: true2047 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2048 adds errors to the model for invalid params2049 when :performance_bar_allowed_group_path is not present2050 does not change the performance bar settings2051 when :performance_bar_enabled is not present2052 implicitly defaults to true2053 when external authorization is enabled2054 does not validate labels if external authorization gets disabled2055 does validate labels if external authorization gets enabled2056 does validate labels if external authorization is left unchanged2057 does not save the settings with an error if the service denies access2058 saves the setting when the user has access to the label2059 does not validate the label if it was not passed2060 when raw_blob_request_limit is passsed2061 updates raw_blob_request_limit value2062 when protected path settings are passed2063 updates protected path settings2064 when general rate limits are passed2065 updates general throttle settings2066 when package registry rate limits are passed2067 updates package registry throttle settings2068 when files API rate limits are passed2069 updates files API throttle settings2070 when deprecated API rate limits are passed2071 updates deprecated API throttle settings2072 when git lfs rate limits are passed2073 updates git lfs throttle settings2074 when issues_create_limit is passed2075 updates issues_create_limit value2076 when users_get_by_id_limit and users_get_by_id_limit_allowlist_raw are passed2077 updates users_get_by_id_limit and users_get_by_id_limit_allowlist value2078 when require_admin_approval_after_user_signup changes2079 when it goes from enabled to disabled2080 calls ApproveBlockedPendingApprovalUsersWorker2081 when it goes from disabled to enabled2082 does not call ApproveBlockedPendingApprovalUsersWorker2083Gitlab::Utils::StrongMemoize2084 # order random2085 #strong_memoize2086 with value2087 raises exception for invalid type as key2088 raises exception for invalid characters in key2089 behaves like caching the value2090 only calls the block once2091 returns and defines the instance variable for the exact value2092 with value false2093 raises exception for invalid type as key2094 raises exception for invalid characters in key2095 behaves like caching the value2096 only calls the block once2097 returns and defines the instance variable for the exact value2098 with value true2099 raises exception for invalid type as key2100 raises exception for invalid characters in key2101 behaves like caching the value2102 only calls the block once2103 returns and defines the instance variable for the exact value2104 with value value2105 raises exception for invalid type as key2106 raises exception for invalid characters in key2107 behaves like caching the value2108 only calls the block once2109 returns and defines the instance variable for the exact value2110 with value 02111 raises exception for invalid type as key2112 raises exception for invalid characters in key2113 behaves like caching the value2114 only calls the block once2115 returns and defines the instance variable for the exact value2116 with value [0]2117 raises exception for invalid type as key2118 raises exception for invalid characters in key2119 behaves like caching the value2120 only calls the block once2121 returns and defines the instance variable for the exact value2122 memory allocation2123 for Symbol2124 does allocate exactly one string when fetching value2125 does allocate exactly one string when storing value2126 for String2127 does allocate exactly one string when fetching value2128 does allocate exactly one string when storing value2129 #clear_memoization2130 behaves like clearing memoization2131 removes the instance variable2132 behaves like clearing memoization2133 removes the instance variable2134 #strong_memoize_with_expiration2135 with value2136 raises exception for invalid type as key2137 raises exception for invalid characters in key2138 behaves like caching the value2139 only calls the block once2140 returns and defines the instance variable for the exact value2141 with value false2142 raises exception for invalid type as key2143 raises exception for invalid characters in key2144 behaves like caching the value2145 only calls the block once2146 returns and defines the instance variable for the exact value2147 with value true2148 raises exception for invalid type as key2149 raises exception for invalid characters in key2150 behaves like caching the value2151 only calls the block once2152 returns and defines the instance variable for the exact value2153 with value value2154 raises exception for invalid type as key2155 raises exception for invalid characters in key2156 behaves like caching the value2157 only calls the block once2158 returns and defines the instance variable for the exact value2159 with value 02160 raises exception for invalid type as key2161 raises exception for invalid characters in key2162 behaves like caching the value2163 only calls the block once2164 returns and defines the instance variable for the exact value2165 with value [0]2166 raises exception for invalid type as key2167 raises exception for invalid characters in key2168 behaves like caching the value2169 only calls the block once2170 returns and defines the instance variable for the exact value2171 value memoization test2172 caches the value for specified number of seconds2173 #strong_memoized?2174 behaves like memoization check2175 for method_name2176 returns false if the value is uncached2177 returns true if the value is cached2178 behaves like memoization check2179 for enabled?2180 returns false if the value is uncached2181 returns true if the value is cached2182 .normalize_key2183 input: :key, output: :key, valid: true2184 is expected to eq :key2185 is a valid ivar name2186 input: "key", output: "key", valid: true2187 is expected to eq "key"2188 is a valid ivar name2189 input: :key?, output: "key?", valid: true2190 is expected to eq "key?"2191 is a valid ivar name2192 input: "key?", output: "key?", valid: true2193 is expected to eq "key?"2194 is a valid ivar name2195 input: :key!, output: "key!", valid: true2196 is expected to eq "key!"2197 is a valid ivar name2198 input: "key!", output: "key!", valid: true2199 is expected to eq "key!"2200 is a valid ivar name2201 input: :"ke?y", output: :"ke?y", valid: false2202 is expected to eq :"ke?y"2203 raises a NameError error2204 input: "ke?y", output: "ke?y", valid: false2205 is expected to eq "ke?y"2206 raises a NameError error2207 input: :"ke!y", output: :"ke!y", valid: false2208 is expected to eq :"ke!y"2209 raises a NameError error2210 input: "ke!y", output: "ke!y", valid: false2211 is expected to eq "ke!y"2212 raises a NameError error2213 #strong_memoize_with2214 with value2215 only calls the block once2216 returns and defines the instance variable for the exact value2217 with value false2218 only calls the block once2219 returns and defines the instance variable for the exact value2220 with value true2221 only calls the block once2222 returns and defines the instance variable for the exact value2223 with value value2224 only calls the block once2225 returns and defines the instance variable for the exact value2226 with value 02227 only calls the block once2228 returns and defines the instance variable for the exact value2229 with value [0]2230 only calls the block once2231 returns and defines the instance variable for the exact value2232 .strong_memoize_attr2233 with value ''2234 memoized after method definition2235 calls the existing .method_added2236 retains method arity2237 behaves like caching the value2238 only calls the block once2239 returns and defines the instance variable for the exact value2240 with value 'false'2241 memoized after method definition2242 calls the existing .method_added2243 retains method arity2244 behaves like caching the value2245 only calls the block once2246 returns and defines the instance variable for the exact value2247 with value 'true'2248 memoized after method definition2249 calls the existing .method_added2250 retains method arity2251 behaves like caching the value2252 only calls the block once2253 returns and defines the instance variable for the exact value2254 with value 'value'2255 memoized after method definition2256 calls the existing .method_added2257 retains method arity2258 behaves like caching the value2259 only calls the block once2260 returns and defines the instance variable for the exact value2261 with value '0'2262 memoized after method definition2263 calls the existing .method_added2264 retains method arity2265 behaves like caching the value2266 only calls the block once2267 returns and defines the instance variable for the exact value2268 with value '[0]'2269 memoized after method definition2270 calls the existing .method_added2271 retains method arity2272 behaves like caching the value2273 only calls the block once2274 returns and defines the instance variable for the exact value2275 method visibility2276 sets private visibility2277 sets protected visibility2278 sets public visibility2279 when method doesn't exist2280 fails when strong-memoizing a nonexistent method2281 when memoized method has parameters2282 raises an error2283Ci::JobEntity2284 contains started2285 contains complete to indicate if a pipeline is completed2286 contains paths to job page action2287 does not contain sensitive information2288 contains whether it is playable2289 contains timestamps2290 contains details2291 contains queued_at2292 contains queued_duration2293 when job is retryable2294 contains cancel path2295 when job is cancelable2296 contains cancel path2297 when job is a regular job2298 does not contain path to play action2299 is not a playable build2300 when job is a manual action2301 when user is allowed to trigger action2302 contains path to play action2303 is a playable action2304 when user is not allowed to trigger action2305 does not contain path to play action2306 is not a playable action2307 when job is scheduled2308 contains path to unschedule action2309 contains scheduled_at2310 when job is running2311 contains started_at2312 when job is generic commit status2313 contains paths to target action2314 does not contain paths to other action paths2315 contains timestamps2316 contains details2317 when job failed2318 contains details2319 states that it failed2320 indicates the failure reason on tooltip2321 includes a callout message with a verbose output2322 states that it is not recoverable2323 when job is allowed to fail2324 contains details2325 states that it failed2326 indicates the failure reason on tooltip2327 includes a callout message with a verbose output2328 states that it is not recoverable2329 when the job failed with a script failure2330 does not include callout message or recoverable keys2331 when job failed and is recoverable2332 states it is recoverable2333 when job passed2334 does not include callout message or recoverable keys2335 when job is a bridge2336 does not include build path2337 does not include cancel path2338Types::ProjectType2339 is expected to expose permissions using Types::PermissionTypes::Project2340 is expected to eq "Project"2341 is expected to require graphql authorizations :read_project2342 has the expected fields2343 count2344 returns valid projects count2345 container_registry_enabled2346 with `enabled` visibility2347 with non member user2348 returns true2349 with `private` visibility2350 with reporter user2351 returns true2352 with guest user2353 returns false2354 sast_ci_configuration2355 returns the project's sast configuration for global variables2356 returns the project's sast configuration for pipeline variables2357 returns the project's sast configuration for analyzer variables2358 with guest user2359 when project is private2360 returns no configuration2361 when project is public2362 when repository is accessible by everyone2363 returns the project's sast configuration for global variables2364 with non-member user2365 when project is private2366 returns no configuration2367 when project is public2368 when repository is accessible by everyone2369 returns the project's sast configuration for global variables2370 when repository is accessible only by team members2371 returns no configuration2372 with empty repository2373 raises an error2374 issue field2375 is expected to have graphql type Types::IssueType2376 is expected to have graphql resolver #<Class:0x00007f7e2cc46010>2377 issues field2378 is expected to have graphql type Types::IssueConnection2379 is expected to have graphql resolver Resolvers::ProjectIssuesResolver2380 merge_request field2381 is expected to have graphql type Types::MergeRequestType2382 is expected to have graphql resolver Resolvers::MergeRequestResolver2383 is expected to have graphql arguments :iid2384 merge_requests field2385 is expected to have graphql type #<Class:0x00007f7e3ade7690>2386 is expected to have graphql resolver Resolvers::ProjectMergeRequestsResolver2387 is expected to have graphql arguments :iids, :source_branches, :target_branches, :state, :draft, :approved, :labels, :before, :after, :first, :last, :merged_after, :merged_before, :created_after, :created_before, :updated_after, :updated_before, :author_username, :assignee_username, :reviewer_username, :milestone_title, :not, and :sort2388 pipelineCounts field2389 is expected to have graphql type Types::Ci::PipelineCountsType2390 is expected to have graphql resolver Resolvers::Ci::ProjectPipelineCountsResolver2391 snippets field2392 is expected to have graphql type #<Class:0x00007f7e2cf01b10>2393 is expected to have graphql resolver Resolvers::Projects::SnippetsResolver2394 grafana_integration field2395 is expected to have graphql type Types::GrafanaIntegrationType2396 is expected to have graphql resolver Resolvers::Projects::GrafanaIntegrationResolver2397 environments field2398 is expected to have graphql type #<Class:0x00007f7e2cc08b70>2399 is expected to have graphql resolver Resolvers::EnvironmentsResolver2400 environment field2401 is expected to have graphql type Types::EnvironmentType2402 is expected to have graphql resolver #<Class:0x00007f7e2cc6dc50>2403 members field2404 is expected to have graphql type #<Class:0x00007f7e3159eb40>2405 is expected to have graphql resolver Resolvers::ProjectMembersResolver2406 boards field2407 is expected to have graphql type #<Class:0x00007f7e32a4cbf0>2408 jira_imports field2409 is expected to have graphql type #<Class:0x00007f7e2cffac60>2410 services field2411 is expected to have graphql type #<Class:0x00007f7e2d10bfc8>2412 releases field2413 is expected to have graphql type Types::ReleaseType2414 is expected to have graphql resolver Resolvers::ReleaseResolver2415 release field2416 is expected to have graphql type #<Class:0x00007f7e31741b28>2417 is expected to have graphql resolver Resolvers::ReleasesResolver2418 container expiration policy field2419 is expected to have graphql type Types::ContainerExpirationPolicyType2420 packages cleanup policy field2421 is expected to have graphql type Types::Packages::Cleanup::PolicyType2422 terraform state field2423 is expected to have graphql type Types::Terraform::StateType2424 is expected to have graphql resolver #<Class:0x00007f7e2d40a5a8>2425 terraform states field2426 is expected to have graphql type #<Class:0x00007f7e2d411150>2427 is expected to have graphql resolver Resolvers::Terraform::StatesResolver2428 timelogs field2429 finds timelogs for project2430 behaves like a GraphQL type with labels2431 has label fields2432 label field2433 is expected to have graphql type Types::LabelType2434 is expected to have graphql arguments :title2435 labels field2436 is expected to have graphql type #<Class:0x00007f7e30b96058>2437 is expected to have graphql arguments :search_term and :includeAncestorGroups2438 jira_imports2439 when project has Jira imports2440 retrieves the imports2441 when project does not have Jira imports2442 returns an empty result2443 pipeline_analytics field2444 is expected to have graphql type Types::Ci::AnalyticsType2445 is expected to have graphql resolver Resolvers::ProjectPipelineStatisticsResolver2446 jobs field2447 is expected to have graphql type #<Class:0x00007f7e450eec08>2448 is expected to have graphql arguments :statuses and :with_artifacts2449 ci_template field2450 is expected to have graphql type Types::Ci::TemplateType2451 is expected to have graphql arguments :name2452 ci_job_token_scope field2453 is expected to have graphql type Types::Ci::JobTokenScopeType2454 is expected to have graphql resolver Resolvers::Ci::JobTokenScopeResolver2455 incident_management_timeline_event_tags field2456 is expected to have graphql type Types::IncidentManagement::TimelineEventTagType2457 agent_configurations2458 returns configured agents2459 cluster_agents2460 returns associated cluster agents2461 returns count of cluster agents2462 cluster_agent2463 returns associated cluster agents2464 returns count of agent tokens2465 service_desk_address2466 when a user can admin issues2467 is present2468 when a user can not admin issues2469 is empty2470 branch_rules2471 when a user can read protected branches2472 is present and correct2473 when a user cannot read protected branches2474 is empty2475 timeline_event_tags2476 when user has permissions to read project2477 contains timeline event tags2478 languages2479 when the languages haven't been detected yet2480 returns an empty array2481 when the languages were detected before2482 returns the repository languages2483 visible_forks2484 contains all forks2485 with minimum_access_level DEVELOPER2486 contains forks with developer access2487Gitlab::ImportExport::Project::ObjectBuilder2488 request store is not active2489 ignore cache initialize2490 request store is active2491 initialize cache in memory2492 cache object when first time find the object2493 read from cache when object has been cached2494 labels2495 finds the existing group label2496 finds the existing group label in root ancestor2497 creates a new project label2498 milestones2499 finds the existing group milestone2500 finds the existing group milestone in root ancestor2501 creates a new milestone2502 with clashing iid2503 creates milestone and claims iid for the new milestone2504 merge_request2505 finds the existing merge_request2506 creates a new merge_request2507 merge request diff commit users2508 finds the existing user2509 creates a new user2510 merge request diff commits2511 when the "committer" object is present2512 uses this object as the committer2513 when the "committer" object is missing2514 creates one from the committer name and Email2515 when the "commit_author" object is present2516 uses this object as the author2517 when the "commit_author" object is missing2518 creates one from the author name and Email2519 #find_or_create_diff_commit_user2520 caches the results2521 when the user already exists2522 returns the existing user2523 when the user does not exist2524 creates the user2525SubmoduleHelper2526 as view helpers in view context2527 behaves like submodule_links2528 submodule on self2529 detects ssh on standard port2530 detects ssh on standard port without a username2531 detects ssh on non-standard port2532 detects ssh on non-standard port without a username2533 detects http on standard port2534 detects http on non-standard port2535 works with relative_url_root2536 works with subgroups2537 submodule on gist.github.com2538 detects ssh2539 detects http2540 detects https2541 handles urls with no .git on the end2542 returns original with non-standard url2543 submodule on github.com2544 detects ssh2545 detects http2546 detects https2547 handles urls with no .git on the end2548 returns original with non-standard url2549 in-repository submodule2550 in-repository2551 submodule on gitlab.com2552 detects ssh2553 detects http2554 detects https2555 handles urls with no .git on the end2556 handles urls with trailing whitespace2557 returns original with non-standard url2558 submodule on unsupported2559 sanitizes unsupported protocols2560 sanitizes unsupported protocols disguised as a repository URL2561 sanitizes invalid URL with extended ASCII2562 returns original2563 submodules with relative links2564 handles project under same group2565 handles trailing whitespace2566 handles project under another top group2567 repo path resolves to be located at root (namespace absent)2568 returns nil2569 repo path resolves to be located underneath current project path2570 returns nil because it is not possible to have repo nested under another repo2571 subgroup2572 handles referencing descendent group's project2573 handles referencing another top group's project2574 project in sub group2575 handles referencing ancestor group's project2576 personal project2577 handles referencing another personal project2578 unknown submodule2579 returns no links2580 as stand-alone module2581 behaves like submodule_links2582 submodule on self2583 detects ssh on standard port2584 detects ssh on standard port without a username2585 detects ssh on non-standard port2586 detects ssh on non-standard port without a username2587 detects http on standard port2588 detects http on non-standard port2589 works with relative_url_root2590 works with subgroups2591 submodule on gist.github.com2592 detects ssh2593 detects http2594 detects https2595 handles urls with no .git on the end2596 returns original with non-standard url2597 submodule on github.com2598 detects ssh2599 detects http2600 detects https2601 handles urls with no .git on the end2602 returns original with non-standard url2603 in-repository submodule2604 in-repository2605 submodule on gitlab.com2606 detects ssh2607 detects http2608 detects https2609 handles urls with no .git on the end2610 handles urls with trailing whitespace2611 returns original with non-standard url2612 submodule on unsupported2613 sanitizes unsupported protocols2614 sanitizes unsupported protocols disguised as a repository URL2615 sanitizes invalid URL with extended ASCII2616 returns original2617 submodules with relative links2618 handles project under same group2619 handles trailing whitespace2620 handles project under another top group2621 repo path resolves to be located at root (namespace absent)2622 returns nil2623 repo path resolves to be located underneath current project path2624 returns nil because it is not possible to have repo nested under another repo2625 subgroup2626 handles referencing descendent group's project2627 handles referencing another top group's project2628 project in sub group2629 handles referencing ancestor group's project2630 personal project2631 handles referencing another personal project2632 unknown submodule2633 returns no links2634Discussion2635 .lazy_find2636 batches requests2637 .build2638 returns a discussion of the right type2639 .build_collection2640 returns an array of discussions of the right type2641 authorization2642 delegates to the first note2643 #cache_key2644 returns the cache key2645 when discussion is resolved2646 returns the cache key with resolved at2647 #to_global_id2648 with a single DiffNote discussion2649 returns GID on Discussion class2650 with multiple DiffNotes discussion2651 returns GID on Discussion class2652 with discussions on issue2653 with a single Note2654 returns GID on Discussion class2655 with multiple Notes2656 returns GID on Discussion class2657 with system notes2658 returns GID on Discussion class2659Database::BatchedBackgroundMigrationWorker2660 behaves like it runs batched background migration jobs2661 defining the job attributes2662 defines the data_consistency as always2663 defines the feature_category as database2664 defines the idempotency as true2665 .tracking_database2666 does not raise an error2667 overrides the method to return the tracking database2668 .lease_key2669 does not raise an error2670 returns the lease key2671 .enabled?2672 returns true when execute_batched_migrations_on_schedule feature flag is enabled2673 returns false when execute_batched_migrations_on_schedule feature flag is disabled2674 #perform2675 when the base model does not exist2676 does nothing (PENDING: because the base model for main exists)2677 logs a message indicating execution is skipped (PENDING: because the base model for main exists)2678 when the base model does exist2679 when the tracking database is shared2680 does nothing (PENDING: Skipping because database main exists)2681 when the tracking database is not shared2682 when the execute_batched_migrations_on_schedule feature flag is disabled2683 does nothing2684 when the execute_batched_migrations_on_schedule feature flag is enabled2685 when database config is shared2686 does nothing2687 when no active migrations exist2688 does nothing2689 when active migrations exist2690 delegetes the execution to ExecutionWorker2691 executing an entire migration2692 marks the migration record as finished2693 creates job records for each processed batch2694 marks all job records as succeeded2695 updates matching records in the range2696 does not update non-matching records in the range2697 health status2698 puts migration on hold when there is autovaccum activity on related tables2699 puts migration on hold when the pending WAL count is above the limit2700Issues::ExportCsvService2701 renders csv to string2702 #email2703 emails csv2704 renders with a target filesize2705 includes2706 with export_csv_preload_in_batches feature flag disabled2707 behaves like exports CSVs for issues2708 includes the columns required for import2709 returns two issues2710 iid2711 url2712 title2713 state2714 description2715 author name2716 author username2717 assignee name2718 assignee username2719 confidential2720 milestone2721 labels2722 due_date2723 created_at2724 updated_at2725 closed_at2726 discussion_locked2727 weight2728 time estimate2729 time spent2730 with issues filtered by labels and project2731 returns only filtered objects2732 with label links2733 does not run a query for each label link2734 returns the labels in sorted order2735 with export_csv_preload_in_batches feature flag enabled2736 behaves like exports CSVs for issues2737 includes the columns required for import2738 returns two issues2739 iid2740 url2741 title2742 state2743 description2744 author name2745 author username2746 assignee name2747 assignee username2748 confidential2749 milestone2750 labels2751 due_date2752 created_at2753 updated_at2754 closed_at2755 discussion_locked2756 weight2757 time estimate2758 time spent2759 with issues filtered by labels and project2760 returns only filtered objects2761 with label links2762 does not run a query for each label link2763 returns the labels in sorted order2764 with minimal details2765 renders labels as nil2766DesignManagement::DeleteDesignsService2767 #execute2768 when the feature is not available2769 does not create any events in the activity stream2770 behaves like a service error2771 returns an error2772 when the feature is available2773 is able to delete designs2774 no designs were passed2775 does not log any events2776 does not log any UsageData metrics2777 behaves like a top-level error2778 raises an en expected error2779 one design is passed2780 removes that design2781 logs a deletion event2782 updates UsageData for removed designs2783 creates an event in the activity stream2784 informs the new-version-worker2785 creates a new version2786 returns the new version2787 removes the design from the current design list2788 marks the design as deleted2789 schedules deleting todos for that design2790 behaves like a success2791 returns successfully2792 saves the user as the author2793 behaves like issue_edit snowplow tracking2794 behaves like Snowplow event tracking with RedisHLL context2795 behaves like Snowplow event tracking2796 is emitted2797 more than one design is passed2798 makes the correct changes2799 schedules deleting todos for that design2800 behaves like a success2801 returns successfully2802 saves the user as the author2803 after executing the service2804 removes the removed designs from the current design list2805 does not make the designs impossible to find2806 associates the new version with all the designs2807 marks all deleted designs as deleted2808 marks all deleted designs with the same deletion version2809 scalability2810 makes the same number of DB requests for one design as for several2811WebHookService2812 #initialize2813 when SystemHook2814 when local requests are allowed2815 is expected to be truthy2816 when local requests are not allowed2817 is expected to be falsey2818 when ProjectHook2819 when local requests are allowed2820 is expected to be truthy2821 when local requests are not allowed2822 is expected to be falsey2823 #disabled?2824 forced: false, executable: true, disabled: false2825 is expected to have attributes {:disabled? => false}2826 forced: false, executable: false, disabled: true2827 is expected to have attributes {:disabled? => true}2828 forced: true, executable: true, disabled: false2829 is expected to have attributes {:disabled? => false}2830 forced: true, executable: false, disabled: false2831 is expected to have attributes {:disabled? => false}2832 #execute2833 POSTs the data as JSON and returns expected headers2834 catches exceptions2835 does not execute disabled hooks2836 executes and registers the hook with the recursion detection2837 blocks and logs if a recursive web hook is detected2838 blocks and logs if the recursion count limit would be exceeded2839 handles exceptions2840 handles 200 status code2841 handles 2xx status codes2842 when there is an interpolation error2843 logs the error2844 when there are URL variables2845 POSTs to the interpolated URL, and logs the hook.url2846 there is userinfo2847 POSTs to the interpolated URL, and logs the hook.url2848 when token is defined2849 POSTs to the webhook URL2850 when the data is a Gitlab::DataBuilder::Pipeline2851 can log the request payload2852 when auth credentials are present2853 uses the credentials2854 when auth credentials are partial present2855 uses the credentials anyways2856 when url is not encoded2857 handles exceptions2858 when request body size is too big2859 does not perform the request2860 execution logging2861 with success2862 queues LogExecutionWorker correctly2863 queues LogExecutionWorker correctly, resulting in a log record (integration-style test)2864 does not log in the service itself2865 when forced2866 logs execution inline2867 with bad request2868 queues LogExecutionWorker correctly2869 with exception2870 queues LogExecutionWorker correctly2871 with unsafe response body2872 queues LogExecutionWorker with sanitized response_body2873 with oversize response body2874 queues LogExecutionWorker with stripped response_body2875 with massive amount of headers2876 queues LogExecutionWorker with limited amount of headers2877 with oversize header2878 queues LogExecutionWorker with stripped header value2879 with log data exceeding Sidekiq limit2880 queues LogExecutionWorker with request_data overrided in the second attempt2881 new log data still exceeds limit2882 raises an exception2883 #async_execute2884 when rate limiting is not configured2885 queues a worker without tracking the call2886 when rate limiting is configured2887 queues a worker and tracks the call2888 when the hook is throttled (via mock)2889 does not queue a worker and logs an error2890 when the hook is throttled (via Redis)2891 stops queueing workers and logs errors2892 still queues workers for other hooks2893 recursion detection2894 does not queue a worker and logs an error if the call chain limit would be exceeded2895 does not queue a worker and logs an error if a recursive call chain is detected2896 when hook has custom context attributes2897 includes the attributes in the worker context2898Gitlab::AlertManagement::Payload::Prometheus2899 behaves like subclass has expected api2900 defines all public methods in the base class2901 #title2902 behaves like parsable alert payload field2903 behaves like parsable alert payload field with fallback2904 without payload2905 is expected to eq nil2906 with annotations/title2907 is expected to eq "some value"2908 with annotations/summary2909 is expected to eq "some value"2910 with labels/alertname2911 is expected to eq "some value"2912 #description2913 behaves like parsable alert payload field2914 behaves like parsable alert payload field with fallback2915 without payload2916 is expected to eq nil2917 with annotations/description2918 is expected to eq "some value"2919 #annotations2920 behaves like parsable alert payload field2921 behaves like parsable alert payload field with fallback2922 without payload2923 is expected to eq nil2924 with annotations2925 is expected to eq "some value"2926 #status2927 behaves like parsable alert payload field2928 behaves like parsable alert payload field with fallback2929 without payload2930 is expected to eq nil2931 with status2932 is expected to eq "some value"2933 #starts_at2934 without payload2935 is expected to eq 2023-05-25 18:16:39.000000000 +00002936 with startsAt2937 is expected to eq 2023-05-25 18:06:39.000000000 +00002938 #ends_at2939 without payload2940 is expected to be nil2941 with endsAt2942 is expected to eq 2023-05-25 18:16:40.000000000 +00002943 #generator_url2944 behaves like parsable alert payload field2945 behaves like parsable alert payload field with fallback2946 without payload2947 is expected to eq nil2948 with generatorURL2949 is expected to eq "some value"2950 #runbook2951 behaves like parsable alert payload field2952 behaves like parsable alert payload field with fallback2953 without payload2954 is expected to eq nil2955 with annotations/runbook2956 is expected to eq "some value"2957 #alert_markdown2958 behaves like parsable alert payload field2959 behaves like parsable alert payload field with fallback2960 without payload2961 is expected to eq nil2962 with annotations/gitlab_incident_markdown2963 is expected to eq "some value"2964 #environment_name2965 behaves like parsable alert payload field2966 behaves like parsable alert payload field with fallback2967 without payload2968 is expected to eq nil2969 with labels/gitlab_environment_name2970 is expected to eq "some value"2971 #gitlab_y_label2972 behaves like parsable alert payload field2973 behaves like parsable alert payload field with fallback2974 without payload2975 is expected to eq nil2976 with annotations/gitlab_y_label2977 is expected to eq "some value"2978 with annotations/title2979 is expected to eq "some value"2980 with annotations/summary2981 is expected to eq "some value"2982 with labels/alertname2983 is expected to eq "some value"2984 #monitoring_tool2985 is expected to eq "Prometheus"2986 #full_query2987 generator_url: nil, expected_query: nil2988 is expected to eq nil2989 generator_url: "http://localhost", expected_query: nil2990 is expected to eq nil2991 generator_url: "invalid url", expected_query: nil2992 is expected to eq nil2993 generator_url: "http://localhost:9090/graph?g1.expr=vector%281%29", expected_query: nil2994 is expected to eq nil2995 generator_url: "http://localhost:9090/graph?g0.expr=vector%281%29", expected_query: "vector(1)"2996 is expected to eq "vector(1)"2997 #environment2998 is expected to be nil2999 with environment_name3000 is expected to be nil3001 with matching environment3002 is expected to eq #<Environment id: 224, project_id: 504, name: "production", created_at: "2023-05-25 18:16:40.96248392...stop_at: nil, auto_delete_at: nil, tier: "production", merge_request_id: nil, cluster_agent_id: nil>3003 #gitlab_fingerprint3004 returns a fingerprint3005 #metrics_dashboard_url3006 is expected to eq "http://localhost/namespace559/project-553/-/environments/225/metrics_dashboard?embed_json=%7B%22pane...0%22%7D%5D%7D%5D%7D%5D%7D&embedded=true&end=2018-03-12T09%3A36%3A00Z&start=2018-03-12T08%3A36%3A00Z"3007 without environment3008 is expected to be nil3009 without full query3010 is expected to be nil3011 without title3012 is expected to be nil3013 #has_required_attributes?3014 is expected to be truthy3015 without project3016 is expected to be falsey3017 without title3018 is expected to be falsey3019 without startsAt3020 is expected to be falsey3021 without payload3022 is expected to be falsey3023 #severity3024 when set3025 payload_severity: "critical", expected_severity: :critical3026 is expected to eq :critical3027 payload_severity: "high", expected_severity: :high3028 is expected to eq :high3029 payload_severity: "medium", expected_severity: :medium3030 is expected to eq :medium3031 payload_severity: "low", expected_severity: :low3032 is expected to eq :low3033 payload_severity: "info", expected_severity: :info3034 is expected to eq :info3035 payload_severity: "s1", expected_severity: :critical3036 is expected to eq :critical3037 payload_severity: "s2", expected_severity: :high3038 is expected to eq :high3039 payload_severity: "s3", expected_severity: :medium3040 is expected to eq :medium3041 payload_severity: "s4", expected_severity: :low3042 is expected to eq :low3043 payload_severity: "s5", expected_severity: :info3044 is expected to eq :info3045 payload_severity: "p1", expected_severity: :critical3046 is expected to eq :critical3047 payload_severity: "p2", expected_severity: :high3048 is expected to eq :high3049 payload_severity: "p3", expected_severity: :medium3050 is expected to eq :medium3051 payload_severity: "p4", expected_severity: :low3052 is expected to eq :low3053 payload_severity: "p5", expected_severity: :info3054 is expected to eq :info3055 payload_severity: "CRITICAL", expected_severity: :critical3056 is expected to eq :critical3057 payload_severity: "cRiTiCaL", expected_severity: :critical3058 is expected to eq :critical3059 payload_severity: "S1", expected_severity: :critical3060 is expected to eq :critical3061 payload_severity: "unmapped", expected_severity: nil3062 is expected to eq nil3063 payload_severity: 1, expected_severity: nil3064 is expected to eq nil3065 payload_severity: nil, expected_severity: nil3066 is expected to eq nil3067 payload_severity: "debug", expected_severity: :info3068 is expected to eq :info3069 payload_severity: "information", expected_severity: :info3070 is expected to eq :info3071 payload_severity: "notice", expected_severity: :info3072 is expected to eq :info3073 payload_severity: "warn", expected_severity: :low3074 is expected to eq :low3075 payload_severity: "warning", expected_severity: :low3076 is expected to eq :low3077 payload_severity: "minor", expected_severity: :low3078 is expected to eq :low3079 payload_severity: "error", expected_severity: :medium3080 is expected to eq :medium3081 payload_severity: "major", expected_severity: :high3082 is expected to eq :high3083 payload_severity: "emergency", expected_severity: :critical3084 is expected to eq :critical3085 payload_severity: "fatal", expected_severity: :critical3086 is expected to eq :critical3087 payload_severity: "alert", expected_severity: :medium3088 is expected to eq :medium3089 payload_severity: "page", expected_severity: :high3090 is expected to eq :high3091 without key3092 is expected to be nil3093 #source3094 is expected to eq "Prometheus"3095 with alerting integration provided3096 is expected to eq "INTEGRATION"3097Packages::Debian::ProcessPackageFileService3098 # order random3099 #lease_key3100 with a changes file3101 is expected to eq "packages:debian:process_package_file_service:505_sample_1.2.3~alpha2"3102 with a package file3103 is expected to eq "packages:debian:process_package_file_service:505_sample_1.2.3~alpha2"3104 #execute3105 with a changes file3106 behaves like common validations3107 with package file without Debian metadata3108 behaves like raises error3109 raises error3110 with already processed package file3111 behaves like raises error3112 raises error3113 without a distribution3114 behaves like raises error3115 raises error3116 when there is a matching published package in another distribution3117 behaves like raises error3118 raises error3119 with distribution_name3120 behaves like raises error3121 raises error3122 with component_name3123 behaves like raises error3124 raises error3125 with crafted file_metadata3126 with missing Source field3127 behaves like raises error3128 raises error3129 with missing Version field3130 behaves like raises error3131 raises error3132 with missing Distribution field3133 behaves like raises error3134 raises error3135 when lease is already taken3136 behaves like does nothing3137 does nothing3138 when there is no matching published package3139 behaves like updates package and changes file3140 updates package and changes file3141 when there is a matching published package3142 reuses existing package and update package file3143 when there is a matching published package pending destruction3144 behaves like updates package and changes file3145 updates package and changes file3146 with a package file3147 with a deb3148 with Debian package file3149 behaves like common validations3150 with package file without Debian metadata3151 behaves like raises error3152 raises error3153 with already processed package file3154 behaves like raises error3155 raises error3156 without a distribution3157 behaves like raises error3158 raises error3159 when there is a matching published package in another distribution3160 behaves like raises error3161 raises error3162 without distribution name3163 behaves like raises error3164 raises error3165 without component name3166 behaves like raises error3167 raises error3168 with invalid package file type3169 behaves like raises error3170 raises error3171 when lease is already taken3172 behaves like does nothing3173 does nothing3174 when there is no matching published package3175 behaves like updates package and package file3176 updates package and package file3177 with suite as distribution name3178 behaves like updates package and package file3179 updates package and package file3180 when there is a matching published package3181 reuses existing package and update package file3182 when there is a matching published package pending destruction3183 behaves like updates package and package file3184 updates package and package file3185 with an udeb3186 with Debian package file3187 behaves like common validations3188 with package file without Debian metadata3189 behaves like raises error3190 raises error3191 with already processed package file3192 behaves like raises error3193 raises error3194 without a distribution3195 behaves like raises error3196 raises error3197 when there is a matching published package in another distribution3198 behaves like raises error3199 raises error3200 without distribution name3201 behaves like raises error3202 raises error3203 without component name3204 behaves like raises error3205 raises error3206 with invalid package file type3207 behaves like raises error3208 raises error3209 when lease is already taken3210 behaves like does nothing3211 does nothing3212 when there is no matching published package3213 behaves like updates package and package file3214 updates package and package file3215 with suite as distribution name3216 behaves like updates package and package file3217 updates package and package file3218 when there is a matching published package3219 reuses existing package and update package file3220 when there is a matching published package pending destruction3221 behaves like updates package and package file3222 updates package and package file3223 with an ddeb3224 with Debian package file3225 behaves like common validations3226 with package file without Debian metadata3227 behaves like raises error3228 raises error3229 with already processed package file3230 behaves like raises error3231 raises error3232 without a distribution3233 behaves like raises error3234 raises error3235 when there is a matching published package in another distribution3236 behaves like raises error3237 raises error3238 without distribution name3239 behaves like raises error3240 raises error3241 without component name3242 behaves like raises error3243 raises error3244 with invalid package file type3245 behaves like raises error3246 raises error3247 when lease is already taken3248 behaves like does nothing3249 does nothing3250 when there is no matching published package3251 behaves like updates package and package file3252 updates package and package file3253 with suite as distribution name3254 behaves like updates package and package file3255 updates package and package file3256 when there is a matching published package3257 reuses existing package and update package file3258 when there is a matching published package pending destruction3259 behaves like updates package and package file3260 updates package and package file3261ResourceEvents::ChangeStateService3262 #execute3263 when resource is an Issue3264 when no source is given3265 behaves like a state event3266 creates the expected event if resource has opened state3267 sets the created_at timestamp from the system_note_timestamp3268 creates the expected event if resource has reopened state3269 sets the created_at timestamp from the system_note_timestamp3270 creates the expected event if resource has closed state3271 sets the created_at timestamp from the system_note_timestamp3272 creates the expected event if resource has locked state3273 sets the created_at timestamp from the system_note_timestamp3274 when source commit is given3275 behaves like a state event3276 creates the expected event if resource has opened state3277 sets the created_at timestamp from the system_note_timestamp3278 creates the expected event if resource has reopened state3279 sets the created_at timestamp from the system_note_timestamp3280 creates the expected event if resource has closed state3281 sets the created_at timestamp from the system_note_timestamp3282 creates the expected event if resource has locked state3283 sets the created_at timestamp from the system_note_timestamp3284 when source merge request is given3285 behaves like a state event3286 creates the expected event if resource has opened state3287 sets the created_at timestamp from the system_note_timestamp3288 creates the expected event if resource has reopened state3289 sets the created_at timestamp from the system_note_timestamp3290 creates the expected event if resource has closed state3291 sets the created_at timestamp from the system_note_timestamp3292 creates the expected event if resource has locked state3293 sets the created_at timestamp from the system_note_timestamp3294 when resource is a MergeRequest3295 when no source is given3296 behaves like a state event3297 creates the expected event if resource has opened state3298 sets the created_at timestamp from the system_note_timestamp3299 creates the expected event if resource has reopened state3300 sets the created_at timestamp from the system_note_timestamp3301 creates the expected event if resource has closed state3302 sets the created_at timestamp from the system_note_timestamp3303 creates the expected event if resource has locked state3304 sets the created_at timestamp from the system_note_timestamp3305 when source commit is given3306 behaves like a state event3307 creates the expected event if resource has opened state3308 sets the created_at timestamp from the system_note_timestamp3309 creates the expected event if resource has reopened state3310 sets the created_at timestamp from the system_note_timestamp3311 creates the expected event if resource has closed state3312 sets the created_at timestamp from the system_note_timestamp3313 creates the expected event if resource has locked state3314 sets the created_at timestamp from the system_note_timestamp3315 when source merge request is given3316 behaves like a state event3317 creates the expected event if resource has opened state3318 sets the created_at timestamp from the system_note_timestamp3319 creates the expected event if resource has reopened state3320 sets the created_at timestamp from the system_note_timestamp3321 creates the expected event if resource has closed state3322 sets the created_at timestamp from the system_note_timestamp3323 creates the expected event if resource has locked state3324 sets the created_at timestamp from the system_note_timestamp3325Gitlab::Database::WithLockRetries3326 #run3327 requires block3328 when DISABLE_LOCK_RETRIES is set3329 executes the passed block without retrying3330 when lock retry is enabled3331 lock_fiber3332 acquires lock successfully3333 after 3 iterations3334 behaves like retriable exclusive lock on `projects`3335 succeeds executing the given block3336 setting the idle transaction timeout3337 when there is no outer transaction: disable_ddl_transaction! is set in the migration3338 does not disable the idle transaction timeout3339 when there is outer transaction: disable_ddl_transaction! is not set in the migration3340 disables the idle transaction timeout so the code can sleep and retry3341 after the retries are exhausted3342 when there is no outer transaction: disable_ddl_transaction! is set in the migration3343 does not disable the lock_timeout3344 when there is outer transaction: disable_ddl_transaction! is not set in the migration3345 disables the lock_timeout3346 after the retries, without setting lock_timeout3347 behaves like retriable exclusive lock on `projects`3348 succeeds executing the given block3349 after the retries, when requested to raise an error3350 raises an error instead of waiting indefinitely for the lock3351 when statement timeout is reached3352 raises QueryCanceled error3353 restore local database variables3354 is expected not to change `connection.execute("SHOW lock_timeout").to_a`3355 is expected not to change `connection.execute("SHOW idle_in_transaction_session_timeout").to_a`3356 casting durations correctly3357 executes `SET LOCAL lock_timeout` using the configured timeout value in milliseconds3358 calls `sleep` after the first iteration fails, using the configured sleep time3359 Stop using subtransactions - allow_savepoints: false3360 prevents running inside already open transaction3361 does not raise the error if not inside open transaction3362Gitlab::Usage::MetricDefinition3363 has all definitons valid3364 not_removed3365 includes metrics that are not removed3366 #with_instrumentation_class3367 includes definitions with instrumentation_class3368 with removed metric3369 excludes removed definitions3370 #key3371 returns a symbol from name3372 #validate3373 attribute: :description, value: nil3374 raise exception3375 with skip_validation3376 raise exception if skip_validation: false3377 does not raise exception if has skip_validation: true3378 attribute: :value_type, value: nil3379 raise exception3380 with skip_validation3381 raise exception if skip_validation: false3382 does not raise exception if has skip_validation: true3383 attribute: :value_type, value: "test"3384 raise exception3385 with skip_validation3386 raise exception if skip_validation: false3387 does not raise exception if has skip_validation: true3388 attribute: :status, value: nil3389 raise exception3390 with skip_validation3391 raise exception if skip_validation: false3392 does not raise exception if has skip_validation: true3393 attribute: :milestone, value: nil3394 raise exception3395 with skip_validation3396 raise exception if skip_validation: false3397 does not raise exception if has skip_validation: true3398 attribute: :data_category, value: nil3399 raise exception3400 with skip_validation3401 raise exception if skip_validation: false3402 does not raise exception if has skip_validation: true3403 attribute: :key_path, value: nil3404 raise exception3405 with skip_validation3406 raise exception if skip_validation: false3407 does not raise exception if has skip_validation: true3408 attribute: :product_group, value: nil3409 raise exception3410 with skip_validation3411 raise exception if skip_validation: false3412 does not raise exception if has skip_validation: true3413 attribute: :time_frame, value: nil3414 raise exception3415 with skip_validation3416 raise exception if skip_validation: false3417 does not raise exception if has skip_validation: true3418 attribute: :time_frame, value: "29d"3419 raise exception3420 with skip_validation3421 raise exception if skip_validation: false3422 does not raise exception if has skip_validation: true3423 attribute: :data_source, value: "other"3424 raise exception3425 with skip_validation3426 raise exception if skip_validation: false3427 does not raise exception if has skip_validation: true3428 attribute: :data_source, value: nil3429 raise exception3430 with skip_validation3431 raise exception if skip_validation: false3432 does not raise exception if has skip_validation: true3433 attribute: :distribution, value: nil3434 raise exception3435 with skip_validation3436 raise exception if skip_validation: false3437 does not raise exception if has skip_validation: true3438 attribute: :distribution, value: "test"3439 raise exception3440 with skip_validation3441 raise exception if skip_validation: false3442 does not raise exception if has skip_validation: true3443 attribute: :tier, value: ["test", "ee"]3444 raise exception3445 with skip_validation3446 raise exception if skip_validation: false3447 does not raise exception if has skip_validation: true3448 attribute: :name, value: "count_<adjective_describing>_boards"3449 raise exception3450 with skip_validation3451 raise exception if skip_validation: false3452 does not raise exception if has skip_validation: true3453 attribute: :repair_issue_url, value: nil3454 raise exception3455 with skip_validation3456 raise exception if skip_validation: false3457 does not raise exception if has skip_validation: true3458 attribute: :removed_by_url, value: 13459 raise exception3460 with skip_validation3461 raise exception if skip_validation: false3462 does not raise exception if has skip_validation: true3463 attribute: :performance_indicator_type, value: nil3464 raise exception3465 with skip_validation3466 raise exception if skip_validation: false3467 does not raise exception if has skip_validation: true3468 attribute: :instrumentation_class, value: "Metric_Class"3469 raise exception3470 with skip_validation3471 raise exception if skip_validation: false3472 does not raise exception if has skip_validation: true3473 attribute: :instrumentation_class, value: "metricClass"3474 raise exception3475 with skip_validation3476 raise exception if skip_validation: false3477 does not raise exception if has skip_validation: true3478 conditional validations3479 when metric has broken status3480 has to have repair issue url provided3481 #valid_service_ping_status?3482 when metric has active status3483 has to return true3484 when metric has removed status3485 has to return false3486 statuses3487 status: "active", skip_validation?: false3488 returns true/false for skip_validation3489 status: "broken", skip_validation?: false3490 returns true/false for skip_validation3491 status: "removed", skip_validation?: true3492 returns true/false for skip_validation3493 .load_all!3494 has empty list when there are no definition files3495 has one metric when there is one file3496 when the same metric is defined multiple times raises exception3497 dump_metrics_yaml3498 returns a YAML with both metrics in a sequence3499ContainerRegistry::Path3500 #components3501 splits components by a forward slash3502 #nodes3503 when repository path is valid3504 return all project path like node in reverse order3505 when repository path is invalid3506 rasises en error3507 #to_s3508 when path does not have uppercase characters3509 return a string with a repository path3510 when path has uppercase characters3511 return a string with a repository path3512 #valid?3513 when path has less than two components3514 is expected not to be valid3515 when path has more than allowed number of components3516 is expected not to be valid3517 when path has invalid characters3518 is expected not to be valid3519 when path has two or more components3520 is expected to be valid3521 when path is related to multi-level image3522 is expected to be valid3523 when path contains uppercase letters3524 is expected to be valid3525 when path contains double underscore3526 is expected to be valid3527 when path contains invalid separator with dot3528 is expected not to be valid3529 when path contains invalid separator with underscore3530 is expected not to be valid3531 #has_repository?3532 when project exists3533 when path already has matching repository3534 is expected to have repository3535 is expected to have project3536 when path does not have matching repository3537 is expected not to have repository3538 is expected to have project3539 when project does not exist3540 is expected not to have repository3541 is expected not to have project3542 #repository_project3543 when project for given path exists3544 returns a correct project3545 when project for given path does not exist3546 returns nil3547 when matching multi-level path3548 when using the zero-level path3549 supports zero-level path3550 when using first-level path3551 supports first-level path3552 when using second-level path3553 supports second-level path3554 when using too deep nesting in the path3555 does not support three-levels of nesting3556 #repository_name3557 when project does not exist3558 returns nil3559 when project exists3560 when project path equal repository path3561 returns an empty string3562 when repository path has one additional level3563 returns a correct repository name3564 when repository path has two additional levels3565 returns a correct repository name3566 #project_path3567 when project does not exist3568 returns nil3569 when project with uppercase characters in path exists3570 returns downcased project path3571Pages::MigrateLegacyStorageToDeploymentService3572 calls ::Pages::ZipDirectoryService3573 does not mark pages as not deployed if public directory is absent but invalid entries are not ignored3574 removes pages archive when can not save deployment3575 when mark_projects_as_not_deployed is passed3576 marks pages as not deployed if public directory is absent and invalid entries are ignored3577 does not mark pages as not deployed if public directory is absent but pages_deployment exists3578 when pages site is deployed to legacy storage3579 creates pages deployment3580 removes tmp pages archive3581 does not change pages deployment if it is set3582Issues::SetCrmContactsService3583 #execute3584 when the user has no permission3585 returns expected error response3586 when user has permission3587 but the crm setting is disabled3588 returns expected error response3589 when the contact does not exist3590 returns expected error response3591 when the contact belongs to a different group3592 returns expected error response3593 replace3594 behaves like setting contacts3595 updates the issue with correct contacts3596 behaves like adds system note3597 calls SystemNoteService.change_issuable_contacts with correct counts3598 add3599 behaves like setting contacts3600 updates the issue with correct contacts3601 behaves like adds system note3602 calls SystemNoteService.change_issuable_contacts with correct counts3603 add by email3604 with pure emails in params3605 behaves like setting contacts3606 updates the issue with correct contacts3607 behaves like adds system note3608 calls SystemNoteService.change_issuable_contacts with correct counts3609 with autocomplete prefix emails in params3610 behaves like setting contacts3611 updates the issue with correct contacts3612 behaves like adds system note3613 calls SystemNoteService.change_issuable_contacts with correct counts3614 remove3615 behaves like setting contacts3616 updates the issue with correct contacts3617 behaves like adds system note3618 calls SystemNoteService.change_issuable_contacts with correct counts3619 remove by email3620 with pure email in params3621 behaves like setting contacts3622 updates the issue with correct contacts3623 behaves like adds system note3624 calls SystemNoteService.change_issuable_contacts with correct counts3625 with autocomplete prefix and suffix email in params3626 behaves like setting contacts3627 updates the issue with correct contacts3628 behaves like adds system note3629 calls SystemNoteService.change_issuable_contacts with correct counts3630 when attempting to add more than 63631 returns expected error message3632 when trying to remove non-existent contact3633 returns expected error message3634 when combining params3635 add and remove3636 with contact ids3637 behaves like setting contacts3638 updates the issue with correct contacts3639 with contact emails3640 behaves like setting contacts3641 updates the issue with correct contacts3642 replace and remove3643 returns expected error response3644 replace and add3645 returns expected error response3646 when trying to add an existing issue contact3647 does not return an error3648 when trying to add the same contact twice3649 does not return an error3650 when trying to remove a contact not attached to the issue3651 does not return an error3652Ml::Candidate3653 associations3654 is expected to belong to experiment required: false3655 is expected to belong to project required: false3656 is expected to belong to user required: false3657 is expected to belong to package required: false3658 is expected to belong to ci_build class_name => Ci::Build required: false3659 is expected to have many params3660 is expected to have many metrics3661 is expected to have many metadata3662 modules3663 behaves like AtomicInternalId3664 .has_internal_id3665 Module inclusion3666 is expected to includes the AtomicInternalId module3667 Validation3668 when presence validation is required3669 when creating an object3670 raises an error if the internal id is blank3671 when updating an object3672 raises an error if the internal id is blank3673 when presence validation is not required3674 when creating an object3675 does not raise an error if the internal id is blank (PENDING: No reason given)3676 when updating an object3677 does not raise an error if the internal id is blank (PENDING: No reason given)3678 Creating an instance3679 saves a new instance properly3680 internal id generation3681 calls InternalId.generate_next and sets internal id attribute3682 does not overwrite an existing internal id3683 when the instance has an internal ID set3684 calls InternalId.update_last_value and sets the `last_value` to that of the instance3685 unsetting the instance internal id on rollback3686 when the internal id has been changed3687 when the internal id is automatically set3688 clears it on the instance3689 when the internal id is manually set3690 does not clear it on the instance3691 when the internal id has not been changed3692 preserves the value on the instance3693 supply of internal ids3694 provides a persistent supply of IID values, sensitive to the current state3695 #reset_scope_internal_id_attribute3696 rewinds the allocated IID3697 allocates the same IID3698 default values3699 is expected to be present3700 .destroy3701 destroys metrics, params and metadata, but not the artifact3702 .artifact_root3703 is expected to eq "/ml_experiment_1/1/"3704 .package_version3705 is expected to eq 13706 .eid3707 is expected to eq "91e07c4e-fab4-479e-a086-0e05829292b7"3708 .artifact3709 when has logged artifacts3710 returns the package3711 when does not have logged artifacts3712 is expected to be nil3713 #by_project_id_and_eid3714 when eid exists and belongs to project3715 is expected to eq #<Ml::Candidate id: 1, created_at: "2023-05-25 18:18:16.758408234 +0000", updated_at: "2023-05-25 18:... 86, eid: "1815ce6b-f141-4448-b597-63f1ad73393d", project_id: 539, internal_id: 1, ci_build_id: nil>3716 when eid exists and does not belong to project3717 is expected to be nil3718 when eid does not exist3719 is expected to be nil3720 #by_project_id_and_iid3721 when internal_id exists and belongs to project3722 is expected to eq #<Ml::Candidate id: 1, created_at: "2023-05-25 18:18:16.758408234 +0000", updated_at: "2023-05-25 18:... 86, eid: "1815ce6b-f141-4448-b597-63f1ad73393d", project_id: 539, internal_id: 1, ci_build_id: nil>3723 when internal_id exists and does not belong to project3724 is expected to be nil3725 when internal_id does not exist3726 is expected to be nil3727 #latest_metrics3728 fetches only the last metric for the name3729 #including_relationships3730 loads latest metrics and params3731 #by_name3732 when name matches3733 gets the correct candidates3734 when name matches partially3735 gets the correct candidates3736 when name does not match3737 does not fetch any candidate3738 from_ci?3739 is false if candidate does not have ci_build_id3740 is true if candidate does has ci_build_id3741 #order_by_metric3742 orders correctly3743 when direction is asc3744 orders correctly3745 with loose foreign key on ml_candidates.ci_build_id3746 behaves like cleanup by a loose foreign key3747 cleans up (delete or nullify) the model3748API::Entities::MergeRequestBasic3749 includes expected fields3750 with :with_api_entity_associations scope3751 avoids N+1 queries3752 reviewers3753 includes assigned reviewers3754 squash3755 is expected to eq true3756 squash_on_merge3757 is expected to eq false3758Gitlab::Checks::SingleChangeAccess3759 #validate!3760 without failed checks3761 doesn't raise an error3762 calls pushes checks3763 calls branches checks3764 calls tags checks3765 calls diff checks3766 when time limit was reached3767 raises a TimeoutError3768 #commits3769 with provided commits3770 behaves like #commits3771 returns expected commits3772 returns expected commits on repeated calls3773 without provided commits3774 behaves like #commits3775 returns expected commits3776 returns expected commits on repeated calls3777MergeRequests::OldestPerCommitFinder3778 #execute3779 returns a Hash mapping commit SHAs to their oldest merge requests3780 skips merge requests that are not merged3781 includes the merge request for a merge commit3782 includes a merge request that was squashed into the target branch3783 includes a merge request for both a squash and merge commit3784 includes the oldest merge request when a merge commit is present in a newer merge request3785Gitlab::Redis::RepositoryCache3786 # order random3787 behaves like redis_shared_examples3788 .config_file_name3789 when there is no config file anywhere3790 is expected to be nil3791 .store3792 with old format3793 behaves like redis store3794 instantiates Redis::Store3795 with the namespace3796 uses specified namespace3797 with new format3798 behaves like redis store3799 instantiates Redis::Store3800 with the namespace3801 uses specified namespace3802 .params3803 withstands mutation3804 when url contains unix socket reference3805 with old format3806 returns path key instead3807 with new format3808 returns path key instead3809 when url is host based3810 with old format3811 returns hash with host, port, db, and password3812 with new format3813 rails_env: "development", host: "development-host"3814 returns hash with host, port, db, and password3815 rails_env: "test", host: "test-host"3816 returns hash with host, port, db, and password3817 rails_env: "production", host: "production-host"3818 returns hash with host, port, db, and password3819 with redis cluster format3820 rails_env: "development", host: "development-master"3821 returns hash with cluster and password3822 rails_env: "test", host: "test-master"3823 returns hash with cluster and password3824 rails_env: "production", host: "production-master"3825 returns hash with cluster and password3826 .url3827 withstands mutation3828 when yml file with env variable3829 reads redis url from env variable3830 .version3831 returns a version3832 .with3833 when running on single-threaded runtime3834 instantiates a connection pool with size 53835 when running on multi-threaded runtime3836 instantiates a connection pool with a size based on the concurrency of the worker3837 when there is no config at all3838 can run an empty block3839 #db3840 with old format3841 returns the correct db3842 with new format3843 returns the correct db3844 with cluster-mode3845 returns the correct db3846 #sentinels3847 when sentinels are defined3848 rails_env: "development", hosts: ["development-replica1", "development-replica2"]3849 returns an array of hashes with host and port keys3850 rails_env: "test", hosts: ["test-replica1", "test-replica2"]3851 returns an array of hashes with host and port keys3852 rails_env: "production", hosts: ["production-replica1", "production-replica2"]3853 returns an array of hashes with host and port keys3854 when sentinels are not defined3855 returns nil3856 when cluster is defined3857 returns nil3858 #sentinels?3859 when sentinels are defined3860 returns true3861 when sentinels are not defined3862 is expected to eq nil3863 when cluster is defined3864 returns false3865 #raw_config_hash3866 returns old-style single url config in a hash3867 returns cluster config without url key in a hash3868 #fetch_config3869 raises an exception when the config file contains invalid yaml3870 when redis.yml exists3871 uses config/redis.yml3872 when no config file exsits3873 returns nil3874 when resque.yml exists3875 returns the config from resque.yml3876 #fetch_config3877 when redis.yml exists3878 when the fallback has a redis.yml entry3879 is expected to eq {"fallback redis.yml"=>123}3880 and an instance config file exists3881 is expected to eq {"instance specific file"=>456}3882 and the instance has a redis.yml entry3883 is expected to eq {"instance redis.yml"=>789}3884 when no redis config file exsits3885 returns nil3886 when resque.yml exists3887 returns the config from resque.yml3888 .cache_store3889 has a default ttl of 8 hours3890ExpandVariables3891 #expand3892 table tests3893 behaves like common variable expansion3894 no expansion3895 is expected to eq "key"3896 simple expansion3897 is expected to eq "keyvalue"3898 simple with hash of variables3899 is expected to eq "keyvalue"3900 complex expansion3901 is expected to eq "keyvalue"3902 simple expansions3903 is expected to eq "keyvalueresult"3904 complex expansions3905 is expected to eq "keyvalueresult"3906 out-of-order expansion3907 is expected to eq "keyresultvalue"3908 out-of-order complex expansion3909 is expected to eq "keyresultvalue"3910 review-apps expansion3911 is expected to eq "review/feature/add-review-apps"3912 do not lazily access variables when no expansion3913 is expected to eq "key"3914 lazily access variables3915 is expected to eq "keyvalue"3916 simple expansion using Collection3917 is expected to eq "keyvalue"3918 with missing variables3919 missing variable3920 is expected to eq "key"3921 complex expansions with missing variable3922 is expected to eq "keyvalue"3923 complex expansions with missing variable for Windows3924 is expected to eq "keyvalue"3925 lazily inits variables3926 when expanding variable3927 calls block at most once3928 when no expansion is needed3929 does not call block3930 #expand_existing3931 table tests3932 behaves like common variable expansion3933 no expansion3934 is expected to eq "key"3935 simple expansion3936 is expected to eq "keyvalue"3937 simple with hash of variables3938 is expected to eq "keyvalue"3939 complex expansion3940 is expected to eq "keyvalue"3941 simple expansions3942 is expected to eq "keyvalueresult"3943 complex expansions3944 is expected to eq "keyvalueresult"3945 out-of-order expansion3946 is expected to eq "keyresultvalue"3947 out-of-order complex expansion3948 is expected to eq "keyresultvalue"3949 review-apps expansion3950 is expected to eq "review/feature/add-review-apps"3951 do not lazily access variables when no expansion3952 is expected to eq "key"3953 lazily access variables3954 is expected to eq "keyvalue"3955 simple expansion using Collection3956 is expected to eq "keyvalue"3957 with missing variables3958 missing variable3959 is expected to eq "key$variable"3960 complex expansions with missing variable3961 is expected to eq "keyvalue${variable2}"3962 complex expansions with missing variable for Windows3963 is expected to eq "keyvalue%variable2%"3964 lazily inits variables3965 when expanding variable3966 calls block at most once3967 when no expansion is needed3968 does not call block3969ObjectStorage::Config3970 #credentials3971 is expected to eq {:aws_access_key_id=>"AWS_ACCESS_KEY_ID", :aws_secret_access_key=>"AWS_SECRET_ACCESS_KEY", :provider=>"AWS", :region=>"us-east-1"}3972 #storage_options3973 is expected to eq {:server_side_encryption=>"AES256", :server_side_encryption_kms_key_id=>"arn:aws:12345"}3974 #enabled?3975 is expected to eq true3976 #bucket3977 is expected to eq "test-bucket"3978 #use_iam_profile3979 is expected to equal false3980 #use_path_style3981 is expected to equal false3982 with unconsolidated settings3983 consolidated_settings? returns false3984 is expected to equal false3985 with consolidated settings3986 consolidated_settings? returns true3987 is expected to equal true3988 with IAM profile configured3989 value: true, expected: true3990 coerces the value to a boolean3991 value: "true", expected: true3992 coerces the value to a boolean3993 value: "yes", expected: true3994 coerces the value to a boolean3995 value: false, expected: false3996 coerces the value to a boolean3997 value: "false", expected: false3998 coerces the value to a boolean3999 value: "no", expected: false4000 coerces the value to a boolean4001 value: nil, expected: false4002 coerces the value to a boolean4003 with path style configured4004 value: true, expected: true4005 coerces the value to a boolean4006 value: "true", expected: true4007 coerces the value to a boolean4008 value: "yes", expected: true4009 coerces the value to a boolean4010 value: false, expected: false4011 coerces the value to a boolean4012 value: "false", expected: false4013 coerces the value to a boolean4014 value: "no", expected: false4015 coerces the value to a boolean4016 value: nil, expected: false4017 coerces the value to a boolean4018 with hostname style access4019 #use_path_style? returns false4020 with AWS credentials4021 is expected to eq "AWS"4022 is expected to equal true4023 is expected to equal false4024 is expected to eq {:aws_access_key_id=>"AWS_ACCESS_KEY_ID", :aws_secret_access_key=>"AWS_SECRET_ACCESS_KEY", :provider=>"AWS", :region=>"us-east-1"}4025 with FIPS enabled4026 is expected to eq {:aws_access_key_id=>"AWS_ACCESS_KEY_ID", :aws_secret_access_key=>"AWS_SECRET_ACCESS_KEY", :disable_content_md5_validation=>true, :provider=>"AWS", :region=>"us-east-1"}4027 with Google credentials4028 is expected to eq "Google"4029 is expected to equal false4030 is expected to equal true4031 is expected to eq {}4032 with SSE-KMS enabled4033 is expected to equal true4034 is expected to eq "AES256"4035 is expected to eq "arn:aws:12345"4036 is expected to contain exactly "x-amz-server-side-encryption" and "x-amz-server-side-encryption-aws-kms-key-id"4037 with only server side encryption enabled4038 is expected to equal true4039 is expected to eq "AES256"4040 is expected to be nil4041 is expected to eq {"x-amz-server-side-encryption"=>"AES256"}4042 without encryption enabled4043 is expected to equal false4044 is expected to be nil4045 is expected to be nil4046 is expected to eq {}4047 with object storage disabled4048 is expected to equal false4049Gitlab::Json4050 .parse4051 is aliased4052 legacy_mode is disabled by default4053 parses an object4054 parses an array4055 parses a string4056 parses a true bool4057 parses a false bool4058 legacy_mode is enabled4059 parses an object4060 parses an array4061 raises an error on a string4062 raises an error on a true bool4063 raises an error on a false bool4064 feature flag is disabled4065 parses an object4066 parses an array4067 parses a string4068 parses a true bool4069 parses a false bool4070 .parse!4071 legacy_mode is disabled by default4072 parses an object4073 parses an array4074 parses a string4075 parses a true bool4076 parses a false bool4077 legacy_mode is enabled4078 parses an object4079 parses an array4080 raises an error on a string4081 raises an error on a true bool4082 raises an error on a false bool4083 feature flag is disabled4084 parses an object4085 parses an array4086 parses a string4087 parses a true bool4088 parses a false bool4089 .dump4090 dumps an object4091 dumps an array4092 dumps a string4093 dumps a true bool4094 dumps a false bool4095 .generate4096 is aliased4097 generates JSON4098 allows you to customise the output4099 .pretty_generate4100 generates pretty JSON4101 allows you to customise the output4102 the feature table is missing4103 skips legacy mode handling4104 the database is missing4105 still parses json4106 still generates json4107 Gitlab::Json::GrapeFormatter4108 generates JSON4109 uses Gitlab::Json4110 precompiled JSON4111 renders the string directly4112 calls #to_s on the object4113 doesn't run the JSON formatter4114 Gitlab::Json::PrecompiledJson4115 #to_s4116 obj is a string4117 returns a string4118 obj is an array4119 returns a string4120 obj is an array of un-stringables4121 raises an error4122 obj is something else4123 raises an error4124 Gitlab::Json::LimitedEncoder4125 when object size is acceptable4126 returns json string4127 when object is too big4128 raises LimitExceeded error4129 when object contains ASCII-8BIT encoding4130 does not raise encoding error4131 Gitlab::Json::RailsEncoder4132 is used by ActiveSupport::JSON4133 is used by .to_json calls4134 is consistent with the original JSON implementation4135 behaves the same when processing invalid unicode data4136Gitlab::JsonCache4137 #active?4138 when backend respond to active? method4139 delegates to the underlying cache implementation4140 when backend does not respond to active? method4141 returns true4142 #cache_key4143 namespace: nil, cache_key_strategy: :revision, expanded_key: "foo:8bedc0ff088"4144 is expected to eq "foo:8bedc0ff088"4145 namespace: nil, cache_key_strategy: :version, expanded_key: "foo:16.1.0-pre:6.1.7.2"4146 is expected to eq "foo:16.1.0-pre:6.1.7.2"4147 namespace: "geo", cache_key_strategy: :revision, expanded_key: "geo:foo:8bedc0ff088"4148 is expected to eq "geo:foo:8bedc0ff088"4149 namespace: "geo", cache_key_strategy: :version, expanded_key: "geo:foo:16.1.0-pre:6.1.7.2"4150 is expected to eq "geo:foo:16.1.0-pre:6.1.7.2"4151 when cache_key_strategy is unknown4152 raises KeyError4153 #namespace4154 defaults to nil4155 #strategy_key_component4156 defaults to Gitlab.revision4157 when cache_key_strategy is :revision4158 is expected to eq "8bedc0ff088"4159 when cache_key_strategy is :version4160 is expected to eq ["16.1.0-pre", "6.1.7.2"]4161 when cache_key_strategy is invalid4162 raises KeyError4163 #expire4164 expires the given key from the cache4165 #read4166 reads the given key from the cache4167 returns the cached value when there is data in the cache with the given key4168 returns nil when there is no data in the cache with the given key4169 when the cached value is true4170 parses the cached value4171 when the cached value is false4172 parses the cached value4173 when the cached value is a JSON true value4174 parses the cached value4175 when the cached value is a JSON false value4176 parses the cached value4177 when the cached value is a hash4178 parses the cached value4179 returns nil when klass is nil4180 gracefully handles bad cached entry4181 gracefully handles an empty hash4182 gracefully handles unknown attributes4183 gracefully handles excluded fields from attributes during serialization4184 when the cached value is an array4185 parses the cached value4186 returns an empty array when klass is nil4187 gracefully handles bad cached entry4188 gracefully handles an empty array4189 gracefully handles unknown attributes4190 #write4191 writes value to the cache with the given key4192 writes a string containing a JSON representation of the value to the cache4193 passes options the underlying cache implementation4194 passes options the underlying cache implementation when options is empty4195 passes options the underlying cache implementation when options is nil4196 #fetch4197 requires a block4198 passes options the underlying cache implementation4199 when the given key does not exist in the cache4200 when the result of the block is truthy4201 returns the result of the block4202 caches the value4203 when the result of the block is false4204 returns the result of the block4205 caches the value4206 when the result of the block is nil4207 returns the result of the block4208 caches the value4209 when the given key exists in the cache4210 when the cached value is a hash4211 parses the cached value4212 decodes enums correctly4213 returns the result of the block when 'as' option is nil4214 returns the result of the block when 'as' option is missing4215 when the cached value is an instance of ActiveRecord::Base4216 returns a persisted record when id is set4217 returns a new record when id is nil4218 returns a new record when id is missing4219 gracefully handles bad cached entry4220 gracefully handles an empty hash4221 gracefully handles unknown attributes4222 gracefully handles excluded fields from attributes during serialization4223 when the cached value is a array4224 parses the cached value4225 returns an empty array when 'as' option is nil4226 returns an empty array when 'as' option is not informed4227 when the cached value is true4228 returns the cached value4229 does not execute the block4230 does not write to the cache4231 when the cached value is false4232 returns the cached value4233 does not execute the block4234 does not write to the cache4235 when the cached value is nil4236 returns the result of the block4237 writes the result of the block to the cache4238Projects::Settings::DeployKeysPresenter4239 inherits from Gitlab::View::Presenter::Simple4240 deploy key groups4241 with enabled keys4242 returns correct deploy keys4243 with available keys4244 returns correct deploy keys4245 with available project keys4246 returns correct deploy keys4247 with available public keys4248 returns correct deploy keys4249 #enabled_keys4250 returns currently enabled keys4251 does not contain enabled_keys inside available_keys4252 returns the enabled_keys size4253 #available_keys/#available_project_keys4254 returns the current available_keys4255 returns the current available_project_keys4256 returns the available_project_keys size4257 prevent N + 1 queries4258 returns correct counts4259 does not increase the query count4260ContainerRegistry::Blob4261 is expected to respond to #repository4262 is expected to delegate #registry to the #repository object4263 is expected to delegate #client to the #repository object4264 #path4265 returns a valid path to the blob4266 #digest4267 return correct digest value4268 #type4269 returns a correct type4270 #revision4271 returns a correct blob SHA4272 #short_revision4273 return a short SHA4274 #delete4275 returns true when blob has been successfully deleted4276 #data4277 when locally stored4278 returns a correct blob data4279 when externally stored4280 for a valid address4281 returns correct data4282 for a relative address4283 returns correct data4284 for invalid file4285 raises an error4286Gitlab::Diff::LinesUnfolder4287 position requires a middle expansion and new match lines4288 old_line is an invalid number4289 fails gracefully4290 blob lines4291 returns the extracted blob lines correctly4292 diff lines4293 return merge of blob lines with diff lines correctly4294 merged lines have correct line codes4295 position requires a middle expansion and no top match line4296 blob lines4297 returns the extracted blob lines correctly4298 diff lines4299 return merge of blob lines with diff lines correctly4300 merged lines have correct line codes4301 position requires a middle expansion and no bottom match line4302 blob lines4303 returns the extracted blob lines correctly4304 diff lines4305 return merge of blob lines with diff lines correctly4306 merged lines have correct line codes4307 position requires a short top expansion4308 blob lines4309 returns the extracted blob lines correctly4310 diff lines4311 return merge of blob lines with diff lines correctly4312 merged lines have correct line codes4313 position sits between two match lines (no expasion needed)4314 diff lines4315 returns nil4316 position requires bottom expansion and new match lines4317 blob lines4318 returns the extracted blob lines correctly4319 diff lines4320 return merge of blob lines with diff lines correctly4321 merged lines have correct line codes4322 position requires bottom expansion and no new match line4323 blob lines4324 returns the extracted blob lines correctly4325 diff lines4326 return merge of blob lines with diff lines correctly4327 merged lines have correct line codes4328 positioned on an image4329 diff file is not text4330 returns nil4331 diff file is text4332 returns nil4333IssueSidebarBasicEntity4334 contains keys related to issuables4335 contains attributes related to the issue4336 current_user4337 contains attributes related to the current user4338 can_update_escalation_status4339 for a standard issue4340 is not present4341 for an incident issue4342 is present and true4343 without permissions4344 is present and false4345 show_crm_contacts4346 is_reporter: false, contacts_exist_for_group: false, expected: false4347 sets proper boolean value for show_crm_contacts4348 is_reporter: false, contacts_exist_for_group: true, expected: false4349 sets proper boolean value for show_crm_contacts4350 is_reporter: true, contacts_exist_for_group: false, expected: false4351 sets proper boolean value for show_crm_contacts4352 is_reporter: true, contacts_exist_for_group: true, expected: true4353 sets proper boolean value for show_crm_contacts4354 in subgroup4355 with crm enabled4356 is true4357 with crm disabled4358 is false4359DependencyProxy::Blob4360 behaves like ttl_expirable4361 behaves like having unique enum values4362 has unique values in "status"4363 default values4364 is expected to within one second of 2023-05-25 18:19:56 UTC4365 is expected to within one second of 2023-05-24 18:19:56 UTC4366 validations4367 is expected to validate that :status cannot be empty/falsy4368 .read_before4369 returns items with created at older than the supplied number of days4370 .active4371 returns only active items4372 #read!4373 updates read_at4374 behaves like destructible4375 .next_pending_destruction4376 returns the oldest item pending destruction based on updated_at4377 returns the oldest item pending destruction based on created_at4378 behaves like updates namespace statistics4379 when creating4380 schedules a statistic refresh4381 when updating4382 when the statistic attribute has not changed4383 does not schedule a statistic refresh4384 when the statistic attribute has changed4385 schedules a statistic refresh4386 when deleting4387 schedules a statistic refresh4388 relationships4389 is expected to belong to group required: false4390 validations4391 is expected to validate that :group cannot be empty/falsy4392 is expected to validate that :file cannot be empty/falsy4393 is expected to validate that :file_name cannot be empty/falsy4394 .total_size4395 returns 0 if no files4396 returns a correct sum of all files sizes4397 .find_or_build4398 builds new instance if not found4399 finds an existing blob4400 file is being stored4401 when existing object has local store4402 behaves like mounted file in local store4403 is stored locally4404 when direct upload is enabled4405 behaves like mounted file in object store4406 is stored remotely4407Gitlab::ImportExport::Group::TreeSaver4408 saves the group tree into a json object4409 saves the group successfully4410 fails to export a group4411 exported files4412 has one group per line4413 has a file per group4414 has a file for each group association4415 group attributes file4416 has a file for each group with its attributes4417 does not contain excluded attribute4418 does not contain excluded attribute4419 does not contain excluded attribute4420 does not contain excluded attribute4421 does not contain excluded attribute4422 does not contain excluded attribute4423PlanLimits4424 validations4425 is expected to validate that :notification_limit looks like an integer4426 is expected to validate that :enforcement_limit looks like an integer4427 #exceeded?4428 when given limit subject is an integer4429 behaves like comparing limits4430 when limit for given name results to a disabled value4431 is expected to eq false4432 when limit for given name results to a non-disabled value4433 and given count is smaller than limit4434 is expected to eq false4435 and given count is equal to the limit4436 is expected to eq true4437 and given count is greater than the limit4438 is expected to eq true4439 when given limit subject is an ActiveRecord::Relation4440 behaves like comparing limits4441 when limit for given name results to a disabled value4442 is expected to eq false4443 when limit for given name results to a non-disabled value4444 and given count is smaller than limit4445 is expected to eq false4446 and given count is equal to the limit4447 is expected to eq true4448 and given count is greater than the limit4449 is expected to eq true4450 when given limit subject is something else4451 raises an error4452 #limit_for4453 when given limit name does not exist4454 raises an error4455 when given limit name is disabled4456 is expected to eq nil4457 and alternate_limit is a non-zero integer4458 is expected to eq 14459 and alternate_limit is zero4460 is expected to eq nil4461 and alternate_limit is a proc that returns non-zero integer4462 is expected to eq 14463 and alternate_limit is a proc that returns zero4464 is expected to eq nil4465 and alternate_limit is a proc that returns nil4466 is expected to eq nil4467 when given limit name is enabled4468 and alternate_limit is a non-zero integer that is bigger than the plan limit4469 is expected to eq 24470 and alternate_limit is a non-zero integer that is smaller than the plan limit4471 is expected to eq 14472 and alternate_limit is zero4473 is expected to eq 24474 and alternate_limit is a proc that returns non-zero integer that is bigger than the plan limit4475 is expected to eq 24476 and alternate_limit is a proc that returns non-zero integer that is smaller than the plan limit4477 is expected to eq 14478 and alternate_limit is a proc that returns zero4479 is expected to eq 24480 and alternate_limit is a proc that returns nil4481 is expected to eq 24482 validates default values4483 has positive values for enabled limits4484 has zero values for disabled limits4485 #dashboard_storage_limit_enabled?4486 returns false4487gitlab:artifacts namespace rake task4488 gitlab:artifacts:migrate4489 when local storage is used4490 and remote storage is defined4491 migrates file to remote storage4492 and remote storage is not defined4493 fails to migrate to remote storage4494 when remote storage is used4495 file stays on remote storage4496 gitlab:artifacts:migrate_to_local4497 when remote storage is used4498 and job has remote file store defined4499 migrates file to local storage4500 when local storage is used4501 file stays on local storage4502NavHelper4503 # order random4504 #show_super_sidebar?4505 when nil is provided4506 is expected to eq false4507 when no user is signed-in4508 is expected to eq false4509 when user is signed-in4510 with current_user as a default4511 behaves like show_super_sidebar is supposed to4512 with feature flag off4513 when user has new nav disabled4514 is expected to eq false4515 when user has new nav enabled4516 is expected to eq false4517 with feature flag on4518 when user has not interacted with the new nav toggle yet4519 is expected to eq false4520 when the user was enrolled into the new nav via a special feature flag4521 is expected to eq true4522 when user has new nav disabled4523 is expected to eq false4524 when user has new nav enabled4525 is expected to eq true4526 with user provided as an argument4527 behaves like show_super_sidebar is supposed to4528 with feature flag off4529 when user has new nav disabled4530 is expected to eq false4531 when user has new nav enabled4532 is expected to eq false4533 with feature flag on4534 when user has not interacted with the new nav toggle yet4535 is expected to eq false4536 when the user was enrolled into the new nav via a special feature flag4537 is expected to eq true4538 when user has new nav disabled4539 is expected to eq false4540 when user has new nav enabled4541 is expected to eq true4542 #header_links4543 when the user is logged in4544 has all the expected links by default4545 contains the impersonation link while impersonating4546 as admin4547 application setting :admin_mode is enabled4548 does not contain the admin mode link by default4549 with admin mode enabled4550 contains the admin mode link4551 application setting :admin_mode is disabled4552 does not contain the admin mode link4553 with admin mode enabled4554 has no effect on header links4555 when the user cannot read cross project4556 does not contain cross project elements when the user cannot read cross project4557 shows the search box when the user cannot read cross project and they are visiting a project4558 when the user is not logged in4559 returns only the sign in and search when the user is not logged in4560 .admin_monitoring_nav_links4561 is expected to all be a kind of String4562 #page_has_markdown?4563 path: "projects/merge_requests#show"4564 is expected to eq true4565 path: "projects/merge_requests/conflicts#show"4566 is expected to eq true4567 path: "issues#show"4568 is expected to eq true4569 path: "milestones#show"4570 is expected to eq true4571 path: "issues#designs"4572 is expected to eq true4573Projects::HashedStorage::RollbackAttachmentsService4574 #execute4575 works even when project validation fails4576 when succeeds4577 moves attachments to legacy storage layout4578 returns true4579 sets skipped to false4580 when original folder does not exist anymore4581 skips moving folders and go to next4582 returns true4583 sets skipped to true4584 when target folder already exists4585 raises AttachmentCannotMoveError4586 #old_disk_path4587 returns old disk_path for project4588 #new_disk_path4589 returns new disk_path for project4590Gitlab::SidekiqMiddleware::DuplicateJobs::DuplicateJob4591 #schedule4592 behaves like scheduling with deduplication class4593 calls schedule on the strategy4594 when the deduplication depends on a FF4595 when the feature flag is enabled4596 behaves like scheduling with deduplication class4597DEPRECATION WARNING: Invalid Feature Flag my_feature_flag stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)4598 calls schedule on the strategy4599 when the feature flag is disabled4600 behaves like scheduling with deduplication class4601DEPRECATION WARNING: Invalid Feature Flag my_feature_flag stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)4602 calls schedule on the strategy4603 #perform4604 calls perform on the strategy4605 with Redis cookies4606 #check!4607 when there was no job in the queue yet4608 is expected to eq "123"4609 adds the idempotency key to the jobs payload4610 when TTL option is not set4611 behaves like sets Redis keys with correct TTL4612 adds an idempotency key with correct ttl4613 when TTL option is set4614 behaves like sets Redis keys with correct TTL4615 adds an idempotency key with correct ttl4616 when there was already a job with same arguments in the same queue4617 is expected to eq "existing-jid"4618 does not change the existing key's TTL4619 sets the existing jid4620 #update_latest_wal_location!4621 stores a wal location to redis with an offset relative to existing wal location4622 UPDATE_WAL_COOKIE_SCRIPT4623 does not create the key4624 when the key exists4625 updates all connections4626 preserves the ttl4627 and low offsets4628 updates only some connections4629 #latest_wal_locations4630 when job was deduplicated and wal locations were already persisted4631 is expected to eq {"ci"=>"def", "main"=>"abc"}4632 when job is not deduplication and wal locations were not persisted4633 is expected to be empty4634 #delete!4635 when we didn't track the definition4636 is expected not to raise Exception4637 when the key exists in redis4638 when the idempotency key is not part of the job4639 recalculates the idempotency hash4640 behaves like deleting the duplicate job4641 behaves like deleting keys from redis4642 removes the cookie key from redis4643 when the idempotency key is part of the job4644 does not recalculate the idempotency hash4645 behaves like deleting the duplicate job4646 behaves like deleting keys from redis4647 removes the cookie key from redis4648 #set_deduplicated_flag!4649 when the job is reschedulable4650 sets the key in Redis4651 sets, gets and cleans up the deduplicated flag4652 when the job is not reschedulable4653 does not set the key in Redis4654 does not set the deduplicated flag4655 #duplicate?4656 raises an error if the check wasn't performed4657 returns false if the existing jid equals the job jid4658 returns true if the existing jid is different from the job jid4659 #scheduled?4660 returns false for non-scheduled jobs4661 scheduled jobs4662 returns true4663 #reschedule4664 reschedules the current job4665 #should_reschedule?4666 when the job is reschedulable4667 is expected to eq false4668 with deduplicated flag4669 is expected to eq true4670 when the job is not reschedulable4671 is expected to eq false4672 with deduplicated flag4673 is expected to eq false4674 #scheduled_at4675 returns when the job is scheduled at4676 #options4677 returns worker options4678 #idempotent?4679 when worker class does not exist4680 returns false4681 when worker class does not respond to #idempotent?4682 returns false4683 when worker class is not idempotent4684 returns false4685 when worker class is idempotent4686 returns true4687 when worker class is utilizing load balancing capabilities4688 returns true4689Gitlab::Popen4690 .popen_with_detail4691 is expected to eq ["/usr/local/bin/ruby", "-e", "$stdout.puts(1);$stderr.puts(2);exit(3)"]4692 is expected to eq "1\n"4693 is expected to eq "2\n"4694 is expected to eq 34695 is expected to be a kind of Numeric4696 zero status4697 is expected to be zero4698 is expected to include "tests"4699 non-zero status4700 is expected to eq 14701 is expected to include "No such file or directory"4702 non-zero status with a kill4703 is expected to eq 94704 is expected to be empty4705 unsafe string command4706 raises an error when it gets called with a string argument4707 with custom options4708 calls popen3 with the provided environment variables4709 with a process that writes a lot of data to stderr4710 returns zero4711 without a directory argument4712 is expected to be zero4713 is expected to include "spec"4714 use stdin4715 is expected to be zero4716 is expected to eq "hello"4717 when binary is absent4718 raises error4719DependencyProxy::Manifest4720 behaves like ttl_expirable4721 behaves like having unique enum values4722 has unique values in "status"4723 default values4724 is expected to within one second of 2023-05-25 18:20:45 UTC4725 is expected to within one second of 2023-05-24 18:20:45 UTC4726 validations4727 is expected to validate that :status cannot be empty/falsy4728 .read_before4729 returns items with created at older than the supplied number of days4730 .active4731 returns only active items4732 #read!4733 updates read_at4734 behaves like destructible4735 .next_pending_destruction4736 returns the oldest item pending destruction based on updated_at4737 returns the oldest item pending destruction based on created_at4738 behaves like updates namespace statistics4739 when creating4740 schedules a statistic refresh4741 when updating4742 when the statistic attribute has not changed4743 does not schedule a statistic refresh4744 when the statistic attribute has changed4745 schedules a statistic refresh4746 when deleting4747 schedules a statistic refresh4748 relationships4749 is expected to belong to group required: false4750 validations4751 is expected to validate that :group cannot be empty/falsy4752 is expected to validate that :file cannot be empty/falsy4753 is expected to validate that :file_name cannot be empty/falsy4754 is expected to validate that :digest cannot be empty/falsy4755 scopes4756 order_id_desc4757 file is being stored4758 when existing object has local store4759 behaves like mounted file in local store4760 is stored locally4761 when direct upload is enabled4762 behaves like mounted file in object store4763 is stored remotely4764 .find_by_file_name_or_digest4765 no manifest exists4766 is expected to be nil4767 manifest exists and matches file_name4768 is expected to eq #<DependencyProxy::Manifest id: 18, created_at: "2023-05-25 18:20:48.585605438 +0000", updated_at: "2...RED], status: "default", read_at: "2023-05-25 18:20:48.585823378 +0000", verification_checksum: nil>4769 manifest exists and matches digest4770 is expected to eq #<DependencyProxy::Manifest id: 19, created_at: "2023-05-25 18:20:48.715001791 +0000", updated_at: "2...RED], status: "default", read_at: "2023-05-25 18:20:48.715222822 +0000", verification_checksum: nil>4771Gitlab::Ci::Config::Entry::Service4772 when configuration is a string4773 #valid?4774 is valid4775 #value4776 returns valid hash4777 #image4778 returns service's image name4779 #alias4780 returns service's alias4781 #command4782 returns service's command4783 #ports4784 returns service's ports4785 when configuration is a hash4786 #valid?4787 is valid4788 #value4789 returns valid hash4790 #image4791 returns service's image name4792 #alias4793 returns service's alias4794 #command4795 returns service's command4796 #entrypoint4797 returns service's entrypoint4798 #pull_policy4799 returns nil4800 when configuration has ports4801 when with_image_ports metadata is not enabled4802 #valid?4803 is not valid4804 when with_image_ports metadata is enabled4805 #valid?4806 is valid4807 when unknown port keys detected4808 is not valid4809 #ports4810 returns image's ports4811 when configuration has pull_policy4812 #valid?4813 is valid4814 #value4815 returns value4816 when entry value is not correct4817 #errors4818 saves errors4819 #valid?4820 is not valid4821 when unexpected key is specified4822 #errors4823 saves errors4824 #valid?4825 is not valid4826 when service has ports4827 alias field is mandatory4828 when service does not have ports4829 alias field is optional4830ReleasesHelper4831 #illustration4832 returns the correct image path4833 #releases_help_page_path4834 returns the correct link to the help page4835 url helpers4836 #data_for_releases_page4837 includes the required data for displaying release blocks4838 when the user is allowed to create a new release4839 includes new_release_path4840 points new_release_path to the "New Release" page4841 new releases redirect new milestone creation4842 redirects new_milestone_path back to the release page4843 #data_for_edit_release_page4844 has the needed data to display the "edit release" page4845 #data_for_new_release_page4846 has the needed data to display the "new release" page4847 #data_for_show_page4848 has the needed data to display the individual "release" page4849 startup queries4850 use_startup_query_for_index_page?4851 allows startup queries for non-paginated requests4852 disallows startup queries for requests paginated with a "before" cursor4853 disallows startup queries for requests paginated with an "after" cursor4854 #index_page_startup_query_variables4855 returns the correct GraphQL variables for the startup query4856Issues::ReferencedMergeRequestsService4857 #execute4858 returns a list of sorted merge requests4859 performance4860 does not run extra queries when extra namespaces are included4861 preloads the head pipeline for each merge request, and its routes4862 only loads issue notes once4863 #referenced_merge_requests4864 returns the referenced merge requests4865 excludes cross project references if the user cannot read cross project4866 performance4867 does not run a query for each note author4868 #closed_by_merge_requests4869 returns the open merge requests that close this issue4870 returns an empty array when the current issue is closed already4871 performance4872 does not run a query for each note author4873Banzai::Filter::BroadcastMessageSanitizationFilter4874 behaves like default allowlist4875 sanitizes tags that are not allowed4876 sanitizes tag attributes4877 sanitizes javascript in attributes4878 sanitizes mixed-cased javascript in attributes4879 allows whitelisted HTML tags from the user4880 sanitizes `class` attribute on any element4881 sanitizes `id` attribute on any element4882 custom allowlist4883 behaves like XSS prevention4884 disallows protocol-based JS injection: simple, no spaces4885 disallows protocol-based JS injection: simple, spaces before4886 disallows protocol-based JS injection: simple, spaces after4887 disallows protocol-based JS injection: simple, spaces before and after4888 disallows protocol-based JS injection: preceding colon4889 disallows protocol-based JS injection: UTF-8 encoding4890 disallows protocol-based JS injection: long UTF-8 encoding4891 disallows protocol-based JS injection: long UTF-8 encoding without semicolons4892 disallows protocol-based JS injection: hex encoding4893 disallows protocol-based JS injection: long hex encoding4894 disallows protocol-based JS injection: hex encoding without semicolons4895 disallows protocol-based JS injection: null char4896 disallows protocol-based JS injection: invalid URL char4897 disallows protocol-based JS injection: Unicode4898 disallows protocol-based JS injection: spaces and entities4899 disallows protocol whitespace4900 disallows data links4901 disallows vbscript links4902 behaves like sanitize link4903 removes `rel` attribute from `a` elements4904 disallows invalid URIs4905 allows non-standard anchor schemes4906 allows relative links4907 allows `a` elements4908 is expected to eq "<a href=\"/\">Link</a>"4909 allows `br` elements4910 is expected to eq "Hello<br>World"4911 when `a` elements have `style` attribute4912 disallows other properties in `style` attribute on `a` elements4913 allows specific properties4914 is expected to eq "<a href=\"#\" style=\"color: red; border: blue; background: green; padding: 10px; margin: 10px; text-decoration: underline;\">Stylish Link</a>"4915 allows `class` on `a` elements4916 is expected to eq "<a href=\"#\" class=\"btn\">Button Link</a>"4917Labels::CreateService4918 #execute4919 in a project4920 with color in hex-code4921 creates a label4922 with color in allowed name4923 creates a label4924 with color in up-case allowed name4925 creates a label4926 with color surrounded by spaces4927 creates a label4928 with unknown color4929 doesn't create a label4930 with no color4931 doesn't create a label4932 in a group4933 with color in hex-code4934 creates a label4935 with color in allowed name4936 creates a label4937 with color in up-case allowed name4938 creates a label4939 with color surrounded by spaces4940 creates a label4941 with unknown color4942 doesn't create a label4943 with no color4944 doesn't create a label4945 in admin area4946 with color in hex-code4947 creates a label4948 with color in allowed name4949 creates a label4950 with color in up-case allowed name4951 creates a label4952 with color surrounded by spaces4953 creates a label4954 with unknown color4955 doesn't create a label4956 with no color4957 doesn't create a label4958Gitlab::Middleware::CompressedJson4959 #call4960 with collector route4961 behaves like decompress middleware4962 replaces input with a decompressed content4963 with no Content-Type4964 behaves like decompress middleware4965 replaces input with a decompressed content4966 behaves like decompress middleware4967 replaces input with a decompressed content4968 with packages route4969 with instance level endpoint4970 with npm advisory bulk url4971 behaves like decompress middleware4972 replaces input with a decompressed content4973 behaves like decompress middleware4974 replaces input with a decompressed content4975 with npm quick audit url4976 behaves like decompress middleware4977 replaces input with a decompressed content4978 behaves like decompress middleware4979 replaces input with a decompressed content4980 with project level endpoint4981 with npm advisory bulk url4982 behaves like decompress middleware4983 replaces input with a decompressed content4984 behaves like decompress middleware4985 replaces input with a decompressed content4986 behaves like handles non integer ID4987 with a URL-encoded ID4988 behaves like decompress middleware4989 replaces input with a decompressed content4990 with a non URL-encoded ID4991 behaves like passes input4992 keeps the original input4993 with a blank ID4994 behaves like passes input4995 keeps the original input4996 with npm quick audit url4997 behaves like decompress middleware4998 replaces input with a decompressed content4999 behaves like decompress middleware5000 replaces input with a decompressed content5001 behaves like handles non integer ID5002 with a URL-encoded ID5003 behaves like decompress middleware5004 replaces input with a decompressed content5005 with a non URL-encoded ID5006 behaves like passes input5007 keeps the original input5008 with a blank ID5009 behaves like passes input5010 keeps the original input5011 with group level endpoint5012 with npm advisory bulk url5013 behaves like decompress middleware5014 replaces input with a decompressed content5015 behaves like decompress middleware5016 replaces input with a decompressed content5017 behaves like handles non integer ID5018 with a URL-encoded ID5019 behaves like decompress middleware5020 replaces input with a decompressed content5021 with a non URL-encoded ID5022 behaves like passes input5023 keeps the original input5024 with a blank ID5025 behaves like passes input5026 keeps the original input5027 with npm quick audit url5028 behaves like decompress middleware5029 replaces input with a decompressed content5030 behaves like decompress middleware5031 replaces input with a decompressed content5032 behaves like handles non integer ID5033 with a URL-encoded ID5034 behaves like decompress middleware5035 replaces input with a decompressed content5036 with a non URL-encoded ID5037 behaves like passes input5038 keeps the original input5039 with a blank ID5040 behaves like passes input5041 keeps the original input5042 with some other route5043 behaves like passes input5044 keeps the original input5045 with the wrong project path5046 behaves like passes input5047 keeps the original input5048 payload is too large5049 reads only limited size5050Gitlab::Ci::Reports::TestCase5051 #initialize5052 when required params are given5053 initializes an instance5054 when suite_name is missing5055 behaves like param is missing5056 raises an error5057 when classname is missing5058 behaves like param is missing5059 raises an error5060 when name is missing5061 behaves like param is missing5062 raises an error5063 when attachment is present5064 initializes the attachment if present5065 #has_attachment?5066 #attachment_url5067 when attachment is missing5068 #has_attachment?5069 #attachment_url5070 #set_recent_failures5071 sets the recent_failures information5072Gitlab::Git::Compare5073 #commits5074 has 8 elements5075 is expected to include "6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9"5076 is expected not to include "cfe32cf61b73a0d5e9f13e774abde7ff789b1660"5077 non-existing base ref5078 is expected to be empty5079 non-existing head ref5080 is expected to be empty5081 base ref is equal to head ref5082 is expected to be empty5083 providing nil as base ref or head ref5084 is expected to be empty5085 #diffs5086 has 10 elements5087 is expected to include "files/ruby/popen.rb"5088 is expected not to include "LICENSE"5089 non-existing base ref5090 is expected to be empty5091 non-existing head ref5092 is expected to be empty5093 #same5094 is expected to eq false5095 base ref is equal to head ref5096 is expected to eq true5097 #commits straight compare5098 has 8 elements5099 is expected to include "6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9"5100 is expected not to include "cfe32cf61b73a0d5e9f13e774abde7ff789b1660"5101 #diffs straight compare5102 has 10 elements5103 is expected to include "files/ruby/popen.rb"5104 is expected not to include "LICENSE"5105Ci::BuildEraseService5106 # order random5107 #execute5108 when build is erasable5109 is successful5110 erases artifacts5111 erases trace5112 records erasure detail5113 when project is undergoing statistics refresh5114 logs a warning5115 when build is not erasable5116 is not successful5117 does not erase artifacts5118 does not erase trace5119PagesDomainAcmeOrder5120 .expired5121 returns only expired orders5122 .find_by_domain_and_token5123 domain_name: "test.com", challenge_token: "righttoken", present: true5124 is expected to eq true5125 domain_name: "test.com", challenge_token: "wrongtoken", present: false5126 is expected to eq false5127 domain_name: "test.org", challenge_token: "righttoken", present: false5128 is expected to eq false5129 associations5130 is expected to belong to pages_domain required: false5131 validations5132 is expected to validate that :pages_domain cannot be empty/falsy5133 is expected to validate that :expires_at cannot be empty/falsy5134 is expected to validate that :url cannot be empty/falsy5135 is expected to validate that :challenge_token cannot be empty/falsy5136 is expected to validate that :challenge_file_content cannot be empty/falsy5137 is expected to validate that :private_key cannot be empty/falsy5138Terraform-Module.[MASKED].yml5139 # order random5140 the created pipeline5141 when on default branch5142 behaves like on any branch5143 creates fmt and kics job5144 does not create a deploy job5145 when outside the default branch5146 behaves like on any branch5147 creates fmt and kics job5148 does not create a deploy job5149 when on tag5150 creates fmt and deploy job5151CustomerRelations::IssueContact5152 is expected to be valid5153 associations5154 is expected to belong to issue required: true5155 is expected to belong to contact required: true5156 factory5157 for root groups5158 uses objects from the same group5159 for subgroups5160 builds using the root ancestor5161 validation5162 fails when the contact group is unrelated to the issue group5163 succeeds when the contact belongs to a root group and is the same as the issue group5164 succeeds when the contact belongs to a root group and it is an ancestor of the issue group5165 #self.find_contact_ids_by_emails5166 returns ids of contacts from issue5167 does not return ids of contacts from other issues5168 raises ArgumentError when called with too many emails5169 .delete_for_project5170 destroys all issue_contacts for project5171 .delete_for_group5172 destroys all issue_contacts for projects in group and subgroups5173Webauthn::DestroyService5174 # order random5175 #execute5176 with only one webauthn method enabled5177 when another user is calling the service5178 for a user without permissions5179 does not destry the webauthn registration5180 does not remove the user backup codes5181 returns error5182 for an admin5183 destroys the webauthn registration5184 removes the user backup codes5185 when current user is calling the service5186 when there is also OTP enabled5187 removes the webauth registrations5188 does not remove the user backup codes5189 with multiple webauthn methods enabled5190 destroys the webauthn registration5191 does not remove the user backup codes5192Ci::FreezePeriodsFinder5193 # order random5194 when user is a maintainer5195 behaves like returns freeze_periods ordered by created_at asc5196 returns freeze_periods ordered by created_at5197 when user is a guest5198 behaves like returns nothing5199 is expected to be empty5200 when user is a developer5201 behaves like returns freeze_periods ordered by created_at asc5202 returns freeze_periods ordered by created_at5203 when user is not a project member5204 behaves like returns nothing5205 is expected to be empty5206 when project is public5207 behaves like returns nothing5208 is expected to be empty5209Mutations::Issues::SetLocked5210 is expected to require graphql authorizations :update_issue5211 #resolve5212 behaves like permission level for issue mutation is correctly verified5213 when the user is not a project member5214 behaves like when the user does not have access to the resource5215 raises an error5216 even if assigned to the issue5217 does not modify issue5218 even if author of the issue5219 does not modify issue5220 when the user is a project member5221 with guest role5222 behaves like when the user does not have access to the resource5223 raises an error5224 even if assigned to the issue5225 does not modify issue5226 even if author of the issue5227 does not modify issue5228 when the user can update the issue5229 returns the issue as discussion locked5230 when passing locked as false5231 unlocks the discussion5232Repositories::HousekeepingService5233 behaves like housekeeps repository5234 with a clean redis state5235 #execute5236 enqueues a sidekiq job5237 yields the block if given5238 resets counter after execution5239 runs the task specifically requested5240 when no lease can be obtained5241 does not enqueue a job5242 does not reset pushes_since_gc5243 does not yield5244 task type5245 goes through all three housekeeping tasks, executing only the highest task when there is overlap5246 #needed?5247 when the count is low enough5248 when the count is high enough5249 when incremental repack period is not multiple of gc period5250 #increment!5251 increments the pushes_since_gc counter5252 behaves like housekeeps repository5253 with a clean redis state5254 #execute5255 enqueues a sidekiq job5256 yields the block if given5257 resets counter after execution5258 runs the task specifically requested5259 when no lease can be obtained5260 does not enqueue a job5261 does not reset pushes_since_gc5262 does not yield5263 task type5264 goes through all three housekeeping tasks, executing only the highest task when there is overlap5265 #needed?5266 when the count is low enough5267 when the count is high enough5268 when incremental repack period is not multiple of gc period5269 #increment!5270 increments the pushes_since_gc counter5271Gitlab::Ci::Pipeline::Chain::EvaluateWorkflowRules5272 #perform!5273 when pipeline has been skipped by workflow configuration5274 does not save the pipeline5275 breaks the chain5276 attaches an error to the pipeline5277 saves workflow_rules_result5278 when pipeline has not been skipped by workflow configuration5279 continues the pipeline processing chain5280 does not skip the pipeline5281 attaches no errors5282 saves workflow_rules_result5283Metrics::Dashboard::AnnotationPolicy5284 rules5285 environments annotation5286 behaves like metrics dashboard annotation policy5287 when guest5288 is expected to be disallowed :read_metrics_dashboard_annotation5289 is expected to be disallowed :admin_metrics_dashboard_annotation5290 when reporter5291 is expected to be allowed :read_metrics_dashboard_annotation5292 is expected to be disallowed :admin_metrics_dashboard_annotation5293 when developer5294 is expected to be allowed :read_metrics_dashboard_annotation5295 is expected to be allowed :admin_metrics_dashboard_annotation5296 when maintainer5297 is expected to be allowed :read_metrics_dashboard_annotation5298 is expected to be allowed :admin_metrics_dashboard_annotation5299 cluster annotation5300 behaves like metrics dashboard annotation policy5301 when guest5302 is expected to be disallowed :read_metrics_dashboard_annotation5303 is expected to be disallowed :admin_metrics_dashboard_annotation5304 when reporter5305 is expected to be allowed :read_metrics_dashboard_annotation5306 is expected to be disallowed :admin_metrics_dashboard_annotation5307 when developer5308 is expected to be allowed :read_metrics_dashboard_annotation5309 is expected to be allowed :admin_metrics_dashboard_annotation5310 when maintainer5311 is expected to be allowed :read_metrics_dashboard_annotation5312 is expected to be allowed :admin_metrics_dashboard_annotation5313Projects::UpdateStatisticsService5314 #execute5315 with a non-existing project5316 does nothing5317 with an existing project5318 statistics: [], method_caches: [:size, :commit_count]5319 refreshes the project statistics5320 invalidates the method caches after a refresh5321 statistics: ["repository_size"], method_caches: [:size]5322 refreshes the project statistics5323 invalidates the method caches after a refresh5324 statistics: [:repository_size], method_caches: [:size]5325 refreshes the project statistics5326 invalidates the method caches after a refresh5327 statistics: [:lfs_objects_size], method_caches: nil5328 refreshes the project statistics5329 invalidates the method caches after a refresh5330 statistics: [:commit_count], method_caches: [:commit_count]5331 refreshes the project statistics5332 invalidates the method caches after a refresh5333 statistics: [:repository_size, :commit_count], method_caches: [:size, :commit_count]5334 refreshes the project statistics5335 invalidates the method caches after a refresh5336 statistics: [:repository_size, :commit_count, :lfs_objects_size], method_caches: [:size, :commit_count]5337 refreshes the project statistics5338 invalidates the method caches after a refresh5339 with an existing project with a Wiki5340 invalidates and refreshes Wiki size5341Users::CalloutsHelper5342 .show_gke_cluster_integration_callout?5343 when user can create a cluster5344 when user has not dismissed5345 when active_nav_link is in the operations section5346 is expected to equal true5347 when active_nav_link is not in the operations section5348 is expected to equal false5349 when user dismissed5350 is expected to equal false5351 when user can not create a cluster5352 is expected to equal false5353 .show_feature_flags_new_version?5354 when the feature flags new version info has not been dismissed5355 is expected to be truthy5356 when the feature flags new version has been dismissed5357 is expected to be falsy5358 .show_registration_enabled_user_callout?5359 gitlab_com: false, current_user: admin, signup_enabled: true, user_dismissed: false, controller_path: "admin/users", expected_result: true5360 is expected to equal true5361 gitlab_com: true, current_user: admin, signup_enabled: true, user_dismissed: false, controller_path: "admin/users", expected_result: false5362 is expected to equal false5363 gitlab_com: false, current_user: user, signup_enabled: true, user_dismissed: false, controller_path: "admin/users", expected_result: false5364 is expected to equal false5365 gitlab_com: false, current_user: admin, signup_enabled: false, user_dismissed: false, controller_path: "admin/users", expected_result: false5366 is expected to equal false5367 gitlab_com: false, current_user: admin, signup_enabled: true, user_dismissed: true, controller_path: "admin/users", expected_result: false5368 is expected to equal false5369 gitlab_com: false, current_user: admin, signup_enabled: true, user_dismissed: false, controller_path: "projects/issues", expected_result: false5370 is expected to equal false5371 .show_unfinished_tag_cleanup_callout?5372 when user has not dismissed5373 is expected to equal true5374 when user dismissed5375 is expected to equal false5376 .show_security_newsletter_user_callout?5377 when `current_user` is not an admin5378 is expected to equal false5379 when user has dismissed callout5380 is expected to equal false5381 when `current_user` is an admin and user has not dismissed callout5382 is expected to equal true5383 .show_pages_menu_callout?5384 when user has not dismissed5385 is expected to equal true5386 when user dismissed5387 is expected to equal false5388 #web_hook_disabled_dismissed?5389 without a project5390 is false5391 with a project5392 when the web-hook failure callout has never been dismissed5393 is false5394 when the web-hook failure callout has been dismissed5395 is true5396 is true when passed as a presenter5397 when there was an older failure5398 is true5399 when there has been a more recent failure5400 is false5401Gitlab::Ci::Pipeline::Chain::PopulateMetadata5402 # order random5403 with pipeline name5404 does not break the chain5405 builds pipeline_metadata5406 with empty name5407 strips whitespace from name5408 with empty name after variable substitution5409 does not save empty name5410 with variables5411 substitutes variables5412 with invalid name5413 returns error and breaks chain5414Gitlab::Ci::Reports::TestSuiteComparer5415 #new_failures5416 when head suite has a newly failed test case which does not exist in base5417 returns the failed test case5418 when head suite still has a failed test case which failed in base5419 does not return the failed test case5420 when head suite has a success test case which failed in base5421 does not return the failed test case5422 #existing_failures5423 when head suite has a newly failed test case which does not exist in base5424 returns the failed test case5425 when head suite still has a failed test case which failed in base5426 does not return the failed test case5427 when head suite has a success test case which failed in base5428 does not return the failed test case5429 #resolved_failures5430 when head suite has a newly failed test case which does not exist in base5431 returns the failed test case5432 returns the correct resolved count5433 when head suite still has a failed test case which failed in base5434 does not return the failed test case5435 returns the correct resolved count5436 when head suite has a success test case which failed in base5437 does not return the resolved test case5438 returns the correct resolved count5439 #new_errors5440 when head suite has a new error test case which does not exist in base5441 returns the error test case5442 when head suite still has an error test case which errored in base5443 does not return the error test case5444 when head suite has a success test case which errored in base5445 does not return the error test case5446 #existing_errors5447 when head suite has a new error test case which does not exist in base5448 does not return the error test case5449 when head suite still has an error test case which errored in base5450 returns the error test case5451 when head suite has a success test case which errored in base5452 does not return the error test case5453 #resolved_errors5454 when head suite has a new error test case which does not exist in base5455 does not return the error test case5456 returns the correct resolved count5457 when head suite still has an error test case which errored in base5458 does not return the error test case5459 returns the correct resolved count5460 when head suite has a success test case which errored in base5461 returns the resolved test case5462 returns the correct resolved count5463 #total_count5464 returns the total test counts in head suite5465 #failed_count5466 when there are a new failure and an existing failure5467 returns the correct count5468 when there is a new failure5469 returns the correct count5470 when there is an existing failure5471 returns the correct count5472 #total_status5473 when all test cases in head suite are success5474 returns the total status in head suite5475 when there is a failed test case in head suite5476 returns the total status in head suite as failed5477 when there is an error test case in head suite5478 returns the total status in head suite as failed5479 #limited_tests5480 limits amount of tests returned5481 prefers new over existing and resolved5482 returns 2 of each new category, and 1 of each resolved and existing5483 does not affect the overall count5484 prefers existing over resolved5485 returns 2 of each existing category, and 1 of each resolved5486 does not affect the overall count5487 limits amount of resolved5488 returns 2 of each resolved category5489 does not affect the overall count5490VersionCheckHelper5491 #show_version_check?5492 return conditions5493 enabled: false, consent: false, is_admin: false, result: false5494 returns correct results5495 enabled: false, consent: false, is_admin: true, result: false5496 returns correct results5497 enabled: false, consent: true, is_admin: false, result: false5498 returns correct results5499 enabled: false, consent: true, is_admin: true, result: false5500 returns correct results5501 enabled: true, consent: false, is_admin: false, result: false5502 returns correct results5503 enabled: true, consent: false, is_admin: true, result: true5504 returns correct results5505 enabled: true, consent: true, is_admin: false, result: false5506 returns correct results5507 enabled: true, consent: true, is_admin: true, result: false5508 returns correct results5509 #gitlab_version_check5510 returns an instance of the VersionCheck class5511 #show_security_patch_upgrade_alert?5512 return conditions5513 show_version_check: false, gitlab_version_check: nil, result: false5514 returns correct results5515 show_version_check: false, gitlab_version_check: {"severity"=>"success"}, result: false5516 returns correct results5517 show_version_check: false, gitlab_version_check: {"severity"=>"danger"}, result: false5518 returns correct results5519 show_version_check: false, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>"some text"}, result: false5520 returns correct results5521 show_version_check: false, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>"false"}, result: false5522 returns correct results5523 show_version_check: false, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>false}, result: false5524 returns correct results5525 show_version_check: false, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>"true"}, result: false5526 returns correct results5527 show_version_check: false, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>true}, result: false5528 returns correct results5529 show_version_check: true, gitlab_version_check: nil, result: false5530 returns correct results5531 show_version_check: true, gitlab_version_check: {"severity"=>"success"}, result: nil5532 returns correct results5533 show_version_check: true, gitlab_version_check: {"severity"=>"danger"}, result: nil5534 returns correct results5535 show_version_check: true, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>"some text"}, result: nil5536 returns correct results5537 show_version_check: true, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>"false"}, result: false5538 returns correct results5539 show_version_check: true, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>false}, result: false5540 returns correct results5541 show_version_check: true, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>"true"}, result: true5542 returns correct results5543 show_version_check: true, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>true}, result: true5544 returns correct results5545 #link_to_version5546 for a pre-release5547 links to commit sha5548 for a normal release5549 links to version tag5550Types::ReleaseType5551 is expected to require graphql authorizations :read_release5552 has the expected fields5553 assets field5554 is expected to have graphql type Types::ReleaseAssetsType5555 links field5556 is expected to have graphql type Types::ReleaseLinksType5557 milestones field5558 is expected to have graphql type #<Class:0x00007f7e31294d28>5559 evidences field5560 is expected to have graphql type #<Class:0x00007f7e310058a0>5561 author field5562 is expected to have graphql type Types::UserType5563 commit field5564 is expected to have graphql type Types::CommitType5565Users::UpdateCanonicalEmailService5566 #initialize5567 unsuccessful5568 raises an error if there is no user5569 raises an error if the object is not a User5570 when a user is provided5571 does not error5572 #canonicalize_email5573 when the email domain is included5574 strips out any . or anything after + in the agent for included domains5575 raw_email: "user@includeddomain.com", expected_result: "user@includeddomain.com"5576 is expected to eq "user@includeddomain.com"5577 raw_email: "u.s.e.r@includeddomain.com", expected_result: "user@includeddomain.com"5578 is expected to eq "user@includeddomain.com"5579 raw_email: "user+123@includeddomain.com", expected_result: "user@includeddomain.com"5580 is expected to eq "user@includeddomain.com"5581 raw_email: "us.er+123@includeddomain.com", expected_result: "user@includeddomain.com"5582 is expected to eq "user@includeddomain.com"5583 when the user has an existing canonical email5584 updates the user canonical email record5585 when the email domain is not included5586 returns nil5587 destroys any existing UserCanonicalEmail record5588 when the user email is not processable5589 with5590 is expected to be nil5591 preserves any existing record5592 with nonsense5593 is expected to be nil5594 preserves any existing record5595Pajamas::ToggleComponent5596 with defaults5597 renders a toggle container with provided class5598 does not set a name5599 sets default is-checked attributes5600 sets default disabled attributes5601 sets default is-loading attributes5602 does not set a label5603 does not set a label position5604 with custom options5605 sets the custom class5606 sets the custom name5607 sets the custom is-checked attributes5608 sets the custom disabled attributes5609 sets the custom is-loading attributes5610 sets the custom label5611 sets the custom label position5612 sets custom data attributes5613 with setting label_position5614 position: :top, count: 15615 is expected to have visible css "[data-label-position='top']"5616 position: :left, count: 15617 is expected to have visible css "[data-label-position='left']"5618 position: :hidden, count: 15619 is expected to have visible css "[data-label-position='hidden']"5620 position: :bogus, count: 05621 is expected to have visible css "[data-label-position='bogus']"5622 position: "bogus", count: 05623 is expected to have visible css "[data-label-position='bogus']"5624 position: nil, count: 05625 is expected to have visible css "[data-label-position='']"5626dev rake tasks5627 setup5628 sets up the development environment5629 fixtures:load5630 by name5631 loads fixture5632 by empty name5633 does not load fixture5634 load5635 eager loads the application5636 terminate_all_connections5637 terminates all connections5638 when in the production environment5639 does not terminate connections5640 when a database is not found5641 continues to next connection5642 multiple databases5643 with a valid database5644 copy_db:ci5645 creates the database from main5646 when the database already exists5647 prints out a warning5648 with an invalid database5649 raises an error5650Tooling::Danger::FeatureFlag5651 #feature_flag_files5652 retrieves added feature flag files5653 with added added feature flag files5654 returns an array of Found objects5655 without added added feature flag files5656 returns an array of Found objects5657 retrieves modified feature flag files5658 with modified modified feature flag files5659 returns an array of Found objects5660 without modified modified feature flag files5661 returns an array of Found objects5662 retrieves deleted feature flag files5663 with deleted deleted feature flag files5664 returns an array of Found objects5665 without deleted deleted feature flag files5666 returns an array of Found objects5667 #stage_label5668 when there is no stage label5669 returns nil5670 when there is a stage label5671 returns the stage label5672 Tooling::Danger::FeatureFlag::Found5673 #name5674 returns value from the YAML5675 #introduced_by_url5676 returns value from the YAML5677 #rollout_issue_url5678 returns value from the YAML5679 #milestone5680 returns value from the YAML5681 #type5682 returns value from the YAML5683 #group5684 returns value from the YAML5685 #default_enabled5686 returns value from the YAML5687 #raw5688 returns the raw YAML5689 #group_match_mr_label?5690 when group is nil5691 is true only if MR has no group label5692 when group is not nil5693 is true only if MR has the same group label5694Banzai::Filter::BlockquoteFenceFilter5695 converts blockquote fences to blockquote lines5696 does not require newlines at start or end of string5697 allows trailing whitespace on blockquote fence lines5698 when incomplete blockquote fences with multiple blocks are present5699 does not raise timeout error5700 behaves like text filter timeout5701 when rendering takes too long5702 times out5703Sidebars::Admin::Menus::AbuseReportsMenu5704 # order random5705 #pill_count5706 returns zero when there are no abuse reports5707 memoizes the query5708 when there are abuse reports5709 returns the number of abuse reports5710 behaves like Admin menu5711 renders the correct link5712 renders the correct title5713 renders the correct icon5714 renders the separator if needed5715 #render?5716 when user is admin5717 renders5718 when user is not admin5719 does not render5720 when user is not logged in5721 does not render5722 behaves like Admin menu without sub menus5723 does not contain any sub menu(s)5724 defines correct active route5725Gitlab::Database::Reindexing::GrafanaNotifier5726 #notify_start5727 when Grafana is configured using application settings5728 behaves like interacting with Grafana annotations API5729 POSTs a JSON payload5730 on error5731 does not raise the error and returns false5732 when request was not successful5733 returns false5734 without api_key5735 does not post anything5736 without api_url5737 does not post anything5738 when there is no additional tag5739 behaves like interacting with Grafana annotations API5740 POSTs a JSON payload5741 on error5742 does not raise the error and returns false5743 when request was not successful5744 returns false5745 without api_key5746 does not post anything5747 without api_url5748 does not post anything5749 additional tag is provided5750 behaves like interacting with Grafana annotations API5751 POSTs a JSON payload5752 on error5753 does not raise the error and returns false5754 when request was not successful5755 returns false5756 without api_key5757 does not post anything5758 without api_url5759 does not post anything5760 #notify_end5761 when Grafana is configured using application settings5762 behaves like interacting with Grafana annotations API5763 POSTs a JSON payload5764 on error5765 does not raise the error and returns false5766 when request was not successful5767 returns false5768 without api_key5769 does not post anything5770 without api_url5771 does not post anything5772 when there is no additional tag5773 behaves like interacting with Grafana annotations API5774 POSTs a JSON payload5775 on error5776 does not raise the error and returns false5777 when request was not successful5778 returns false5779 without api_key5780 does not post anything5781 without api_url5782 does not post anything5783 additional tag is provided5784 behaves like interacting with Grafana annotations API5785 POSTs a JSON payload5786 on error5787 does not raise the error and returns false5788 when request was not successful5789 returns false5790 without api_key5791 does not post anything5792 without api_url5793 does not post anything5794Gitlab::SafeRequestStore5795 .store5796 when RequestStore is active5797 uses RequestStore5798 when RequestStore is NOT active5799 does not use RequestStore5800 .begin!5801 when RequestStore is active5802 uses RequestStore5803 when RequestStore is NOT active5804 uses RequestStore5805 .clear!5806 when RequestStore is active5807 uses RequestStore5808 when RequestStore is NOT active5809 uses RequestStore5810 .end!5811 when RequestStore is active5812 uses RequestStore5813 when RequestStore is NOT active5814 uses RequestStore5815 .write5816 when RequestStore is active5817 uses RequestStore5818 does not pass the options hash to the underlying store implementation5819 when RequestStore is NOT active5820 does not use RequestStore5821 does not pass the options hash to the underlying store implementation5822 .[]=5823 when RequestStore is active5824 uses RequestStore5825 when RequestStore is NOT active5826 does not use RequestStore5827 .read5828 when RequestStore is active5829 uses RequestStore5830 when RequestStore is NOT active5831 does not use RequestStore5832 .[]5833 when RequestStore is active5834 uses RequestStore5835 when RequestStore is NOT active5836 does not use RequestStore5837 .exist?5838 when RequestStore is active5839 uses RequestStore5840 when RequestStore is NOT active5841 does not use RequestStore5842 .fetch5843 when RequestStore is active5844 uses RequestStore5845 when RequestStore is NOT active5846 does not use RequestStore5847 .delete5848 when RequestStore is active5849 uses RequestStore5850 when given a block and the key exists5851 does not execute the block5852 when given a block and the key does not exist5853 yields the key and returns the block result5854 when RequestStore is NOT active5855 does not use RequestStore5856 when given a block5857 yields the key and returns the block result5858ErrorTracking::IssueLatestEventService5859 #execute5860 with authorized user5861 when issue_latest_event returns an error event5862 returns the error event5863 when issue_latest_event returns nil5864 result is not ready5865 when issue_latest_event returns error5866 returns the error5867 when issue_latest_event returns error with http_status5868 returns the error with correct http_status5869 with integrated error tracking5870 returns the latest event in expected format5871 when error does not exist5872 returns the error in detailed format5873 with unauthorized user5874 returns error5875 with error tracking disabled5876 raises error5877Import::GithubFailureEntity5878 # order random5879 exposes correct attributes5880 with `pull_request_review` failure5881 behaves like import failure entity5882 exposes required fields for import entity5883 with `issue_event` failure5884 behaves like import failure entity5885 exposes required fields for import entity5886 with `note_attachment` failure5887 behaves like import failure entity5888 exposes required fields for import entity5889 with `release_attachment` failure5890 behaves like import failure entity5891 exposes required fields for import entity5892 with `release` failure5893 behaves like import failure entity5894 exposes required fields for import entity5895 with `issue_attachment` failure5896 behaves like import failure entity5897 exposes required fields for import entity5898 with unknown failure5899 behaves like import failure entity5900 exposes required fields for import entity5901 with an invalid import_url5902 behaves like import failure entity5903 exposes required fields for import entity5904 with `pull_request_merged_by` failure5905 behaves like import failure entity5906 exposes required fields for import entity5907 with `lfs_object` failure5908 behaves like import failure entity5909 exposes required fields for import entity5910 with `protected_branch` failure5911 behaves like import failure entity5912 exposes required fields for import entity5913 with `pull_request_review_request` failure5914 behaves like import failure entity5915 exposes required fields for import entity5916 with `merge_request_attachment` failure5917 behaves like import failure entity5918 exposes required fields for import entity5919 with `label` failure5920 behaves like import failure entity5921 exposes required fields for import entity5922 with `issue` failure5923 behaves like import failure entity5924 exposes required fields for import entity5925 with `milestone` failure5926 behaves like import failure entity5927 exposes required fields for import entity5928 with `collaborator` failure5929 behaves like import failure entity5930 exposes required fields for import entity5931 with `diff_note` failure5932 behaves like import failure entity5933 exposes required fields for import entity5934 with `note` failure5935 behaves like import failure entity5936 exposes required fields for import entity5937 with `pull_request` failure5938 behaves like import failure entity5939 exposes required fields for import entity5940RuboCop::Cop::Graphql::Descriptions5941 # order random5942 with enum values5943 adds an offense when there is no description5944 adds an offense when description does not end in a period5945 adds an offense when description begins with "The"5946 adds an offense when description begins with "A"5947 adds an offense when description contains the demonstrative "this"5948 does not add an offense when a word does not contain the substring "this"5949 does not add an offense when description is correct (defined using `description:`)5950 does not add an offense when description is correct (defined as a second argument)5951 autocorrecting "this" to "the"5952 autocorrects if "this" is found5953 does not autocorrect if "this" is not found5954 autocorrects a heredoc if "this" is found5955 does not autocorrect a heredoc if "this" is not found5956 autocorrecting periods in descriptions5957 autocorrects missing periods5958 does not autocorrect if periods exist5959 autocorrects a heredoc5960 does not autocorrect a heredoc if periods exist5961 with arguments5962 adds an offense when there is no description5963 adds an offense when description does not end in a period5964 adds an offense when description begins with "A"5965 adds an offense when description begins with "The"5966 adds an offense when description contains the demonstrative "this"5967 does not add an offense when a word does not contain the substring "this"5968 does not add an offense when description is correct5969 with fields5970 adds an offense when there is no description5971 adds an offense when description does not end in a period5972 adds an offense when description begins with "A"5973 adds an offense when description begins with "The"5974 adds an offense when description contains the demonstrative "this"5975 does not add an offense when a word does not contain the substring "this"5976 does not add an offense when description is correct5977 does not add an offense when there is a resolver5978Gitlab::FormBuilders::GitlabUiFormBuilder5979 #submit5980 without pajamas_button enabled5981 renders a submit input5982 with pajamas_button enabled5983 renders a submit button5984 #gitlab_ui_checkbox_component5985 when not using slots5986 without optional arguments5987 renders correct html5988 with optional arguments5989 renders help text5990 with checkbox_options: { multiple: true }5991 renders labels with correct for attributes5992 when using slots5993DEPRECATION WARNING: Setting a slot with `#label` is deprecated and will be removed from ViewComponent 3.0.0 (use `#with_label` to set the slot instead) (called from help_text_content at /builds/gitlab-org/gitlab/app/components/pajamas/checkbox_component.rb:56)5994DEPRECATION WARNING: Setting a slot with `#help_text` is deprecated and will be removed from ViewComponent 3.0.0 (use `#with_help_text` to set the slot instead) (called from help_text_content at /builds/gitlab-org/gitlab/app/components/pajamas/checkbox_component.rb:56)5995 renders correct html5996 #gitlab_ui_radio_component5997 when not using slots5998 without optional arguments5999 renders correct html6000 with optional arguments6001 renders help text6002 when using slots6003DEPRECATION WARNING: Setting a slot with `#label` is deprecated and will be removed from ViewComponent 3.0.0 (use `#with_label` to set the slot instead) (called from help_text_content at /builds/gitlab-org/gitlab/app/components/pajamas/radio_component.rb:48)6004DEPRECATION WARNING: Setting a slot with `#help_text` is deprecated and will be removed from ViewComponent 3.0.0 (use `#with_help_text` to set the slot instead) (called from help_text_content at /builds/gitlab-org/gitlab/app/components/pajamas/radio_component.rb:48)6005 renders correct html6006 #gitlab_ui_datepicker6007 without optional arguments6008 renders correct html6009 with optional arguments6010 renders correct html6011Tooling::FastQuarantine6012 # order random6013 #skip_example?6014 skipping example by id6015 skips example by id6016 skipping example by line6017 when example location matches6018 skips example by line6019 when example group location matches6020 skips example by line6021 when nested parent example group location matches6022 skips example by line6023 skipping example by file6024 when example file_path matches6025 skips example by file6026 when example group file_path matches6027 skips example by file6028 when nested parent example group file_path matches6029 skips example by file6030 #identifiers6031 when the fast quarantine file is empty6032 returns []6033 when the fast quarantine file is not empty6034 returns parsed and sanitized lines6035 when reading the file raises an error6036 returns []6037 memoization6038 memoizes the identifiers list6039 #initialize6040 when fast_quarantine_path does not exist6041 prints a warning6042 when fast_quarantine_path exists6043 does not raise an error6044Clusters::Agents::Authorizations::CiAccess::ConfigScopes6045 # order random6046 .with_available_ci_access_fields6047 is expected to contain exactly #<Clusters::Agents::Authorizations::CiAccess::ProjectAuthorization id: 1, project_id: 742, agent_id: 3, config: {"default_namespace"=>"production"}>, #<Clusters::Agents::Authorizations::CiAccess::ProjectAuthorization id: 2, project_id: 742, agent_id: 4, config: {"access_as"=>{}}>, and #<Clusters::Agents::Authorizations::CiAccess::ProjectAuthorization id: 3, project_id: 742, agent_id: 5, config: {"access_as"=>{"agent"=>{}}}>6048SentryIssueFinder6049 #execute6050 when the user is not part of the project6051 is expected to be nil6052 when the user is a project developer6053 is expected to eq #<SentryIssue id: 2, issue_id: 101, sentry_issue_identifier: 10000002>6054 when identifier is incorrect6055 is expected to be nil6056 when accessing another projects identifier6057 is expected to be nil6058FinderMethods6059 #find_by!6060 returns the project if the user has access6061 raises not found when the project is not found by id6062 raises not found when the project is not found by filter6063 raises not found the user does not have access6064 ignores ordering6065 #find6066 returns the project if the user has access6067 raises not found when the project is not found by id6068 raises not found when the project is not found by filter6069 raises not found the user does not have access6070 ignores ordering6071 #find_by6072 returns the project if the user has access6073 returns nil when the project is not found by id6074 returns nil when the project is not found by filter6075 returns nil when the user does not have access6076 ignores ordering6077Ci::StatusHelper6078 #ci_icon_for_status6079 renders to correct svg on success6080 renders the correct svg on failure6081 #ci_text_for_status6082 when status is manual6083 changes the status to blocked6084 when status is success6085 changes the status to passed6086 when status is something else6087 returns status unchanged6088 #pipeline_status_cache_key6089 builds a cache key for pipeline status6090 #render_status_with_link6091 renders a passed status icon6092 has 'Pipeline' as the status type in the title6093 has the success status icon6094 when pipeline has commit path6095 links to commit6096 does not contain a span element6097 has 'Pipeline' as the status type in the title6098 has the correct status icon6099 when different type than pipeline is provided6100 has the provided type in the title6101 when tooltip_placement is provided6102 has the provided tooltip placement6103 when additional CSS classes are provided6104 has appended extra class to icon classes6105 when container is provided6106 has the provided container in data6107 when icon_size is provided6108 has the svg class to change size6109Lfs::PushService6110 does nothing if there are no LFS objects6111 #execute6112 uploads the object when upload is requested6113 does not upload the object when upload is not requested6114 verifies the upload if requested6115 skips verification if requested but upload fails6116 returns a failure when submitting a batch fails6117 returns a failure when submitting an upload fails6118 non-project-repository LFS objects6119 only tries to upload the project-repository LFS object6120BroadcastMessagesHelper6121 # order random6122 #current_broadcast_banner_messages6123 user access level targeted messages6124 when in a project page6125 is expected to eq #<BroadcastMessage id: 2, message: "MyText", starts_at: "2023-05-25 18:22:52.404567546 +0000", ends_at: "2023-05-26 18:22:52.405303896 +0000", created_at: "2023-05-25 18:22:52.405953546 +0000", updated_at: "2023-05-25 18:22:52.405953546 +0000", color: "#E75E40", font: "#FFFFFF", message_html: "<p>MyText</p>", cached_markdown_version: 2097152, target_path: nil, broadcast_type: "banner", dismissable: nil, target_access_levels: [30], theme: "indigo">6126 when in a group page6127 is expected to eq #<BroadcastMessage id: 2, message: "MyText", starts_at: "2023-05-25 18:22:52.404567546 +0000", ends_at: "2023-05-26 18:22:52.405303896 +0000", created_at: "2023-05-25 18:22:52.405953546 +0000", updated_at: "2023-05-25 18:22:52.405953546 +0000", color: "#E75E40", font: "#FFFFFF", message_html: "<p>MyText</p>", cached_markdown_version: 2097152, target_path: nil, broadcast_type: "banner", dismissable: nil, target_access_levels: [30], theme: "indigo">6128 when not in a project, group, or sub-group page6129 is expected to be nil6130 #broadcast_message6131 returns nil when no current message6132 includes the current message6133 #admin_broadcast_messages_data6134 returns the expected messages data attributes6135 has the correct iso formatted date6136 #broadcast_message_data6137 returns the expected message data attributes6138 has the correct iso formatted date6139 #current_broadcast_notification_message6140 with available broadcast notification messages6141 is expected to eq #<BroadcastMessage id: 4, message: "MyText", starts_at: "2023-05-25 18:22:53.606838387 +0000", ends_at: "2023-05-26 18:22:53.607241897 +0000", created_at: "2023-05-25 18:22:53.607696407 +0000", updated_at: "2023-05-25 18:22:53.607696407 +0000", color: "#E75E40", font: "#FFFFFF", message_html: "<p>MyText</p>", cached_markdown_version: 2097152, target_path: nil, broadcast_type: "notification", dismissable: nil, target_access_levels: [], theme: "indigo">6142 when last broadcast message is hidden6143 is expected to eq #<BroadcastMessage id: 5, message: "MyText", starts_at: "2023-05-24 18:22:53.667245815 +0000", ends_at: "2023-05-26 18:22:53.668031185 +0000", created_at: "2023-05-25 18:22:53.668875765 +0000", updated_at: "2023-05-25 18:22:53.668875765 +0000", color: "#E75E40", font: "#FFFFFF", message_html: "<p>MyText</p>", cached_markdown_version: 2097152, target_path: nil, broadcast_type: "notification", dismissable: nil, target_access_levels: [], theme: "indigo">6144 without broadcast notification messages6145 is expected to be nil6146 user access level targeted messages6147 when in a project page6148 is expected to eq #<BroadcastMessage id: 7, message: "MyText", starts_at: "2023-05-25 18:22:53.762908847 +0000", ends_at: "2023-05-26 18:22:53.763572317 +0000", created_at: "2023-05-25 18:22:53.764216467 +0000", updated_at: "2023-05-25 18:22:53.764216467 +0000", color: "#E75E40", font: "#FFFFFF", message_html: "<p>MyText</p>", cached_markdown_version: 2097152, target_path: nil, broadcast_type: "notification", dismissable: nil, target_access_levels: [30], theme: "indigo">6149 when in a group page6150 is expected to eq #<BroadcastMessage id: 7, message: "MyText", starts_at: "2023-05-25 18:22:53.762908847 +0000", ends_at: "2023-05-26 18:22:53.763572317 +0000", created_at: "2023-05-25 18:22:53.764216467 +0000", updated_at: "2023-05-25 18:22:53.764216467 +0000", color: "#E75E40", font: "#FFFFFF", message_html: "<p>MyText</p>", cached_markdown_version: 2097152, target_path: nil, broadcast_type: "notification", dismissable: nil, target_access_levels: [30], theme: "indigo">6151 when not in a project, group, or sub-group page6152 is expected to be nil6153 #broadcast_message_status6154 returns Active6155 returns Expired6156 returns Pending6157Ci::DailyBuildGroupReportResultService#execute6158 creates daily code coverage record for each job in the pipeline that has coverage value6159 creates a project_ci_feature_usage record for the pipeline project6160 when there are multiple builds with the same group name that report coverage6161 creates daily code coverage record with the average as the value6162 when there is an existing daily code coverage for the matching date, project, ref_path, and group name6163 updates the existing record's coverage value and last_pipeline_id6164 does not create a new project_ci_feature_usage record for the pipeline project6165 when the ID of the pipeline is older than the last_pipeline_id6166 updates the existing daily code coverage records6167 when pipeline has no builds with coverage6168 does nothing6169 when pipeline ref_path is the project default branch6170 sets default branch to true6171 creates a project_ci_feature_usage record for the pipeline project for default branch6172 when pipeline ref_path is not the project default branch6173 sets default branch to false6174Analytics::UsageTrends::CounterJobWorker6175 is labeled as idempotent6176 performs multiple times sequentially without raising an exception6177 counts a scope and stores the result6178 does not raise error when inserting duplicated measurement6179 does not insert anything when BatchCount returns error6180 when no records are in the database6181 sets 0 as the count6182 when the timeout elapses6183 continues counting later when the timeout elapses6184 when pipelines_succeeded identifier is passed6185 counts successful pipelines6186ServiceDesk::CustomEmailCredential6187 # order random6188 encrypted #smtp_username6189 saves and retrieves the encrypted smtp username and iv correctly6190 associations6191 is expected to belong to project required: false6192 can access service desk setting from project6193 encrypted #smtp_password6194 saves and retrieves the encrypted smtp password and iv correctly6195 validations6196 is expected to validate that :project cannot be empty/falsy6197 is expected to validate that :smtp_address cannot be empty/falsy6198 is expected to validate that the length of :smtp_address is at most 2556199 is expected to allow :smtp_address to be ‹"smtp.gmail.com"›6200 is expected to allow :smtp_address to be ‹"1.1.1.1"›6201 is expected to allow :smtp_address to be ‹"199.1.1.1"›6202 is expected not to allow :smtp_address to be ‹"https://example.com"›6203 is expected not to allow :smtp_address to be ‹"file://example"›6204 is expected not to allow :smtp_address to be ‹"/example"›6205 is expected not to allow :smtp_address to be ‹"localhost"›6206 is expected not to allow :smtp_address to be ‹"127.0.0.1"›6207 is expected not to allow :smtp_address to be ‹"192.168.12.12"›6208 is expected to validate that :smtp_port cannot be empty/falsy6209 is expected to validate that :smtp_port looks like an integer greater than 06210 is expected to validate that :smtp_username cannot be empty/falsy6211 is expected to validate that the length of :smtp_username is at most 2556212 is expected to validate that :smtp_password cannot be empty/falsy6213 is expected to validate that the length of :smtp_password is between 8 and 1286214Gitlab::Usage::Metrics::Aggregates::Aggregate6215 .calculate_count_for_aggregation6216 with valid configuration6217 number_of_days: 28, operator: "AND", datasource: "redis_hll", expected_method: :calculate_metrics_intersections6218 returns the number of unique events for aggregation6219 number_of_days: 7, operator: "AND", datasource: "redis_hll", expected_method: :calculate_metrics_intersections6220 returns the number of unique events for aggregation6221 number_of_days: 28, operator: "AND", datasource: "database", expected_method: :calculate_metrics_intersections6222 returns the number of unique events for aggregation6223 number_of_days: 7, operator: "AND", datasource: "database", expected_method: :calculate_metrics_intersections6224 returns the number of unique events for aggregation6225 number_of_days: 28, operator: "OR", datasource: "redis_hll", expected_method: :calculate_metrics_union6226 returns the number of unique events for aggregation6227 number_of_days: 7, operator: "OR", datasource: "redis_hll", expected_method: :calculate_metrics_union6228 returns the number of unique events for aggregation6229 number_of_days: 28, operator: "OR", datasource: "database", expected_method: :calculate_metrics_union6230 returns the number of unique events for aggregation6231 number_of_days: 7, operator: "OR", datasource: "database", expected_method: :calculate_metrics_union6232 returns the number of unique events for aggregation6233 with invalid configuration6234 time_frame: "28d", operator: "SUM", datasource: "redis_hll", expected_error: Gitlab::Usage::Metrics::Aggregates::UnknownAggregationOperator6235 with non prod environment6236 raises error6237 with prod environment6238 returns fallback value6239 time_frame: "7d", operator: "AND", datasource: "mongodb", expected_error: Gitlab::Usage::Metrics::Aggregates::UnknownAggregationSource6240 with non prod environment6241 raises error6242 with prod environment6243 returns fallback value6244 time_frame: "all", operator: "AND", datasource: "redis_hll", expected_error: Gitlab::Usage::Metrics::Aggregates::DisallowedAggregationTimeFrame6245 with non prod environment6246 raises error6247 with prod environment6248 returns fallback value6249 when union data is not available6250 time_frame: "28d", operator: "OR", datasource: "redis_hll"6251 with non prod environment6252 raises error6253 with prod environment6254 returns fallback value6255 time_frame: "7d", operator: "OR", datasource: "database"6256 with non prod environment6257 raises error6258 with prod environment6259 returns fallback value6260Gitlab::Memory::Watchdog::EventReporter6261 # order random6262 #threshold_violated6263 increments violations counter6264 does not increment handled violations counter6265 does not log violation6266 #logger6267 when logger is not provided6268 uses default Gitlab::AppLogger6269 #stopped6270 logs stop message once6271 #strikes_exceeded6272 increments handled violations counter6273 logs violation6274 #started6275 logs start message once6276Gitlab::Security::ScanConfiguration6277 #available?6278 with a core scanner6279 type: :sast6280 is expected to be truthy6281 type: :sast_iac6282 is expected to be truthy6283 type: :secret_detection6284 is expected to be truthy6285 type: :container_scanning6286 is expected to be truthy6287 with custom scanner6288 is expected to be falsey6289 #configured?6290 is expected to be falsey6291 #configuration_path6292 is expected to be nil6293 #meta_info_path6294 is expected to be nil6295 #can_enable_by_merge_request?6296 with a core scanner6297 type: :sast6298 is expected to be truthy6299 type: :sast_iac6300 is expected to be truthy6301 type: :secret_detection6302 is expected to be truthy6303 with a custom scanner6304 is expected to be falsey6305Gitlab::Webpack::Manifest6306 with dev server enabled6307 .asset_paths6308 errors if we can't find the manifest6309 behaves like a valid manifest6310 returns single entry asset paths from the manifest6311 returns multiple entry asset paths from the manifest6312 errors on a missing entry point6313 webpack errors6314 does not error if errors is present but empty6315 when webpack has 'Module build failed' errors in its manifest6316 errors6317 when webpack does not have 'Module build failed' errors in its manifest6318 does not error6319 with dev server disabled6320 .asset_paths6321 errors if we can't find the manifest6322 behaves like a valid manifest6323 returns single entry asset paths from the manifest6324 returns multiple entry asset paths from the manifest6325 errors on a missing entry point6326ErrorTracking::IssueDetailsService6327 #execute6328 with authorized user6329 when issue_details returns a detailed error6330 returns the detailed error6331 returns the gitlab_issue when the error has a sentry_issue6332 returns the gitlab_issue path from sentry when the error has no sentry_issue6333 when issue_details returns nil6334 result is not ready6335 when issue_details returns error6336 returns the error6337 when issue_details returns error with http_status6338 returns the error with correct http_status6339 with integrated error tracking6340 returns the error in detailed format6341 when error does not exist6342 returns the error in detailed format6343 with unauthorized user6344 returns error6345 with error tracking disabled6346 raises error6347RuboCop::Cop::Performance::ActiveRecordSubtransactionMethods6348 # order random6349 when the method uses a subtransaction6350 method: :safe_ensure_unique6351 registers an offense6352 method: :safe_find_or_create_by6353 registers an offense6354 method: :safe_find_or_create_by!6355 registers an offense6356 method: :with_fast_read_statement_timeout6357 registers an offense6358 method: :create_or_find_by6359 registers an offense6360 method: :create_or_find_by!6361 registers an offense6362Gitlab::Kubernetes::RolloutInstances6363 #pod_instances6364 returns an instance for a deployment with one pod6365 returns a pending pod for a missing replica6366 returns instances when there are two stable deployments6367 returns instances for two deployments with different tracks6368 sorts stable tracks after canary tracks6369RebaseWorker#perform6370 when rebasing an MR from a fork where upstream has protected branches6371 sets the correct project for running hooks6372Achievements::CreateService6373 # order random6374 #execute6375 when user does not have permission6376 returns an error6377 when user has permission6378 creates an achievement6379 returns an error when the achievement is not persisted6380Gitlab::SlashCommands::Presenters::Access6381 #access_denied6382 is expected to be a kind of Hash6383 behaves like displays an error message6384 is expected to equal :ephemeral6385 #generic_access_denied6386 is expected to be a kind of Hash6387 behaves like displays an error message6388 is expected to equal :ephemeral6389 #deactivated6390 is expected to be a kind of Hash6391 behaves like displays an error message6392 is expected to equal :ephemeral6393 #not_found6394 is expected to be a kind of Hash6395 tells the user the resource was not found6396 #authorize6397 with an authorization URL6398 is expected to be a kind of Hash6399 tells the user to authorize6400 without authorization url6401 is expected to be a kind of Hash6402 tells the user to authorize6403IncidentManagement::TimelineEventsFinder6404 # order random6405 #execute6406 when user has permissions6407 returns timeline events6408 when filtering by ID6409 returns only matched timeline event6410 when incident is nil6411 is expected to eq #<ActiveRecord::Relation []>6412 when user has no permissions6413 is expected to eq #<ActiveRecord::Relation []>6414profiles/keys/_form.html.haml6415 when the form partial is used6416 renders the form with the correct action6417 has the key field6418 has the title field6419 has the usage type field6420 has the expires at field6421 has the validation warning6422 has the submit button6423Checksummable6424 .crc326425 returns the CRC32 of data6426 .sha256_hexdigest6427 returns the SHA256 sum of the file6428 .md5_hexdigest6429 returns the MD5 sum of the file6430Types::BoardListType6431 is expected to eq "BoardList"6432 has specific fields6433 issues field6434 has a correct extension6435 title6436 preloads the label association6437Import::Github::Notes::CreateService6438 does not support quick actions6439AlertManagement::HttpIntegrations::CreateService6440 #execute6441 when the current_user is anonymous6442 behaves like error response6443 has an informative message6444 when current_user does not have permission to create integrations6445 behaves like error response6446 has an informative message6447 when an error occurs during update6448 behaves like error response6449 has an informative message6450 with valid params6451 successfully creates an integration6452 with an existing HTTP integration6453 behaves like error response6454 has an informative message6455 when creating a different type of integration6456 is successful6457 with an existing Prometheus integration6458 when creating a different type of integration6459 is successful6460 when creating the same time of integration6461 behaves like error response6462 has an informative message6463Gitlab::Diff::Rendered::Notebook::DiffFileHelper6464 #strip_diff_frontmatter6465 diff: "FileLine1\nFileLine2\n@@ -1,76 +1,74 @@\nhello\n", result: "@@ -1,76 +1,74 @@\nhello\n"6466 is expected to eq "@@ -1,76 +1,74 @@\nhello\n"6467 diff: "", result: nil6468 is expected to eq nil6469 diff: nil, result: nil6470 is expected to eq nil6471 #map_transformed_line_to_source6472 case: "if transformed diff is empty", transformed_blocks: [], result: 06473 is expected to eq 06474 case: "if the transformed line does not map to any in the original file", transformed_blocks: [{:source_line=>nil}], result: 06475 is expected to eq 06476 case: "if the transformed line maps to a line in the source file", transformed_blocks: [{:source_line=>3}], result: 36477 is expected to eq 36478 #image_as_rich_text6479 text does not contain image6480 is expected to be nil6481 text contains image6482 is expected to eq "<img src=\"data:image/png;base64,some_image_here\">"6483 text contains image that has malicious html6484 sanitizes the html6485 adds image to src6486 #line_positions_at_source_diff6487 case: " A A", index: 0, transformed_positions: [1, 1], mapped_positions: [1, 1]6488 is expected to eq [1, 1]6489 case: "- C ", index: 1, transformed_positions: [2, 2], mapped_positions: [3, 2]6490 is expected to eq [3, 2]6491 case: "- B ", index: 2, transformed_positions: [3, 2], mapped_positions: [2, 2]6492 is expected to eq [2, 2]6493 case: "- L ", index: 3, transformed_positions: [4, 2], mapped_positions: [0, 0]6494 is expected to eq [0, 0]6495 case: "+ D", index: 4, transformed_positions: [5, 2], mapped_positions: [4, 2]6496 is expected to eq [4, 2]6497 case: "+ J", index: 5, transformed_positions: [5, 3], mapped_positions: [0, 0]6498 is expected to eq [0, 0]6499 case: "+ E", index: 6, transformed_positions: [5, 4], mapped_positions: [4, 3]6500 is expected to eq [4, 3]6501 case: " K K", index: 7, transformed_positions: [5, 5], mapped_positions: [0, 0]6502 is expected to eq [0, 0]6503 case: " F F", index: 8, transformed_positions: [6, 6], mapped_positions: [4, 4]6504 is expected to eq [4, 4]6505 #lines_in_source_diff6506 old_lines: [1, 2, 2], new_lines: [1, 1, 4], is_deleted: false, is_new: false, existing_lines: {:from=>#<Set: {1, 2}>, :to=>#<Set: {1, 4}>}6507 is expected to eq {:from=>#<Set: {1, 2}>, :to=>#<Set: {1, 4}>}6508 old_lines: [1, 2, 2], new_lines: [1, 1, 4], is_deleted: true, is_new: false, existing_lines: {:from=>#<Set: {1, 2}>, :to=>#<Set: {}>}6509 is expected to eq {:from=>#<Set: {1, 2}>, :to=>#<Set: {}>}6510 old_lines: [1, 2, 2], new_lines: [1, 1, 4], is_deleted: false, is_new: true, existing_lines: {:from=>#<Set: {}>, :to=>#<Set: {1, 4}>}6511 is expected to eq {:from=>#<Set: {}>, :to=>#<Set: {1, 4}>}6512Branches::CreateService6513 #bulk_create6514 creates two branches6515 when branches are empty6516 is successful6517 when incorrect reference is provided6518 returns an error with a reference name6519 when branch already exists6520 returns an error6521 when PreReceiveError exception6522 logs and returns an error if there is a PreReceiveError exception6523 when multiple errors occur6524 returns all errors6525 without N+1 for Redis cache6526 does not trigger Redis recreation6527 without N+1 branch cache expiration6528 triggers branch cache expiration only once6529 when branches were not added6530 does not trigger branch expiration6531 #execute6532 logs and returns an error if there is a PreReceiveError exception6533 when repository is empty6534 creates master branch6535 creates another-feature branch6536 when branch already exists6537 returns an error6538 when incorrect reference is provided6539 returns an error with a reference name6540Mutations::CustomerRelations::Contacts::Create6541 is expected to require graphql authorizations :admin_crm_contact6542 #resolve6543 when the user does not have permission6544 raises an error6545 when the user has permission6546 creates contact with correct values6547 when crm_enabled is false6548 raises an error6549 when the params are invalid6550 returns the validation error6551 when attaching to an crm_organization6552 when all ok6553 creates contact with correct values6554 when crm_organization does not exist6555 returns the relevant error6556 when crm_organzation belongs to a different group6557 returns the relevant error6558Ci::BuildReportResultService6559 #execute6560 when build is finished6561 creates a build report result entry6562 tracks unique test cases parsed6563 and build has test report parsing errors6564 creates a build report result entry with suite error6565 does not track unique test cases parsed6566 when data has already been persisted6567 raises an error and do not persist the same data twice6568 when build is running and test report does not exist6569 does not persist data6570Gitlab::Ci::Config::EdgeStagesInjector6571 #call6572 without stages6573 is expected to match {:test=>{:script=>"test"}}6574 with values6575 is expected to match {:stages=>[".pre", "stage1", "stage2", ".post"], :test=>{:script=>"test"}}6576 with bad values6577 is expected to match {:stages=>"stage1", :test=>{:script=>"test"}}6578 with collision values6579 is expected to match {:stages=>[".pre", "stage1", "stage2", ".post"], :test=>{:script=>"test"}}6580 with types6581 is expected to match {:types=>[".pre", "stage1", "stage2", ".post"], :test=>{:script=>"test"}}6582 with types6583 is expected to match {:types=>[".pre", "stage1", "stage2", ".post"], :test=>{:script=>"test"}}6584 .wrap_stages6585 with empty value6586 is expected to eq [".pre", ".post"]6587 with values6588 is expected to eq [".pre", "s1", ".post"]6589MATLAB.[MASKED].yml6590 the created pipeline6591 creates all jobs6592Gitlab::Ci::Config::External::Rules6593 #evaluate6594 when there is no rule6595 is expected to eq true6596 when there is a rule with if6597 when the rule matches6598 is expected to eq true6599 when the rule does not match6600 is expected to eq false6601 when there is a rule with exists6602 when the file does not exist6603 is expected to eq false6604 when the file exists6605 is expected to eq true6606 when there is a rule with if and when6607 raises an error6608 when there is a rule with changes6609 raises an error6610Gitlab::Prometheus::Adapter6611 #prometheus_adapter6612 prometheus integration can execute queries6613 return prometheus integration as prometheus adapter6614 with cluster with prometheus available6615 returns prometheus integration6616 prometheus integration can't execute queries6617 with cluster with prometheus disabled6618 returns nil6619 with cluster with prometheus available6620 returns application handling all environments6621 with cluster without prometheus installed6622 returns nil6623Resolvers::AlertManagement::IntegrationsResolver6624 is expected to have nullable GraphQL type AlertManagementIntegrationConnection6625 user does not have permission6626 is expected to be empty6627 user has permission6628 is expected to contain exactly #<AlertManagement::HttpIntegration id: 8, created_at: "2023-05-25 18:23:40.754651714 +0000", updated_at: "2023-05-25 18:23:40.754651714 +0000", project_id: 793, active: true, encrypted_token: [FILTERED], encrypted_token_iv: "XwTwlKAyMutmPItf\n", endpoint_identifier: "4c3220bb", name: "DataDog", payload_example: {}, payload_attribute_mapping: {}, type_identifier: "http", token: nil> and #<Integrations::Prometheus id: 8, project_id: 793, created_at: "2023-05-25 18:23:40.745590215 +0000", updated_at: "2023-05-25 18:23:40.745590215 +0000", active: true, push_events: true, issues_events: true, merge_requests_events: true, tag_push_events: true, note_events: true, category: "monitoring", wiki_page_events: true, pipeline_events: true, confidential_issues_events: true, commit_events: true, job_events: true, confidential_note_events: true, deployment_events: false, comment_on_event_enabled: true, instance: false, comment_detail: nil, inherit_from_id: nil, alert_events: true, group_id: nil, type_new: "Integrations::Prometheus", vulnerability_events: false, archive_trace_events: [FILTERED], encrypted_properties: "\xA5\xD6\xC6\x04\r1\xC1]{\xD45\xA5\xB3\x16\x9E\x0Fg\x1Ek\xB1\xC1=\xB2!C\xE6\xCC\xA5\xC4\xEE\xBEC\vNH\x94v\x82\xFF\xA7e\xD5k\xDF\x80x\xDD\x9C\xCC\x17...", encrypted_properties_iv: "\xCB\x9F?\xB3\x16\xF6z:Q\xE1\xC6\x17", incident_events: false, properties: nil>6629 when HTTP Integration ID is given6630 when integration is from the current project6631 is expected to contain exactly #<AlertManagement::HttpIntegration id: 9, created_at: "2023-05-25 18:23:40.759345133 +0000", updated_at: "2023-05-25 18:23:40.759345133 +0000", project_id: 793, active: false, encrypted_token: [FILTERED], encrypted_token_iv: "m19I6RN5m80/Qm+0\n", endpoint_identifier: "117982aa", name: "DataDog", payload_example: {}, payload_attribute_mapping: {}, type_identifier: "http", token: nil>6632 when integration is from other project6633 is expected to be empty6634 when Prometheus Integration ID is given6635 when integration is from the current project6636 is expected to contain exactly #<Integrations::Prometheus id: 8, project_id: 793, created_at: "2023-05-25 18:23:40.745590215 +0000", updated_at: "2023-05-25 18:23:40.745590215 +0000", active: true, push_events: true, issues_events: true, merge_requests_events: true, tag_push_events: true, note_events: true, category: "monitoring", wiki_page_events: true, pipeline_events: true, confidential_issues_events: true, commit_events: true, job_events: true, confidential_note_events: true, deployment_events: false, comment_on_event_enabled: true, instance: false, comment_detail: nil, inherit_from_id: nil, alert_events: true, group_id: nil, type_new: "Integrations::Prometheus", vulnerability_events: false, archive_trace_events: [FILTERED], encrypted_properties: "\xA5\xD6\xC6\x04\r1\xC1]{\xD45\xA5\xB3\x16\x9E\x0Fg\x1Ek\xB1\xC1=\xB2!C\xE6\xCC\xA5\xC4\xEE\xBEC\vNH\x94v\x82\xFF\xA7e\xD5k\xDF\x80x\xDD\x9C\xCC\x17...", encrypted_properties_iv: "\xCB\x9F?\xB3\x16\xF6z:Q\xE1\xC6\x17", incident_events: false, properties: nil>6637 when integration is from other project6638 is expected to be empty6639gitlab:feature_categories:index6640 # order random6641 outputs objects by stage group6642LegacyBulkInsert6643 #bulk_insert6644 does nothing with empty rows6645 uses the ordering from the first row6646 quotes column names6647 quotes values6648 does not quote values of a column in the disable_quote option6649 does not quote values of columns in the disable_quote option6650 handles non-UTF-8 data6651 when using PostgreSQL6652 allows the returning of the IDs of the inserted rows6653 allows setting the upsert to do nothing6654Gitlab::BranchPushMergeCommitAnalyzer6655 #get_merge_commit6656 returns correct merge commit SHA for each commit6657 when one parent has two children6658 returns correct merge commit SHA for each commit6659 when relevant_commit_ids is provided6660 returns correct merge commit6661Gitlab::FileFinder6662 #find6663 does not cause N+1 query6664 behaves like file finder6665 finds by path6666 finds by content6667 with inclusive filters6668 filters by filename6669 filters by path6670 filters by extension6671 with exclusive filters6672 filters by filename6673 filters by path6674 filters by extension6675 with white space in the path6676 filters by path correctly6677Gitlab::Counters::LegacyCounter6678 # order random6679 #increment6680 increments the attribute in the counter record6681 returns the value after the increment6682 executes after counter_record after commit callback6683 #bulk_increment6684 increments the attribute in the counter record6685 returns the value after the increment6686 executes after counter_record after commit callback6687RuboCop::Cop::UsageData::InstrumentationSuperclass6688 # order random6689 with dynamic class definition6690 when inheriting from allowed superclass6691 does not register an offense6692 when inheriting from some other superclass6693 registers an offense6694 when not inheriting6695 does not register an offense6696 with class definition6697 when inheriting from allowed superclass6698 does not register an offense6699 when inheriting from some other superclass6700 registers an offense6701 when not inheriting6702 does not register an offense6703RawUsageData6704 scopes6705 .for_current_reporting_cycle6706 returns nil where no records match filter criteria6707 with records matching filtering criteria6708 return records within reporting cycle time range ordered by creation time6709 validations6710 is expected to validate that :payload cannot be empty/falsy6711 is expected to validate that :recorded_at cannot be empty/falsy6712 uniqueness validation6713 is expected to validate that :recorded_at is case-sensitively unique6714 #update_version_metadata!6715 updates sent_at6716 updates version_usage_data_id_value6717Gitlab::GithubImport::AdvanceStageWorker6718 #perform6719 when the project no longer exists6720 does not perform any work6721 when there are remaining jobs6722 reschedules itself6723 when there are no remaining jobs6724 schedules the next stage6725 raises KeyError when the stage name is invalid6726 #wait_for_jobs6727 waits for jobs to complete and returns a new pair of keys to wait for6728 #find_import_state6729 returns a ProjectImportState6730 returns nil if the project import is not running6731Sidebars::Groups::SuperSidebarPanel6732 # order random6733 implements #super_sidebar_context_header6734 #renderable_menus6735 is exposed as a renderable menu6736 behaves like a panel with all menu_items categorized6737 has no uncategorized menu_items6738 behaves like a panel with uniquely identifiable menu items6739 all menu_items have unique item_id6740 all menu_items have an item_id6741MergeRequest::ApprovalRemovalSettings6742 validations6743 when enabling selective_code_owner_removals and reset_approvals_on_push is disabled6744 is expected to be valid6745 when enabling selective_code_owner_removals and reset_approvals_on_push is enabled6746 is expected not to be valid6747 when enabling reset_approvals_on_push and selective_code_owner_removals is disabled6748 is expected to be valid6749 when enabling reset_approvals_on_push and selective_code_owner_removals is enabled6750 is expected not to be valid6751 when enabling reset_approvals_on_push and selective_code_owner_removals6752 is expected not to be valid6753Gitlab::SidekiqMiddleware::DuplicateJobs::Client6754 with until_executing strategy6755 behaves like client duplicate job6756 #call6757 adds a correct duplicate tag to the jobs6758 without scheduled deduplication6759 does not mark a job that's scheduled in the future as a duplicate6760 with scheduled deduplication6761 adds a correct duplicate tag to the jobs6762 with until_executed strategy6763 behaves like client duplicate job6764 #call6765 adds a correct duplicate tag to the jobs6766 without scheduled deduplication6767 does not mark a job that's scheduled in the future as a duplicate6768 with scheduled deduplication6769 adds a correct duplicate tag to the jobs6770Mutations::Labels::Create6771 is expected to require graphql authorizations :admin_label6772 when creating a project label6773 behaves like create labels mutation6774 #resolve6775 when the user does not have permission to create a label6776 raises an error6777 when the user can create a label6778 creates label with correct values6779 when creating a group label6780 behaves like create labels mutation6781 #resolve6782 when the user does not have permission to create a label6783 raises an error6784 when the user can create a label6785 creates label with correct values6786 #ready?6787 when passing both project_path and group_path6788 raises an argument error6789 when passing only project_path or group_path6790 does not raise an error6791Security::CiConfiguration::ContainerScanningBuildAction6792 with existing .[MASKED].yml6793 container_scanning has not been included6794 template includes are an array6795 generates the correct YML6796 template include is not an array6797 generates the correct YML6798 container_scanning has been included6799 container_scanning template include are an array6800 generates the correct YML6801 container_scanning template include is not an array6802 generates the correct YML6803 with no .[MASKED].yml6804 autodevops disabled6805 generates the correct YML6806 with autodevops enabled6807 generates the correct YML6808Sidebars::UserSettings::Menus::GpgKeysMenu6809 # order random6810 behaves like User settings menu #render? method6811 #render?6812 when user is logged in6813 renders6814 when user is not logged in6815 does not render6816 behaves like User settings menu6817 does not contain any sub menu6818 renders the correct link6819 renders the correct title6820 renders the correct icon6821 defines correct active route6822GoogleCloud::EnableCloudRunService6823 when a project does not have any gcp projects6824 returns error6825 when a project has 3 gcp projects6826 enables cloud run, artifacts registry and cloud build6827Groups::MergeRequestsCountService6828 #relation_for_count6829 uses the MergeRequestsFinder to scope merge requests6830 behaves like a counter caching service with threshold6831 when cache is empty6832 refreshes cache if value over threshold6833 does not refresh cache if value under threshold6834 when cached count is under the threshold value6835 does not refresh cache6836 when cached count is over the threshold value6837 does not refresh cache6838Gitlab::JiraImport::Stage::ImportIssuesWorker6839 modules6840 behaves like include import workers modules6841 is expected to includes the ApplicationWorker module6842 is expected to includes the Gitlab::JiraImport::QueueOptions module6843 is expected to includes the Gitlab::JiraImport::ImportWorker module6844 #perform6845 when import did not start6846 behaves like cannot do Jira import6847 does not advance to next stage6848 behaves like does not advance to next stage6849 does not advance to next stage6850 when import started6851 when start_at is nil6852 behaves like advance to next stage6853 advances to attachments stage6854 when start_at is zero6855 behaves like advance to next stage6856 advances to issues stage6857 when start_at is greater than zero6858 behaves like advance to next stage6859 advances to issues stage6860 when start_at is below zero6861 behaves like advance to next stage6862 advances to attachments stage6863Integrations::HasWebHook6864 # order random6865 when integration does not respond to enable_ssl_verification6866 is expected to eq true6867 when hook_url and url_variables are not implemented6868 is expected to raise NotImplementedError6869 is expected to raise NotImplementedError6870 when integration responds to enable_ssl_verification6871 is expected to eq true6872RuboCop::Cop::Migration::WithLockRetriesDisallowedMethod6873 # order random6874 when outside of migration6875 registers no offense6876 when in migration6877 registers an offense when `with_lock_retries` block has disallowed method6878 registers an offense when `with_lock_retries` block has disallowed methods6879 registers no offense when `with_lock_retries` has only allowed method6880 for `add_foreign_key`6881 registers an offense when more than two FKs are added6882Gitlab::Database::LoadBalancing::RackMiddleware6883 #call6884 handles a request6885 #unstick_or_continue_sticking6886 does not stick if no namespace and identifier could be found6887 sticks to the primary if a warden user is found6888 sticks to the primary if a sticking namespace and identifier is found6889 sticks to the primary if multiple sticking namespaces and identifiers were found6890 #stick_if_necessary6891 does not stick to the primary if not necessary6892 sticks to the primary if a warden user is found6893 sticks to the primary if a a single sticking object is found6894 sticks to the primary if multiple sticking namespaces and identifiers were found6895 #clear6896 clears the currently used host and session6897 #sticking_namespaces6898 using a Warden request6899 returns the warden user if present6900 returns an empty Array if no user was present6901 using a request with a manually set sticking object6902 returns the sticking object6903 using a regular request6904 returns an empty Array6905Gitlab::ImportExport::HashUtil6906 .deep_symbolize_array!6907 symbolizes keys6908 .deep_symbolize_array_with_date!6909 symbolizes keys6910 transforms date strings into Time objects6911Gitlab::Database::PostgresqlAdapter::EmptyQueryPing6912 #active?6913 uses an empty query to check liveness6914 returns true if no error was signaled6915 returns false when an error occurs6916Metrics::SampleMetricsService6917 query6918 when the file is not found6919 is expected to be nil6920 when the file is found6921 loads data from the sample file correctly6922 when the identifier is for a path outside of sample_metrics6923 is expected to be nil6924Gitlab::Sanitizers::SVG6925 .clean6926 delegates sanitization to scrubber6927 returns sanitized data6928 scrubber6929 #scrub6930 removes an invalid element6931 removes an invalid attribute6932 accepts valid element6933 accepts valid namespaced attributes6934 #attribute_name_with_namespace6935 returns name with prefix when attribute is namespaced6936 #unsafe_href?6937 returns true if href attribute is an external url6938 returns false if href atttribute is an internal reference6939 #data_attribute?6940 returns true if is a valid data attribute6941 returns false if attribute is namespaced6942 returns false if not a data attribute6943PartitionedTable6944 .partitioned_by6945 assigns the MonthlyStrategy as the partitioning strategy6946 passes the partitioning key to the strategy instance6947 with keyword arguments passed to the strategy6948 passes the keyword arguments to the strategy6949Types::CustomerRelations::ContactStateCountsType6950 is expected to eq "ContactStateCounts"6951 is expected to have graphql fields "all", "active", and "inactive"6952 is expected to require graphql authorizations :read_crm_contact6953Gitlab::Usage::Metrics::Instrumentations::CountUsersCreatingIssuesMetric6954 with all time frame6955 behaves like a correct instrumented metric value and query6956 behaves like a correct instrumented metric value6957 has correct value6958 behaves like a correct instrumented metric query6959 has correct generate query6960 for 28d time frame6961 behaves like a correct instrumented metric value and query6962 behaves like a correct instrumented metric value6963 has correct value6964 behaves like a correct instrumented metric query6965 has correct generate query6966API::Entities::Ci::JobRequest::Port6967 returns the port number6968 returns if the port protocol6969 returns the port name6970Types::Clusters::AgentActivityEventType6971 is expected to eq "ClusterAgentActivityEvent"6972 is expected to require graphql authorizations :read_cluster_agent6973 is expected to have graphql fields :recorded_at, :kind, :level, :user, and :agent_token6974RuboCop::Cop::Gitlab::Json6975 # order random6976 when ActiveSupport::JSON is called6977 registers an offense and autocorrects6978 when ::JSON is called6979 registers an offense and autocorrects6980 when ::JSON is called in EE6981 registers an offense and autocorrects6982BlobViewer::Changelog6983 #render_error6984 when there are no tags6985 returns :no_tags6986 when there are tags6987 returns nil6988Gitlab::Database::SchemaCacheWithRenamedTable6989 when table is not renamed yet6990 uses the original table to look up metadata6991 when table is renamed6992 uses the renamed table to look up metadata6993 has primary key6994 has the same column definitions6995 has the same indexes6996 has the same column_hash6997 when the table behind a model is actually a view6998 can persist records6999 can find records7000Gitlab::GitalyClient::Call7001 #call7002 when the response is not an enumerator7003 returns the response7004 stores timings and call details7005 when err7006 stores timings and call details7007 when the response is an enumerator7008 returns a consumable enumerator7009 time measurements7010 records full rpc stream consumption7011 records partial rpc stream consumption7012 when err7013 records partial rpc stream consumption7014Types::GroupMemberRelationEnum7015 is expected to eq "GroupMemberRelation"7016 exposes all the existing group member relation type values7017CleanupContainerRepositoryWorker7018 #perform7019 bulk delete api7020 executes the destroy service7021 does not raise error when user could not be found7022 does not raise error when repository could not be found7023BulkImports::EntityWorker7024 updates pipeline trackers to enqueued state when selected7025 is labeled as idempotent7026 performs multiple times sequentially without raising an exception7027 enqueues the first stage pipelines work7028 logs and tracks the raised exceptions7029 in first stage7030 do not enqueue a new pipeline job if the current stage still running7031 enqueues the next stage pipelines when the current stage is finished7032Preloaders::GroupPolicyPreloader7033 avoids N+1 queries when authorizing a list of groups7034BulkImports::Groups::Pipelines::GroupPipeline7035 #run7036 imports new group into destination group7037 pipeline parts7038 is expected to includes the BulkImports::Pipeline module7039 is expected to includes the BulkImports::Pipeline::Runner module7040 has extractors7041 has transformers7042 has loaders7043Ci::BuildUnscheduleService7044 #execute7045 when user is authorized to unschedule the build7046 when build is scheduled7047 transits build to manual7048 when build is not scheduled7049 responds with unprocessable entity7050 when user is not authorized to unschedule the build7051 responds with forbidden7052Gitlab::RequestEndpoints7053 .all_api_endpoints7054 selects all feature API classes7055 .all_controller_actions7056 selects all feature controllers and action names7057FeatureFlagSerializer7058 #represent7059 includes feature flag attributes7060Types::WorkItems::Widgets::NotificationsType7061 # order random7062 exposes the expected fields7063dashboard/projects/_blank_state_welcome.html.haml7064 with regular user7065 with project creation enabled7066 has a doc_url7067 shows create project panel7068 with project creation disabled7069 doesn't show create project panel7070 shows an alert7071 with external user7072 doesn't show create project panel7073 shows an alert7074projects/commits/show.html.haml7075 tree controls7076 renders atom feed button with matching path7077Packages::UpdateTagsService7078 #execute7079 behaves like updating tags7080 updates a tag7081 with an existing tag7082 on the same package7083 behaves like updating tags7084 updates a tag7085 with different name7086 behaves like updating tags7087 updates a tag7088 on a different package7089 behaves like updating tags7090 updates a tag7091 with empty tags7092 is a no op7093Import::BitbucketServerService7094 raises an exception for unknown error causes7095 execute7096 tracks an access level event7097 when no repo is found7098 returns an error7099 when import source is disabled7100 returns forbidden7101 when user is unauthorized7102 returns an error7103 verify url7104 when host is localhost7105 does not allow requests7106 when host is on local network7107 does not allow requests7108 when host is ftp protocol7109 does not allow requests7110BulkImports::Common::Pipelines::LabelsPipeline7111 #run7112 imports group labels into destination group and removes tmpdir7113 #load7114 when label is not persisted7115 saves the label7116 when label is missing7117 returns7118Gitlab::GithubImport::ImportPullRequestWorker7119 #import7120 imports a pull request7121 #importer_class7122 is expected to eq Gitlab::GithubImport::Importer::PullRequestImporter7123 #representation_class7124 is expected to eq Gitlab::GithubImport::Representation::PullRequest7125 #object_type7126 is expected to eq :pull_request7127 #parallel_import_batch7128 is expected to eq {:delay=>1 minute, :size=>200}7129Gitlab::Favicon7130 .main7131 defaults to favicon.png7132 has yellow favicon for canary7133 uses the custom favicon if a favicon appearance is present7134 asset host7135 returns a relative url when the asset host is not configured7136 returns a full url when the asset host is configured7137 .ci_status_overlay7138 returns the overlay for the status7139 .mr_status_overlay7140 returns the overlay for the status7141 .available_status_names7142 returns the available status names7143Packages::RemoveTagService7144 #execute7145 with existing tag7146 is expected to change `Packages::Tag.count` by -17147 with nil7148 is expected to raise ArgumentError7149Gitlab::Allowable7150 #can?7151 when user is allowed to do something7152 reports correct ability to perform action7153 when user is not allowed to do something7154 reports correct ability to perform action7155Gitlab::Ci::Config::Entry::Kubernetes7156 attributes7157 is expected to respond to #namespace7158 is expected to respond to #has_namespace?7159 validations7160 config7161 is a hash containing known keys7162 is expected to be valid7163 is a hash containing an unknown key7164 is expected not to be valid7165 is a string7166 is expected not to be valid7167 namespace7168 is a string7169 is expected to be valid7170 is a hash7171 is expected not to be valid7172 is not present7173 is expected not to be valid7174Banzai::Filter::KrokiFilter7175 replaces nomnoml pre tag with img tag if kroki is enabled7176 replaces nomnoml pre tag with img tag if both kroki and plantuml are enabled7177 does not replace nomnoml pre tag with img tag if kroki is disabled7178 does not replace plantuml pre tag with img tag if both kroki and plantuml are enabled7179 adds hidden attribute when content size is large7180 allows the lang attribute on the code tag to support RST files processed by gitlab-markup gem7181 verifies diagram type to avoid possible XSS7182RuboCop::Cop::CodeReuse::Worker7183 # order random7184 flags the use of a worker in a Presenter7185 flags the use of a worker in an API7186 flags the use of a worker in a model class method7187 flags the use of a worker in GraphQL7188 flags the use of a worker in a controller7189 flags the use of a worker in a Serializer7190 flags the use of a worker in a Finder7191Ci::DailyBuildGroupReportResultsWorker7192 #perform7193 when pipeline is found7194 executes service7195 when pipeline is not found7196 does not execute service7197Gitlab::Analytics::CycleAnalytics::Average7198 #seconds7199 when no results7200 is expected to eq nil7201 returns the average duration in seconds7202 is expected to be within 0.5 of 648000.07203 #days7204 when no results7205 is expected to eq nil7206 returns the average duration in days7207 is expected to be within 0.01 of 7.57208dashboard/milestones/index.html.haml7209 behaves like milestone empty states7210 with no milestones7211 shows empty state7212 does not show tabs or searchbar7213 with no open milestones7214 shows tabs and searchbar7215 shows empty state7216 with no closed milestones7217 shows tabs and searchbar7218 shows empty state on closed milestones7219Gitlab::Database::QueryAnalyzers::GitlabSchemasMetrics7220 does not increment metrics if feature flag is disabled7221 properly observes all queries7222 for simple query observes schema correctly7223 is expected to receive increment({:db_config_name=>"main", :gitlab_schemas=>"gitlab_main"}) 1 time7224 for query accessing gitlab_ci and gitlab_main7225 is expected to receive increment({:db_config_name=>"main", :gitlab_schemas=>"gitlab_ci,gitlab_main"}) 1 time7226 for query accessing gitlab_ci and gitlab_main the gitlab_schemas is always ordered7227 is expected to receive increment({:db_config_name=>"main", :gitlab_schemas=>"gitlab_ci,gitlab_main"}) 1 time7228 for query accessing CI database7229 is expected to receive increment({:db_config_name=>"ci", :gitlab_schemas=>"gitlab_ci"}) 1 time7230 for query accessing gitlab_main and unknown schema7231 is expected to raise /Could not find gitlab schema for table not_in_schema/7232shared/milestones/_top.html.haml7233 does not render a deprecation message for a non-legacy and non-dashboard milestone7234Custom URLs Subscription Portal7235 # order random7236 subscription_portal_url7237 when CUSTOMER_PORTAL_URL ENV is unset7238 test: false, development: false, expected_url: "https://customers.gitlab.com"7239 is expected to eq "https://customers.gitlab.com"7240 test: false, development: true, expected_url: "https://customers.staging.gitlab.com"7241 is expected to eq "https://customers.staging.gitlab.com"7242 test: true, development: false, expected_url: "https://customers.staging.gitlab.com"7243 is expected to eq "https://customers.staging.gitlab.com"7244 when CUSTOMER_PORTAL_URL ENV is set7245 is expected to eq "https://customers.example.com"7246 subscription_portal_instance_review_url7247 is expected to eq "https://customers.staging.gitlab.com/instance_review"7248 subscription_portal_staging_url7249 when STAGING_CUSTOMER_PORTAL_URL is unset7250 is expected to eq "https://customers.staging.gitlab.com"7251 when STAGING_CUSTOMER_PORTAL_URL is set7252 is expected to eq "https://customers.staging.example.com"7253JiraConnect::SyncBuildsWorker7254 behaves like worker with data consistency7255 .get_data_consistency_feature_flag_enabled?7256 returns true7257 .get_data_consistency7258 returns correct data consistency7259 #perform7260 when pipeline exists7261 calls the Jira sync service7262 when pipeline does not exist7263 does not call the sync service7264groups/new.html.haml7265 setup_for_company field7266 does not have a default selection7267 when a subgroup7268 renders the visibility level section7269 role field7270 does have a default selection7271Types::IssuableType7272 returns possible types7273 .resolve_type7274 resolves issues7275 resolves merge requests7276 resolves work items7277 raises an error for invalid types7278Gitlab::Database::Migrations::LockRetriesHelpers7279 # order random7280 #with_lock_retries7281 sets the migration class name in the logs7282 does not raise on exhaustion by default7283 defaults to allowing subtransactions7284 raise_on_exhaustion: true7285 sets raise_on_exhaustion as requested7286 raise_on_exhaustion: false7287 sets raise_on_exhaustion as requested7288Ci::PipelineArtifacts::ExpireArtifactsWorker7289 #perform7290 executes a service7291 is labeled as idempotent7292 performs multiple times sequentially without raising an exception7293 removes the artifact only once7294Types::TimeType7295 is expected to eq "Time"7296 coerces Time object into ISO 86017297 coerces an ISO-time into Time object7298 rejects invalid input7299 allows nil7300Autocomplete::ActsAsTaggableOn::TagsFinder7301 #execute7302 with empty params7303 returns all tags7304 filter by search7305 with an empty search term7306 returns all tags7307 with a search containing 2 characters7308 returns the tag that strictly matches the search term7309 with a search containing 3 characters7310 returns the tag that partially matches the search term7311 limit7312 limits the result set by the limit constant7313RuboCop::Cop::DestroyAll7314 # order random7315 flags the use of destroy_all with a constant receiver7316 does not flag the use of delete_all7317 flags the use of destroy_all with a send receiver7318 flags the use of destroy_all with a local variable receiver7319 flags the use of destroy_all when passing arguments7320GitHelper7321 #short_sha7322 is expected to eq "d4e043f6"7323 #strip_signature7324 strips PGP SIGNATURE7325 is expected to eq "Version 1.69.0\n\n"7326 strips PGP MESSAGE7327 is expected to eq "Version 1.69.0\n\n"7328 strips SIGNED MESSAGE7329 is expected to eq "this is Roger's signed tag\n\n"7330Gitlab::GrapeLogging::Loggers::UrgencyLogger7331 .parameters7332 request_env: {}, expected_parameters: {}7333 is expected to eq {}7334 request_env: {"api.endpoint"=>#<struct options={}, namespace="">}, expected_parameters: {}7335 is expected to eq {}7336 request_env: {"api.endpoint"=>#<struct options={:for=>"something weird"}, namespace="">}, expected_parameters: {}7337 is expected to eq {}7338 request_env: {"api.endpoint"=>#<struct options={:for=>#<Class:0x00007f7e127ec4e8>, :path=>[]}, namespace="">}, expected_parameters: {:request_urgency=>:default, :target_duration_s=>1}7339 is expected to eq {:request_urgency=>:default, :target_duration_s=>1}7340 request_env: {"api.endpoint"=>#<struct options={:for=>#<Class:0x00007f7e127dd7b8>, :path=>["test"]}, namespace="/testing">}, expected_parameters: {:request_urgency=>:high, :target_duration_s=>0.25}7341 is expected to eq {:request_urgency=>:high, :target_duration_s=>0.25}7342Gitlab::GithubImport::SequentialImporter7343 #execute7344 imports a project in sequence7345 raises an error7346RuboCop::Cop::CodeReuse::Finder7347 # order random7348 does not flag the use of a Finder in a non Finder file7349 flags the use of a Finder inside another Finder7350 does not flag the use of a Finder in a regular class method7351 flags the use of a Finder inside a model class method7352Types::MilestoneType7353 is expected to eq "Milestone"7354 is expected to require graphql authorizations :read_milestone7355 has the expected fields7356 stats field7357 is expected to have graphql type Types::MilestoneStatsType7358RuboCop::Cop::Database::DisableReferentialIntegrity7359 # order random7360 does not flag the use of disable_referential_integrity with a send receiver7361 flags the use of disable_referential_integrity when passing a block7362 flags the use of disable_referential_integrity with a nil receiver7363 flags the use of disable_referential_integrity with a full definition7364Gitlab::Memory::Watchdog::Monitor::RssMemoryLimit7365 # order random7366 #initialize7367 sets the max rss limit gauge7368 #call7369 when process exceeds threshold7370 returns if threshold is violated and payload7371 when process does not exceed threshold7372 returns if threshold is violated and payload7373Banzai::FilterArray7374 #insert_after7375 inserts an element after a provided element7376 inserts an element at the end when the provided element does not exist7377 #insert_before7378 inserts an element before a provided element7379 inserts an element at the beginning when the provided element does not exist7380Resolvers::TopicsResolver7381 #resolve7382 finds all topics7383 with search7384 searches environment by name7385 when the search term does not match any topic7386 is empty7387Gitlab::Ci::Build::Artifacts::Adapters::RawStream7388 #initialize7389 when stream is passed7390 initialized7391 when stream is not passed7392 raises an error7393 #each_blob7394 when file is not empty7395 iterates content7396 when file is empty7397 does not iterate content7398Gitlab::Database::Migrations::Observers::QueryStatistics7399 #before7400 with pgss available7401 resets pg_stat_statements7402 without pgss available7403 executes nothing7404 #record7405 with pgss available7406 fetches data from pg_stat_statements and stores on the observation7407 without pgss available7408 executes nothing7409Packages::Npm::MetadataCacheUploader7410 # order random7411 #filename7412 returns metadata.json7413 #store_dir7414 uses the object_storage_key7415 without the object_storage_key7416 raises the error7417GroupLink::GroupLinkEntity7418 matches json schema7419 correctly exposes `valid_roles`7420 correctly exposes `shared_with_group.avatar_url`7421RuboCop::Cop::QA::SelectorUsage7422 # order random7423 in a QA file7424 has no error7425 outside of QA7426 data-qa-selector7427 behaves like non-qa file usage7428 reports an offense7429 qa class7430 behaves like non-qa file usage7431 reports an offense7432projects/packages/packages/index.html.haml7433 # order random7434 renders vue entrypoint7435 settings path7436 without permission sets empty settings path7437 with permission sets project settings path7438LicenseTemplate7439 #content7440 calls a proc exactly once if provided7441 returns a string if provided7442 #resolve!7443 updates placeholders in a copy of the template content7444Gitlab::Import::DatabaseHelpers7445 .insert_and_return_id7446 returns the ID returned by the query7447Gitlab::Email::Message::InProductMarketing::Create7448 public methods7449 series: 07450 returns value for series7451 series: 17452 returns value for series7453 series: 27454 returns value for series7455WebIdeButtonHelper7456 #show_pipeline_editor_button?7457 when can view pipeline editor7458 when path is ci config path7459 returns true7460 when path is not config path7461 returns false7462 when can not view pipeline editor7463 returns false7464Types::CustomerRelations::ContactType7465 is expected to eq "CustomerRelationsContact"7466 is expected to have graphql fields "id", "organization", "first_name", "last_name", "phone", "email", "description", "active", "created_at", and "updated_at"7467 is expected to require graphql authorizations :read_crm_contact7468Types::Projects::ForkDetailsType7469 # order random7470 has specific fields7471 is expected to eq "ForkDetails"7472ResourceEvent7473 # order random7474 raises error on not implemented `synthetic_note_class` method7475 raises error on not implemented `issuable` method7476Types::Ci::Config::StageType7477 is expected to eq "CiConfigStage"7478 exposes the expected fields7479API::Entities::Ci::JobArtifactFile7480 returns the filename7481 returns the size7482Import metrics on production seed7483 imports all prometheus metrics7484Gitlab::Graphql::Loaders::LazyRelationLoader::RelationProxy7485 # order random7486 #respond_to?7487 when the registry responds to given method7488 is expected to be truthy7489 when the registry does not respond to given method7490 is expected to be falsey7491Gitlab::ChangesList7492 when changes is a valid string7493 splits elements by newline character7494 behaves like a list7495Gitlab::Graphql::Tracers::TimerTracer7496 adds duration_s to the trace metadata7497 adds a duration_s even if the query failed7498Gitlab::Email::Hook::AdditionalHeadersInterceptor7499 adds Auto-Submitted header7500 when the same mail object is sent twice7501 does not add the Auto-Submitted header twice7502Gitlab::Middleware::SidekiqWebStatic7503 #call7504 with an /admin/sidekiq route7505 deletes the HTTP_X_SENDFILE_TYPE header7506 with some static asset route7507 keeps the HTTP_X_SENDFILE_TYPE header7508Sidebars::Projects::SuperSidebarMenus::BuildMenu7509 # order random7510 defines list of NilMenuItem placeholders7511 has title and sprite_icon7512ErrorTracking::SentryClient::Token7513 # order random7514 .masked_token?7515 with masked token7516 is expected to be truthy7517 without masked token7518 is expected to be falsey7519ArchivedAbilities7520 # order random7521 .archived_abilities7522 returns an array of abilities to be prevented when archived7523 .archived_features7524 returns an array of features to be prevented when archived7525Types::Ci::RunnerArchitectureType7526 is expected to eq "RunnerArchitecture"7527 exposes the expected fields7528BulkImports::Common::Extractors::GraphqlExtractor7529 #extract7530 returns ExtractedData7531Notes::RenderService7532 #execute7533 renders a Note7534Gitlab::Usage::Metrics::Instrumentations::CountCiRunnersInstanceTypeActiveOnlineMetric7535 # order random7536 behaves like a correct instrumented metric value7537 has correct value7538Gitlab::GithubImport::ImportProtectedBranchWorker7539 # order random7540 #import7541 imports protected branch rule7542ProjectMirrorEntity7543 exposes project-specific elements7544Bitbucket::Paginator7545 items7546 return items and raises StopIteration in the end7547MemberPresenter7548 # order random7549 #last_owner?7550 raises `NotImplementedError`7551Types::DependencyProxy::BlobType7552 includes dependency proxy blob fields7553Projects::Security::ConfigurationController routing7554 routes to #show7555Gitlab::Usage::Metrics::Instrumentations::IncomingEmailEncryptedSecretsEnabledMetric7556 # order random7557 behaves like a correct instrumented metric value7558 has correct value7559SyntheticNote7560 #to_ability_name7561 is expected to eq "note"7562Ci::ScheduleDeleteObjectsCronWorker7563 #perform7564 enqueues DeleteObjectsWorker jobs7565Knapsack report was generated. Preview:7566{7567 "spec/models/environment_spec.rb": 222.00953947000005,7568 "spec/tasks/gitlab/usage_data_rake_spec.rb": 147.02192116000003,7569 "spec/services/merge_requests/create_service_spec.rb": 106.42530568799998,7570 "spec/services/merge_requests/squash_service_spec.rb": 90.10384844800001,7571 "spec/services/issues/close_service_spec.rb": 94.82961943700002,7572 "spec/lib/gitlab/auth/o_auth/user_spec.rb": 32.780275880999966,7573 "spec/services/application_settings/update_service_spec.rb": 60.25091068200015,7574 "spec/lib/gitlab/utils/strong_memoize_spec.rb": 24.11897414200007,7575 "spec/serializers/ci/job_entity_spec.rb": 40.5140976969999,7576 "spec/graphql/types/project_type_spec.rb": 31.441650858000003,7577 "spec/lib/gitlab/import_export/project/object_builder_spec.rb": 29.15846280599999,7578 "spec/helpers/submodule_helper_spec.rb": 16.35626973400008,7579 "spec/models/discussion_spec.rb": 29.431244191000133,7580 "spec/workers/database/batched_background_migration_worker_spec.rb": 24.416139503000068,7581 "spec/services/issues/export_csv_service_spec.rb": 8.907715266999958,7582 "spec/services/design_management/delete_designs_service_spec.rb": 21.7286076580001,7583 "spec/services/web_hook_service_spec.rb": 13.797898855000085,7584 "spec/lib/gitlab/alert_management/payload/prometheus_spec.rb": 4.286221888,7585 "spec/services/packages/debian/process_package_file_service_spec.rb": 30.062058794999984,7586 "spec/services/resource_events/change_state_service_spec.rb": 12.698379373999842,7587 "spec/lib/gitlab/database/with_lock_retries_spec.rb": 15.340935025999897,7588 "spec/lib/gitlab/usage/metric_definition_spec.rb": 4.92787806299998,7589 "spec/lib/container_registry/path_spec.rb": 9.054867174000037,7590 "spec/services/pages/migrate_legacy_storage_to_deployment_service_spec.rb": 8.059384950000094,7591 "spec/services/issues/set_crm_contacts_service_spec.rb": 12.432450718000155,7592 "spec/models/ml/candidate_spec.rb": 11.611444757000072,7593 "spec/lib/api/entities/merge_request_basic_spec.rb": 13.287709555999982,7594 "spec/lib/gitlab/checks/single_change_access_spec.rb": 11.988275827000052,7595 "spec/finders/merge_requests/oldest_per_commit_finder_spec.rb": 13.94137268899999,7596 "spec/lib/gitlab/redis/repository_cache_spec.rb": 2.748073914000088,7597 "spec/lib/expand_variables_spec.rb": 1.9575015120001353,7598 "spec/lib/object_storage/config_spec.rb": 2.30715219800004,7599 "spec/lib/gitlab/json_spec.rb": 3.028552131999959,7600 "spec/lib/gitlab/json_cache_spec.rb": 3.387878548000117,7601 "spec/presenters/projects/settings/deploy_keys_presenter_spec.rb": 9.060226654999951,7602 "spec/lib/container_registry/blob_spec.rb": 9.231751123000095,7603 "spec/lib/gitlab/diff/lines_unfolder_spec.rb": 10.701899862000118,7604 "spec/serializers/issue_sidebar_basic_entity_spec.rb": 7.000694371000009,7605 "spec/models/dependency_proxy/blob_spec.rb": 3.7600308080000104,7606 "spec/lib/gitlab/import_export/group/tree_saver_spec.rb": 7.407543009000165,7607 "spec/models/plan_limits_spec.rb": 6.343871848000163,7608 "spec/tasks/gitlab/artifacts/migrate_rake_spec.rb": 8.768749445999902,7609 "spec/helpers/nav_helper_spec.rb": 4.071217235999939,7610 "spec/services/projects/hashed_storage/rollback_attachments_service_spec.rb": 10.055125341999883,7611 "spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job_spec.rb": 2.4257949469999858,7612 "spec/lib/gitlab/popen_spec.rb": 6.691765462999911,7613 "spec/models/dependency_proxy/manifest_spec.rb": 3.2633180769998944,7614 "spec/lib/gitlab/ci/config/entry/service_spec.rb": 1.2967008020000321,7615 "spec/helpers/releases_helper_spec.rb": 5.491930010000033,7616 "spec/services/issues/referenced_merge_requests_service_spec.rb": 8.807930998000074,7617 "spec/lib/banzai/filter/broadcast_message_sanitization_filter_spec.rb": 1.7427926310001567,7618 "spec/services/labels/create_service_spec.rb": 4.455936086000065,7619 "spec/lib/gitlab/middleware/compressed_json_spec.rb": 1.5715743690000181,7620 "spec/lib/gitlab/ci/reports/test_case_spec.rb": 3.4444493840001087,7621 "spec/lib/gitlab/git/compare_spec.rb": 2.1433296229999996,7622 "spec/services/ci/build_erase_service_spec.rb": 6.091448742000011,7623 "spec/models/pages_domain_acme_order_spec.rb": 7.787661275000119,7624 "spec/lib/gitlab/ci/templates/terraform_module_gitlab_ci_yaml_spec.rb": 3.3391204669999297,7625 "spec/models/customer_relations/issue_contact_spec.rb": 6.687609005000013,7626 "spec/services/webauthn/destroy_service_spec.rb": 2.757546543999979,7627 "spec/finders/ci/freeze_periods_finder_spec.rb": 4.361503241000037,7628 "spec/graphql/mutations/issues/set_locked_spec.rb": 3.9031095319999167,7629 "spec/services/repositories/housekeeping_service_spec.rb": 3.0865505589999884,7630 "spec/lib/gitlab/ci/pipeline/chain/evaluate_workflow_rules_spec.rb": 4.967851370000062,7631 "spec/policies/metrics/dashboard/annotation_policy_spec.rb": 4.477251563999971,7632 "spec/services/projects/update_statistics_service_spec.rb": 2.3545261100000516,7633 "spec/helpers/users/callouts_helper_spec.rb": 2.876034751000134,7634 "spec/lib/gitlab/ci/pipeline/chain/populate_metadata_spec.rb": 2.2953172709999308,7635 "spec/lib/gitlab/ci/reports/test_suite_comparer_spec.rb": 1.805702594999957,7636 "spec/helpers/version_check_helper_spec.rb": 1.805456994999986,7637 "spec/graphql/types/release_type_spec.rb": 0.544171446000064,7638 "spec/services/users/update_canonical_email_service_spec.rb": 0.9149201549998907,7639 "spec/components/pajamas/toggle_component_spec.rb": 1.11330590700004,7640 "spec/tasks/dev_rake_spec.rb": 2.9555900759999076,7641 "spec/tooling/danger/feature_flag_spec.rb": 0.9811099020000711,7642 "spec/lib/banzai/filter/blockquote_fence_filter_spec.rb": 0.849167947000069,7643 "spec/lib/sidebars/admin/menus/abuse_reports_menu_spec.rb": 1.5956711359999645,7644 "spec/lib/gitlab/database/reindexing/grafana_notifier_spec.rb": 2.4476611120001053,7645 "spec/lib/gitlab/safe_request_store_spec.rb": 1.3742764670000724,7646 "spec/services/error_tracking/issue_latest_event_service_spec.rb": 3.1203112240000337,7647 "spec/serializers/import/github_failure_entity_spec.rb": 1.138728742000012,7648 "spec/rubocop/cop/graphql/descriptions_spec.rb": 2.139863611999999,7649 "spec/lib/gitlab/form_builders/gitlab_ui_form_builder_spec.rb": 0.6785924209998484,7650 "spec/tooling/lib/tooling/fast_quarantine_spec.rb": 0.785631439999861,7651 "spec/models/concerns/clusters/agents/authorizations/ci_access/config_scopes_spec.rb": 4.675171186000171,7652 "spec/finders/sentry_issue_finder_spec.rb": 5.660575987999891,7653 "spec/finders/concerns/finder_methods_spec.rb": 2.2432734299998174,7654 "spec/helpers/ci/status_helper_spec.rb": 1.2343966539999656,7655 "spec/services/lfs/push_service_spec.rb": 1.2566614990000744,7656 "spec/helpers/broadcast_messages_helper_spec.rb": 2.7363321580000957,7657 "spec/services/ci/daily_build_group_report_result_service_spec.rb": 2.483290524999802,7658 "spec/workers/analytics/usage_trends/counter_job_worker_spec.rb": 1.2802534910001668,7659 "spec/models/service_desk/custom_email_credential_spec.rb": 1.724279948000003,7660 "spec/lib/gitlab/usage/metrics/aggregates/aggregate_spec.rb": 1.0227065710000716,7661 "spec/lib/gitlab/memory/watchdog/event_reporter_spec.rb": 0.5655141530000947,7662 "spec/lib/gitlab/security/scan_configuration_spec.rb": 1.4595238199999585,7663 "spec/lib/gitlab/webpack/manifest_spec.rb": 0.7264781449998736,7664 "spec/services/error_tracking/issue_details_service_spec.rb": 3.6594162320000123,7665 "spec/rubocop/cop/performance/active_record_subtransaction_methods_spec.rb": 0.4879728430000796,7666 "spec/lib/gitlab/kubernetes/rollout_instances_spec.rb": 0.4640397559999201,7667 "spec/workers/rebase_worker_spec.rb": 2.9245291790000465,7668 "spec/services/achievements/create_service_spec.rb": 0.9493534989999262,7669 "spec/lib/gitlab/slash_commands/presenters/access_spec.rb": 0.8243558929998471,7670 "spec/finders/incident_management/timeline_events_finder_spec.rb": 2.8226919499998075,7671 "spec/views/profiles/keys/_form.html.haml_spec.rb": 0.6924359390000063,7672 "spec/models/concerns/checksummable_spec.rb": 0.3525034490000962,7673 "spec/graphql/types/board_list_type_spec.rb": 3.001709588999802,7674 "spec/services/import/github/notes/create_service_spec.rb": 2.007957395000176,7675 "spec/services/alert_management/http_integrations/create_service_spec.rb": 1.349351383000112,7676 "spec/lib/gitlab/diff/rendered/notebook/diff_file_helper_spec.rb": 1.2100231980000444,7677 "spec/services/branches/create_service_spec.rb": 2.170142665999947,7678 "spec/graphql/mutations/customer_relations/contacts/create_spec.rb": 3.0433772740000222,7679 "spec/services/ci/build_report_result_service_spec.rb": 3.947334569000077,7680 "spec/lib/gitlab/ci/config/edge_stages_injector_spec.rb": 0.5689304930001526,7681 "spec/lib/gitlab/ci/templates/MATLAB_spec.rb": 1.6224520900000243,7682 "spec/lib/gitlab/ci/config/external/rules_spec.rb": 2.4629911619999802,7683 "spec/lib/gitlab/prometheus/adapter_spec.rb": 1.1572526949998974,7684 "spec/graphql/resolvers/alert_management/integrations_resolver_spec.rb": 2.5997151960000338,7685 "spec/tasks/gitlab/feature_categories_rake_spec.rb": 4.412706683999886,7686 "spec/models/concerns/legacy_bulk_insert_spec.rb": 0.6761971500000072,7687 "spec/lib/gitlab/branch_push_merge_commit_analyzer_spec.rb": 3.157980610000095,7688 "spec/lib/gitlab/file_finder_spec.rb": 1.5229704109999602,7689 "spec/lib/gitlab/counters/legacy_counter_spec.rb": 0.944871479000085,7690 "spec/rubocop/cop/usage_data/instrumentation_superclass_spec.rb": 0.4975350519998756,7691 "spec/models/raw_usage_data_spec.rb": 0.6700492309998936,7692 "spec/workers/gitlab/github_import/advance_stage_worker_spec.rb": 2.6768380470000466,7693 "spec/lib/sidebars/groups/super_sidebar_panel_spec.rb": 2.8703165949998493,7694 "spec/models/merge_request/approval_removal_settings_spec.rb": 2.4561762729999828,7695 "spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/client_spec.rb": 0.5262833879999107,7696 "spec/graphql/mutations/labels/create_spec.rb": 1.8723694410000462,7697 "spec/lib/security/ci_configuration/container_scanning_build_action_spec.rb": 0.47314819400003216,7698 "spec/lib/sidebars/user_settings/menus/gpg_keys_menu_spec.rb": 0.6377725250001731,7699 "spec/services/google_cloud/enable_cloud_run_service_spec.rb": 1.0269979300001069,7700 "spec/services/groups/merge_requests_count_service_spec.rb": 1.9171158459998878,7701 "spec/workers/gitlab/jira_import/stage/import_issues_worker_spec.rb": 1.9459279530001368,7702 "spec/models/concerns/integrations/has_web_hook_spec.rb": 0.5228157389999524,7703 "spec/rubocop/cop/migration/with_lock_retries_disallowed_method_spec.rb": 0.5143841289998363,7704 "spec/lib/gitlab/database/load_balancing/rack_middleware_spec.rb": 0.8664230489998772,7705 "spec/lib/gitlab/import_export/hash_util_spec.rb": 0.40361185300002944,7706 "spec/lib/gitlab/database/postgresql_adapter/empty_query_ping_spec.rb": 0.46065213599990784,7707 "spec/services/metrics/sample_metrics_service_spec.rb": 0.3992156829999658,7708 "spec/lib/gitlab/sanitizers/svg_spec.rb": 0.774546619000148,7709 "spec/models/concerns/partitioned_table_spec.rb": 0.3537489180000648,7710 "spec/graphql/types/customer_relations/contact_state_counts_type_spec.rb": 0.3351970409999012,7711 "spec/lib/gitlab/usage/metrics/instrumentations/count_users_creating_issues_metric_spec.rb": 1.6641262449998067,7712 "spec/lib/api/entities/ci/job_request/port_spec.rb": 0.3701719559999219,7713 "spec/graphql/types/clusters/agent_activity_event_type_spec.rb": 0.4455657380001412,7714 "spec/rubocop/cop/gitlab/json_spec.rb": 0.4198069910000868,7715 "spec/models/blob_viewer/changelog_spec.rb": 2.093391655000005,7716 "spec/lib/gitlab/database/schema_cache_with_renamed_table_spec.rb": 1.290850558999864,7717 "spec/lib/gitlab/gitaly_client/call_spec.rb": 1.1470291160001125,7718 "spec/graphql/types/group_member_relation_enum_spec.rb": 0.322915951999903,7719 "spec/workers/cleanup_container_repository_worker_spec.rb": 2.1242595319999964,7720 "spec/workers/bulk_imports/entity_worker_spec.rb": 1.0963561020000725,7721 "spec/models/preloaders/group_policy_preloader_spec.rb": 2.19101124399981,7722 "spec/lib/bulk_imports/groups/pipelines/group_pipeline_spec.rb": 1.438752452000017,7723 "spec/services/ci/build_unschedule_service_spec.rb": 1.5350851810001132,7724 "spec/lib/gitlab/request_endpoints_spec.rb": 0.7895426069999303,7725 "spec/serializers/feature_flag_serializer_spec.rb": 2.529206515000169,7726 "spec/graphql/types/work_items/widgets/notifications_type_spec.rb": 0.2931742050000139,7727 "spec/views/dashboard/projects/_blank_state_welcome.html.haml_spec.rb": 0.9086984229998052,7728 "spec/views/projects/commits/show.html.haml_spec.rb": 1.2953907989999607,7729 "spec/services/packages/update_tags_service_spec.rb": 1.2457349149999573,7730 "spec/services/import/bitbucket_server_service_spec.rb": 1.1049939410002025,7731 "spec/lib/bulk_imports/common/pipelines/labels_pipeline_spec.rb": 1.3313586839999516,7732 "spec/workers/gitlab/github_import/import_pull_request_worker_spec.rb": 0.9076850540000123,7733 "spec/lib/gitlab/favicon_spec.rb": 0.7006073780000861,7734 "spec/services/packages/remove_tag_service_spec.rb": 1.3850807479998366,7735 "spec/lib/gitlab/allowable_spec.rb": 1.4234500039999602,7736 "spec/lib/gitlab/ci/config/entry/kubernetes_spec.rb": 0.58575010200002,7737 "spec/lib/banzai/filter/kroki_filter_spec.rb": 0.6086546389999512,7738 "spec/rubocop/cop/code_reuse/worker_spec.rb": 0.5624562840000635,7739 "spec/workers/ci/daily_build_group_report_results_worker_spec.rb": 1.391137677000188,7740 "spec/lib/gitlab/analytics/cycle_analytics/average_spec.rb": 1.0075479720001113,7741 "spec/views/dashboard/milestones/index.html.haml_spec.rb": 0.6232602879999831,7742 "spec/lib/gitlab/database/query_analyzers/gitlab_schemas_metrics_spec.rb": 0.4745179849999204,7743 "spec/views/shared/milestones/_top.html.haml_spec.rb": 0.9845000350001101,7744 "spec/routing/directs/subscription_portal_spec.rb": 0.7907454780001899,7745 "spec/workers/jira_connect/sync_builds_worker_spec.rb": 0.7976498269999865,7746 "spec/views/groups/new.html.haml_spec.rb": 0.8269860429998062,7747 "spec/graphql/types/issuable_type_spec.rb": 0.5029782019998947,7748 "spec/lib/gitlab/database/migrations/lock_retries_helpers_spec.rb": 0.4372635889999401,7749 "spec/workers/ci/pipeline_artifacts/expire_artifacts_worker_spec.rb": 0.8740778880001017,7750 "spec/graphql/types/time_type_spec.rb": 0.5020241409999926,7751 "spec/finders/autocomplete/acts_as_taggable_on/tags_finder_spec.rb": 0.5421994270000141,7752 "spec/rubocop/cop/destroy_all_spec.rb": 0.4552206569999271,7753 "spec/helpers/git_helper_spec.rb": 0.44643298699998013,7754 "spec/lib/gitlab/grape_logging/loggers/urgency_logger_spec.rb": 0.43146446000014294,7755 "spec/lib/gitlab/github_import/sequential_importer_spec.rb": 0.8603843089999827,7756 "spec/rubocop/cop/code_reuse/finder_spec.rb": 0.432051329999922,7757 "spec/graphql/types/milestone_type_spec.rb": 0.4239060300001256,7758 "spec/rubocop/cop/database/disable_referential_integrity_spec.rb": 0.505167191000055,7759 "spec/lib/gitlab/memory/watchdog/monitor/rss_memory_limit_spec.rb": 0.36984096700007285,7760 "spec/lib/banzai/filter_array_spec.rb": 0.4097234319999643,7761 "spec/graphql/resolvers/topics_resolver_spec.rb": 0.4997056109998539,7762 "spec/lib/gitlab/ci/build/artifacts/adapters/raw_stream_spec.rb": 0.40782984299994496,7763 "spec/lib/gitlab/database/migrations/observers/query_statistics_spec.rb": 0.4030286529998648,7764 "spec/uploaders/packages/npm/metadata_cache_uploader_spec.rb": 0.41816304100007073,7765 "spec/serializers/group_link/group_link_entity_spec.rb": 0.5234364589998677,7766 "spec/rubocop/cop/qa/selector_usage_spec.rb": 0.3792798550000498,7767 "spec/views/projects/packages/index.html.haml_spec.rb": 0.4794203240001025,7768 "spec/models/license_template_spec.rb": 0.34683069000016076,7769 "spec/lib/gitlab/import/database_helpers_spec.rb": 0.6473168359998454,7770 "spec/lib/gitlab/email/message/in_product_marketing/create_spec.rb": 0.37264417699998376,7771 "spec/helpers/web_ide_button_helper_spec.rb": 0.37660161699977834,7772 "spec/graphql/types/customer_relations/contact_type_spec.rb": 0.34940912799993384,7773 "spec/graphql/types/projects/fork_details_type_spec.rb": 0.305535467000027,7774 "spec/models/resource_event_spec.rb": 0.34697656699995605,7775 "spec/graphql/types/ci/config/stage_type_spec.rb": 0.29659738800000923,7776 "spec/lib/api/entities/ci/job_artifact_file_spec.rb": 0.31501594800010935,7777 "spec/db/production/import_common_metrics_spec.rb": 0.4930893160001233,7778 "spec/lib/gitlab/graphql/loaders/lazy_relation_loader/relation_proxy_spec.rb": 0.32026293700005226,7779 "spec/lib/gitlab/changes_list_spec.rb": 0.42422511600011603,7780 "spec/lib/gitlab/graphql/tracers/timer_tracer_spec.rb": 0.3263807769999403,7781 "spec/lib/gitlab/email/hook/additional_headers_interceptor_spec.rb": 0.35836572600010186,7782 "spec/lib/gitlab/middleware/sidekiq_web_static_spec.rb": 0.31130329799998435,7783 "spec/lib/sidebars/projects/super_sidebar_menus/build_menu_spec.rb": 0.30956716700006837,7784 "spec/lib/error_tracking/sentry_client/token_spec.rb": 0.32351838800013866,7785 "spec/policies/concerns/archived_abilities_spec.rb": 0.3007692069998029,7786 "spec/graphql/types/ci/runner_architecture_type_spec.rb": 0.2944534680000288,7787 "spec/lib/bulk_imports/common/extractors/graphql_extractor_spec.rb": 0.39775567699985004,7788 "spec/services/notes/render_service_spec.rb": 0.2824562480000168,7789 "spec/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_instance_type_active_online_metric_spec.rb": 0.39605975600011334,7790 "spec/workers/gitlab/github_import/import_protected_branch_worker_spec.rb": 0.3032553979999193,7791 "spec/serializers/project_mirror_entity_spec.rb": 0.29203620699991006,7792 "spec/lib/bitbucket/paginator_spec.rb": 0.28108299799987435,7793 "spec/presenters/member_presenter_spec.rb": 0.28282133800007614,7794 "spec/graphql/types/dependency_proxy/blob_type_spec.rb": 0.3297575170001892,7795 "spec/routing/projects/security/configuration_controller_routing_spec.rb": 0.2904682270000194,7796 "spec/lib/gitlab/usage/metrics/instrumentations/incoming_email_encrypted_secrets_enabled_metric_spec.rb": 0.29003029799991964,7797 "spec/models/synthetic_note_spec.rb": 0.32008917699999984,7798 "spec/workers/ci/schedule_delete_objects_cron_worker_spec.rb": 0.27959483799986637799}7800Knapsack global time execution for tests: 25m 09s7801Pending: (Failures listed here are expected and do not affect your suite's status)7802 1) Database::BatchedBackgroundMigrationWorker behaves like it runs batched background migration jobs #perform when the base model does not exist does nothing7803 # because the base model for main exists7804 # ./spec/support/shared_examples/workers/batched_background_migration_worker_shared_examples.rb:667805 2) Database::BatchedBackgroundMigrationWorker behaves like it runs batched background migration jobs #perform when the base model does not exist logs a message indicating execution is skipped7806 # because the base model for main exists7807 # ./spec/support/shared_examples/workers/batched_background_migration_worker_shared_examples.rb:727808 3) Database::BatchedBackgroundMigrationWorker behaves like it runs batched background migration jobs #perform when the base model does exist when the tracking database is shared does nothing7809 # Skipping because database main exists7810 # ./spec/support/shared_examples/workers/batched_background_migration_worker_shared_examples.rb:957811 4) Ml::Candidate modules 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 blank7812 # No reason given7813 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:497814 5) Ml::Candidate modules 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 blank7815 # No reason given7816 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:577817Finished in 25 minutes 16 seconds (files took 56.75 seconds to load)78183425 examples, 0 failures, 5 pending7819Randomized with seed 250787820[TEST PROF INFO] Time spent in factories: 14:00.207 (55.18% of total time)7821RSpec exited with 0.7822No examples to retry, congrats!7824Not uploading cache ruby-gems-debian-bullseye-ruby-3.0-16 due to policy7826Uploading artifacts...7827coverage/: found 5 matching artifact files and directories 7828WARNING: crystalball/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 7829deprecations/: found 6 matching artifact files and directories 7830knapsack/: found 4 matching artifact files and directories 7831query_recorder/: found 2 matching artifact files and directories 7832rspec/: found 9 matching artifact files and directories 7833WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 7834log/*.log: found 19 matching artifact files and directories 7835WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4353249499/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com7836WARNING: Retrying... context=artifacts-uploader error=request redirected7837Uploading artifacts as "archive" to coordinator... 201 Created id=4353249499 responseStatus=201 Created token=64_zaUY-7838Uploading artifacts...7839rspec/junit_rspec.xml: found 1 matching artifact files and directories 7840WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4353249499/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com7841WARNING: Retrying... context=artifacts-uploader error=request redirected7842Uploading artifacts as "junit" to coordinator... 201 Created id=4353249499 responseStatus=201 Created token=64_zaUY-7844Job succeeded