rspec unit pg14 10/28
Passed Started
by
@edith007

Siddharth Asthana
1Running with gitlab-runner 16.1.0~beta.59.g83c66823 (83c66823)2 on green-2.shared-gitlab-org.runners-manager.gitlab.com/default 8zCxmpPt, system ID: s_130a96ce9e653 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.20-rust-1.65-node-18.17-postgresql-14:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 ...7Starting service registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-14-pgvector-0.4.1 ...8Authenticating with credentials from job payload (GitLab Registry)9Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-14-pgvector-0.4.1 ...10Using docker image sha256:2e09e9db92541ed81b1c00f1d5186f8c262d8b84e8d1755676ea4b25614f30c4 for registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-14-pgvector-0.4.1 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:afc7bd7a60824044709543a6a700385e412d750d9ab4fc72b427e335e1d0f3ec ...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:d0675d033b87382205d08b598a004a99a1f6c4bd377cc86bb6df8957ce7dbb1c for redis:6.2-alpine with digest redis@sha256:740b5c973d1c9eea6e124a3905ba73d32354d0549f98ccc9e67af1af2a9ba478 ...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.20-rust-1.65-node-18.17-postgresql-14:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 ...23Using docker image sha256:24a9e92645b17c878623efd51b7564f81e480bd281e94d7f33971082e0ca80e0 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.20-rust-1.65-node-18.17-postgresql-14:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-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.20-rust-1.65-node-18.17-postgresql-14@sha256:ca349d228348f199cb57f574476584f42aca338747393ed93a9032a0261afc4d ...25Running on runner-8zcxmppt-project-27783254-concurrent-0 via runner-8zcxmppt-shared-gitlab-org-1691906957-7bac5a0f...27Fetching changes with git depth set to 20...28Initialized empty Git repository in /builds/edith007/gitlab/.git/29Created fresh repository.30Checking out 199b254b as detached HEAD (ref is master)...31Skipping Git submodules setup32$ git remote set-url origin "${CI_REPOSITORY_URL}"34Checking cache for ruby-gems-debian-bullseye-ruby-3.0-protected...35WARNING: file does not exist 36Failed to extract cache38Downloading artifacts for compile-test-assets (4863613909)...39Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4863613909 responseStatus=200 OK token=64_PZizT40Downloading artifacts for retrieve-tests-metadata (4863613915)...41Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4863613915 responseStatus=200 OK token=64_PZizT42Downloading artifacts for setup-test-env (4863613912)...43Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4863613912 responseStatus=200 OK token=64_PZizT45Using docker image sha256:24a9e92645b17c878623efd51b7564f81e480bd281e94d7f33971082e0ca80e0 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.20-rust-1.65-node-18.17-postgresql-14:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-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.20-rust-1.65-node-18.17-postgresql-14@sha256:ca349d228348f199cb57f574476584f42aca338747393ed93a9032a0261afc4d ...46$ echo $FOSS_ONLY47$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb48$ export GOPATH=$CI_PROJECT_DIR/.go49$ mkdir -p $GOPATH50$ source scripts/utils.sh51$ source scripts/prepare_build.sh1362Using decomposed database config (config/database.yml.decomposed-postgresql)1363Geo DB won't be set up.1364Embedding DB won't be set up.1376$ source ./scripts/rspec_helpers.sh1377$ run_timed_command "gem install knapsack --no-document"1378$ gem install knapsack --no-document1379Successfully installed knapsack-4.0.013801 gem installed1381==> 'gem install knapsack --no-document' succeeded in 1 seconds.1382$ section_start "gitaly-test-spawn" "Spawning Gitaly"; scripts/gitaly-test-spawn; section_end "gitaly-test-spawn"1387$ export RSPEC_SKIPPED_TESTS_REPORT_PATH="rspec/skipped_tests-${CI_JOB_ID}.txt"1388$ export RSPEC_RETRIED_TESTS_REPORT_PATH="rspec/retried_tests-${CI_JOB_ID}.txt"1389$ rspec_paralellized_job "--fail-fast=${RSPEC_FAIL_FAST_THRESHOLD} --tag ~quarantine --tag ~level:background_migration --tag ~click_house"1390SKIP_FLAKY_TESTS_AUTOMATICALLY: 1391RETRY_FAILED_TESTS_IN_NEW_PROCESS: true1392KNAPSACK_GENERATE_REPORT: true1393FLAKY_RSPEC_GENERATE_REPORT: true1394KNAPSACK_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.rb1395KNAPSACK_LOG_LEVEL: debug1396KNAPSACK_REPORT_PATH: knapsack/rspec_unit_pg14_10_28_report.json1397FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json1398FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg14_10_28_report.json1399NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg14_10_28_report.json1400RSPEC_SKIPPED_TESTS_REPORT_PATH: rspec/skipped_tests-4863614019.txt1401CRYSTALBALL: 1402RSPEC_TESTS_MAPPING_ENABLED: 1403RSPEC_TESTS_FILTER_FILE: 1404Shell set options (set -o) enabled:1405braceexpand on1406hashall on1407interactive-comments on1408pipefail on1409Running command: bundle exec rspec -Ispec -rspec_helper --color --failure-exit-code 1 --error-exit-code 2 --format documentation --format Support::Formatters::JsonFormatter --out rspec/rspec-4863614019.json --format RspecJunitFormatter --out rspec/rspec-4863614019.xml --fail-fast=20 --tag ~quarantine --tag ~level:background_migration --tag ~click_house -- spec/models/merge_request_diff_spec.rb spec/services/issues/update_service_spec.rb spec/models/clusters/cluster_spec.rb spec/finders/issues_finder_spec.rb spec/services/projects/create_service_spec.rb spec/lib/gitlab/background_migration/backfill_imported_issue_search_data_spec.rb spec/services/packages/npm/create_package_service_spec.rb spec/lib/banzai/filter/references/commit_range_reference_filter_spec.rb spec/models/integrations/mattermost_spec.rb spec/lib/gitlab/ssh_public_key_spec.rb spec/presenters/ci/build_runner_presenter_spec.rb spec/lib/banzai/reference_parser/snippet_parser_spec.rb spec/models/concerns/milestoneish_spec.rb spec/tasks/gitlab/uploads/migrate_rake_spec.rb spec/models/error_tracking/project_error_tracking_setting_spec.rb spec/lib/gitlab/counters/buffered_counter_spec.rb spec/lib/feature_spec.rb spec/lib/gitlab/database/background_migration/batched_migration_spec.rb spec/services/issues/import_csv_service_spec.rb spec/presenters/ci/pipeline_presenter_spec.rb spec/lib/container_registry/tag_spec.rb spec/models/integrations/hangouts_chat_spec.rb spec/lib/container_registry/client_spec.rb spec/models/clusters/integrations/prometheus_spec.rb spec/services/design_management/save_designs_service_spec.rb spec/lib/gitlab/observability_spec.rb spec/lib/gitlab/background_migration/backfill_missing_ci_cd_settings_spec.rb spec/lib/gitlab/ci/config/entry/retry_spec.rb spec/workers/issuable_export_csv_worker_spec.rb spec/lib/gitlab/database/gitlab_schema_spec.rb spec/serializers/diffs_entity_spec.rb spec/services/groups/group_links/create_service_spec.rb spec/models/event_collection_spec.rb spec/serializers/diff_file_entity_spec.rb spec/services/system_notes/commit_service_spec.rb spec/services/ci/archive_trace_service_spec.rb spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb spec/models/ci_platform_metric_spec.rb spec/lib/extracts_path_spec.rb spec/helpers/safe_format_helper_spec.rb spec/lib/gitlab/ci/build/rules/rule/clause/changes_spec.rb spec/services/timelogs/create_service_spec.rb spec/lib/sbom/package_url/argument_validator_spec.rb spec/workers/repository_check/batch_worker_spec.rb spec/views/groups/edit.html.haml_spec.rb spec/lib/gitlab/import_export/command_line_util_spec.rb spec/lib/gitlab/seeders/ci/runner/runner_fleet_seeder_spec.rb spec/finders/joined_groups_finder_spec.rb spec/models/users/credit_card_validation_spec.rb spec/lib/gitlab/ci/reports/test_suite_comparer_spec.rb spec/lib/sidebars/projects/menus/analytics_menu_spec.rb spec/finders/clusters/agents/authorizations/ci_access/finder_spec.rb spec/lib/gitlab/i18n/pluralization_spec.rb spec/lib/gitlab/github_import/importer/note_importer_spec.rb spec/services/pages/zip_directory_service_spec.rb spec/workers/ci/ref_delete_unlock_artifacts_worker_spec.rb spec/services/todos/destroy/confidential_issue_service_spec.rb spec/models/ci/namespace_mirror_spec.rb spec/lib/gitlab/middleware/handle_malformed_strings_spec.rb spec/finders/packages/conan/package_finder_spec.rb spec/lib/sidebars/projects/menus/settings_menu_spec.rb spec/services/todos/destroy/design_service_spec.rb spec/models/clusters/agents/activity_event_spec.rb spec/lib/gitlab/ci/components/instance_path_spec.rb spec/lib/gitlab/ci/templates/Verify/load_performance_testing_gitlab_ci_yaml_spec.rb spec/lib/gitlab/hotlinking_detector_spec.rb spec/models/board_project_recent_visit_spec.rb spec/workers/container_expiration_policy_worker_spec.rb spec/workers/ci/drop_pipeline_worker_spec.rb spec/services/packages/rpm/repository_metadata/update_xml_service_spec.rb spec/workers/deployments/hooks_worker_spec.rb spec/lib/gitlab/background_task_spec.rb spec/models/ci/runner_namespace_spec.rb spec/lib/gitlab/chat/responder/slack_spec.rb spec/finders/keys_finder_spec.rb spec/workers/auto_devops/disable_worker_spec.rb spec/lib/gitlab/jira_import/issue_serializer_spec.rb spec/workers/pages_domain_verification_cron_worker_spec.rb spec/tooling/danger/sidekiq_queues_spec.rb spec/lib/gitlab/encrypted_configuration_spec.rb spec/workers/repository_check/single_repository_worker_spec.rb spec/services/grafana/proxy_service_spec.rb spec/presenters/gitlab/blame_presenter_spec.rb spec/graphql/resolvers/design_management/version/design_at_version_resolver_spec.rb spec/lib/gitlab/github_import/importer/single_endpoint_issue_events_importer_spec.rb spec/lib/gitlab/tracking/event_definition_spec.rb spec/lib/gitlab/git/user_spec.rb spec/services/dependency_proxy/find_cached_manifest_service_spec.rb spec/rubocop/formatter/todo_formatter_spec.rb spec/lib/gitlab/database/partitioning/partition_manager_spec.rb spec/views/notify/change_in_merge_request_draft_status_email.html.haml_spec.rb spec/workers/authorized_project_update/user_refresh_with_low_urgency_worker_spec.rb spec/lib/gitlab/database/health_status_spec.rb spec/services/lfs/push_service_spec.rb spec/lib/gitlab/ci/status/build/manual_spec.rb spec/lib/constraints/group_url_constrainer_spec.rb spec/lib/initializer_connections_spec.rb spec/tooling/danger/database_dictionary_spec.rb spec/lib/sidebars/your_work/menus/merge_requests_menu_spec.rb spec/workers/bulk_imports/finish_batched_relation_export_worker_spec.rb spec/lib/sidebars/projects/menus/confluence_menu_spec.rb spec/services/boards/lists/destroy_service_spec.rb spec/lib/gitlab/sql/cte_spec.rb spec/lib/gitlab/github_import/importer/label_links_importer_spec.rb spec/workers/container_registry/cleanup_worker_spec.rb spec/lib/sidebars/projects/panel_spec.rb spec/services/ci/enqueue_job_service_spec.rb spec/lib/sidebars/groups/menus/issues_menu_spec.rb spec/serializers/container_repositories_serializer_spec.rb spec/models/guest_spec.rb spec/services/dependency_proxy/auth_token_service_spec.rb spec/rubocop/cop/api/base_spec.rb spec/helpers/users/group_callouts_helper_spec.rb spec/graphql/types/container_expiration_policy_type_spec.rb spec/lib/gitlab/github_import/representation/expose_attribute_spec.rb spec/lib/bulk_imports/users_mapper_spec.rb spec/graphql/resolvers/project_milestones_resolver_spec.rb spec/views/dashboard/projects/_blank_state_welcome.html.haml_spec.rb spec/models/concerns/taskable_spec.rb spec/workers/merge_requests/handle_assignees_change_worker_spec.rb spec/lib/gitlab/ci/status/build/canceled_spec.rb spec/services/ci/job_artifacts/delete_service_spec.rb spec/lib/gitlab/database/background_migration_job_spec.rb spec/services/issuable/process_assignees_spec.rb spec/lib/gitlab/analytics/cycle_analytics/stage_events/merge_request_created_spec.rb spec/lib/banzai/filter/markdown_filter_spec.rb spec/workers/project_cache_worker_spec.rb spec/workers/gitlab/jira_import/stage/import_issues_worker_spec.rb spec/models/batched_git_ref_updates/deletion_spec.rb spec/rubocop/cop/migration/add_reference_spec.rb spec/workers/bulk_imports/finish_batched_pipeline_worker_spec.rb spec/workers/onboarding/issue_created_worker_spec.rb spec/services/releases/links/create_service_spec.rb spec/presenters/packages/pypi/simple_package_versions_presenter_spec.rb spec/services/clusters/agents/authorizations/ci_access/filter_service_spec.rb spec/workers/gitlab/github_import/stage/import_pull_requests_worker_spec.rb spec/lib/gitlab/usage_data_counters/visual_studio_extension_activity_unique_counter_spec.rb spec/services/todos/destroy/destroyed_issuable_service_spec.rb spec/services/users/batch_status_cleaner_service_spec.rb spec/lib/sidebars/user_profile/menus/personal_projects_menu_spec.rb spec/services/ci/compare_accessibility_reports_service_spec.rb spec/workers/releases/manage_evidence_worker_spec.rb spec/workers/ci/stuck_builds/drop_running_worker_spec.rb spec/workers/merge_requests/set_reviewer_reviewed_worker_spec.rb spec/graphql/resolvers/users/groups_resolver_spec.rb spec/graphql/mutations/terraform/state/lock_spec.rb spec/workers/merge_requests/resolve_todos_worker_spec.rb spec/lib/gitlab/jira_import/handle_labels_service_spec.rb spec/workers/stuck_export_jobs_worker_spec.rb spec/services/keys/revoke_service_spec.rb spec/lib/gitlab/ci/reports/test_reports_comparer_spec.rb spec/services/ci/create_pipeline_service/merge_requests_spec.rb spec/lib/gitlab/git/remote_mirror_spec.rb spec/lib/gitlab/safe_request_loader_spec.rb spec/workers/gitlab/jira_import/import_issue_worker_spec.rb spec/lib/sidebars/groups/super_sidebar_menus/deploy_menu_spec.rb spec/lib/gitlab/email/message/in_product_marketing/team_short_spec.rb spec/services/projects/lfs_pointers/lfs_link_service_spec.rb spec/lib/api/entities/package_spec.rb spec/lib/gitlab/metrics/exporter/gc_request_middleware_spec.rb spec/lib/gitlab/database/transaction_timeout_settings_spec.rb spec/lib/gitlab/gitaly_client/blobs_stitcher_spec.rb spec/workers/error_tracking_issue_link_worker_spec.rb spec/views/events/event/_common.html.haml_spec.rb spec/lib/gitlab/memory/watchdog/configuration_spec.rb spec/lib/bulk_imports/groups/pipelines/project_entities_pipeline_spec.rb spec/lib/gitlab/memory/reports_uploader_spec.rb spec/helpers/ci/variables_helper_spec.rb spec/lib/gitlab/middleware/multipart/handler_spec.rb spec/workers/gitlab/github_import/stage/import_issues_and_diff_notes_worker_spec.rb spec/helpers/programming_languages_helper_spec.rb spec/lib/constraints/user_url_constrainer_spec.rb spec/workers/remote_mirror_notification_worker_spec.rb spec/lib/gitlab/git/base_error_spec.rb spec/rubocop/cop/code_reuse/worker_spec.rb spec/lib/gitlab/git/lfs_changes_spec.rb spec/graphql/mutations/achievements/delete_spec.rb spec/lib/gitlab/database/load_balancing/service_discovery/sampler_spec.rb spec/lib/sidebars/user_settings/menus/chat_menu_spec.rb spec/lib/gitlab/ci/input/arguments/required_spec.rb spec/lib/gitlab/git/diff_tree_spec.rb spec/finders/packages/ml_model/package_finder_spec.rb spec/lib/error_tracking/sentry_client_spec.rb spec/lib/sidebars/user_settings/menus/ssh_keys_menu_spec.rb spec/lib/gitlab/sidekiq_middleware/admin_mode/server_spec.rb spec/rubocop/cop/performance/active_record_subtransaction_methods_spec.rb spec/finders/packages/generic/package_finder_spec.rb spec/lib/api/base_spec.rb spec/lib/gitlab/graphql/type_name_deprecations_spec.rb spec/presenters/ci/bridge_presenter_spec.rb spec/models/description_version_spec.rb spec/serializers/ci/daily_build_group_report_result_entity_spec.rb spec/lib/gitlab/health_checks/server_spec.rb spec/models/badges/project_badge_spec.rb spec/services/ci/disable_user_pipeline_schedules_service_spec.rb spec/initializers/sidekiq_spec.rb spec/lib/bulk_imports/projects/pipelines/service_desk_setting_pipeline_spec.rb spec/lib/gitlab/memory/watchdog/monitor/unique_memory_growth_spec.rb spec/lib/bulk_imports/file_downloads/validations_spec.rb spec/views/shared/milestones/_issuables.html.haml_spec.rb spec/lib/gitlab/performance_bar/with_top_level_warnings_spec.rb spec/workers/service_desk_email_receiver_worker_spec.rb spec/lib/gitlab/middleware/rack_multipart_tempfile_factory_spec.rb spec/lib/gitlab/prometheus/queries/validate_query_spec.rb spec/lib/gitlab/database/health_status/logger_spec.rb spec/helpers/projects/cluster_agents_helper_spec.rb spec/graphql/types/root_storage_statistics_type_spec.rb spec/lib/gitlab/audit/unauthenticated_author_spec.rb spec/graphql/resolvers/audit_events/audit_event_definitions_resolver_spec.rb spec/tooling/danger/config_files_spec.rb spec/graphql/types/error_tracking/sentry_detailed_error_type_spec.rb spec/lib/gitlab/logging/cloudflare_helper_spec.rb spec/graphql/types/member_access_level_enum_spec.rb spec/graphql/types/namespace_type_spec.rb spec/lib/gitlab/string_regex_marker_spec.rb spec/graphql/types/users/autocompleted_user_type_spec.rb spec/rubocop/cop/rspec/env_assignment_spec.rb spec/lib/sidebars/projects/super_sidebar_menus/build_menu_spec.rb spec/rubocop/cop/rspec/missing_feature_category_spec.rb spec/lib/gitlab/fogbugz_import/client_spec.rb spec/graphql/types/label_type_spec.rb spec/lib/bulk_imports/common/transformers/prohibited_attributes_transformer_spec.rb spec/lib/system_check/app/hashed_storage_enabled_check_spec.rb spec/helpers/registrations_helper_spec.rb spec/lib/gitlab/utils/merge_hash_spec.rb spec/workers/packages/composer/cache_cleanup_worker_spec.rb spec/graphql/types/tree/submodule_type_spec.rb spec/graphql/types/x509_issuer_type_spec.rb spec/graphql/types/commit_action_mode_enum_spec.rb spec/views/groups/observability/observability.html.haml_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/batched_background_migration_failed_jobs_metric_spec.rb spec/lib/gitlab/ci/pipeline/metrics_spec.rb spec/lib/gitlab/ci/status/bridge/waiting_for_resource_spec.rb spec/lib/microsoft_teams/activity_spec.rb spec/lib/api/entities/project_import_failed_relation_spec.rb spec/services/issues/issuable_base_service_spec.rb spec/lib/gitlab/diff/file_collection_sorter_spec.rb spec/dependencies/omniauth_saml_spec.rb spec/lib/gitlab/utils/delegator_override/error_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/index_inconsistencies_metric_spec.rb spec/graphql/types/work_items/widgets/labels_type_spec.rbKnapsack report generator started!1410/builds/edith007/gitlab/ee/app/services/remote_development/service_response_factory.rb:41: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1411/builds/edith007/gitlab/ee/app/services/remote_development/workspaces/create_service.rb:28: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1412/builds/edith007/gitlab/ee/app/services/remote_development/workspaces/reconcile_service.rb:38: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1413/builds/edith007/gitlab/ee/app/services/remote_development/workspaces/update_service.rb:28: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1414/builds/edith007/gitlab/ee/lib/remote_development/agent_config/main.rb:32: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1415/builds/edith007/gitlab/ee/lib/remote_development/agent_config/updater.rb:11: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1416/builds/edith007/gitlab/ee/lib/remote_development/workspaces/create/authorizer.rb:12: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1417/builds/edith007/gitlab/ee/lib/remote_development/workspaces/create/authorizer.rb:13: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1418/builds/edith007/gitlab/ee/lib/remote_development/workspaces/create/creator.rb:17: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1419/builds/edith007/gitlab/ee/lib/remote_development/workspaces/create/creator.rb:24: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1420/builds/edith007/gitlab/ee/lib/remote_development/workspaces/create/creator.rb:25: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1421/builds/edith007/gitlab/ee/lib/remote_development/workspaces/create/creator.rb:28: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1422/builds/edith007/gitlab/ee/lib/remote_development/workspaces/create/devfile_fetcher.rb:15: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1423/builds/edith007/gitlab/ee/lib/remote_development/workspaces/create/devfile_fetcher.rb:16: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1424/builds/edith007/gitlab/ee/lib/remote_development/workspaces/create/devfile_flattener.rb:12: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1425/builds/edith007/gitlab/ee/lib/remote_development/workspaces/create/editor_component_injector.rb:12: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1426/builds/edith007/gitlab/ee/lib/remote_development/workspaces/create/editor_component_injector.rb:17: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1427/builds/edith007/gitlab/ee/lib/remote_development/workspaces/create/editor_component_injector.rb:18: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1428/builds/edith007/gitlab/ee/lib/remote_development/workspaces/create/post_flatten_devfile_validator.rb:43: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1429/builds/edith007/gitlab/ee/lib/remote_development/workspaces/create/post_flatten_devfile_validator.rb:54: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1430/builds/edith007/gitlab/ee/lib/remote_development/workspaces/create/post_flatten_devfile_validator.rb:102: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1431/builds/edith007/gitlab/ee/lib/remote_development/workspaces/create/post_flatten_devfile_validator.rb:126: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1432/builds/edith007/gitlab/ee/lib/remote_development/workspaces/create/post_flatten_devfile_validator.rb:159: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1433/builds/edith007/gitlab/ee/lib/remote_development/workspaces/create/post_flatten_devfile_validator.rb:202: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1434/builds/edith007/gitlab/ee/lib/remote_development/workspaces/create/post_flatten_devfile_validator.rb:235: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1435/builds/edith007/gitlab/ee/lib/remote_development/workspaces/create/pre_flatten_devfile_validator.rb:24: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1436/builds/edith007/gitlab/ee/lib/remote_development/workspaces/create/pre_flatten_devfile_validator.rb:52: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1437/builds/edith007/gitlab/ee/lib/remote_development/workspaces/create/project_cloner_component_injector.rb:12: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1438/builds/edith007/gitlab/ee/lib/remote_development/workspaces/create/project_cloner_component_injector.rb:17: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1439/builds/edith007/gitlab/ee/lib/remote_development/workspaces/create/project_cloner_component_injector.rb:18: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1440/builds/edith007/gitlab/ee/lib/remote_development/workspaces/create/project_cloner_component_injector.rb:23: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1441/builds/edith007/gitlab/ee/lib/remote_development/workspaces/create/volume_component_injector.rb:12: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1442/builds/edith007/gitlab/ee/lib/remote_development/workspaces/create/volume_component_injector.rb:13: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1443/builds/edith007/gitlab/ee/lib/remote_development/workspaces/create/volume_component_injector.rb:14: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1444/builds/edith007/gitlab/ee/lib/remote_development/workspaces/reconcile/main.rb:43: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1445/builds/edith007/gitlab/ee/lib/remote_development/workspaces/update/authorizer.rb:12: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1446/builds/edith007/gitlab/ee/lib/remote_development/workspaces/update/updater.rb:12: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1447/builds/edith007/gitlab/ee/lib/remote_development/workspaces/reconcile/input/agent_infos_observer.rb:15: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1448/builds/edith007/gitlab/ee/lib/remote_development/workspaces/reconcile/input/params_extractor.rb:14: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1449/builds/edith007/gitlab/ee/lib/remote_development/workspaces/reconcile/input/params_extractor.rb:16: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1450/builds/edith007/gitlab/ee/lib/remote_development/workspaces/reconcile/input/params_to_infos_converter.rb:14: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1451/builds/edith007/gitlab/ee/lib/remote_development/workspaces/reconcile/input/params_validator.rb:15: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1452/builds/edith007/gitlab/ee/lib/remote_development/workspaces/reconcile/output/rails_infos_observer.rb:11: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1453/builds/edith007/gitlab/ee/lib/remote_development/workspaces/reconcile/output/workspaces_to_rails_infos_converter.rb:15: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1454/builds/edith007/gitlab/ee/lib/remote_development/workspaces/reconcile/persistence/orphaned_workspaces_observer.rb:12: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1455/builds/edith007/gitlab/ee/lib/remote_development/workspaces/reconcile/persistence/workspaces_from_agent_infos_updater.rb:15: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1456/builds/edith007/gitlab/ee/lib/remote_development/workspaces/reconcile/persistence/workspaces_to_be_returned_finder.rb:16: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1457/builds/edith007/gitlab/ee/lib/remote_development/workspaces/reconcile/persistence/workspaces_to_be_returned_updater.rb:11: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!1458Run options: exclude {:quarantine=>true, :level=>"background_migration", :click_house=>true}1459Test environment set up in 0.716998852 seconds1460MergeRequestDiff1461 validations1462 is expected not to validate that :diff_type is case-sensitively unique within the scope of :merge_request_id1463 checks sha format of base_commit_sha, head_commit_sha and start_commit_sha1464 does not validate uniqueness by default1465 when merge request diff is a merge_head type1466 is valid1467 when merge_head diff exists1468 validates uniqueness1469 create new record1470 is expected to be valid1471 is expected to be persisted1472 is expected to eq 291473 is expected to eq 201474 is expected to eq "b83d6e391c22777fca1ed3012fce84f633d7fed0"1475 is expected to eq "ae73cb07c9eeaf35924a10f713b364d32b2dd34f"1476 is expected to eq "0b4bc9a49b562e85de7cc9e834518ea6828729b9"1477 when diff_type is merge_head1478 is expected to be valid1479 is expected to be persisted1480 is expected to eq 301481 is expected to eq 201482 is expected to eq "bc8fcdfd50cc67237000ba2540a9cdb62986e2f8"1483 is expected to eq "0b4bc9a49b562e85de7cc9e834518ea6828729b9"1484 is expected to eq "0b4bc9a49b562e85de7cc9e834518ea6828729b9"1485 .by_commit_sha1486 with sha contained in1487 returns merge request diffs1488 with sha not contained in1489 returns empty result1490 .ids_for_external_storage_migration1491 external diffs are disabled1492 is expected to be empty1493 external diffs are misconfigured1494 is expected to be empty1495 external diffs are enabled unconditionally1496 is expected to contain exactly 17, 18, 20, 21, 22, 23, and 191497 ignores diffs with 0 files1498 external diffs are enabled for outdated diffs1499 returns records for outdated merge request versions1500 with limit1501 respects the limit1502 #update_external_diff_store1503 change_stored_externally: false, change_external_diff: false1504 is expected not to receive update_column(:external_diff_store, 1) 0 times1505 change_stored_externally: false, change_external_diff: true1506 is expected to receive update_column(:external_diff_store, 1) 1 time1507 change_stored_externally: true, change_external_diff: false1508 is expected to receive update_column(:external_diff_store, 1) 1 time1509 change_stored_externally: true, change_external_diff: true1510 is expected to receive update_column(:external_diff_store, 1) 1 time1511 #migrate_files_to_external_storage!1512 converts from in-database to external file storage1513 migrates a nil diff file1514 safely handles a transaction error when migrating to external storage1515 converts from in-database to external object storage1516 does nothing with an external diff1517 does nothing if external diffs are disabled1518 diff adds an empty file1519 migrates the diff to object storage1520 #migrate_files_to_database!1521 converts from external to in-database storage1522 does nothing with an in-database diff1523 does nothing with an empty diff1524 #latest?1525 is expected to be latest1526 is expected not to be latest1527 internal diffs configured1528 when it was not cleaned by the system1529 returns persisted diffs1530 when diff was cleaned by the system1531 returns diffs from repository if can compare with current diff refs1532 returns persisted diffs if cannot compare with diff refs1533 returns persisted diffs if diff refs does not exist1534 #diffs_in_batch1535 when no persisted files available1536 behaves like fetching full diffs1537 returns diffs from repository comparison1538 returns a Gitlab::Diff::FileCollection::Compare with full diffs1539 returns empty pagination data1540 measures diffs_comparison1541 behaves like measuring diffs metrics1542 is expected to receive measure(:diffs_collection) 1 time1543 when diff_options include ignore_whitespace_change1544 behaves like fetching full diffs1545 returns diffs from repository comparison1546 returns a Gitlab::Diff::FileCollection::Compare with full diffs1547 returns empty pagination data1548 measures diffs_comparison1549 behaves like measuring diffs metrics1550 is expected to receive measure(:diffs_collection) 1 time1551 when persisted files available1552 returns paginated diffs1553 sorts diff files directory first1554 behaves like measuring diffs metrics1555 is expected to receive measure(:diffs_collection) 1 time1556 when diff_options include ignore_whitespace_change1557 returns pagination data from MergeRequestDiffBatch1558 returns an empty MergeRequestBatch with empty pagination data when the batch is empty1559 #paginated_diffs1560 when no persisted files available1561 returns a Gitlab::Diff::FileCollection::Compare1562 when persisted files available1563 returns paginated diffs1564 sorts diff files directory first1565 #diffs1566 when no persisted files available1567 behaves like fetching full diffs1568 returns diffs from repository comparison1569 returns a Gitlab::Diff::FileCollection::Compare with full diffs1570 when diff_options include ignore_whitespace_change1571 behaves like fetching full diffs1572 returns diffs from repository comparison1573 returns a Gitlab::Diff::FileCollection::Compare with full diffs1574 when persisted files available1575 returns diffs1576 sorts diff files directory first1577 #raw_diffs1578 when the :ignore_whitespace_change option is set1579 creates a new compare object instead of using preprocessed data1580 when the raw diffs are empty1581 returns an empty DiffCollection1582 when the raw diffs exist1583 returns the diffs1584 when the :paths option is set1585 only returns diffs that match the (old path, new path) given1586 only serializes diff files found by query1587 uses the preprocessed diffs1588 #save_diffs1589 saves collected state1590 saves overflow state1591 saves empty state1592 persists diff files sorted directory first1593 expands collapsed diffs before saving1594 saves binary diffs correctly1595 with diffs that contain a null byte1596 saves diffs correctly1597 external diffs on disk always enabled1598 when it was not cleaned by the system1599 returns persisted diffs1600 when diff was cleaned by the system1601 returns diffs from repository if can compare with current diff refs1602 returns persisted diffs if cannot compare with diff refs1603 returns persisted diffs if diff refs does not exist1604 #diffs_in_batch1605 when no persisted files available1606 behaves like fetching full diffs1607 returns diffs from repository comparison1608 returns a Gitlab::Diff::FileCollection::Compare with full diffs1609 returns empty pagination data1610 measures diffs_comparison1611 behaves like measuring diffs metrics1612 is expected to receive measure(:diffs_collection) 1 time1613 when diff_options include ignore_whitespace_change1614 behaves like fetching full diffs1615 returns diffs from repository comparison1616 returns a Gitlab::Diff::FileCollection::Compare with full diffs1617 returns empty pagination data1618 measures diffs_comparison1619 behaves like measuring diffs metrics1620 is expected to receive measure(:diffs_collection) 1 time1621 when persisted files available1622 returns paginated diffs1623 sorts diff files directory first1624 behaves like measuring diffs metrics1625 is expected to receive measure(:diffs_collection) 1 time1626 when diff_options include ignore_whitespace_change1627 returns pagination data from MergeRequestDiffBatch1628 returns an empty MergeRequestBatch with empty pagination data when the batch is empty1629 #paginated_diffs1630 when no persisted files available1631 returns a Gitlab::Diff::FileCollection::Compare1632 when persisted files available1633 returns paginated diffs1634 sorts diff files directory first1635 #diffs1636 when no persisted files available1637 behaves like fetching full diffs1638 returns diffs from repository comparison1639 returns a Gitlab::Diff::FileCollection::Compare with full diffs1640 when diff_options include ignore_whitespace_change1641 behaves like fetching full diffs1642 returns diffs from repository comparison1643 returns a Gitlab::Diff::FileCollection::Compare with full diffs1644 when persisted files available1645 returns diffs1646 sorts diff files directory first1647 #raw_diffs1648 when the :ignore_whitespace_change option is set1649 creates a new compare object instead of using preprocessed data1650 when the raw diffs are empty1651 returns an empty DiffCollection1652 when the raw diffs exist1653 returns the diffs1654 when the :paths option is set1655 only returns diffs that match the (old path, new path) given1656 only serializes diff files found by query1657 uses the preprocessed diffs1658 #save_diffs1659 saves collected state1660 saves overflow state1661 saves empty state1662 persists diff files sorted directory first1663 expands collapsed diffs before saving1664 saves binary diffs correctly1665 with diffs that contain a null byte1666 saves diffs correctly1667 external diffs in object storage always enabled1668 empty diff1669 creates an empty diff1670 normal diff1671 creates a diff in object storage1672 diff adding an empty file1673 creates a diff in object storage1674 exernal diffs enabled for outdated diffs1675 stores up-to-date diffs in the database1676 stores diffs for recently closed MRs in the database1677 stores diffs for recently merged MRs in the database1678 stores diffs for old MR versions in external storage1679 stores diffs for old closed MRs in external storage1680 stores diffs for old merged MRs in external storage1681 when it was not cleaned by the system1682 returns persisted diffs1683 when diff was cleaned by the system1684 returns diffs from repository if can compare with current diff refs1685 returns persisted diffs if cannot compare with diff refs1686 returns persisted diffs if diff refs does not exist1687 #diffs_in_batch1688 when no persisted files available1689 behaves like fetching full diffs1690 returns diffs from repository comparison1691 returns a Gitlab::Diff::FileCollection::Compare with full diffs1692 returns empty pagination data1693 measures diffs_comparison1694 behaves like measuring diffs metrics1695 is expected to receive measure(:diffs_collection) 1 time1696 when diff_options include ignore_whitespace_change1697 behaves like fetching full diffs1698 returns diffs from repository comparison1699 returns a Gitlab::Diff::FileCollection::Compare with full diffs1700 returns empty pagination data1701 measures diffs_comparison1702 behaves like measuring diffs metrics1703 is expected to receive measure(:diffs_collection) 1 time1704 when persisted files available1705 returns paginated diffs1706 sorts diff files directory first1707 behaves like measuring diffs metrics1708 is expected to receive measure(:diffs_collection) 1 time1709 when diff_options include ignore_whitespace_change1710 returns pagination data from MergeRequestDiffBatch1711 returns an empty MergeRequestBatch with empty pagination data when the batch is empty1712 #paginated_diffs1713 when no persisted files available1714 returns a Gitlab::Diff::FileCollection::Compare1715 when persisted files available1716 returns paginated diffs1717 sorts diff files directory first1718 #diffs1719 when no persisted files available1720 behaves like fetching full diffs1721 returns diffs from repository comparison1722 returns a Gitlab::Diff::FileCollection::Compare with full diffs1723 when diff_options include ignore_whitespace_change1724 behaves like fetching full diffs1725 returns diffs from repository comparison1726 returns a Gitlab::Diff::FileCollection::Compare with full diffs1727 when persisted files available1728 returns diffs1729 sorts diff files directory first1730 #raw_diffs1731 when the :ignore_whitespace_change option is set1732 creates a new compare object instead of using preprocessed data1733 when the raw diffs are empty1734 returns an empty DiffCollection1735 when the raw diffs exist1736 returns the diffs1737 when the :paths option is set1738 only returns diffs that match the (old path, new path) given1739 only serializes diff files found by query1740 uses the preprocessed diffs1741 #save_diffs1742 saves collected state1743 saves overflow state1744 saves empty state1745 persists diff files sorted directory first1746 expands collapsed diffs before saving1747 saves binary diffs correctly1748 with diffs that contain a null byte1749 saves diffs correctly1750 #commit_shas1751 returns all commit SHAs using commits from the DB1752 with limit attribute1753 behaves like limited number of shas1754 returns limited number of shas1755 with preloaded diff commits1756 does not trigger any query1757 behaves like limited number of shas1758 returns limited number of shas1759 #compare_with1760 delegates compare to the service1761 uses git diff A..B approach by default1762 #commits_count1763 returns number of commits using serialized commits1764 #files_count1765 is set by default1766 is set to the sentinel value if the actual value exceeds it1767 uses the cached count if present1768 uses the actual count if nil1769 uses the actual count if overflown1770 #first_commit1771 returns first commit1772 #last_commit1773 returns last commit1774 #includes_any_commits?1775 returns false if passed commits do not exist1776 returns true if passed commits exists1777 processes the passed shas in batches1778 number of existing commits is greater than batch size1779 performs a separate request for each batch1780 #modified_paths1781 returns affected file paths1782 when fallback_on_overflow is true1783 when the merge_request_diff is overflowed1784 returns file paths via project.repository#diff_stats1785 when the merge_request_diff is not overflowed1786 returns expect file paths withoout called #modified_paths_for_overflowed_mr1787 #opening_external_diff1788 external diffs disabled1789 is expected not to be exists1790 yields nil1791 external diffs enabled1792 is expected to be exists1793 yields an open file1794 is re-entrant1795 #lines_count1796 returns sum of all changed lines count in diff files1797 #commits1798 returns a CommitCollection whose container points to the target project1799 returns a non-empty CommitCollection1800 with a page1801 returns a limited number of commits for page1802 .latest_diff_for_merge_requests1803 loads the latest merge_request_diff record for the given merge requests1804 loads nothing if the merge request has no diff record1805 loads nothing if nil was passed as merge_request1806 external diff caching1807 #cached_external_diff1808 when diff is externally stored1809 when diff is already cached1810 yields cached file1811 when diff is not cached1812 caches external diff in tmp storage1813 when diff is not externally stored1814 yields nil1815 #remove_cached_external_diff1816 removes external diff cache diff1817 when path is traversed1818 raises1819 when path is not allowed1820 raises1821 when dir does not exist1822 returns1823Issues::UpdateService1824 execute1825 behaves like issuable update service updating last_edited_at values1826 when updating the title of the issuable1827 does not update last_edited values1828 when updating the description of the issuable1829 updates last_edited values1830 valid params1831 updates the issue with the given params1832 refreshes the number of open issues when the issue is made confidential1833 enqueues ConfidentialIssueWorker when an issue is made confidential1834 does not enqueue ConfidentialIssueWorker when an issue is made non confidential1835 updates open issue counter for assignees when issue is reassigned1836 rebalances if needed on the left1837 rebalances if needed on the right1838 verifies the number of queries1839 when an unauthorized project_id is provided1840 ignores the project_id param and does not update the issue's project1841 behaves like update service that triggers GraphQL work_item_updated subscription1842 triggers graphql subscription workItemUpdated1843 when updating milestone1844 updates issue milestone when passing `milestone` param1845 triggers 'issuableMilestoneUpdated'1846 when milestone remains unchanged1847 does not trigger 'issuableMilestoneUpdated'1848 when sentry identifier is given1849 assigns the sentry error1850 user is a guest1851 does not assign the sentry error1852 when issue type is not incident1853 behaves like not an incident issue1854 has not incident as issue type1855 when confidentiality is changed1856 behaves like does not track incident management event1857 does not track the event1858 when issue type is incident1859 does not add an incident label1860 behaves like incident issue1861 has incident as issue type1862 when confidentiality is changed1863 behaves like an incident management tracked event1864 .track_event1865 tracks the event using redis1866 behaves like Snowplow event tracking with RedisHLL context1867 behaves like Snowplow event tracking1868 is emitted1869 changing issue_type1870 from issue to incident1871 creates system note about issue type1872 creates an escalation status1873 behaves like incident issue1874 has incident as issue type1875 for an issue with multiple labels1876 does not add an `incident` label if one already exist1877 from incident to issue1878 changed from an incident to an issue type1879 for an incident with multiple labels1880 does not remove an `incident` label if one exists on the incident1881 filtering the incident label1882 does not add an incident label id to remove_label_ids for it to be removed1883 from issue to restricted issue types1884 without sufficient permissions1885 does nothing to the labels1886 when changing relative position1887 sorts issues as specified by parameters1888 when block_issue_positioning flag is enabled1889 raises error1890 when moving issue between issues from different projects1891 sorts issues as specified by parameters1892 when current user cannot admin issues in the project1893 filters out params that cannot be set without the :admin_issue permission1894 with background jobs processed1895 sends email to user2 about assign of new issue and email to user3 about issue unassignment1896 creates system note about issue reassign1897 creates a resource label event1898 creates system note about title change1899 creates system note about discussion lock1900 after_save callback to store_mentions1901 when mentionable attributes change1902 saves mentions1903 when mentionable attributes do not change1904 does not call store_mentions1905 when save fails1906 does not call store_mentions1907 when description changed1908 creates system note about description change1909 triggers GraphQL description updated subscription1910 when description is not changed1911 does not trigger GraphQL description updated subscription1912 when issue turns confidential1913 creates system note about confidentiality change1914 executes confidential issue hooks1915 does not update assignee_id with unauthorized users1916 todos1917 when the title change1918 marks pending todos as done1919 does not create any new todos1920 when the description change1921 marks todos as done1922 creates only 1 new todo1923 when is reassigned1924 marks previous assignee todos as done1925 creates a todo for new assignee1926 when a new assignee added1927 creates only 1 new todo1928 creates a todo for new assignee1929 issue is incident type1930 behaves like an incident management tracked event1931 .track_event1932 tracks the event using redis1933 behaves like Snowplow event tracking with RedisHLL context1934 behaves like Snowplow event tracking1935 is emitted1936 when the milestone is removed1937 sends notifications for subscribers of changed milestone1938 clears milestone issue counters cache1939 when the milestone is assigned1940 marks todos as done1941 sends notifications for subscribers of changed milestone1942 deletes issue counters cache for the milestone1943 when the milestone is changed1944 deletes issue counters cache for both milestones1945 when the labels change1946 marks todos as done1947 updates updated_at1948 when the issue is relabeled1949 sends notifications for subscribers of newly added labels1950 when issue has the `label` label1951 does not send notifications for existing labels1952 does not send notifications for removed labels1953 when issue has tasks1954 is expected to eq true1955 behaves like updating a single task1956 usage counters1957 update as expected1958 when a task is marked as completed1959 creates system note about task status change1960 when a task is marked as incomplete1961 creates system note about task status change1962 when the task position has been modified1963 raises an exception1964 when the content changes but not task line number1965 creates system note about task status change1966 when tasks are marked as completed1967 does not check for spam on task status change1968 does not pass old_associations to the after_update method1969 creates system note about task status change1970 when tasks are marked as incomplete1971 creates system note about task status change1972 when tasks position has been modified1973 does not create a system note for the task1974 when a Task list with a completed item is totally replaced1975 does not create a system note referencing the position the old item1976 does not generate a new note at all1977 updating labels1978 behaves like updating issuable labels1979 when add_label_ids and label_ids are passed1980 replaces the labels with the ones in label_ids and adds those in add_label_ids1981 when remove_label_ids and label_ids are passed1982 replaces the labels with the ones in label_ids and removes those in remove_label_ids1983 when add_label_ids and remove_label_ids are passed1984 adds the passed labels1985 removes the passed labels1986 when same id is passed as add_label_ids and remove_label_ids1987 for a label assigned to an issue1988 removes the label1989 for a label not assigned to an issue1990 does not add the label1991 when duplicate label titles are given1992 assigns the label once1993 behaves like keeps issuable labels sorted after update1994 when label is changed1995 keeps the labels sorted by title ASC1996 behaves like broadcasting issuable labels updates1997 when label is added1998 triggers the GraphQL subscription1999 when label is removed2000 triggers the GraphQL subscription2001 when label is unchanged2002 does not trigger the GraphQL subscription2003 updating dates2004 when due_date is updated2005 behaves like issue update service that triggers date updates2006 triggers graphql date updated subscription2007 when start_date is updated2008 behaves like issue update service that triggers date updates2009 triggers graphql date updated subscription2010 when no date is updated2011 behaves like issue update service that does not trigger date updates2012 does not trigger date updated subscriptions2013 when update is not successful but date is provided2014 behaves like issue update service that does not trigger date updates2015 does not trigger date updated subscriptions2016 updating asssignee_id2017 changes assignee2018 does not update assignee when assignee_id is invalid2019 unassigns assignee when user id is 02020 does not update assignee_id when user cannot read issue2021 tracks the assignment events2022 when issuable feature is private2023 does not update with unauthorized assignee when project is Internal2024 does not update with unauthorized assignee when project is Public2025 updating mentions2026 when mentioning a different user2027 in title2028 emails only the newly-mentioned user2029 in description2030 emails only the newly-mentioned user2031 when mentioning a user and a group with access to2032 when group is public2033 behaves like updating attribute with allowed mentions2034 emails group members2035 behaves like updating attribute with allowed mentions2036 emails group members2037 behaves like updating attribute with existing group mention2038 creates todos for only newly mentioned users2039 behaves like updating attribute with existing group mention2040 creates todos for only newly mentioned users2041 when the group is private2042 behaves like updating attribute with allowed mentions2043 emails group members2044 behaves like updating attribute with allowed mentions2045 emails group members2046 behaves like updating attribute with existing group mention2047 creates todos for only newly mentioned users2048 behaves like updating attribute with existing group mention2049 creates todos for only newly mentioned users2050 when mentioning a user and a group without access to2051 when the group is private2052 behaves like updating attribute with not allowed mentions2053 emails mentioned user2054 behaves like updating attribute with not allowed mentions2055 emails mentioned user2056 updating severity2057 on incidents2058 when severity has not been set previously2059 creates a new record2060 behaves like updates the severity2061 has correct value2062 creates a system note2063 triggers webhooks2064 with unsupported severity value2065 behaves like does not change the severity2066 retains the original value2067 does not trigger side-effects2068 with severity value defined but unchanged2069 behaves like does not change the severity2070 retains the original value2071 does not trigger side-effects2072 as guest2073 behaves like does not change the severity2074 retains the original value2075 does not trigger side-effects2076 and also author2077 behaves like does not change the severity2078 retains the original value2079 does not trigger side-effects2080 and also assignee2081 behaves like does not change the severity2082 retains the original value2083 does not trigger side-effects2084 when severity has been set before2085 does not create a new record2086 behaves like updates the severity2087 has correct value2088 creates a system note2089 triggers webhooks2090 with unsupported severity value2091 behaves like updates the severity2092 has correct value2093 creates a system note2094 triggers webhooks2095 with severity value defined but unchanged2096 behaves like does not change the severity2097 retains the original value2098 does not trigger side-effects2099 when issue type is not incident2100 behaves like does not change the severity2101 retains the original value2102 does not trigger side-effects2103 updating escalation status2104 when issue is an incident2105 with an escalation status record2106 behaves like updates the escalation status record2107 has correct value2108 triggers webhooks2109 with unsupported status value2110 behaves like does not change the status record2111 retains the original value2112 does not trigger side-effects2113 with status value defined but unchanged2114 behaves like does not change the status record2115 retains the original value2116 does not trigger side-effects2117 without an escalation status record2118 creates a new record2119 behaves like updates the escalation status record2120 has correct value2121 triggers webhooks2122 when issue type is not incident2123 behaves like does not change the status record2124 retains the original value2125 does not trigger side-effects2126 duplicate issue2127 invalid canonical_issue_id2128 does not call the duplicate service2129 valid canonical_issue_id2130 calls the duplicate service with both issues2131 move issue to another project2132 valid project2133 calls the move service with the proper issue and project2134 clone an issue2135 valid project2136 calls the move service with the proper issue and project2137 clone an issue with notes2138 valid project2139 calls the move service with the proper issue and project2140 when moving an issue2141 raises an error for invalid move ids2142 behaves like issuable update service2143 changing state2144 to reopened2145 executes hooks2146 to closed2147 executes hooks2148 broadcasting issue assignee updates2149 triggers the GraphQL subscription2150 when assignee is not updated2151 does not trigger the GraphQL subscription2152 behaves like issuable record that supports quick actions2153 with labels in command only2154 attaches labels to issuable2155 with labels in params and command2156 attaches all labels to issuable2157 with assignee and milestone in command only2158 assigns and sets milestone to issuable2159Clusters::Cluster2160 is expected to includes the HasEnvironmentScope module2161 is expected to belong to user required: false2162 is expected to belong to management_project class_name => ::Project required: false2163 is expected to have many cluster_projects2164 is expected to have many projects2165 is expected to have many cluster_groups2166 is expected to have many groups2167 is expected to have many groups_projects2168 is expected to have one provider_gcp2169 is expected to have one provider_aws2170 is expected to have one platform_kubernetes2171 is expected to have one integration_prometheus2172 is expected to have many kubernetes_namespaces2173 is expected to have one cluster_project2174 is expected to have many deployment_clusters2175 is expected to have many successful_deployments2176 is expected to have many environments through deployments2177 is expected to delegate #status to the #provider object2178 is expected to delegate #status_reason to the #provider object2179 is expected to respond to #project2180 is expected to be namespace per environment2181 has default helm_major_version 32182 behaves like having unique enum values2183 has unique values in "cluster_type"2184 has unique values in "platform_type"2185 has unique values in "provider_type"2186 default values2187 is expected to eq 32188 behaves like it has loose foreign keys2189 has at least one loose foreign key definition2190 has the deletion trigger present2191 records record deletions2192 cleans up record deletions2193 .enabled2194 is expected to contain exactly #<Clusters::Cluster id: 4, user_id: 703, provider_type: nil, platform_type: nil, created_at: "2023-08...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>2195 .disabled2196 is expected to contain exactly #<Clusters::Cluster id: 6, user_id: 705, provider_type: nil, platform_type: nil, created_at: "2023-08...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>2197 .user_provided2198 is expected to contain exactly #<Clusters::Cluster id: 8, user_id: 707, provider_type: "user", platform_type: "kubernetes", created_...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>2199 .gcp_provided2200 is expected to contain exactly #<Clusters::Cluster id: 10, user_id: 709, provider_type: "gcp", platform_type: "kubernetes", created_...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>2201 .gcp_installed2202 is expected to contain exactly #<Clusters::Cluster id: 13, user_id: 712, provider_type: "gcp", platform_type: "kubernetes", created_...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>2203 .aws_provided2204 is expected to contain exactly #<Clusters::Cluster id: 16, user_id: 715, provider_type: "aws", platform_type: "kubernetes", created_...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>2205 .aws_installed2206 is expected to contain exactly #<Clusters::Cluster id: 19, user_id: 718, provider_type: "aws", platform_type: "kubernetes", created_...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>2207 .managed2208 cluster is not managed2209 is expected not to include #<Clusters::Cluster id: 21, user_id: 720, provider_type: nil, platform_type: nil, created_at: "2023-0...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>2210 cluster is managed2211 is expected to include #<Clusters::Cluster id: 22, user_id: 721, provider_type: nil, platform_type: nil, created_at: "2023-0...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>2212 .with_management_project2213 cluster has a management project2214 is expected to include #<Clusters::Cluster id: 23, user_id: 722, provider_type: nil, platform_type: nil, created_at: "2023-0...e, management_project_id: 324, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>2215 cluster does not have a management project2216 is expected not to include #<Clusters::Cluster id: 24, user_id: 724, provider_type: nil, platform_type: nil, created_at: "2023-0...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>2217 .with_integration_prometheus2218 cluster has prometheus application2219 is expected to include #<Clusters::Cluster id: 25, user_id: 725, provider_type: nil, platform_type: nil, created_at: "2023-0...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>2220 cluster does not have prometheus application2221 is expected not to include #<Clusters::Cluster id: 26, user_id: 726, provider_type: nil, platform_type: nil, created_at: "2023-0...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>2222 .distinct_with_deployed_environments2223 cluster has multiple successful deployment with environment2224 is expected to include #<Clusters::Cluster id: 27, user_id: 727, provider_type: nil, platform_type: nil, created_at: "2023-0...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>2225 lists only distinct environments2226 cluster has only failed deployment with environment2227 is expected not to include #<Clusters::Cluster id: 42, user_id: 747, provider_type: "gcp", platform_type: "kubernetes", created_...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>2228 cluster does not have any deployment2229 is expected not to include #<Clusters::Cluster id: 27, user_id: 727, provider_type: nil, platform_type: nil, created_at: "2023-0...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>2230 .with_project_http_integrations2231 project has alert service data2232 is expected to include #<Clusters::Cluster id: 43, user_id: 751, provider_type: nil, platform_type: nil, created_at: "2023-0...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>2233 project has no alert service data2234 is expected not to include #<Clusters::Cluster id: 44, user_id: 753, provider_type: nil, platform_type: nil, created_at: "2023-0...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>2235 .for_project_namespace2236 is expected to contain exactly #<Clusters::Cluster id: 45, user_id: 755, provider_type: nil, platform_type: nil, created_at: "2023-0...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>2237 .with_name2238 is expected to contain exactly #<Clusters::Cluster id: 47, user_id: 759, provider_type: nil, platform_type: nil, created_at: "2023-0...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>2239 validations2240 when validates unique_environment_scope2241 for a project cluster2242 when identical environment scope exists in project2243 is expected to be falsey2244 when identical environment scope does not exist in project2245 is expected to be truthy2246 when identical environment scope exists in different project2247 is expected to be truthy2248 for a group cluster2249 when identical environment scope exists in group2250 is expected to be falsey2251 when identical environment scope does not exist in group2252 is expected to be truthy2253 when identical environment scope exists in different group2254 is expected to be truthy2255 for an instance cluster2256 identical environment scope exists2257 is expected to be falsey2258 identical environment scope does not exist2259 is expected to be truthy2260 when validates name2261 when provided by user2262 when name is empty2263 is expected to be falsey2264 when name is nil2265 is expected to be falsey2266 when name is present2267 is expected to be truthy2268 when provided by gcp2269 when name is shorter than 12270 is expected to be falsey2271 when name is longer than 632272 is expected to be falsey2273 when name includes invalid character2274 is expected to be falsey2275 when name is present2276 is expected to be truthy2277 when record is persisted2278 when name is changed2279 is expected to be falsey2280 when name is same2281 is expected to be truthy2282 when validates restrict_modification2283 when creation is on going2284 is expected to be falsey2285 when creation is done2286 is expected to be truthy2287 cluster_type validations2288 validates presence2289 project_type cluster2290 does not allow setting group2291 group_type cluster2292 does not allow setting project2293 instance_type cluster2294 does not allow setting group2295 does not allow setting project2296 domain validation2297 when cluster has domain2298 is expected to be valid2299 when cluster is not a valid hostname2300 adds an error on domain2301 when cluster does not have a domain2302 is expected to be valid2303 unique scope for management_project2304 duplicate scopes for the same management project2305 adds an error on environment_scope2306 helm_major_version can only be 2 or 32307 helm_major_version: 2, expect_valid: true2308 is expected to eq true2309 helm_major_version: 3, expect_valid: true2310 is expected to eq true2311 helm_major_version: 4, expect_valid: false2312 is expected to eq false2313 helm_major_version: -1, expect_valid: false2314 is expected to eq false2315 .ancestor_clusters_for_clusterable2316 when project does not belong to this group2317 returns nothing2318 when group has a configured kubernetes cluster2319 returns the group cluster2320 when group and instance have configured kubernetes clusters2321 returns clusters in order, descending the hierachy2322 when sub-group has configured kubernetes cluster2323 returns clusters in order, descending the hierachy2324 avoids N+1 queries2325 for a group2326 returns clusters in order for a group2327 scope chaining2328 returns nothing2329 #provider2330 when provider is gcp2331 returns a provider2332 when provider is aws2333 returns a provider2334 when provider is user2335 is expected to be nil2336 #platform2337 when platform is kubernetes2338 returns a platform2339 #first_project2340 when cluster belongs to a project2341 is expected to eq #<Project id:354 namespace350/project-354>>2342 when cluster does not belong to projects2343 is expected to be nil2344 #group2345 when cluster belongs to a group2346 is expected to eq #<Group id:1234 @group24>2347 when cluster does not belong to any group2348 is expected to be nil2349 #allow_user_defined_namespace?2350 project type cluster2351 gitlab managed2352 is expected to be truthy2353 not managed2354 is expected to be truthy2355 group type cluster2356 gitlab managed2357 is expected to be falsey2358 not managed2359 is expected to be truthy2360 instance type cluster2361 gitlab managed2362 is expected to be falsey2363 not managed2364 is expected to be truthy2365 #all_projects2366 cluster_type is project_type2367 returns projects2368 cluster_type is group_type2369 returns group projects2370 cluster_type is instance_type2371 returns all instance's projects2372 #kube_ingress_domain2373 with domain set in cluster2374 is expected to eq "example.com"2375 with no domain on cluster2376 with domain set at instance level2377 is expected to eq "global_domain.com"2378 #kubernetes_namespace_for2379 validates the project id2380 when environment has no last_deployable2381 is expected to eq "project-360-360-the-environment-name"2382 when cluster is managed2383 returns the cached namespace if present, ignoring CI config2384 returns the default namespace when no cached namespace, ignoring CI config2385 when cluster is not managed2386 returns the cached namespace if present, regardless of CI config2387 returns the CI YAML namespace when configured2388 returns the default namespace when no namespace is configured2389 #predefined_variables2390 with an instance domain2391 includes KUBE_INGRESS_BASE_DOMAIN2392 with a cluster domain2393 includes KUBE_INGRESS_BASE_DOMAIN2394 with no domain2395 returns an empty array2396 #provided_by_user?2397 with a GCP provider2398 is expected to be falsy2399 with an user provider2400 is expected to be truthy2401 #status_name2402 the cluster has a provider2403 is expected to eq :errored2404 when cluster cleanup is ongoing2405 status_name: :errored, cleanup_status: :cleanup_not_started2406 returns cleanup_ongoing when uninstalling applications2407 status_name: :cleanup_ongoing, cleanup_status: :cleanup_removing_project_namespaces2408 returns cleanup_ongoing when uninstalling applications2409 status_name: :cleanup_ongoing, cleanup_status: :cleanup_removing_service_account2410 returns cleanup_ongoing when uninstalling applications2411 status_name: :cleanup_errored, cleanup_status: :cleanup_errored2412 returns cleanup_ongoing when uninstalling applications2413 there is a cached connection status2414 is expected to eq :connected2415 there is no connection status in the cache2416 is expected to eq :created2417 cleanup_status state_machine2418 #start_cleanup!2419 when cleanup_status is cleanup_not_started2420 behaves like cleanup_status transition2421 transitions cleanup_status correctly2422 schedules a Clusters::Cleanup::*Worker2423 when cleanup_status is errored2424 behaves like cleanup_status transition2425 transitions cleanup_status correctly2426 schedules a Clusters::Cleanup::*Worker2427 #make_cleanup_errored!2428 transitions cleanup_status from cleanup_not_started to cleanup_errored2429 sets error message2430 transitions cleanup_status from cleanup_removing_project_namespaces to cleanup_errored2431 sets error message2432 transitions cleanup_status from cleanup_removing_service_account to cleanup_errored2433 sets error message2434 #continue_cleanup!2435 behaves like cleanup_status transition2436 transitions cleanup_status correctly2437 schedules a Clusters::Cleanup::*Worker2438 #connection_status2439 is expected to be nil2440 with a cached status2441 is expected to eq :connected2442 #connection_error2443 is expected to be nil2444 with a cached status2445 is expected to eq :unknown_error2446 #node_connection_error2447 is expected to be nil2448 with a cached status2449 is expected to eq :unknown_error2450 #metrics_connection_error2451 is expected to be nil2452 with a cached status2453 is expected to eq :unknown_error2454 #nodes2455 is expected to be nil2456 with a cached status2457 is expected to eq [{"metadata"=>{"name"=>"gke-cluster-applications-default-pool-49b7f225-v527"}, "status"=>{"allocatable"=>{"cpu"=>"1930m", "memory"=>"5777164Ki"}, "capacity"=>{"cpu"=>"2", "memory"=>"7657228Ki"}}}]2458 #calculate_reactive_cache2459 cluster is disabled2460 does not populate the cache2461 cluster is enabled2462 connection to the cluster is successful2463 is expected to eq {:connection_status=>:connected, :nodes=>[{"metadata"=>{"name"=>"gke-cluster-applications-default-poo...ity"=>{"cpu"=>"2", "memory"=>"7657228Ki"}}, "usage"=>{"cpu"=>"144208668n", "memory"=>"1789048Ki"}}]}2464 cluster cannot be reached2465 is expected to eq {:connection_error=>:connection_error, :connection_status=>:unreachable}2466 cluster cannot be authenticated to2467 is expected to eq {:connection_error=>:authentication_error, :connection_status=>:authentication_failure}2468 Kubeclient::HttpError2469 is expected to eq {:connection_error=>:http_error, :connection_status=>:authentication_failure}2470 generic timeout2471 is expected to eq {:connection_error=>:http_error, :connection_status=>:unreachable}2472 gateway timeout2473 is expected to eq {:connection_error=>:http_error, :connection_status=>:unreachable}2474 an uncategorised error is raised2475 is expected to eq {:connection_error=>:unknown_error, :connection_status=>:unknown_failure}2476 notifies Sentry2477 #integration_prometheus_available?2478 is expected to be falsey2479 when integration is enabled2480 is expected to be truthy2481 when integration is disabled2482 is expected to be falsey2483 #prometheus_adapter2484 returns nothing2485 has integration_prometheus2486 returns the integration2487 #delete_cached_resources!2488 deletes associated namespace records2489 #clusterable2490 project type2491 is expected to eq #<Project id:374 namespace370/project-374>>2492 group type2493 is expected to eq #<Group id:1372 @group34>2494 instance type2495 is expected to be a kind of Clusters::Instance2496 unknown type2497 raises NotImplementedError2498 #on_creation?2499 without provider2500 is expected to eq false2501 with provider2502 with on_creation? set to true2503 is expected to eq true2504 with on_creation? set to false2505 is expected to eq false2506 #platform_kubernetes_active?2507 without platform_kubernetes2508 is expected to eq false2509 with platform_kubernetes2510 with active? set to true2511 is expected to eq true2512 with active? set to false2513 is expected to eq false2514 #platform_kubernetes_rbac?2515 without platform_kubernetes2516 is expected to eq false2517 with platform_kubernetes2518 with rbac? set to true2519 is expected to eq true2520 with rbac? set to false2521 is expected to eq false2522IssuesFinder2523 behaves like issues or work items finder2524 #execute2525 scope: all2526 returns all items2527 finds items user can access due to group2528 user does not have read permissions2529 when filtering by project id2530 returns no items2531 when there are group-level work items2532 returns no items2533 when filtering by group id2534 returns no items2535 assignee filtering2536 behaves like assignee ID filter2537 returns issuables assigned to that user2538 behaves like assignee NOT ID filter2539 returns issuables not assigned to that user2540 behaves like assignee OR filter2541 returns issuables assigned to the given users2542 when assignee_id does not exist2543 behaves like assignee NOT ID filter2544 returns issuables not assigned to that user2545 filter by username2546 behaves like assignee username filter2547 returns issuables assigned to those users2548 behaves like assignee NOT username filter2549 returns issuables not assigned to those users2550 behaves like assignee OR filter2551 returns issuables assigned to the given users2552 when assignee_username does not exist2553 behaves like assignee NOT username filter2554 returns issuables not assigned to those users2555 behaves like no assignee filter2556 returns issuables not assigned to any assignee2557 returns issuables not assigned to any assignee2558 returns issuables not assigned to any assignee2559 behaves like any assignee filter2561 returns issuables assigned to any assignee2562 returns issuables assigned to any assignee2563 returns issuables assigned to any assignee2564 filtering by release2565 when filter by none2566 returns items without releases2567 when sort by milestone2568 returns items without any releases2569 when filter by any2570 returns items with any releases2571 when sort by milestone2572 returns items without any releases2573 when filter by a release_tag2574 returns the items associated with the release tag2575 when sort by milestone2576 returns the items associated with the release tag2577 when filter by a negated release_tag2578 returns the items not associated with the release2579 when sort by milestone2580 returns the items not associated with the release2581 filtering by projects2582 when projects are passed in a list of ids2583 returns the item belonging to the projects2584 when projects are passed in a subquery2585 returns the item belonging to the projects2586 filtering by group_id2587 when include_subgroup param not set2588 returns all group items2589 when projects outside the group are passed2590 returns no items2591 when projects of the group are passed2592 returns the item within the group and projects2593 when projects of the group are passed as a subquery2594 returns the item within the group and projects2595 when release_tag is passed as a parameter2596 ignores the release_tag parameter2597 when include_subgroup param is true2598 returns all group and subgroup items2599 when mixed projects are passed2600 returns the item within the group and projects2601 filtering by author2602 by author ID2603 returns items created by that user2604 using OR2605 returns items created by any of the given users2606 when feature flag is disabled2607 does not add any filter2608 filtering by NOT author ID2609 returns items not created by that user2610 filtering by nonexistent author ID and issue term using CTE for search2611 returns no results2612 filtering by milestone2613 returns items assigned to that milestone2614 filtering by not milestone2615 returns items not assigned to that milestone2616 with multiple milestones2617 returns items not assigned to both milestones2618 filtering by group milestone2619 returns items assigned to that group milestone2620 using NOT2621 returns items not assigned to that group milestone2622 filtering by no milestone2623 returns items with no milestone2624 returns items with no milestone (deprecated)2625 filtering by any milestone2626 returns items with any assigned milestone2627 returns items with any assigned milestone (deprecated)2628 filtering by upcoming milestone2629 returns items in the upcoming milestone for each project or group2630 using NOT2631 returns items not in upcoming milestones for each project or group, but must have a due date2632 filtering by started milestone2633 returns items in the started milestones for each project2634 using NOT2635 returns items not in the started milestones for each project2636 filtering by label2637 returns items with that label2638 using NOT2639 returns items that do not have that label2640 shadowing the same outside param2641 does not take precedence over labels outside NOT2642 further filtering outside params2643 further filters on the returned resultset2644 filtering by multiple labels2645 returns the unique items with all those labels2646 using NOT2647 returns items that do not have any of the labels provided2648 using OR2649 returns items that have at least one of the given labels2650 when feature flag is disabled2651 does not add any filter2652 filtering by a label that includes any or none in the title2653 returns the unique items with all those labels2654 using NOT2655 returns items that do not have ANY ONE of the labels provided2656 filtering by no label2657 returns items with no labels2658 filtering by any label2659 returns items that have one or more label2660 when the same label exists on project and group levels2661 finds both item records2662 filtering by item term2663 with latin search term2664 returns matching items2665 with non-latin search term2666 returns matching items2667 filtering by item term in title2668 returns items with title match for search term2669 filtering by items iids2670 returns items where iids match2671 using NOT2672 returns items with no iids match2673 filtering by state2674 with opened2675 returns only opened items2676 with closed2677 returns only closed items2678 with all2679 returns all items2680 with invalid state2681 returns all items2682 filtering by created_at2683 through created_after2684 returns items created on or after the given date2685 through created_before2686 returns items created on or before the given date2687 through created_after and created_before2688 returns items created between the given dates2689 filtering by updated_at2690 through updated_after2691 returns items updated on or after the given date2692 through updated_before2693 returns items updated on or before the given date2694 through updated_after and updated_before2695 returns items updated between the given dates2696 filtering by closed_at2697 through closed_after2698 returns items closed on or after the given date2699 through closed_before2700 returns items closed on or before the given date2701 through closed_after and closed_before2702 returns items closed between the given dates2703 filtering by reaction name2704 user searches by no reaction2705 returns items that the user did not react to2706 user searches by any reaction2707 returns items that the user reacted to2708 user searches by "thumbsup" reaction2709 returns items that the user thumbsup to2710 using NOT2711 returns items that the user did not thumbsup to2712 user2 searches by "thumbsup" reaction2713 returns items that the user2 thumbsup to2714 using NOT2715 returns items that the user2 thumbsup to2716 user searches by "thumbsdown" reaction2717 returns items that the user thumbsdown to2718 using NOT2719 returns items that the user thumbsdown to2720 filtering by confidential2721 no filtering2722 returns all items2723 user filters confidential items2724 returns only confidential items2725 user filters only public items2726 returns only public items2727 filtering by item type2728 no type given2729 returns all items2730 incident type2731 returns incident items2732 objective type2733 returns incident items2734 key_result type2735 returns incident items2736 item type2737 returns all items with type issue2738 multiple params2739 returns all items2740 without array2741 returns incident items2742 invalid params2743 returns no items2744 crm filtering2745 filtering by crm contact2746 when the user can read crm contacts2747 returns for that contact2748 when the user can not read crm contacts2749 does not filter by contact2750 filtering by crm organization2751 when the user can read crm organization2752 returns for that crm organization2753 when the user can not read crm organization2754 does not filter by crm organization2755 when the user is unauthorized2756 returns no results2757 when the user can see some, but not all, items2758 returns only items they can see2759 personal scope2760 returns item assigned to the user2761 filtering by project2762 returns items assigned to the user in that project2763 when project restricts items2764 doesn't return team-only items to non team members2765 doesn't return items if feature disabled2766 external authorization2767 behaves like a finder with external authorization service2768 finds the subject2769 with an external authorization service2770 does not include the subject when no project was given2771 includes the subject when a project id was given2772 filtering by due date2773 with param set to no due date2774 returns items with no due date2775 with param set to any due date2776 returns items with any due date2777 with param set to due today2778 returns items due today2779 with param set to due tomorrow2780 returns items due today2781 with param set to overdue2782 returns overdue items2783 with param set to next month and previous two weeks2784 returns items due in the previous two weeks and next month2785 with invalid param2786 returns no items2787 #row_count2788 returns -1 if the query times out2789 when admin mode is enabled2790 returns the number of rows for the default state2791 returns the number of rows for a given state2792 when admin mode is disabled2793 returns no rows2794 #with_confidentiality_access_check2795 when no project filter is given2796 for an anonymous user2797 behaves like returns public, does not return hidden or confidential2798 returns only public items2799 for a user without project membership2800 behaves like returns public, does not return hidden or confidential2801 returns only public items2802 for a guest user2803 behaves like returns public, does not return hidden or confidential2804 returns only public items2805 for a project member with access to view confidential items2806 behaves like returns public and confidential, does not return hidden2807 returns only public and confidential items2808 for an admin2809 when admin mode is enabled2810 behaves like returns public, confidential, and hidden2811 returns all items2812 when admin mode is disabled2813 behaves like returns public, does not return hidden or confidential2814 returns only public items2815 when searching within a specific project2816 for an anonymous user2817 does not filter by confidentiality2818 behaves like returns public, does not return hidden or confidential2819 returns only public items2820 for a user without project membership2821 filters by confidentiality2822 behaves like returns public, does not return hidden or confidential2823 returns only public items2824 for a guest user2825 filters by confidentiality2826 behaves like returns public, does not return hidden or confidential2827 returns only public items2828 for a project member with access to view confidential items2829 does not filter by confidentiality2830 behaves like returns public and confidential, does not return hidden2831 returns only public and confidential items2832 for an admin2833 when admin mode is enabled2834 does not filter by confidentiality2835 behaves like returns public, confidential, and hidden2836 returns all items2837 when admin mode is disabled2838 filters by confidentiality2839 behaves like returns public, does not return hidden or confidential2840 returns only public items2841 #use_cte_for_search?2842 when there is no search param2843 returns false2844 when the force_cte param is falsey2845 returns false2846 when a non-simple sort is given2847 returns false2848 when all conditions are met2849 uses group search optimization2850 returns true2851 uses project search optimization2852 returns true2853 with simple sort2854 returns true2855 with simple sort as a symbol2856 returns true2857 #parent_param=2858 klass: :Project, param: :project_id2859 sets the params2860 klass: :Group, param: :group_id2861 sets the params2862 unexpected parent2863 raises an error2864Projects::CreateService#execute2865 calls the passed block2866 writes project full path to gitaly2867 triggers PostCreationWorker2868 with labels2869 creates labels on project creation2870 using gitlab project import2871 does not creates labels on project creation2872 setting name and path2873 when both are set2874 keeps them as specified2875 when path is set2876 sets name == path2877 when name is a valid path2878 sets path == name2879 when name is not a valid path2880 parameterizes the name2881 topics2882 with 'topics' parameter2883 keeps them as specified2884 with 'topic_list' parameter2885 keeps them as specified2886 with 'tag_list' parameter (deprecated)2887 keeps them as specified2888 user namespace2889 creates a project in user namespace2890 project_authorizations record creation2891 when the project_authrizations records are not created via the callback2892 still creates project_authrizations record for the user2893 when the passed in namespace is for a bot user2894 raises an error2895 after create actions2896 invalidate personal_projects_count caches2897 creates associated project settings2898 logs creation2899 publishes a ProjectCreatedEvent2900 behaves like storing arguments in the application context2901 places the expected params in the application context2902 admin creates project with other user's namespace_id2903 when admin mode is enabled2904 sets the correct permissions2905 when admin mode is disabled2906 is not allowed2907 group namespace2908 creates the project2909 behaves like has sync-ed traversal_ids2910 is expected to eq [1514, 1515]2911 when project is an import2912 when user is not allowed to import projects2913 does not create the project2914 group sharing2915 updates authorization2916 user with project limit2917 under personal namespace2918 cannot create a project2919 under group namespace2920 can create a project2921 membership overrides2922 membership is higher from group hierarchy2923 updates authorization2924 membership is higher from group share2925 share max access level is not limiting2926 updates authorization2927 share max access level is limiting2928 updates authorization2929 error handling2930 handles invalid options2931 wiki_enabled creates repository directory2932 wiki_enabled true creates wiki repository directory2933 is expected to be truthy2934 wiki_enabled false does not create wiki repository directory2935 is expected to be falsey2936 import data2937 does not write repository config2938 stores import data and URL2939 tracks for imported project2940 import scheduling2941 when project import type is gitlab project migration2942 does not schedule project import2943 builds_enabled global setting2944 global builds_enabled false does not enable CI by default2945 is expected to be falsey2946 global builds_enabled true does enable CI by default2947 is expected to be truthy2948 default visibility level2949 in public group2950 creates project with correct visibility level2951 in internal group2952 creates project with correct visibility level2953 in private group2954 creates project with correct visibility level2955 restricted visibility level2956 when visibility is project based2957 does not allow a restricted visibility level for non-admins2958 does not allow a restricted visibility level for admins when admin mode is disabled2959 allows a restricted visibility level for admins when admin mode is enabled2960 when visibility is overridden2961 does not allow a restricted visibility level for non-admins2962 does not allow a restricted visibility level for admins when admin mode is disabled2963 allows a restricted visibility level for admins when admin mode is enabled2964 when visibility is misspelled2965 does not restrict project creation2966 repository creation2967 synchronously creates the repository2968 when another repository already exists on disk2969 with legacy storage2970 does not allow to create a project when path matches existing repository on disk2971 does not allow to import project when path matches existing repository on disk2972 with hashed storage2973 does not allow to create a project when path matches existing repository on disk2974 when readme initialization is requested2975 behaves like a repo with a README.md2976 is expected to equal 12977 is expected to eql "README.md"2978 is expected to include "cd existing_repo\ngit remote add origin http://localhost/user586/GitLab.git\ngit branch -M master\ngit push -uf origin master\n"2979 and a readme_template is specified2980 behaves like a repo with a README.md2981 is expected to equal 12982 is expected to eql "README.md"2983 is expected to include "# GitLab\nThis is customized readme."2984 and default_branch is specified2985 creates the correct branch2986 behaves like a repo with a README.md2987 is expected to equal 12988 is expected to eql "README.md"2989 is expected to include "cd existing_repo\ngit remote add origin http://localhost/user593/GitLab.git\ngit branch -M example_branch\ngit push -uf origin example_branch\n"2990 and the default branch setting is configured2991 creates the correct branch2992 behaves like a repo with a README.md2993 is expected to equal 12994 is expected to eql "README.md"2995 is expected to include "cd existing_repo\ngit remote add origin http://localhost/user597/GitLab.git\ngit branch -M example_branch\ngit push -uf origin example_branch\n"2996 when SAST initialization is requested2997 creates a commit for SAST2998 create integration for the project2999 with an active instance-level integration3000 creates an integration from the instance-level integration3001 with an active group-level integration3002 creates an integration from the group-level integration3003 with an active subgroup3004 creates an integration from the subgroup-level integration3005 when skip_disk_validation is used3006 sets the project attribute3007 when import source is enabled3008 does not raise an error when import_source is string3009 does not raise an error when import_source is symbol3010 when import source is disabled3011 raises an error3012 with external authorization enabled3013 does not save the project with an error if the service denies access3014 saves the project when the user has access to the label3015 does not save the project when the user has no access to the default label and no label is provided3016 with specialized project_authorization workers3017 updates authorization for current_user3018 schedules authorization update for users with access to group3019 shared Runners config3020 when parent group is present3021 default value based on parent group setting3022 shared_runners_enabled: true, allow_to_override: false, desired_config_for_new_project: nil, expected_result_for_project: true3023 creates project following the parent config3024 shared_runners_enabled: false, allow_to_override: true, desired_config_for_new_project: nil, expected_result_for_project: false3025 creates project following the parent config3026 shared_runners_enabled: false, allow_to_override: false, desired_config_for_new_project: nil, expected_result_for_project: false3027 creates project following the parent config3028 parent group is present and allows desired config3029 shared_runners_enabled: true, allow_to_override: false, desired_config_for_new_project: true, expected_result_for_project: true3030 creates project following the parent config3031 shared_runners_enabled: true, allow_to_override: false, desired_config_for_new_project: false, expected_result_for_project: false3032 creates project following the parent config3033 shared_runners_enabled: false, allow_to_override: true, desired_config_for_new_project: false, expected_result_for_project: false3034 creates project following the parent config3035 shared_runners_enabled: false, allow_to_override: true, desired_config_for_new_project: true, expected_result_for_project: true3036 creates project following the parent config3037 shared_runners_enabled: false, allow_to_override: false, desired_config_for_new_project: false, expected_result_for_project: false3038 creates project following the parent config3039 parent group is present and disallows desired config3040 shared_runners_enabled: false, allow_to_override: false, desired_config_for_new_project: true3041 does not create project3042 parent group is not present3043 desired_config: true, expected_result: true3044 follows desired config3045 desired_config: false, expected_result: false3046 follows desired config3047 desired_config: nil, expected_result: true3048 follows desired config3049 when using access_level params3050 when using issues3051 when using forking3052 when using merge_requests3053 when using wiki3054 when using snippets3055 when using builds3056 when using pages3057 when using metrics_dashboard3058 when using analytics3059 when using monitor3060 when using operations3061 when using security_and_compliance3062 when using container_registry3063 when using environments3064 when using feature_flags3065 when using releases3066 when using infrastructure3067 when using model_experiments3068 when using repository3069Packages::Npm::CreatePackageService3070 #execute3071 obtains a lease to create a new package3072 scoped package3073 behaves like valid package3074 creates a package3075 is expected to be valid3076 creates a package with name and version3077 is expected to eq {"dependencies"=>{"express"=>"^4.16.4"}, "dist"=>{"shasum"=>"f572d396fae9206628714fb2ce00f72e94f2258f...//localhost/npm/package.tgz"}, "main"=>"app.js", "name"=>"@namespace398/my-app", "version"=>"1.0.1"}3078 is expected to eq "@namespace399/my-app"3079 is expected to eq "1.0.1"3080 behaves like assigns the package creator3081 assigns the package creator3082 with build info3083 creates a package file build info3084 behaves like assigns build to package3085 with build info3086 assigns the pipeline to the package3087 behaves like assigns status to package3088 with status param3089 assigns the status to the package3090 when the npm metadatum creation results in a size error3091 when some of the field sizes are above the error tracking size3092 behaves like a package json structure size too large error3093 does not create the package3094 when all of the field sizes are below the error tracking size3095 behaves like a package json structure size too large error3096 does not create the package3097 when the npm metadatum creation results in a different error3098 does not track the error3099 with not allowed readme field3100 is persisted without the field3101 with not allowed readmeFilename field3102 is persisted without the field3103 with not allowed licenseText field3104 is persisted without the field3105 when user is no project member3106 behaves like valid package3107 creates a package3108 is expected to be valid3109 creates a package with name and version3110 is expected to eq {"dependencies"=>{"express"=>"^4.16.4"}, "dist"=>{"shasum"=>"f572d396fae9206628714fb2ce00f72e94f2258f...//localhost/npm/package.tgz"}, "main"=>"app.js", "name"=>"@namespace418/my-app", "version"=>"1.0.1"}3111 is expected to eq "@namespace419/my-app"3112 is expected to eq "1.0.1"3113 behaves like assigns the package creator3114 assigns the package creator3115 with build info3116 creates a package file build info3117 behaves like assigns build to package3118 with build info3119 assigns the pipeline to the package3120 behaves like assigns status to package3121 with status param3122 assigns the status to the package3123 when the npm metadatum creation results in a size error3124 when some of the field sizes are above the error tracking size3125 behaves like a package json structure size too large error3126 does not create the package3127 when all of the field sizes are below the error tracking size3128 behaves like a package json structure size too large error3129 does not create the package3130 when the npm metadatum creation results in a different error3131 does not track the error3132 with not allowed readme field3133 is persisted without the field3134 with not allowed readmeFilename field3135 is persisted without the field3136 with not allowed licenseText field3137 is persisted without the field3138 scoped package not following the naming convention3139 behaves like valid package3140 creates a package3141 is expected to be valid3142 creates a package with name and version3143 is expected to eq {"dependencies"=>{"express"=>"^4.16.4"}, "dist"=>{"shasum"=>"f572d396fae9206628714fb2ce00f72e94f2258f...p://localhost/npm/package.tgz"}, "main"=>"app.js", "name"=>"@any-scope/package", "version"=>"1.0.1"}3144 is expected to eq "@any-scope/package"3145 is expected to eq "1.0.1"3146 behaves like assigns the package creator3147 assigns the package creator3148 with build info3149 creates a package file build info3150 behaves like assigns build to package3151 with build info3152 assigns the pipeline to the package3153 behaves like assigns status to package3154 with status param3155 assigns the status to the package3156 when the npm metadatum creation results in a size error3157 when some of the field sizes are above the error tracking size3158 behaves like a package json structure size too large error3159 does not create the package3160 when all of the field sizes are below the error tracking size3161 behaves like a package json structure size too large error3162 does not create the package3163 when the npm metadatum creation results in a different error3164 does not track the error3165 with not allowed readme field3166 is persisted without the field3167 with not allowed readmeFilename field3168 is persisted without the field3169 with not allowed licenseText field3170 is persisted without the field3171 unscoped package3172 behaves like valid package3173 creates a package3174 is expected to be valid3175 creates a package with name and version3176 is expected to eq {"dependencies"=>{"express"=>"^4.16.4"}, "dist"=>{"shasum"=>"f572d396fae9206628714fb2ce00f72e94f2258f...ttp://localhost/npm/package.tgz"}, "main"=>"app.js", "name"=>"unscoped-package", "version"=>"1.0.1"}3177 is expected to eq "unscoped-package"3178 is expected to eq "1.0.1"3179 behaves like assigns the package creator3180 assigns the package creator3181 with build info3182 creates a package file build info3183 behaves like assigns build to package3184 with build info3185 assigns the pipeline to the package3186 behaves like assigns status to package3187 with status param3188 assigns the status to the package3189 when the npm metadatum creation results in a size error3190 when some of the field sizes are above the error tracking size3191 behaves like a package json structure size too large error3192 does not create the package3193 when all of the field sizes are below the error tracking size3194 behaves like a package json structure size too large error3195 does not create the package3196 when the npm metadatum creation results in a different error3197 does not track the error3198 with not allowed readme field3199 is persisted without the field3200 with not allowed readmeFilename field3201 is persisted without the field3202 with not allowed licenseText field3203 is persisted without the field3204 package already exists3205 is expected to eq 4033206 is expected to equal "Package already exists."3207 marked as pending_destruction3208 creates a new package3209 max file size validation3210 when max file size is exceeded3211 behaves like max file size validation failure3212 returns a 400 error3213 when file size is faked by setting the attachment length param to a lower size3214 when encoded package data is not padded3215 behaves like max file size validation failure3216 returns a 400 error3217 when encoded package data is padded with '='3218 behaves like max file size validation failure3219 returns a 400 error3220 when encoded package data is padded with '=='3221 behaves like max file size validation failure3222 returns a 400 error3223 with invalid name @inv@lid_scope/package3224 raises a RecordInvalid error3225 with invalid name @scope/sub/group3226 raises a RecordInvalid error3227 with invalid name @scope/../../package3228 raises a RecordInvalid error3229 with invalid name @scope%2e%2e%2fpackage3230 raises a RecordInvalid error3231 with empty versions3232 is expected to eq 4003233 is expected to eq "Version is empty."3234 with invalid versions3235 version: "1"3236 is expected to raise ActiveRecord::RecordInvalid with "Validation failed: Version should follow SemVer: https://semver.org"3237 version: "1.2"3238 is expected to raise ActiveRecord::RecordInvalid with "Validation failed: Version should follow SemVer: https://semver.org"3239 version: "1./2.3"3240 is expected to raise ActiveRecord::RecordInvalid with "Validation failed: Version should follow SemVer: https://semver.org"3241 version: "../../../../../1.2.3"3242 is expected to raise ActiveRecord::RecordInvalid with "Validation failed: Version should follow SemVer: https://semver.org"3243 version: "%2e%2e%2f1.2.3"3244 is expected to raise ActiveRecord::RecordInvalid with "Validation failed: Version should follow SemVer: https://semver.org"3245 with empty attachment data3246 is expected to eq 4003247 is expected to eq "Attachment data is empty."3248 when the lease is already taken3249 is expected to eq 4003250 is expected to eq "Could not obtain package lease. Please try again."3251 when many of the same packages are created at the same time3252 only creates one package3253 when many packages with different versions are created at the same time3254 creates all packages3255 #lease_key3256 returns an unique key3257Banzai::Filter::References::CommitRangeReferenceFilter3258 requires project context3259 ignores valid references contained inside 'pre' element3260 ignores valid references contained inside 'code' element3261 ignores valid references contained inside 'a' element3262 ignores valid references contained inside 'style' element3263 internal reference3264 links to a valid two-dot reference3265 links to a valid three-dot reference3266 links to a valid short ID3267 links with adjacent text3268 ignores invalid commit IDs3269 includes no title attribute3270 includes default classes3271 includes a data-project attribute3272 includes a data-commit-range attribute3273 supports an :only_path option3274 cross-project / cross-namespace complete reference3275 links to a valid reference3276 link has valid text3277 has valid text3278 ignores invalid commit IDs on the referenced project3279 cross-project / same-namespace complete reference3280 links to a valid reference3281 link has valid text3282 has valid text3283 ignores invalid commit IDs on the referenced project3284 cross-project shorthand reference3285 links to a valid reference3286 link has valid text3287 has valid text3288 ignores invalid commit IDs on the referenced project3289 cross-project URL reference3290 links to a valid reference3291 links with adjacent text3292 ignores invalid commit IDs on the referenced project3293 group context3294 ignores internal references3295 links to a full-path reference3296Integrations::Mattermost3297 behaves like Integrations::SlackMattermostNotifier3298 Associations3299 is expected to belong to project required: false3300 Validations3301 when integration is active3302 is expected to validate that :webhook cannot be empty/falsy3303 behaves like issue tracker integration URL attribute3304 is expected to allow :webhook to be ‹"https://example.com"›3305 is expected not to allow :webhook to be ‹"example.com"›3306 is expected not to allow :webhook to be ‹"ftp://example.com"›3307 is expected not to allow :webhook to be ‹"herp-and-derp"›3308 when integration is inactive3309 is expected not to validate that :webhook cannot be empty/falsy3310 #execute3311 with username for slack configured3312 uses the username as an option3313 push events3314 behaves like calls the integration API with the event message3315 is expected to request POST https://8.8.8.9/ 1 time3316 with event channel3317 uses the right channel for push event3318 tag_push events3319 behaves like calls the integration API with the event message3320 is expected to request POST https://8.8.8.9/ 1 time3321 issue events3322 behaves like calls the integration API with the event message3323 is expected to request POST https://8.8.8.9/ 1 time3324 whith event channel3325 uses the right channel for issue event3326 for confidential issues3327 falls back to issue channel3328 and confidential_issue_channel is defined3329 uses the confidential issue channel when it is defined3330 merge request events3331 behaves like calls the integration API with the event message3332 is expected to request POST https://8.8.8.9/ 1 time3333 with event channel3334 uses the right channel for merge request event3335 wiki page events3336 behaves like calls the integration API with the event message3337 is expected to request POST https://8.8.8.9/ 1 time3338 with event channel3339 uses the right channel for wiki event3340 deployment events3341 behaves like calls the integration API with the event message3342 is expected to request POST https://8.8.8.9/ 1 time3343 note event3344 behaves like calls the integration API with the event message3345 is expected to request POST https://8.8.8.9/ 1 time3346 with event channel3347 uses the right channel3348 for confidential notes3349 falls back to note channel3350 and confidential_note_channel is defined3351 uses confidential channel3352 Push events3353 on default branch3354 pushing tags3355 behaves like triggered Mattermost integration3356 notifies about push events3357 when the response is not successful3358 logs an error3359 notification enabled only for default branch3360 behaves like triggered Mattermost integration3361 notifies about push events3362 when the response is not successful3363 logs an error3364 notification enabled only for protected branches3365 behaves like untriggered Mattermost integration3366 does not notify about push events3367 notification enabled only for default and protected branches3368 behaves like triggered Mattermost integration3369 notifies about push events3370 when the response is not successful3371 logs an error3372 notification enabled for all branches3373 behaves like triggered Mattermost integration3374 notifies about push events3375 when the response is not successful3376 logs an error3377 on a protected branch3378 pushing tags3379 behaves like triggered Mattermost integration3380 notifies about push events3381 when the response is not successful3382 logs an error3383 notification enabled only for default branch3384 behaves like untriggered Mattermost integration3385 does not notify about push events3386 notification enabled only for protected branches3387 behaves like triggered Mattermost integration3388 notifies about push events3389 when the response is not successful3390 logs an error3391 notification enabled only for default and protected branches3392 behaves like triggered Mattermost integration3393 notifies about push events3394 when the response is not successful3395 logs an error3396 notification enabled for all branches3397 behaves like triggered Mattermost integration3398 notifies about push events3399 when the response is not successful3400 logs an error3401 on a protected branch with protected branches defined using wildcards3402 pushing tags3403 behaves like triggered Mattermost integration3404 notifies about push events3405 when the response is not successful3406 logs an error3407 notification enabled only for default branch3408 behaves like untriggered Mattermost integration3409 does not notify about push events3410 notification enabled only for protected branches3411 behaves like triggered Mattermost integration3412 notifies about push events3413 when the response is not successful3414 logs an error3415 notification enabled only for default and protected branches3416 behaves like triggered Mattermost integration3417 notifies about push events3418 when the response is not successful3419 logs an error3420 notification enabled for all branches3421 behaves like triggered Mattermost integration3422 notifies about push events3423 when the response is not successful3424 logs an error3425 on a neither protected nor default branch3426 pushing tags3427 behaves like triggered Mattermost integration3428 notifies about push events3429 when the response is not successful3430 logs an error3431 notification enabled only for default branch3432 behaves like untriggered Mattermost integration3433 does not notify about push events3434 notification enabled only for protected branches3435 behaves like untriggered Mattermost integration3436 does not notify about push events3437 notification enabled only for default and protected branches3438 behaves like untriggered Mattermost integration3439 does not notify about push events3440 notification enabled for all branches3441 behaves like triggered Mattermost integration3442 notifies about push events3443 when the response is not successful3444 logs an error3445 Note events3446 when commit comment event executed3447 behaves like triggered Mattermost integration3448 notifies about commit comment events3449 when the response is not successful3450 logs an error3451 when merge request comment event executed3452 behaves like triggered Mattermost integration3453 notifies about merge request comment events3454 when the response is not successful3455 logs an error3456 when issue comment event executed3457 behaves like triggered Mattermost integration3458 notifies about issue comment events3459 when the response is not successful3460 logs an error3461 when snippet comment event executed3462 behaves like triggered Mattermost integration3463 notifies about snippet comment events3464 when the response is not successful3465 logs an error3466 Pipeline events3467 with succeeded pipeline3468 with default to notify_only_broken_pipelines3469 behaves like untriggered Mattermost integration3470 does not notify about pipeline events3471 with setting notify_only_broken_pipelines to false3472 behaves like triggered Mattermost integration3473 notifies about pipeline events3474 when the response is not successful3475 logs an error3476 with failed pipeline3477 on default branch3478 notification enabled only for default branch3479 behaves like triggered Mattermost integration3480 notifies about pipeline events3481 when the response is not successful3482 logs an error3483 notification enabled only for protected branches3484 behaves like untriggered Mattermost integration3485 does not notify about pipeline events3486 notification enabled only for default and protected branches3487 behaves like triggered Mattermost integration3488 notifies about pipeline events3489 when the response is not successful3490 logs an error3491 notification enabled for all branches3492 behaves like triggered Mattermost integration3493 notifies about pipeline events3494 when the response is not successful3495 logs an error3496 on a protected branch3497 notification enabled only for default branch3498 behaves like untriggered Mattermost integration3499 does not notify about pipeline events3500 notification enabled only for protected branches3501 behaves like triggered Mattermost integration3502 notifies about pipeline events3503 when the response is not successful3504 logs an error3505 notification enabled only for default and protected branches3506 behaves like triggered Mattermost integration3507 notifies about pipeline events3508 when the response is not successful3509 logs an error3510 notification enabled for all branches3511 behaves like triggered Mattermost integration3512 notifies about pipeline events3513 when the response is not successful3514 logs an error3515 on a protected branch with protected branches defined usin wildcards3516 notification enabled only for default branch3517 behaves like untriggered Mattermost integration3518 does not notify about pipeline events3519 notification enabled only for protected branches3520 behaves like triggered Mattermost integration3521 notifies about pipeline events3522 when the response is not successful3523 logs an error3524 notification enabled only for default and protected branches3525 behaves like triggered Mattermost integration3526 notifies about pipeline events3527 when the response is not successful3528 logs an error3529 notification enabled for all branches3530 behaves like triggered Mattermost integration3531 notifies about pipeline events3532 when the response is not successful3533 logs an error3534 on a neither protected nor default branch3535 notification enabled only for default branch3536 behaves like untriggered Mattermost integration3537 does not notify about pipeline events3538 notification enabled only for protected branches3539 behaves like untriggered Mattermost integration3540 does not notify about pipeline events3541 notification enabled only for default and protected branches3542 behaves like untriggered Mattermost integration3543 does not notify about pipeline events3544 notification enabled for all branches3545 behaves like triggered Mattermost integration3546 notifies about pipeline events3547 when the response is not successful3548 logs an error3549 Deployment events3550 behaves like triggered Mattermost integration3551 notifies about deployment events3552 when the response is not successful3553 logs an error3554 on a protected branch3555 notification enabled only for default branch3556 behaves like untriggered Mattermost integration3557 does not notify about pipeline events3558 notification enabled only for protected branches3559 behaves like triggered Mattermost integration3560 notifies about pipeline events3561 when the response is not successful3562 logs an error3563 notification enabled only for default and protected branches3564 behaves like triggered Mattermost integration3565 notifies about pipeline events3566 when the response is not successful3567 logs an error3568 notification enabled for all branches3569 behaves like triggered Mattermost integration3570 notifies about pipeline events3571 when the response is not successful3572 logs an error3573Gitlab::SSHPublicKey3574 .technology(name)3575 returns nil for an unrecognised name3576 name: :rsa3577 is expected to eq :rsa3578 is expected to eq :rsa3579 name: :dsa3580 is expected to eq :dsa3581 is expected to eq :dsa3582 name: :ecdsa3583 is expected to eq :ecdsa3584 is expected to eq :ecdsa3585 name: :ed255193586 is expected to eq :ed255193587 is expected to eq :ed255193588 name: :ecdsa_sk3589 is expected to eq :ecdsa_sk3590 is expected to eq :ecdsa_sk3591 name: :ed25519_sk3592 is expected to eq :ed25519_sk3593 is expected to eq :ed25519_sk3594 FIPS mode3595 name: :rsa3596 is expected to eq :rsa3597 is expected to eq :rsa3598 name: :ecdsa3599 is expected to eq :ecdsa3600 is expected to eq :ecdsa3601 name: :ed255193602 is expected to eq :ed255193603 is expected to eq :ed255193604 name: :ecdsa_sk3605 is expected to eq :ecdsa_sk3606 is expected to eq :ecdsa_sk3607 name: :ed25519_sk3608 is expected to eq :ed25519_sk3609 is expected to eq :ed25519_sk3610 .supported_types3611 returns array with the names of supported technologies3612 FIPS mode3613 returns array with the names of supported technologies3614 .supported_sizes(name)3615 name: :rsa, sizes: [1024, 2048, 3072, 4096]3616 is expected to eq [1024, 2048, 3072, 4096]3617 is expected to eq [1024, 2048, 3072, 4096]3618 name: :dsa, sizes: [1024, 2048, 3072]3619 is expected to eq [1024, 2048, 3072]3620 is expected to eq [1024, 2048, 3072]3621 name: :ecdsa, sizes: [256, 384, 521]3622 is expected to eq [256, 384, 521]3623 is expected to eq [256, 384, 521]3624 name: :ed25519, sizes: [256]3625 is expected to eq [256]3626 is expected to eq [256]3627 name: :ecdsa_sk, sizes: [256]3628 is expected to eq [256]3629 is expected to eq [256]3630 name: :ed25519_sk, sizes: [256]3631 is expected to eq [256]3632 is expected to eq [256]3633 FIPS mode3634 name: :rsa, sizes: [3072, 4096]3635 is expected to eq [3072, 4096]3636 is expected to eq [3072, 4096]3637 name: :dsa, sizes: []3638 is expected to eq []3639 is expected to eq []3640 name: :ecdsa, sizes: [256, 384, 521]3641 is expected to eq [256, 384, 521]3642 is expected to eq [256, 384, 521]3643 name: :ed25519, sizes: [256]3644 is expected to eq [256]3645 is expected to eq [256]3646 name: :ecdsa_sk, sizes: [256]3647 is expected to eq [256]3648 is expected to eq [256]3649 name: :ed25519_sk, sizes: [256]3650 is expected to eq [256]3651 is expected to eq [256]3652 .supported_algorithms3653 returns all supported algorithms3654 FIPS mode3655 returns all supported algorithms3656 .supported_algorithms_for_name3657 name: :rsa, algorithms: ["ssh-rsa"]3658 returns all supported algorithms for rsa3659 name: :dsa, algorithms: ["ssh-dss"]3660 returns all supported algorithms for dsa3661 name: :ecdsa, algorithms: ["ecdsa-sha2-nistp256", "ecdsa-sha2-nistp384", "ecdsa-sha2-nistp521"]3662 returns all supported algorithms for ecdsa3663 name: :ed25519, algorithms: ["ssh-ed25519"]3664 returns all supported algorithms for ed255193665 name: :ecdsa_sk, algorithms: ["sk-ecdsa-sha2-nistp256@openssh.com"]3666 returns all supported algorithms for ecdsa_sk3667 name: :ed25519_sk, algorithms: ["sk-ssh-ed25519@openssh.com"]3668 returns all supported algorithms for ed25519_sk3669 FIPS mode3670 name: :rsa, algorithms: ["ssh-rsa"]3671 returns all supported algorithms for rsa3672 name: :dsa, algorithms: ["ssh-dss"]3673 returns all supported algorithms for dsa3674 name: :ecdsa, algorithms: ["ecdsa-sha2-nistp256", "ecdsa-sha2-nistp384", "ecdsa-sha2-nistp521"]3675 returns all supported algorithms for ecdsa3676 name: :ed25519, algorithms: ["ssh-ed25519"]3677 returns all supported algorithms for ed255193678 name: :ecdsa_sk, algorithms: ["sk-ecdsa-sha2-nistp256@openssh.com"]3679 returns all supported algorithms for ecdsa_sk3680 name: :ed25519_sk, algorithms: ["sk-ssh-ed25519@openssh.com"]3681 returns all supported algorithms for ed25519_sk3682 .sanitize(key_content)3683 when key has blank space characters3684 removes the extra blank space characters3685 when key doesn't have blank space characters3686 doesn't modify the content3687 when key is invalid3688 returns the original content3689 #valid?3690 with a valid SSH key3691 factory: :rsa_key_20483692 is expected to be valid3693 when key begins with options3694 is expected to be valid3695 when key is in known_hosts format3696 when key begins with 'example.com'3697 is expected to be valid3698 when key begins with '@revoked other.example.com'3699 is expected to be valid3700 factory: :rsa_key_40963701 is expected to be valid3702 when key begins with options3703 is expected to be valid3704 when key is in known_hosts format3705 when key begins with 'example.com'3706 is expected to be valid3707 when key begins with '@revoked other.example.com'3708 is expected to be valid3709 factory: :rsa_key_51203710 is expected to be valid3711 when key begins with options3712 is expected to be valid3713 when key is in known_hosts format3714 when key begins with 'example.com'3715 is expected to be valid3716 when key begins with '@revoked other.example.com'3717 is expected to be valid3718 factory: :rsa_key_81923719 is expected to be valid3720 when key begins with options3721 is expected to be valid3722 when key is in known_hosts format3723 when key begins with 'example.com'3724 is expected to be valid3725 when key begins with '@revoked other.example.com'3726 is expected to be valid3727 factory: :dsa_key_20483728 is expected to be valid3729 when key begins with options3730 is expected to be valid3731 when key is in known_hosts format3732 when key begins with 'example.com'3733 is expected to be valid3734 when key begins with '@revoked other.example.com'3735 is expected to be valid3736 factory: :ecdsa_key_2563737 is expected to be valid3738 when key begins with options3739 is expected to be valid3740 when key is in known_hosts format3741 when key begins with 'example.com'3742 is expected to be valid3743 when key begins with '@revoked other.example.com'3744 is expected to be valid3745 factory: :ed25519_key_2563746 is expected to be valid3747 when key begins with options3748 is expected to be valid3749 when key is in known_hosts format3750 when key begins with 'example.com'3751 is expected to be valid3752 when key begins with '@revoked other.example.com'3753 is expected to be valid3754 factory: :ecdsa_sk_key_2563755 is expected to be valid3756 when key begins with options3757 is expected to be valid3758 when key is in known_hosts format3759 when key begins with 'example.com'3760 is expected to be valid3761 when key begins with '@revoked other.example.com'3762 is expected to be valid3763 factory: :ed25519_sk_key_2563764 is expected to be valid3765 when key begins with options3766 is expected to be valid3767 when key is in known_hosts format3768 when key begins with 'example.com'3769 is expected to be valid3770 when key begins with '@revoked other.example.com'3771 is expected to be valid3772 with an invalid SSH key3773 is expected not to be valid3774 when an unsupported SSH key algorithm3775 is expected not to be valid3776 #type3777 factory: :rsa_key_2048, type: :rsa3778 is expected to eq :rsa3779 factory: :dsa_key_2048, type: :dsa3780 is expected to eq :dsa3781 factory: :ecdsa_key_256, type: :ecdsa3782 is expected to eq :ecdsa3783 factory: :ed25519_key_256, type: :ed255193784 is expected to eq :ed255193785 factory: :ecdsa_sk_key_256, type: :ecdsa_sk3786 is expected to eq :ecdsa_sk3787 factory: :ed25519_sk_key_256, type: :ed25519_sk3788 is expected to eq :ed25519_sk3789 with an invalid SSH key3790 is expected to be nil3791 when the key is represented by a class that is not in the list of supported technologies3792 raises error3793 when the key is represented by a subclass of the class that is in the list of supported technologies3794 raises error3795 #bits3796 factory: :rsa_key_2048, bits: 20483797 is expected to eq 20483798 factory: :rsa_key_4096, bits: 40963799 is expected to eq 40963800 factory: :rsa_key_5120, bits: 51203801 is expected to eq 51203802 factory: :rsa_key_8192, bits: 81923803 is expected to eq 81923804 factory: :dsa_key_2048, bits: 20483805 is expected to eq 20483806 factory: :ecdsa_key_256, bits: 2563807 is expected to eq 2563808 factory: :ed25519_key_256, bits: 2563809 is expected to eq 2563810 factory: :ecdsa_sk_key_256, bits: 2563811 is expected to eq 2563812 factory: :ed25519_sk_key_256, bits: 2563813 is expected to eq 2563814 with an invalid SSH key3815 is expected to be nil3816 when the key is represented by a class that is not in the list of supported technologies3817 raises error3818 when the key is represented by a subclass of the class that is in the list of supported technologies3819 raises error3820 #banned?3821 key: "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAwRIdDlHaIqZXND/l1vFT7ue3rc/DvXh2yx5EFtuxGQRHVxGMazDhV4vj5ANGXDQwUYI0iZh6aOVrDy8I/y9/y+YDGCvsnqrDbuPDjW26s2bBXWgUPiC93T3TA6L2KOxhVcl7mljEOIYACRHPpJNYVGhinCxDUH9LxMrdNXgP5Ok= mateidu@localhost"3822 is expected to equal true3823 key: "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIBnZQ+6nhlPX/JnX5i5hXpljJ89bSnnrsSs51hSPuoJGmoKowBddISK7s10AIpO0xAWGcr8PUr2FOjEBbDHqlRxoXF0Ocms9xv3ql9EYUQ5+U+M6BymWhNTFPOs6gFHUl8Bw3t6c+SRKBpfRFB0yzBj9d093gSdfTAFoz+yLo4vRw=="3824 is expected to equal true3825 key: "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAvIhC5skTzxyHif/7iy3yhxuK6/OB13hjPqrskogkYFrcW8OK4VJT+5+Fx7wd4sQCnVn8rNqahw/x6sfcOMDI/Xvn4yKU4t8TnYf2MpUVr4ndz39L5Ds1n7Si1m2suUNxWbKv58I8+NMhlt2ITraSuTU0NGymWOc8+LNi+MHXdLk= SCCP Superuser"3826 is expected to equal true3827 key: "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key"3828 is expected to equal true3829 key: "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAwRIdDlHaIqZXND/l1vFT7ue3rc/DvXh2yx5EFtuxGQRHVxGMazDhV4vj5ANGXDQwUYI0iZh6aOVrDy8I/y9/y+YDGCvsnqrDbuPDjW26s2bBXWgUPiC93T3TA6L2KOxhVcl7mljEOIYACRHPpJNYVGhinCxDUH9LxMrdNXgP5Ok= mateidu@localhost"3830 is expected to equal true3831 key: "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAn8LoId2N5i28cNKuEWWea3yt0I/LdT/NROrF44WZewtxch+DIwteQhM1qL6EKUSqz3Q2geX1crpOsNnyh67xy5lNo086u/QewOCSRAUGrQCXqFQ4JU8ny/qugWALQHjbIaPHj/3zMK09r4cpTSeAU7CW5nQyTKGmh7v9CAfWfcs= adam@localhost.localdomain"3832 is expected to equal true3833 key: "ssh-dss AAAAB3NzaC1kc3MAAACBAJTDsX+8olPZeyr58g9XE0L8PKT5030NZBPlE7np4hBqx36HoWarWq1Csn8M57dWN9StKbs03k2ggY6sYJK5AW2EWar70um3pYjKQHiZq7mITmitsozFN/K7wu2e2iKRgquUwH5SuYoOJ29n7uhaILXiKZP4/H/dDudqPRSY6tJPAAAAFQDtuWH90mDbU2L/Ms2lfl/cja/wHwAAAIAMBwSHZt2ysOHCFe1WLUvdwVDHUqk3QHTskuuAnMlwMtSvCaUxSatdHahsMZ9VCHjoQUx6j+TcgRLDbMlRLnwUlb6wpniehLBFk+qakGcREqks5NxYzFTJXwROzP72jPvVgQyOZHWq81gCild/ljL7hmrduCqYwxDIz4o7U92UKQAAAIBmhSl9CVPgVMv1xO8DAHVhM1huIIK8mNFrzMJz+JXzBx81ms1kWSeQOC/nraaXFTBlqiQsvB8tzr4xZdbaI/QzVLKNAF5C8BJ4ScNlTIx1aZJwyMil8Nzb+0YAsw5Ja+bEZZvEVlAYnd10qRWrPeEY1txLMmX3wDa+JvJL7fmuBg=="3834 is expected to equal true3835 key: "ssh-dss AAAAB3NzaC1kc3MAAACBAMq5EcIFdfCjJakyQnP/BBp9oc6mpaZVguf0Znp5C40twiG1lASQJZlM1qOB/hkBWYeBCHUkcOLEnVXSZzB62L+W/LGKodqnsiQPRr57AA6jPc6mNBnejHai8cSdAl9n/0s2IQjdcrxM8CPq2uEyfm0J3AV6Lrbbxr5NgE5xxM+DAAAAFQCmFk/M7Rx2jexsJ9COpHkHwUjcNQAAAIAdg18oByp/tjjDKhWhmmv+HbVIROkRqSxBvuEZEmcWlg38mLIT1bydfpSou/V4rI5ctxwCfJ1rRr66pw6GwCrz4fXmyVlhrj7TrktyQ9+zRXhynF4wdNPWErhNHb8tGlSOFiOBcUTlouX3V/ka6Dkd6ZQrZLQFaH+gjfyTZZ82HQAAAIEArsJgp7RLPOsCeLqoia/eljseBFVDazO5Q0ysUotTw9wgXGGVWREwm8wNggFNb9eCiBAAUfVZVfhVAtFT0pBf/eIVLPXyaMw3prBt7LqeBrbagODc3WAAdMTPIdYYcOKgv+YvTXa51zG64v6pQOfS8WXgKCzDl44puXfYeDk5lVQ="3836 is expected to equal true3837 key: "ssh-dss AAAAB3NzaC1kc3MAAACBAKwKBw7D4OA1H/uD4htdh04TBIHdbSjeXUSnWJsce8C0tvoB01Yarjv9TFj+tfeDYVWtUK1DA1JkyqSuoAtDANJzF4I6Isyd0KPrW3dHFTcg6Xlz8d3KEaHokY93NOmB/xWEkhme8b7Q0U2iZie2pgWbTLXV0FA+lhskTtPHW3+VAAAAFQDRyayUlVZKXEweF3bUe03zt9e8VQAAAIAEPK1k3Y6ErAbIl96dnUCnZjuWQ7xXy062pf63QuRWI6LYSscm3f1pEknWUNFr/erQ02pkfi2eP9uHl1TI1ql+UmJX3g3frfssLNZwWXAW0m8PbY3HZSs+f5hevM3ua32pnKDmbQ2WpvKNyycKHi81hSI14xMcdblJolhN5iY8/wAAAIAjEe5+0m/TlBtVkqQbUit+s/g+eB+PFQ+raaQdL1uztW3etntXAPH1MjxsAC/vthWYSTYXORkDFMhrO5ssE2rfg9io0NDyTIZt+VRQMGdi++dH8ptU+ldl2ZejLFdTJFwFgcfXz+iQ1mx6h9TPX1crE1KoMAVOj3yKVfKpLB1EkA== root@lbslave"3838 is expected to equal true3839 key: "ssh-dss AAAAB3NzaC1kc3MAAACBAN3AITryJMQyOKZjAky+mQ/8pOHIlu4q8pzmR0qotKaLm2yye5a0PY2rOaQRAzi7EPheBXbqTb8a8TrHhGXI5P7GUHaJho5HhEnw+5TwAvP72L7LcPwxMxj/rLcR/jV+uLMsVeJVWjwJcUv83yzPXoVjK0hrIm+RLLeuTM+gTylHAAAAFQD5gBdXsXAiTz1atzMg3xDFF1zlowAAAIAlLy6TCMlOBM0IcPsvP/9bEjDj0M8YZazdqt4amO2IaNUPYt9/sIsLOQfxIj8myDK1TOp8NyRJep7V5aICG4f3Q+XktlmLzdWn3sjvbWuIAXe1opjG2T69YhxfHZr8Wn7P4tpCgyqM4uHmUKrfnBzQQ9vkUUWsZoUXM2Z7vUXVfQAAAIAU6eNlphQWDwx0KOBiiYhF9BM6kDbQlyw8333rAG3G4CcjI2G8eYGtpBNliaD185UjCEsjPiudhGil/j4Zt/+VY3aGOLoi8kqXBBc8ZAML9bbkXpyhQhMgwiywx3ciFmvSn2UAin8yurStYPQxtXauZN5PYbdwCHPS7ApIStdpMA== wood@endec1"3840 is expected to equal true3841 key: "ssh-dss AAAAB3NzaC1kc3MAAACBAISAE3CAX4hsxTw0dRc0gx8nQ41r3Vkj9OmG6LGeKWRmpy7C6vaExuupjxid76fd4aS56lCUEEoRlJ3zE93qoK9acI6EGqGQFLuDZ0fqMyRSX+ilf+1HDo/TRyuraggxp9Hj9LMpZVbpFATMm0+d9Xs7eLmaJjuMsowNlOf8NFdHAAAAFQCwdvqOAkR6QhuiAapQ/9iVuR0UAQAAAIBpLMo4dhSeWkChfv659WLPftxRrX/HR8YMD/jqa3R4PsVM2g6dQ1191nHugtdV7uaMeOqOJ/QRWeYM+UYwT0Zgx2LqvgVSjNDfdjk+ZRY8x3SmExFi62mKFoTGSOCXfcAfuanjaoF+sepnaiLUd+SoJShGYHoqR2QWiysTRqknlwAAAIBLEgYmr9XCSqjENFDVQPFELYKT7Zs9J87PjPS1AP0qF1OoRGZ5mefK6X/6VivPAUWmmmev/BuAs8M1HtfGeGGzMzDIiU/WZQ3bScLB1Ykrcjk7TOFD6xrnk/inYAp5l29hjidoAONcXoHmUAMYOKqn63Q2AsDpExVcmfj99/BlpQ=="3842 is expected to equal true3843 with a valid SSH key3844 is expected to equal false3845 with an invalid SSH key3846 is expected to equal false3847 #fingerprint3848 factory: :rsa_key_2048, fingerprint: "58:a8:9d:cd:1f:70:f8:5a:d9:e4:24:8e:da:89:e4:fc"3849 is expected to eq "58:a8:9d:cd:1f:70:f8:5a:d9:e4:24:8e:da:89:e4:fc"3850 factory: :rsa_key_4096, fingerprint: "df:73:db:29:3c:a5:32:cf:09:17:7e:8e:9d:de:d7:f7"3851 is expected to eq "df:73:db:29:3c:a5:32:cf:09:17:7e:8e:9d:de:d7:f7"3852 factory: :rsa_key_5120, fingerprint: "fe:fa:3a:4d:7d:51:ec:bf:c7:64:0c:96:d0:17:8a:d0"3853 is expected to eq "fe:fa:3a:4d:7d:51:ec:bf:c7:64:0c:96:d0:17:8a:d0"3854 factory: :rsa_key_8192, fingerprint: "fb:53:7f:e9:2f:f7:17:aa:c8:32:52:06:8e:05:e2:82"3855 is expected to eq "fb:53:7f:e9:2f:f7:17:aa:c8:32:52:06:8e:05:e2:82"3856 factory: :dsa_key_2048, fingerprint: "c8:85:1e:df:44:0f:20:00:3c:66:57:2b:21:10:5a:27"3857 is expected to eq "c8:85:1e:df:44:0f:20:00:3c:66:57:2b:21:10:5a:27"3858 factory: :ecdsa_key_256, fingerprint: "67:a3:a9:7d:b8:e1:15:d4:80:40:21:34:bb:ed:97:38"3859 is expected to eq "67:a3:a9:7d:b8:e1:15:d4:80:40:21:34:bb:ed:97:38"3860 factory: :ed25519_key_256, fingerprint: "e6:eb:45:8a:3c:59:35:5f:e9:5b:80:12:be:7e:22:73"3861 is expected to eq "e6:eb:45:8a:3c:59:35:5f:e9:5b:80:12:be:7e:22:73"3862 factory: :ecdsa_sk_key_256, fingerprint: "56:b9:bc:99:3d:2f:cf:63:6b:70:d8:f9:40:7e:09:4c"3863 is expected to eq "56:b9:bc:99:3d:2f:cf:63:6b:70:d8:f9:40:7e:09:4c"3864 factory: :ed25519_sk_key_256, fingerprint: "f9:a0:64:0b:4b:72:72:0e:62:92:d7:04:14:74:1c:c9"3865 is expected to eq "f9:a0:64:0b:4b:72:72:0e:62:92:d7:04:14:74:1c:c9"3866 with an invalid SSH key3867 is expected to be nil3868 #fingerprint_sha2563869 factory: :rsa_key_2048, fingerprint_sha256: "SHA256:GdtgO0eHbwLB+mK47zblkoXujkqKRZjgMQrHH6Kks3E"3870 is expected to eq "SHA256:GdtgO0eHbwLB+mK47zblkoXujkqKRZjgMQrHH6Kks3E"3871 factory: :rsa_key_4096, fingerprint_sha256: "SHA256:ByDU7hQ1JB95l6p53rHrffc4eXvEtqGUtQhS+Dhyy7g"3872 is expected to eq "SHA256:ByDU7hQ1JB95l6p53rHrffc4eXvEtqGUtQhS+Dhyy7g"3873 factory: :rsa_key_5120, fingerprint_sha256: "SHA256:PCCupLbFHScm4AbEufbGDvhBU27IM0MVAor715qKQK8"3874 is expected to eq "SHA256:PCCupLbFHScm4AbEufbGDvhBU27IM0MVAor715qKQK8"3875 factory: :rsa_key_8192, fingerprint_sha256: "SHA256:CtHFQAS+9Hb8z4vrv4gVQPsHjNN0WIZhWODaB1mQLs4"3876 is expected to eq "SHA256:CtHFQAS+9Hb8z4vrv4gVQPsHjNN0WIZhWODaB1mQLs4"3877 factory: :dsa_key_2048, fingerprint_sha256: "SHA256:+a3DQ7cU5GM+gaYOfmc0VWNnykHQSuth3VRcCpWuYNI"3878 is expected to eq "SHA256:+a3DQ7cU5GM+gaYOfmc0VWNnykHQSuth3VRcCpWuYNI"3879 factory: :ecdsa_key_256, fingerprint_sha256: "SHA256:C+I5k3D+IGeM6k5iBR1ZsphqTKV+7uvL/XZ5hcrTr7g"3880 is expected to eq "SHA256:C+I5k3D+IGeM6k5iBR1ZsphqTKV+7uvL/XZ5hcrTr7g"3881 factory: :ed25519_key_256, fingerprint_sha256: "SHA256:DCKAjzxWrdOTjaGKBBjtCW8qY5++GaiAJflrHPmp6W0"3882 is expected to eq "SHA256:DCKAjzxWrdOTjaGKBBjtCW8qY5++GaiAJflrHPmp6W0"3883 factory: :ecdsa_sk_key_256, fingerprint_sha256: "SHA256:N0sNKBgWKK8usPuPegtgzHQQA9vQ/dRhAEhwFDAnLA4"3884 is expected to eq "SHA256:N0sNKBgWKK8usPuPegtgzHQQA9vQ/dRhAEhwFDAnLA4"3885 factory: :ed25519_sk_key_256, fingerprint_sha256: "SHA256:U8IKRkIHed6vFMTflwweA3HhIf2DWgZ8EFTm9fgwOUk"3886 is expected to eq "SHA256:U8IKRkIHed6vFMTflwweA3HhIf2DWgZ8EFTm9fgwOUk"3887 with an invalid SSH key3888 is expected to be nil3889 #key_text3890 key_value: "this is not a key"3891 carries the unmodified key data3892 key_value: nil3893 carries the unmodified key data3894Ci::BuildRunnerPresenter3895 #artifacts3896 when option contains archive-type artifacts3897 presents correct hash3898 when untracked is specified3899 presents correct hash3900 when untracked and paths are missing3901 does not present hash3902 when artifacts exclude is defined3903 includes the list of excluded paths3904 when artifacts exclude is not defined3905 does not include an empty list of excluded paths3906 with reports3907 archive3908 presents correct hash3909 metadata3910 presents correct hash3911 trace3912 presents correct hash3913 metrics_referee3914 presents correct hash3915 network_referee3916 presents correct hash3917 junit3918 presents correct hash3919 accessibility3920 presents correct hash3921 codequality3922 presents correct hash3923 sast3924 presents correct hash3925 secret_detection3926 presents correct hash3927 dependency_scanning3928 presents correct hash3929 container_scanning3930 presents correct hash3931 cluster_image_scanning3932 presents correct hash3933 dast3934 presents correct hash3935 license_scanning3936 presents correct hash3937 performance3938 presents correct hash3939 browser_performance3940 presents correct hash3941 load_performance3942 presents correct hash3943 metrics3944 presents correct hash3945 lsif3946 presents correct hash3947 dotenv3948 presents correct hash3949 cobertura3950 presents correct hash3951 terraform3952 presents correct hash3953 cluster_applications3954 presents correct hash3955 requirements3956 presents correct hash3957 requirements_v23958 presents correct hash3959 coverage_fuzzing3960 presents correct hash3961 api_fuzzing3962 presents correct hash3963 cyclonedx3964 presents correct hash3965 annotations3966 presents correct hash3967 when a specific coverage_report type is given3968 presents the coverage report hash with the coverage format3969 when a specific coverage_report type is given with another report type3970 presents both reports3971 when option has both archive and reports specification3972 presents correct hash3973 when archive specifies 'expire_in' keyword3974 inherits expire_in from archive3975 when option has no artifact keywords3976 does not present hash3977 #ref_type3978 returns the correct ref type3979 when tag is false3980 returns the correct ref type3981 #git_depth3982 defaults to git depth setting for the project3983 when GIT_DEPTH variable is specified3984 returns its value3985 #refspecs3986 returns the correct refspecs3987 when ref is tag3988 returns the correct refspecs3989 when GIT_DEPTH is zero3990 returns the correct refspecs3991 when pipeline is detached merge request pipeline3992 returns the correct refspecs3993 when GIT_DEPTH is zero3994 returns the correct refspecs3995 when pipeline is legacy detached merge request pipeline3996 returns the correct refspecs3997 when persistent pipeline ref exists3998 exposes the persistent pipeline ref3999 #runner_variables4000 returns an array4001 returns the expected variables4002 when there is a file variable to expand4003 returns variables with expanded4004 when there is a raw variable to expand4005 returns expanded variables without expanding raws4006 #runner_variables subset4007 with references in pipeline variables4008 returns expanded and sorted variables4009Banzai::ReferenceParser::SnippetParser4010 #nodes_visible_to_user4011 when a project is public and the snippets feature is enabled for everyone4012 avoids N+1 cached queries4013 creates a reference for guest for a public snippet4014 creates a reference for a regular user for a public snippet4015 creates a reference for a regular user for an internal snippet4016 does not create a reference for an external user for an internal snippet4017 creates a reference for a project member for a private snippet4018 does not create a reference for a regular user for a private snippet4019 when a project is public and the snippets feature is enabled for project team members4020 creates a reference for a project member for a public snippet4021 does not create a reference for guest for a public snippet4022 does not create a reference for a regular user for a public snippet4023 creates a reference for a project member for an internal snippet4024 does not create a reference for a regular user for an internal snippet4025 creates a reference for a project member for a private snippet4026 does not create a reference for a regular user for a private snippet4027 when a project is internal and the snippets feature is enabled for everyone4028 does not create a reference for guest for a public snippet4029 does not create a reference for an external user for a public snippet4030 creates a reference for a regular user for a public snippet4031 creates a reference for a regular user for an internal snippet4032 does not create a reference for an external user for an internal snippet4033 creates a reference for a project member for a private snippet4034 does not create a reference for a regular user for a private snippet4035 when a project is internal and the snippets feature is enabled for project team members4036 creates a reference for a project member for a public snippet4037 does not create a reference for guest for a public snippet4038 does not create reference for a regular user for a public snippet4039 creates a reference for a project member for an internal snippet4040 does not create a reference for a regular user for an internal snippet4041 creates a reference for a project member for a private snippet4042 does not create reference for a regular user for a private snippet4043 when a project is private and the snippets feature is enabled for project team members4044 creates a reference for a project member for a public snippet4045 does not create a reference for guest for a public snippet4046 does not create a reference for a regular user for a public snippet4047 creates a reference for a project member for an internal snippet4048 does not create a reference for a regular user for an internal snippet4049 creates a reference for a project member for a private snippet4050 does not create a reference for a regular user for a private snippet4051 #referenced_by4052 when the link has a data-snippet attribute4053 using an existing snippet ID4054 returns an Array of snippets4055 using a non-existing snippet ID4056 returns an empty Array4057Milestone Milestoneish4058 #sorted_issues4059 sorts issues by label priority4060 limits issue count and keeps the ordering4061 with attributes visibility4062 #issue_participants_visible_by_user4063 visibility: :public, user_role: nil, result: [:member]4064 returns the proper participants4065 visibility: :public, user_role: :non_member, result: [:member]4066 returns the proper participants4067 visibility: :public, user_role: :guest, result: [:member]4068 returns the proper participants4069 visibility: :public, user_role: :member, result: [:member, :assignee]4070 returns the proper participants4071 visibility: :internal, user_role: nil, result: []4072 returns the proper participants4073 visibility: :internal, user_role: :non_member, result: [:member]4074 returns the proper participants4075 visibility: :internal, user_role: :guest, result: [:member]4076 returns the proper participants4077 visibility: :internal, user_role: :member, result: [:member, :assignee]4078 returns the proper participants4079 visibility: :private, user_role: nil, result: []4080 returns the proper participants4081 visibility: :private, user_role: :non_member, result: []4082 returns the proper participants4083 visibility: :private, user_role: :guest, result: [:member]4084 returns the proper participants4085 visibility: :private, user_role: :member, result: [:member, :assignee]4086 returns the proper participants4087 #issue_labels_visible_by_user4088 visibility: :public, user_role: nil, result: [:label1]4089 returns the proper participants4090 visibility: :public, user_role: :non_member, result: [:label1]4091 returns the proper participants4092 visibility: :public, user_role: :guest, result: [:label1]4093 returns the proper participants4094 visibility: :public, user_role: :member, result: [:label1, :label2]4095 returns the proper participants4096 visibility: :internal, user_role: nil, result: []4097 returns the proper participants4098 visibility: :internal, user_role: :non_member, result: [:label1]4099 returns the proper participants4100 visibility: :internal, user_role: :guest, result: [:label1]4101 returns the proper participants4102 visibility: :internal, user_role: :member, result: [:label1, :label2]4103 returns the proper participants4104 visibility: :private, user_role: nil, result: []4105 returns the proper participants4106 visibility: :private, user_role: :non_member, result: []4107 returns the proper participants4108 visibility: :private, user_role: :guest, result: [:label1]4109 returns the proper participants4110 visibility: :private, user_role: :member, result: [:label1, :label2]4111 returns the proper participants4112 #sorted_merge_requests4113 sorts merge requests by label priority4114 #merge_requests_visible_to_user4115 when project is private4116 does not return any merge request for a non member4117 returns milestone merge requests for a member4118 when project is public4119 when merge requests are available to anyone4120 returns milestone merge requests for a non member4121 when merge requests are available to project members4122 does not return any merge request for a non member4123 returns milestone merge requests for a member4124 when milestone is at parent level group4125 does not return any merge request for a non member4126 returns milestone merge requests for a member4127 #complete?4128 returns false when has items opened4129 returns true when all items are closed4130 #percent_complete4131 with division by zero4132 is expected to eq 04133 #closed_issues_count4134 counts all closed issues including confidential4135 #total_issues_count4136 counts all issues including confidential4137 #total_merge_requests_count4138 counts merge requests4139 #remaining_days4140 shows 0 if no due date4141 shows 0 if expired4142 shows correct remaining days4143 #elapsed_days4144 shows 0 if no start_date set4145 shows 0 if start_date is a future4146 shows correct amount of days4147 #total_time_spent4148 calculates total time spent4149 includes merge request time spent4150 #human_total_time_spent4151 returns nil if no time has been spent4152 #total_time_estimate4153 calculates total estimate4154 includes merge request time estimate4155 #human_total_time_estimate4156 returns nil if no time has been spent4157 #expires_at4158 returns the date when milestone expires4159 returns the date when milestone expires4160gitlab:uploads:migrate and migrate_to_local rake tasks4161 migrates all uploads to object storage in batches4162 migrates all uploads to local storage in batches4163 when uploader_class is given4164 behaves like migrate task with filters4165 migrates matching uploads to object storage4166 migrates matching uploads to local storage4167 when model_class is given4168 behaves like migrate task with filters4169 migrates matching uploads to object storage4170 migrates matching uploads to local storage4171 when mounted_as is given4172 behaves like migrate task with filters4173 migrates matching uploads to object storage4174 migrates matching uploads to local storage4175 when multiple filters are given4176 behaves like migrate task with filters4177 migrates matching uploads to object storage4178 migrates matching uploads to local storage4179ErrorTracking::ProjectErrorTrackingSetting4180 Associations4181 is expected to belong to project required: false4182 Validations4183 is expected to validate that the length of :api_url is at most 2554184 is expected to allow :api_url to be ‹"http://gitlab.com/api/0/projects/project1/something"›4185 is expected not to allow :api_url to be ‹"http://gitlab.com/api/0/projects/project1/something€"›4186 disallows non-booleans in enabled column4187 allows booleans in enabled column4188 rejects invalid api_urls4189 fails validation without org and project slugs4190 presence validations4191 enabled: true, integrated: true, token: nil, api_url: nil, valid?: true4192 is expected to eq true4193 enabled: true, integrated: false, token: nil, api_url: nil, valid?: false4194 is expected to eq false4195 enabled: true, integrated: false, token: nil, api_url: "http://example.com/api/0/projects/org-slug/proj-slug/", valid?: false4196 is expected to eq false4197 enabled: true, integrated: false, token: "token", api_url: nil, valid?: false4198 is expected to eq false4199 enabled: true, integrated: false, token: "token", api_url: "http://example.com/api/0/projects/org-slug/proj-slug/", valid?: true4200 is expected to eq true4201 enabled: false, integrated: false, token: nil, api_url: nil, valid?: true4202 is expected to eq true4203 enabled: false, integrated: false, token: nil, api_url: "http://example.com/api/0/projects/org-slug/proj-slug/", valid?: true4204 is expected to eq true4205 enabled: false, integrated: false, token: "token", api_url: nil, valid?: true4206 is expected to eq true4207 enabled: false, integrated: false, token: "token", api_url: "http://example.com/api/0/projects/org-slug/proj-slug/", valid?: true4208 is expected to eq true4209 Callbacks4210 after_save :create_client_key!4211 without client key4212 creates a new client key4213 with sentry backend4214 does not create a new client key4215 when feature disabled4216 does not create a new client key4217 when client key already exists4218 does not create a new client key4219 before_validation :reset_token4220 when a token was previously set4221 resets token if url changed4222 does not reset token if new url is set together with the same token4223 does not reset token if new url is set together with a new token4224 .extract_sentry_external_url4225 when passing a URL4226 is expected to eq "https://sentrytest.gitlab.com/sentry-org/sentry-project"4227 when passing nil4228 is expected to be nil4229 #sentry_external_url4230 returns the correct url4231 #sentry_client4232 is expected to be a kind of ErrorTracking::SentryClient4233 is expected to have attributes {:token => "access_token_123", :url => "https://sentrytest.gitlab.com/api/0/projects/sentry-org/sentry-project"}4234 #list_sentry_issues4235 when cached4236 returns cached issues4237 when not cached4238 returns nil4239 client errors4240 exception: ErrorTracking::SentryClient::Error, error_type: "non_20x_response_from_sentry", error_message: "something"4241 returns an error4242 exception: ErrorTracking::SentryClient::MissingKeysError, error_type: "missing_keys_in_sentry_response", error_message: "something"4243 returns an error4244 exception: ErrorTracking::SentryClient::ResponseInvalidSizeError, error_type: "invalid_size_of_sentry_response", error_message: "something"4245 returns an error4246 exception: ErrorTracking::SentryClient::Issue::BadRequestError, error_type: "bad_request_for_sentry_api", error_message: "something"4247 returns an error4248 exception: StandardError, error_type: nil, error_message: "Unexpected Error"4249 returns an error4250 #list_sentry_projects4251 calls sentry client4252 #issue_details4253 when cached4254 is expected to eq {:issue=>#<Gitlab::ErrorTracking::DetailedError:0x00007ee19d335600 @id="1", @title="title", @type="er..., @first_release_version="12345678", @tags={:level=>"error", :logger=>"rails"}, @gitlab_commit=nil>}4255 is expected to eq "12345678"4256 is expected to eq nil4257 is expected to eq nil4258 when release version is nil4259 is expected to eq nil4260 is expected to eq nil4261 when repo commit matches first release version4262 is expected to eq "12345678"4263 is expected to eq "/namespace684/project-692/-/commit/12345678"4264 when not cached4265 is expected not to receive sentry_client(*(any args)) 0 times4266 is expected to be nil4267 #issue_latest_event4268 returns the error event4269 #update_issue4270 when sentry response is successful4271 returns the successful response4272 when sentry raises an error4273 returns the successful response4274 when sentry_project_id is not set4275 when sentry_project_id is not set4276 tries to backfill it from sentry API4277 when the project cannot be found on sentry4278 raises error4279 when mismatching sentry_project_id is detected4280 raises error4281 passing parameters to sentry client4282 returns the successful response4283 slugs4284 behaves like slug from api_url4285 when api_url is correct4286 returns slug4287 when api_url is blank4288 returns nil4289 behaves like slug from api_url4290 when api_url is correct4291 returns slug4292 when api_url is blank4293 returns nil4294 names from api_url4295 behaves like name from api_url4296 when name is present in DB4297 returns name from DB4298 when name is null in DB4299 titleizes and returns slug from api_url4300 returns nil when api_url is incorrect4301 returns nil when api_url is blank4302 behaves like name from api_url4303 when name is present in DB4304 returns name from DB4305 when name is null in DB4306 titleizes and returns slug from api_url4307 returns nil when api_url is incorrect4308 returns nil when api_url is blank4309 .build_api_url_from4310 correctly builds api_url with slugs4311 correctly builds api_url without slugs4312 does not raise exception with invalid url4313 returns nil when api_host is blank4314 #api_host4315 when api_url exists4316 extracts the api_host from api_url4317 when api_url is nil4318 returns nil4319 #expire_issues_cache4320 clears the cache4321 #sentry_enabled4322 enabled: true, integrated: false, sentry_enabled: true4323 is expected to eq true4324 enabled: true, integrated: true, sentry_enabled: false4325 is expected to eq false4326 enabled: true, integrated: true, sentry_enabled: false4327 is expected to eq false4328 enabled: false, integrated: false, sentry_enabled: false4329 is expected to eq false4330 #integrated_enabled?4331 enabled: true, integrated: false, integrated_enabled: false4332 is expected to eq false4333 enabled: false, integrated: true, integrated_enabled: false4334 is expected to eq false4335 enabled: true, integrated: true, integrated_enabled: true4336 is expected to eq true4337 #gitlab_dsn4338 is expected to eq "http://glet_3840492c979f45f15e85aea528584413@localhost:8080/errortracking/api/v1/projects/794"4339Gitlab::Counters::BufferedCounter4340 # order random4341 #initiate_refresh!4342 removes the key from Redis4343 resets the counter to 04344 resets the record to 04345 sets a refresh indicator with a long expiry4346 #bulk_increment4347 when the counter is not undergoing refresh4348 increments the key by the given values4349 returns the value of the key after the increment4350 schedules a worker to commit the counter into database4351 when the counter is undergoing refresh4352 when there are 2 increments on different ref4353 behaves like changing the counter refresh key by the expected amount4354 changes the counter refresh key by the net change4355 returns the value of the key after the increment4356 when there has been previous decrements4357 behaves like changing the counter refresh key by the expected amount4358 changes the counter refresh key by the net change4359 returns the value of the key after the increment4360 when one of the increment is repeated4361 behaves like changing the counter refresh key by the expected amount4362 changes the counter refresh key by the net change4363 returns the value of the key after the increment4364 when there are 2 decrements on different ref4365 behaves like changing the counter refresh key by the expected amount4366 changes the counter refresh key by the net change4367 returns the value of the key after the increment4368 when there has been previous increments4369 behaves like changing the counter refresh key by the expected amount4370 changes the counter refresh key by the net change4371 returns the value of the key after the increment4372 when there is a mixture of increment and decrement on different refs4373 behaves like changing the counter refresh key by the expected amount4374 changes the counter refresh key by the net change4375 returns the value of the key after the increment4376 when the increment ref has been decremented4377 behaves like changing the counter refresh key by the expected amount4378 changes the counter refresh key by the net change4379 returns the value of the key after the increment4380 when the decrement ref has been incremented4381 behaves like changing the counter refresh key by the expected amount4382 changes the counter refresh key by the net change4383 returns the value of the key after the increment4384 #cleanup_refresh4385 removes all tracking keys4386 #increment4387 when the counter is not undergoing refresh4388 sets a new key by the given value4389 increments an existing key by the given value4390 returns the value of the key after the increment4391 schedules a worker to commit the counter key into database4392 when the counter is undergoing refresh4393 does not increment the counter key4394 increments the amount in the refresh key4395 schedules a worker to commit the counter key into database4396 when it is an increment (positive amount)4397 when it is the first increment on the ref4398 behaves like changing the counter refresh key by the given amount4399 changes the refresh counter key by the given value4400 returns the value of the key after the increment4401 when it follows an existing increment on the same ref4402 behaves like not changing the counter refresh key4403 does not change the counter4404 returns the unchanged value of the key4405 when it follows an existing decrement on the same ref4406 behaves like not changing the counter refresh key4407 does not change the counter4408 returns the unchanged value of the key4409 when there has been an existing increment on another ref4410 behaves like changing the counter refresh key by the given amount4411 changes the refresh counter key by the given value4412 returns the value of the key after the increment4413 when there has been an existing decrement on another ref4414 behaves like changing the counter refresh key by the given amount4415 changes the refresh counter key by the given value4416 returns the value of the key after the increment4417 when it is a decrement (negative amount)4418 when it is the first decrement on the same ref4419 behaves like not changing the counter refresh key4420 does not change the counter4421 returns the unchanged value of the key4422 when it follows an existing decrement on the ref4423 behaves like not changing the counter refresh key4424 does not change the counter4425 returns the unchanged value of the key4426 when it follows an existing increment on the ref4427 behaves like changing the counter refresh key by the given amount4428 changes the refresh counter key by the given value4429 returns the value of the key after the increment4430 when there has been an existing increment on another ref4431 behaves like not changing the counter refresh key4432 does not change the counter4433 returns the unchanged value of the key4434 when there has been an existing decrement on another ref4435 behaves like not changing the counter refresh key4436 does not change the counter4437 returns the unchanged value of the key4438 when the amount is 04439 when it is the first increment on the ref4440 behaves like not changing the counter refresh key4441 does not change the counter4442 returns the unchanged value of the key4443 when it follows the another increment on the ref4444 behaves like not changing the counter refresh key4445 does not change the counter4446 returns the unchanged value of the key4447 when the ref is greater than 67108863 (8MB)4448 deduplicates increments correctly4449 #commit_increment!4450 obtains an exclusive lease during processing4451 when there is an amount to commit4452 commits the increment into the database4453 removes the increment entry from Redis4454 when there are no counters to flush4455 when there are no counters in the relative :flushed key4456 does not change the record4457 when there are counters in the relative :flushed key4458 updates the record4459 deletes the relative :flushed key4460 when deleting :flushed key fails4461 does a rollback of the counter update4462 when the counter record has after_commit callbacks4463 has registered callbacks4464 when there are increments to flush4465 executes the callbacks4466 when there are no increments to flush4467 does not execute the callbacks4468 #amount_to_be_flushed4469 increment: nil, flushed: nil, result: 0, flushed_key_present: false4470 returns the current value to be flushed4471 drops the increment key and creates the flushed key if it does not exist4472 increment: nil, flushed: 0, result: 0, flushed_key_present: false4473 returns the current value to be flushed4474 drops the increment key and creates the flushed key if it does not exist4475 increment: 0, flushed: 0, result: 0, flushed_key_present: false4476 returns the current value to be flushed4477 drops the increment key and creates the flushed key if it does not exist4478 increment: 1, flushed: 0, result: 1, flushed_key_present: true4479 returns the current value to be flushed4480 drops the increment key and creates the flushed key if it does not exist4481 increment: 1, flushed: nil, result: 1, flushed_key_present: true4482 returns the current value to be flushed4483 drops the increment key and creates the flushed key if it does not exist4484 increment: 1, flushed: 1, result: 2, flushed_key_present: true4485 returns the current value to be flushed4486 drops the increment key and creates the flushed key if it does not exist4487 increment: 1, flushed: -2, result: -1, flushed_key_present: true4488 returns the current value to be flushed4489 drops the increment key and creates the flushed key if it does not exist4490 increment: -1, flushed: 1, result: 0, flushed_key_present: false4491 returns the current value to be flushed4492 drops the increment key and creates the flushed key if it does not exist4493 #get4494 returns the value when there is an existing value stored in the counter4495 returns 0 when there is no existing value4496 #finalize_refresh4497 with existing amount in refresh key4498 moves the deduplicated amount in the refresh key into the counter key4499 removes the refresh counter key and the refresh indicator4500 schedules a worker to clean up the refresh tracking keys4501 without existing amount in refresh key4502 does not change the counter key4503 removes the refresh indicator key4504 schedules a worker to commit the counter key into database4505Feature4506 .get4507 returns the Flipper feature4508 .persisted_names4509 returns the names of the persisted features4510 returns an empty Array when no features are presisted4511 caches the feature names when request store is active4512 fetches all flags once in a single query4513 .persisted_name?4514 when the feature is persisted4515 returns true when feature name is a string4516 returns true when feature name is a symbol4517 when the feature is not persisted4518 returns false when feature name is a string4519 returns false when feature name is a symbol4520 .all4521 returns the Flipper features as an array4522 .flipper4523 when request store is inactive4524 memoizes the Flipper instance but does not not enable Flipper memoization4525 when request store is active4526 memoizes the Flipper instance4527 .enabled?4528 returns false (and tracks / raises exception for dev) for undefined feature4529 returns false for undefined feature with default_enabled_if_undefined: false4530 returns true for undefined feature with default_enabled_if_undefined: true4531 returns false for existing disabled feature in the database4532 returns true for existing enabled feature in the database4533 is expected to eq #<ActiveSupport::Cache::MemoryStore entries=0, size=0, options={:compress=>false, :compress_threshold=>1024}>4534 is expected to eq #<Gitlab::Redis::FeatureFlag::FeatureFlagStore options={:namespace=>"cache:gitlab", :compress=>true, ...le:0x00007ee1d6c1da40>, @shutdown_block=nil>, @key=:"pool-151100", @key_count=:"pool-151100-count">>4535 caches the status in L1 and L2 caches4536 returns the default value when the database does not exist4537 when using redis cache4538 does not make recursive feature-flag calls4539 when self-recursive4540 returns the default value4541 detects self recursion4542 when deeply recursive4543 detects deep recursion4544 logging is enabled4545 does not log feature_flag_state_logs4546 logs other feature flags4547 cached feature flag4548 caches the status in L1 cache for the first minute4549 caches the status in L2 cache after 2 minutes4550 fetches the status after an hour4551 with a group member4552 is true for all group members4553 is false for any other actor4554 with an individual actor4555 returns true when same actor is informed4556 returns false when different actor is informed4557 returns false when no actor is informed4558 with invalid actor4559 when is dev_or_test_env4560 does raise exception4561 validates usage of feature flag with YAML definition4562 when usage is correct4563 when invalid type is used4564 when default_enabled: is false in the YAML definition4565 reads the default from the YAML definition4566 when default_enabled: is true in the YAML definition4567 reads the default from the YAML definition4568 and feature has been disabled4569 is not enabled4570 with a cached value and the YAML definition is changed thereafter4571 reads new default value4572 when YAML definition does not exist for an optional type4573 when in dev or test environment4574 raises an error for dev4575 when in production4576 when database exists4577 checks the persisted status and returns false4578 when database does not exist4579 returns false without checking the status in the database4580 .disable?4581 returns true (and tracks / raises exception for dev) for undefined feature4582 returns true for undefined feature with default_enabled_if_undefined: false4583 returns false for undefined feature with default_enabled_if_undefined: true4584 returns true for existing disabled feature in the database4585 returns false for existing enabled feature in the database4586 .enable4587 returns true4588 behaves like logging4589 logs the event4590 when thing is an actor4591 behaves like logging4592 logs the event4593 .disable4594 returns true4595 behaves like logging4596 logs the event4597 when thing is an actor4598 behaves like logging4599 logs the event4600 when the feature flag was enabled for this actor4601 marks this thing as disabled4602 does not change the global value4603 is possible to re-enable the feature4604 when the feature flag is enabled globally4605 does not mark this thing as disabled4606 does not change the global value4607 opt_out4608 when thing is an actor4609 marks this thing as disabled4610 does not change the global value4611 stores the opt-out information as a gate4612 behaves like logging4613 logs the event4614 when thing is a group4615 has no effect4616 remove_opt_out4617 when thing is an actor4618 re-enables this thing4619 does not change the global value4620 removes the opt-out information4621 behaves like logging4622 logs the event4623 when thing is a group4624 has no effect4625 .enable_percentage_of_time4626 behaves like logging4627 logs the event4628 when the flag is on4629 fails with InvalidOperation4630 .disable_percentage_of_time4631 behaves like logging4632 logs the event4633 .enable_percentage_of_actors4634 behaves like logging4635 logs the event4636 when the flag is on4637 fails with InvalidOperation4638 .disable_percentage_of_actors4639 behaves like logging4640 logs the event4641 .remove4642 behaves like logging4643 logs the event4644 for a non-persisted feature4645 returns nil4646 returns true, and cleans up4647 .log_feature_flag_states?4648 when flag is feature_flag_state_logs4649 is expected to be falsey4650 when flag is old4651 is expected to be falsey4652 when flag is old while log_state_changes is not present4653 is expected to be falsey4654 when flag is old but log_state_changes is true4655 is expected to be truthy4656 when flag is new and not feature_flag_state_logs4657 is expected to be truthy4658 when milestone is nil4659 is expected to be falsey4660 caching with stale reads from the database4661 gives the correct value when enabling for an additional actor4662 gives the correct value when enabling for percentage of time4663 gives the correct value when disabling the flag4664 gives the correct value when deleting the flag4665 Feature::Target4666 #targets4667 returns all found targets4668 when repository target works with different types of repositories4669 returns all found targets4670Gitlab::Database::BackgroundMigration::BatchedMigration4671 is expected to be a kind of Gitlab::Database::SharedModel(abstract)4672 associations4673 is expected to have many batched_jobs4674 #last_job4675 returns the batched job with highest max_value4676 validations4677 is expected to validate that :job_arguments is case-sensitively unique within the scope of :job_class_name, :table_name, and :column_name4678 when there are failed jobs4679 raises an exception4680 when the jobs are completed4681 finishes the migration4682 updates the finished_at4683 state machine4684 when a migration is executed4685 updates the started_at4686 #pause!4687 when an invalid transition is applied4688 raises an exception4689 raises an exception4690 raises an exception4691 when a valid transition is applied4692 moves to pause4693 moves to pause4694 #execute!4695 when an invalid transition is applied4696 raises an exception4697 raises an exception4698 when a valid transition is applied4699 moves to active4700 moves to active4701 moves to active4702 #finish!4703 when an invalid transition is applied4704 raises an exception4705 when a valid transition is applied4706 moves to active4707 moves to active4708 moves to active4709 moves to active4710 #failure!4711 when an invalid transition is applied4712 raises an exception4713 raises an exception4714 when a valid transition is applied4715 moves to active4716 moves to active4717 moves to active4718 .valid_status4719 returns valid status4720 .queue_order4721 returns batched migrations ordered by their id4722 .ordered_by_created_at_desc4723 returns batched migrations ordered by created_at (DESC)4724 .find_executable4725 when the migration does not exist4726 returns nil4727 when the migration is not active4728 returns nil4729 when the migration is on hold4730 returns nil4731 when the migration is not available for the current connection4732 returns nil4733 when ther migration exists and is executable4734 returns the migration4735 .active_migrations_distinct_on_table4736 returns one pending executable migration per table4737 returns epmty collection when there are no pending executable migrations4738 .created_after4739 only returns migrations created after the specified time4740 .queued4741 returns active and paused migrations4742 .finalizing4743 returns only finalizing migrations4744 .successful_rows_counts4745 returns totals from successful jobs4746 #reset_attempts_of_blocked_jobs!4747 sets the number of attempts to zero for blocked jobs4748 #interval_elapsed?4749 when the migration has no last_job4750 returns true4751 when the migration has a last_job4752 when the last_job is less than an interval old4753 returns false4754 when the last_job is exactly an interval old4755 returns true4756 when the last_job is more than an interval old4757 returns true4758 when an interval variance is given4759 when the last job is less than an interval with variance old4760 returns false4761 when the last job is more than an interval with variance old4762 returns true4763 #create_batched_job!4764 creates a batched_job with the correct batch configuration4765 #next_min_value4766 when a previous job exists4767 returns the next value after the previous maximum4768 when a previous job does not exist4769 returns the migration minimum value4770 #job_class4771 returns the class of the job for the migration4772 #batch_class4773 returns the class of the batch strategy for the migration4774 #retry_failed_jobs!4775 when there are failed migration jobs4776 moves the status of the migration to active4777 changes the number of attempts to 04778 when there are no failed migration jobs4779 moves the status of the migration to active4780 #should_stop?4781 when the started_at is nil4782 is expected to be falsey4783 when the number of jobs is lesser than the MINIMUM_JOBS4784 is expected to be falsey4785 when the calculated value is greater than the threshold4786 is expected to be truthy4787 when the calculated value is lesser than the threshold4788 is expected to be falsey4789 #job_class_name=4790 behaves like an attr_writer that assigns class names4791 when a module name exists4792 keeps the class with module name4793 removes leading namespace resolution operator4794 when a module name does not exist4795 does not change the given class name4796 #batch_class_name=4797 behaves like an attr_writer that assigns class names4798 when a module name exists4799 keeps the class with module name4800 removes leading namespace resolution operator4801 when a module name does not exist4802 does not change the given class name4803 #migrated_tuple_count4804 sums the batch_size of succeeded jobs4805 #prometheus_labels4806 returns a hash with labels for the migration4807 #smoothed_time_efficiency4808 when there are not enough jobs4809 returns nil4810 when there are enough jobs4811 example 1: increasing trend, but only recently crossed threshold4812 returns the smoothed time efficiency4813 example 2: increasing trend, crossed threshold a while ago4814 returns the smoothed time efficiency4815 example 3: decreasing trend, but only recently crossed threshold4816 returns the smoothed time efficiency4817 example 4: latest run spiked4818 returns the smoothed time efficiency4819 with preloaded batched migration4820 avoids N+14821 #optimize!4822 calls the BatchOptimizer4823 #hold!4824 updates on_hold_until property4825 defaults to 10 minutes4826 #on_hold?4827 returns false if no on_hold_until is set4828 returns false if on_hold_until has passed4829 returns true if on_hold_until is in the future4830 #progress4831 when the migration is completed4832 returns 1004833 when the status is finished4834 returns 1004835 when the migration does not have jobs4836 returns zero4837 when the `total_tuple_count` is zero4838 returns nil4839 when migration has completed jobs4840 calculates the progress4841 .for_configuration4842 finds the migration matching the given configuration parameters4843 filters by gitlab schemas available for the connection4844 doesn not filter by gitlab schemas available for the connection if the column is nor present4845 .find_for_configuration4846 returns nill if such migration does not exists4847 returns the migration when it exists4848 .for_gitlab_schema4849 finds the migrations matching the given gitlab schema4850Issues::ImportCsvService4851 #execute4852 behaves like correctly handles invalid files4853 when given file with unsupported extension4854 behaves like invalid file4855 returns invalid file error4856 when given empty file4857 behaves like invalid file4858 returns invalid file error4859 when given file without headers4860 behaves like invalid file4861 returns invalid file error4862 behaves like importer with email notification4863 notifies user of import result4864 behaves like an issuable importer4865 records the import attempt if resource is an issue4866 with a file generated by Gitlab CSV export4867 imports the CSV without errors4868 correctly sets the issuable attributes4869 behaves like importer with email notification4870 notifies user of import result4871 behaves like an issuable importer4872 records the import attempt if resource is an issue4873 with comma delimited file4874 imports CSV without errors4875 correctly sets the issuable attributes4876 behaves like importer with email notification4877 notifies user of import result4878 behaves like an issuable importer4879 records the import attempt if resource is an issue4880 with tab delimited file with error row4881 imports CSV with some error rows4882 correctly sets the issuable attributes4883 behaves like importer with email notification4884 notifies user of import result4885 behaves like an issuable importer4886 records the import attempt if resource is an issue4887 with semicolon delimited file with CRLF4888 imports CSV with a blank row4889 correctly sets the issuable attributes4890 behaves like importer with email notification4891 notifies user of import result4892 behaves like an issuable importer4893 records the import attempt if resource is an issue4894 #execute4895 sets all issueable attributes and executes quick actions4896Ci::PipelinePresenter4897 inherits from Gitlab::View::Presenter::Delegated4898 #initialize4899 takes a pipeline and optional params4900 exposes pipeline4901 forwards missing methods to pipeline4902 #status_title4903 when pipeline is auto-canceled4904 shows that the pipeline is auto-canceled4905 when pipeline is not auto-canceled4906 does not have a status title4907 #failure_reason4908 when pipeline has a failure reason4909 when failure reason is unknown_failure4910 represents a failure reason sentence4911 when failure reason is config_error4912 represents a failure reason sentence4913 when failure reason is external_validation_failure4914 represents a failure reason sentence4915 when failure reason is user_not_verified4916 represents a failure reason sentence4917 when failure reason is size_limit_exceeded4918 represents a failure reason sentence4919 when failure reason is job_activity_limit_exceeded4920 represents a failure reason sentence4921 when failure reason is deployments_limit_exceeded4922 represents a failure reason sentence4923 when failure reason is project_deleted4924 represents a failure reason sentence4925 when pipeline does not have failure reason4926 returns nil4927 #event_type_name4928 for a detached merge request pipeline4929 is expected to eq "Merge request pipeline"4930 for a merged result pipeline4931 is expected to eq "Merged result pipeline"4932 for a merge train pipeline4933 is expected to eq "Merge train pipeline"4934 when pipeline is branch pipeline4935 is expected to eq "Pipeline"4936 #coverage4937 when pipeline has coverage4938 formats coverage into 2 decimal points4939 when pipeline does not have coverage4940 returns nil4941 #ref_text4942 when pipeline is detached merge request pipeline4943 returns a correct ref text4944 when pipeline is merge request pipeline4945 returns a correct ref text4946 when pipeline is branch pipeline4947 when ref exists in the repository4948 returns a correct ref text4949 when ref contains malicious script4950 does not include the malicious script4951 when ref does not exist in the repository4952 returns a correct ref text4953 when ref contains malicious script4954 does not include the malicious script4955 #all_related_merge_requests4956 memoizes the returned relation4957 for a branch pipeline with two open MRs4958 is expected to contain exactly #<MergeRequest id:327 namespace691/project-700!1> and #<MergeRequest id:328 namespace691/project-700!2>4959 permissions4960 with a private project4961 behaves like private merge requests4962 when not logged in4963 is expected to be empty4964 when logged in as a non_member4965 is expected to be empty4966 when logged in as a guest4967 is expected to be empty4968 when logged in as a developer4969 is expected to contain exactly #<MergeRequest id:329 namespace691/project-700!1>4970 when logged in as a maintainer4971 is expected to contain exactly #<MergeRequest id:329 namespace691/project-700!1>4972 with a public project with private merge requests4973 behaves like private merge requests4974 when not logged in4975 is expected to be empty4976 when logged in as a non_member4977 is expected to be empty4978 when logged in as a guest4979 is expected to be empty4980 when logged in as a developer4981 is expected to contain exactly #<MergeRequest id:329 namespace691/project-700!1>4982 when logged in as a maintainer4983 is expected to contain exactly #<MergeRequest id:329 namespace691/project-700!1>4984 with a public project with public merge requests4985 when not logged in4986 is expected to contain exactly #<MergeRequest id:329 namespace691/project-700!1>4987 #link_to_merge_request4988 with a related merge request4989 returns a correct link4990 when pipeline is branch pipeline4991 is expected to be nil4992 #link_to_merge_request_source_branch4993 with a related merge request4994 returns a correct link4995 when pipeline is branch pipeline4996 is expected to be nil4997 #link_to_merge_request_target_branch4998 with a related merge request4999 returns a correct link5000 when pipeline is branch pipeline5001 is expected to be nil5002ContainerRegistry::Tag5003 is expected to respond to #repository5004 is expected to delegate #registry to the #repository object5005 is expected to delegate #client to the #repository object5006 #path5007 when tag belongs to zero-level repository5008 returns path to the image5009 when tag belongs to first-level repository5010 returns path to the image5011 #location5012 returns a full location of the tag5013 manifest processing5014 schema v15015 #layers5016 is expected to eq 15017 #total_size5018 is expected to be nil5019 config processing5020 #config5021 is expected to be nil5022 #created_at5023 is expected to be nil5024 behaves like using the value manually set on created_at5025 does not use the config5026 image is a helm chart5027 #created_at5028 is expected to be nil5029 behaves like using the value manually set on created_at5030 does not use the config5031 schema v25032 #layers5033 is expected to eq 15034 #total_size5035 is expected to eq 23198705036 config processing5037 when locally stored5038 behaves like a processable5039 #config5040 is expected not to be nil5041 #created_at5042 is expected not to be nil5043 behaves like using the value manually set on created_at5044 does not use the config5045 when externally stored5046 behaves like a processable5047 #config5048 is expected not to be nil5049 #created_at5050 is expected not to be nil5051 behaves like using the value manually set on created_at5052 does not use the config5053 #force_created_at_from_iso86015054 with a valid input5055 behaves like setting and caching the created_at value5056 sets and caches the created_at value5057 with a nil input5058 behaves like setting and caching the created_at value5059 sets and caches the created_at value5060 with an invalid input5061 behaves like setting and caching the created_at value5062 sets and caches the created_at value5063 updated_at=5064 with a valid input5065 is expected to eq Fri, 11 Aug 2023 07:27:37.000000000 +00005066 with a nil input5067 is expected to eq nil5068 with an invalid input5069 is expected to eq nil5070 with stubbed digest5071 #digest5072 returns a correct tag digest5073 #unsafe_delete5074 correctly deletes the tag5075Integrations::HangoutsChat5076 behaves like chat integration5077 Associations5078 is expected to belong to project required: false5079 Validations5080 when integration is active5081 is expected to validate that :webhook cannot be empty/falsy5082 behaves like issue tracker integration URL attribute5083 is expected to allow :webhook to be ‹"https://example.com"›5084 is expected not to allow :webhook to be ‹"example.com"›5085 is expected not to allow :webhook to be ‹"ftp://example.com"›5086 is expected not to allow :webhook to be ‹"herp-and-derp"›5087 when integration is inactive5088 is expected not to validate that :webhook cannot be empty/falsy5089 .supported_events5090 does not support deployment_events5091 #execute5092 with push events5093 behaves like triggered Hangouts Chat integration5094 calls Hangouts Chat API5095 with default branch5096 when only default branch are to be notified5097 behaves like triggered Hangouts Chat integration5098 calls Hangouts Chat API5099 when only protected branches are to be notified5100 behaves like untriggered Hangouts Chat integration5101 does not call Hangouts Chat API5102 when default and protected branches are to be notified5103 behaves like triggered Hangouts Chat integration5104 calls Hangouts Chat API5105 when all branches are to be notified5106 behaves like triggered Hangouts Chat integration5107 calls Hangouts Chat API5108 with protected branch5109 when only default branch are to be notified5110 behaves like untriggered Hangouts Chat integration5111 does not call Hangouts Chat API5112 when only protected branches are to be notified5113 behaves like triggered Hangouts Chat integration5114 calls Hangouts Chat API5115 when default and protected branches are to be notified5116 behaves like triggered Hangouts Chat integration5117 calls Hangouts Chat API5118 when all branches are to be notified5119 behaves like triggered Hangouts Chat integration5120 calls Hangouts Chat API5121 with neither default nor protected branch5122 when only default branch are to be notified5123 behaves like untriggered Hangouts Chat integration5124 does not call Hangouts Chat API5125 when only protected branches are to be notified5126 behaves like untriggered Hangouts Chat integration5127 does not call Hangouts Chat API5128 when default and protected branches are to be notified5129 behaves like untriggered Hangouts Chat integration5130 does not call Hangouts Chat API5131 when all branches are to be notified5132 behaves like triggered Hangouts Chat integration5133 calls Hangouts Chat API5134 with issue events5135 behaves like triggered Hangouts Chat integration5136 calls Hangouts Chat API5137 with merge events5138 behaves like triggered Hangouts Chat integration5139 calls Hangouts Chat API5140 with wiki page events5141 behaves like triggered Hangouts Chat integration5142 calls Hangouts Chat API5143 with note events5144 with commit comment5145 behaves like triggered Hangouts Chat integration5146 calls Hangouts Chat API5147 with merge request comment5148 behaves like triggered Hangouts Chat integration5149 calls Hangouts Chat API5150 with issue comment5151 behaves like triggered Hangouts Chat integration5152 calls Hangouts Chat API5153 with snippet comment5154 behaves like triggered Hangouts Chat integration5155 calls Hangouts Chat API5156 with pipeline events5157 with failed pipeline5158 behaves like triggered Hangouts Chat integration5159 calls Hangouts Chat API5160 with succeeded pipeline5161 with default notify_only_broken_pipelines5162 does not call Hangouts Chat API5163 when notify_only_broken_pipelines is false5164 behaves like triggered Hangouts Chat integration5165 calls Hangouts Chat API5166 with default branch5167 when only default branch are to be notified5168 behaves like triggered Hangouts Chat integration5169 calls Hangouts Chat API5170 when only protected branches are to be notified5171 behaves like untriggered Hangouts Chat integration5172 does not call Hangouts Chat API5173 when default and protected branches are to be notified5174 behaves like triggered Hangouts Chat integration5175 calls Hangouts Chat API5176 when all branches are to be notified5177 behaves like triggered Hangouts Chat integration5178 calls Hangouts Chat API5179 with protected branch5180 when only default branch are to be notified5181 behaves like untriggered Hangouts Chat integration5182 does not call Hangouts Chat API5183 when only protected branches are to be notified5184 behaves like triggered Hangouts Chat integration5185 calls Hangouts Chat API5186 when default and protected branches are to be notified5187 behaves like triggered Hangouts Chat integration5188 calls Hangouts Chat API5189 when all branches are to be notified5190 behaves like triggered Hangouts Chat integration5191 calls Hangouts Chat API5192 with neither default nor protected branch5193 when only default branch are to be notified5194 behaves like untriggered Hangouts Chat integration5195 does not call Hangouts Chat API5196 when only protected branches are to be notified5197 behaves like untriggered Hangouts Chat integration5198 does not call Hangouts Chat API5199 when default and protected branches are to be notified5200 behaves like untriggered Hangouts Chat integration5201 does not call Hangouts Chat API5202 when all branches are to be notified5203 behaves like triggered Hangouts Chat integration5204 calls Hangouts Chat API5205 deployment events5206 behaves like untriggered Hangouts Chat integration5207 does not call Hangouts Chat API5208 #execute5209 with push events5210 adds thread key for push events5211 with issue events5212 adds thread key for issue events5213 with merge events5214 adds thread key for merge events5215 with wiki page events5216 adds thread key for wiki page events5217 with pipeline events5218 adds thread key for pipeline events5219 Note events5220 when commit comment event executed5221 adds thread key5222 when merge request comment event executed5223 adds thread key5224 when issue comment event executed5225 adds thread key5226 when snippet comment event executed5227 adds thread key5228ContainerRegistry::Client5229 #repository_manifest5230 behaves like handling repository manifest5231 GET /v2/:name/manifests/mytag5232 behaves like handling timeouts5233 handles network timeouts5234 logs the error5235 behaves like handling repository manifest5236 GET /v2/:name/manifests/mytag5237 behaves like handling timeouts5238 handles network timeouts5239 logs the error5240 #blob5241 GET /v2/:name/blobs/:digest5242 with a 307 redirect5243 behaves like handling redirects5244 follows the redirect5245 with a redirect location with params ending with =5246 behaves like handling redirects5247 follows the redirect5248 with a redirect location with params ending with %3D5249 behaves like handling redirects5250 follows the redirect5251 behaves like handling timeouts5252 handles network timeouts5253 logs the error5254 #upload_blob5255 with successful uploads5256 starts the upload and posts the blob5257 with a failed upload5258 returns a failure5259 #generate_empty_manifest5260 uploads a random image and returns the manifest5261 when upload fails5262 is expected to equal nil5263 #put_tag5264 uploads the manifest and returns the digest5265 #delete_repository_tag_by_name5266 when the tag exists5267 is expected to be truthy5268 when the tag does not exist5269 is expected to be truthy5270 when an error occurs5271 is expected to be falsey5272 #supports_tag_delete?5273 registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: true5274 returns the expected result5275 registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: true, expected_result: true5276 returns the expected result5277 registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: true5278 returns the expected result5279 registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: true5280 returns the expected result5281 registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: true5282 returns the expected result5283 registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: true, expected_result: false5284 returns the expected result5285 registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: false5286 returns the expected result5287 registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: false5288 returns the expected result5289 #registry_info5290 behaves like handling repository info5291 when the check is successful5292 when using the GitLab container registry5293 identifies the vendor as "gitlab"5294 identifies version and features5295 when using a third-party container registry5296 identifies the vendor as "other"5297 does not identify version or features5298 when the check is not successful5299 does not identify vendor, version or features5300 .supports_tag_delete?5301 registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: true5302 returns the expected result5303 registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: true, expected_result: true5304 returns the expected result5305 registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: true5306 returns the expected result5307 registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: true, expected_result: false5308 returns the expected result5309 registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false5310 returns the expected result5311 registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false5312 returns the expected result5313 registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false5314 returns the expected result5315 registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false5316 returns the expected result5317 registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: true5318 returns the expected result5319 registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: true5320 returns the expected result5321 registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: false5322 returns the expected result5323 registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: false5324 returns the expected result5325 registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false5326 returns the expected result5327 registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false5328 returns the expected result5329 registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false5330 returns the expected result5331 registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false5332 returns the expected result5333 registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false5334 returns the expected result5335 registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false5336 returns the expected result5337 registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false5338 returns the expected result5339 registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false5340 returns the expected result5341 registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false5342 returns the expected result5343 registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false5344 returns the expected result5345 registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false5346 returns the expected result5347 registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false5348 returns the expected result5349 registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false5350 returns the expected result5351 registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false5352 returns the expected result5353 registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false5354 returns the expected result5355 registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false5356 returns the expected result5357 registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false5358 returns the expected result5359 registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false5360 returns the expected result5361 registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false5362 returns the expected result5363 registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false5364 returns the expected result5365 #repository_tags5366 returns a successful response5367 .registry_info5368 behaves like handling repository info5369 when the check is successful5370 when using the GitLab container registry5371 identifies the vendor as "gitlab"5372 identifies version and features5373 when using a third-party container registry5374 identifies the vendor as "other"5375 does not identify version or features5376 when the check is not successful5377 does not identify vendor, version or features5378Clusters::Integrations::Prometheus5379 associations5380 is expected to belong to cluster class_name => Clusters::Cluster required: false5381 validations5382 is expected to validate that :cluster cannot be empty/falsy5383 is expected not to allow :enabled to be ‹nil›5384 default values5385 is expected to eq "randomtoken"5386 after_destroy5387 deactivates prometheus_integration5388 after_save5389 when no change to enabled status5390 does not touch project integrations5391 when enabling5392 activates prometheus_integration5393 when disabling5394 activates prometheus_integration5395 #prometheus_client5396 cluster is nil5397 returns nil5398 cluster doesn't have kubeclient5399 returns nil5400 cluster has kubeclient5401 creates proxy prometheus_client5402 merges proxy_url, options and headers from kube client with prometheus_client options5403 when cluster is not reachable5404 behaves like exception caught for prometheus client5405 returns nil5406 when there is a socket error while contacting cluster5407 behaves like exception caught for prometheus client5408 returns nil5409 behaves like exception caught for prometheus client5410 returns nil5411 when the network is unreachable5412 behaves like exception caught for prometheus client5413 returns nil5414 #configured?5415 when a kubenetes client is present5416 is expected to be truthy5417 when it is disabled5418 is expected to be falsey5419 when the kubernetes URL is blocked5420 is expected to be falsey5421 when a kubenetes client is not present5422 is expected to be falsy5423DesignManagement::SaveDesignsService5424 #execute5425 when the feature is not available5426 does not create an event in the activity stream5427 behaves like a service error5428 returns an error5429 when the feature is available5430 creates a commit, an event in the activity stream and updates the creation count5431 can run the same command in parallel5432 repository existence5433 is ensured when the service runs5434 behaves like issue_edit snowplow tracking5435 behaves like Snowplow event tracking with RedisHLL context5436 behaves like Snowplow event tracking5437 is emitted5438 when the design collection is in the process of being copied5439 behaves like a service error5440 returns an error5441 when the design collection has a copy error5442 resets the copy state5443 the response5444 includes designs with the expected properties5445 saving the file to LFS5446 saves the design to LFS and saves the repository_type of the LfsObjectsProject as design5447 when HEAD branch is different from master5448 does not raise an exception during update5449 when a design is being updated5450 creates a new version for the existing design and updates the file5451 updates UsageData for changed designs5452 records the correct events5453 behaves like issue_edit snowplow tracking5454 behaves like Snowplow event tracking with RedisHLL context5455 behaves like Snowplow event tracking5456 is emitted5457 when uploading a new design5458 does not link the new version to the existing design5459 when detecting content type5460 detects content type when feature flag is enabled5461 skips content type detection when feature flag is disabled5462 when a design has not changed since its previous version5463 does not create a new version, and returns the design in `skipped_designs`5464 when doing a mixture of updates and creations5465 has the correct side-effects5466 when uploading multiple files5467 returns information about both designs in the response5468 has the correct side-effects5469 when uploading too many files5470 returns the correct error5471 when uploading duplicate files5472 returns the correct error5473 when the user is not allowed to upload designs5474 behaves like a service error5475 returns an error5476 failure modes5477 when creating the commit fails5478 behaves like an execution error5479 returns an error5480 when creating the versions fails5481 behaves like a service error5482 returns an error5483 when a design already existed in the repo but we didn't know about it in the database5484 creates the design and a new version for it5485 scalability5486 runs the same queries for all requests, regardless of number of files (PENDING: See: https://gitlab.com/gitlab-org/gitlab/-/issues/213169)5487Gitlab::Observability5488 # order random5489 .oauth_url5490 is expected to eq "https://observe.gitlab.com/v1/auth/start"5491 .tracing_url5492 is expected to eq "https://observe.gitlab.com/query/2664/848/v1/traces"5493 .allowed_for_action?5494 returns false if action is nil5495 allowed? calls5496 action: :foo, permission: :admin_observability5497 calls allowed? with admin_observability when actions is foo5498 action: :explore, permission: :read_observability5499 calls allowed? with read_observability when actions is explore5500 action: :datasources, permission: :admin_observability5501 calls allowed? with admin_observability when actions is datasources5502 action: :manage, permission: :admin_observability5503 calls allowed? with admin_observability when actions is manage5504 action: :dashboards, permission: :read_observability5505 calls allowed? with read_observability when actions is dashboards5506 .tracing_enabled?5507 returns true if feature is enabled globally5508 returns true if feature is enabled for the project5509 returns false if feature is disabled globally5510 .embeddable_url5511 when URL is valid5512 input: "https://www.gitlab.com/groups/test-path/-/observability/explore?observability_path=%2Fexplore%3FgroupId%3D14485840%26left%3D%255B%2522now-1h%2522,%2522now%2522,%2522new-sentry.gitlab.net%2522,%257B%257D%255D", expected: "https://observe.gitlab.com/-/123/explore?groupId=14485840&left=%5B%22now-1h%22,%22now%22,%22new-sentry.gitlab.net%22,%7B%7D%5D"5513 returns an embeddable observability url5514 input: "https://www.gitlab.com/groups/test-path/-/observability/explore?observability_path=/goto/foo", expected: "https://observe.gitlab.com/-/123/goto/foo"5515 returns an embeddable observability url5516 when URL is invalid5517 returns nil if the path detection throws an error5518 returns nil if parsing observaboility path throws an error5520 returns nil5522 returns nil5523 input: "not a link"5524 returns nil5526 returns nil5527 input: "http://www.gitlab.com/groups/test-path/-/observability/explore?observability_path=/explore"5528 returns nil5529 input: "https://www.gitlab.com:123/groups/test-path/-/observability/explore?observability_path=/explore"5530 returns nil5531 input: "https://www.gitlab.com@example.com/groups/test-path/-/observability/explore?observability_path=/explore"5532 returns nil5533 input: "https://www.gitlab.com/groups/test-path/-/observability/explore?observability_path=@example.com"5534 returns nil5535 input: "https://www.gitlab.com/groups/INVALID_GROUP/-/observability/explore?observability_path=/explore"5536 returns nil5537 input: "https://www.gitlab.com/groups/test-path/-/INVALID_CONTROLLER/explore?observability_path=/explore"5538 returns nil5539 input: "https://www.gitlab.com/groups/test-path/-/observability/INVALID_ACTION?observability_path=/explore"5540 returns nil5542 returns nil5543 input: "https://www.gitlab.com/groups/test-path/-/observability/explore?missing_observability_path=/explore"5544 returns nil5545 input: "https://www.gitlab.com/groups/test-path/-/observability/explore?observability_path=/not_embeddable"5546 returns nil5547 input: "https://www.gitlab.com/groups/test-path/-/observability/explore?observability_path=/datasources"5548 returns nil5549 input: "https://www.gitlab.com/groups/test-path/-/observability/explore?observability_path=not a valid path"5550 returns nil5551 .provisioning_url5552 is expected to eq "https://observe.gitlab.com"5553 .build_full_url5554 returns the full observability url for the given params5555 handles missing / from observability_path5556 sanitises observability_path5557 when observability_path is missing5558 builds the url with the fallback_path5559 defaults to / if fallback_path is also missing5560 .observability_url5561 is expected to eq "https://observe.gitlab.com"5562 when on staging.gitlab.com5563 is expected to eq "https://observe.staging.gitlab.com"5564 when overriden via ENV5565 is expected to eq "https://example.net"5566 .allowed?5567 checks if ability is allowed for the given user and group5568 checks for admin_observability if permission is missing5569 returns true if the ability is allowed5570 returns false if the ability is not allowed5571 returns false if observability url is missing5572 returns false if group is missing5573 returns false if user is missing5574Gitlab::Ci::Config::Entry::Retry5575 #value5576 when retry value is a numeric5577 is returned as a hash with max key5578 when retry value is a hash5579 and `when` is a string5580 returns when wrapped in an array5581 and `when` is an array5582 returns when as it was passed5583 validation5584 when retry value is correct5585 when it is a numeric5586 is valid5587 when it is a hash5588 with max5589 is valid5590 with string when5591 is valid5592 with string when always5593 is valid5594 with array when5595 is valid5596 with when from documentation `always`5597 is valid5598 with when from documentation `unknown_failure`5599 is valid5600 with when from documentation `script_failure`5601 is valid5602 with when from documentation `api_failure`5603 is valid5604 with when from documentation `stuck_or_timeout_failure`5605 is valid5606 with when from documentation `runner_system_failure`5607 is valid5608 with when from documentation `runner_unsupported`5609 is valid5610 with when from documentation `stale_schedule`5611 is valid5612 with when from documentation `job_execution_timeout`5613 is valid5614 with when from documentation `archived_failure`5615 is valid5616 with when from documentation `unmet_prerequisites`5617 is valid5618 with when from documentation `scheduler_failure`5619 is valid5620 with when from documentation `data_integrity_failure`5621 is valid5622 with when from CommitStatus.failure_reasons `unknown_failure`5623 is valid5624 with when from CommitStatus.failure_reasons `script_failure`5625 is valid5626 with when from CommitStatus.failure_reasons `api_failure`5627 is valid5628 with when from CommitStatus.failure_reasons `stuck_or_timeout_failure`5629 is valid5630 with when from CommitStatus.failure_reasons `runner_system_failure`5631 is valid5632 with when from CommitStatus.failure_reasons `missing_dependency_failure`5633 is valid5634 with when from CommitStatus.failure_reasons `runner_unsupported`5635 is valid5636 with when from CommitStatus.failure_reasons `stale_schedule`5637 is valid5638 with when from CommitStatus.failure_reasons `job_execution_timeout`5639 is valid5640 with when from CommitStatus.failure_reasons `archived_failure`5641 is valid5642 with when from CommitStatus.failure_reasons `unmet_prerequisites`5643 is valid5644 with when from CommitStatus.failure_reasons `scheduler_failure`5645 is valid5646 with when from CommitStatus.failure_reasons `data_integrity_failure`5647 is valid5648 with when from CommitStatus.failure_reasons `forward_deployment_failure`5649 is valid5650 with when from CommitStatus.failure_reasons `user_blocked`5651 is valid5652 with when from CommitStatus.failure_reasons `project_deleted`5653 is valid5654 with when from CommitStatus.failure_reasons `ci_quota_exceeded`5655 is valid5656 with when from CommitStatus.failure_reasons `pipeline_loop_detected`5657 is valid5658 with when from CommitStatus.failure_reasons `no_matching_runner`5659 is valid5660 with when from CommitStatus.failure_reasons `trace_size_exceeded`5661 is valid5662 with when from CommitStatus.failure_reasons `builds_disabled`5663 is valid5664 with when from CommitStatus.failure_reasons `environment_creation_failure`5665 is valid5666 with when from CommitStatus.failure_reasons `deployment_rejected`5667 is valid5668 with when from CommitStatus.failure_reasons `failed_outdated_deployment_job`5669 is valid5670 with when from CommitStatus.failure_reasons `protected_environment_failure`5671 is valid5672 with when from CommitStatus.failure_reasons `insufficient_bridge_permissions`5673 is valid5674 with when from CommitStatus.failure_reasons `downstream_bridge_project_not_found`5675 is valid5676 with when from CommitStatus.failure_reasons `invalid_bridge_trigger`5677 is valid5678 with when from CommitStatus.failure_reasons `upstream_bridge_project_not_found`5679 is valid5680 with when from CommitStatus.failure_reasons `insufficient_upstream_permissions`5681 is valid5682 with when from CommitStatus.failure_reasons `bridge_pipeline_is_child_pipeline`5683 is valid5684 with when from CommitStatus.failure_reasons `downstream_pipeline_creation_failed`5685 is valid5686 with when from CommitStatus.failure_reasons `secrets_provider_not_found`5687 is valid5688 with when from CommitStatus.failure_reasons `reached_max_descendant_pipelines_depth`5689 is valid5690 with when from CommitStatus.failure_reasons `ip_restriction_failure`5691 is valid5692 with when from CommitStatus.failure_reasons `reached_max_pipeline_hierarchy_size`5693 is valid5694 when retry value is not correct5695 when it is not a numeric nor an array5696 returns error about invalid type5697 when it is a numeric5698 when it is lower than zero5699 returns error about value too low5700 when it is not an integer5701 returns error about wrong value5702 when the value is too high5703 returns error about value too high5704 when it is a hash5705 with unknown keys5706 returns error about the unknown key5707 with max lower than zero5708 returns error about value too low5709 with max not an integer5710 returns error about wrong value5711 iwth max too high5712 returns error about value too high5713 with when in wrong format5714 returns error about the wrong format5715 with an unknown when string5716 returns error about the wrong format5717 with an unknown failure reason in a when array5718 returns error about the wrong format5719IssuableExportCsvWorker5720 when issuable type is Issue5721 emails a CSV5722 ensures that project_id is passed to issues_finder5723 defines the loggable_arguments5724 removes sort parameter5725 calls the issue export service5726 with params5727 allows symbol access for IssuesFinder5728 when issuable type is MergeRequest5729 emails a CSV5730 calls the MR export service5731 calls the MergeRequest finder5732 behaves like export with selected fields5733 calls the export service with selected fields5734 for type WorkItem5735 emails a CSV5736 calls the work item export service5737 calls the WorkItemsFinder5738 behaves like export with selected fields5739 calls the export service with selected fields5740 when issuable type is User5741 is expected to raise ArgumentError5742Gitlab::Database::GitlabSchema5743 .deleted_views_and_tables_to_schema5744 all tables and views have assigned a known gitlab_schema5745 .views_and_tables_to_schema5746 all tables and views have assigned a known gitlab_schema5747 all tables and views are unique5748 for /builds/edith007/gitlab/db/docs5749 validates 'main' using 'ActiveRecord::Base'5750 new data sources are added5751 non-existing data sources are removed5752 validates 'ci' using 'Ci::ApplicationRecord'5753 new data sources are added5754 non-existing data sources are removed5755 .dictionary_path_globs5756 returns an array of path globs5757 returns an array of path globs5758 returns an array of path globs5759 returns an array of path globs5760 .tables_to_schema5761 returns only tables5762 .views_to_schema5763 returns only views5764 .table_schemas!5765 returns the matched schemas5766 when one of the tables does not have a matching table schema5767 raises error5768 .table_schema5769 behaves like maps table name to table schema5770 name: "ci_builds", classification: :gitlab_ci5771 is expected to eq :gitlab_ci5772 name: "my_schema.ci_builds", classification: :gitlab_ci5773 is expected to eq :gitlab_ci5774 name: "my_schema.ci_runner_machine_builds_100", classification: :gitlab_ci5775 is expected to eq :gitlab_ci5776 name: "my_schema._test_gitlab_main_table", classification: :gitlab_main5777 is expected to eq :gitlab_main5778 name: "information_schema.columns", classification: :gitlab_internal5779 is expected to eq :gitlab_internal5780 name: "audit_events_part_5fc467ac26", classification: :gitlab_main5781 is expected to eq :gitlab_main5782 name: "_test_gitlab_main_table", classification: :gitlab_main5783 is expected to eq :gitlab_main5784 name: "_test_gitlab_ci_table", classification: :gitlab_ci5785 is expected to eq :gitlab_ci5786 name: "_test_gitlab_main_clusterwide_table", classification: :gitlab_main_clusterwide5787 is expected to eq :gitlab_main_clusterwide5788 name: "_test_gitlab_main_cell_table", classification: :gitlab_main_cell5789 is expected to eq :gitlab_main_cell5790 name: "_test_gitlab_pm_table", classification: :gitlab_pm5791 is expected to eq :gitlab_pm5792 name: "_test_my_table", classification: :gitlab_shared5793 is expected to eq :gitlab_shared5794 name: "pg_attribute", classification: :gitlab_internal5795 is expected to eq :gitlab_internal5796 when mapping fails5797 is expected to be nil5798 when an index name is used as the table name5799 is expected to be nil5800 .table_schema!5801 behaves like maps table name to table schema5802 name: "ci_builds", classification: :gitlab_ci5803 is expected to eq :gitlab_ci5804 name: "my_schema.ci_builds", classification: :gitlab_ci5805 is expected to eq :gitlab_ci5806 name: "my_schema.ci_runner_machine_builds_100", classification: :gitlab_ci5807 is expected to eq :gitlab_ci5808 name: "my_schema._test_gitlab_main_table", classification: :gitlab_main5809 is expected to eq :gitlab_main5810 name: "information_schema.columns", classification: :gitlab_internal5811 is expected to eq :gitlab_internal5812 name: "audit_events_part_5fc467ac26", classification: :gitlab_main5813 is expected to eq :gitlab_main5814 name: "_test_gitlab_main_table", classification: :gitlab_main5815 is expected to eq :gitlab_main5816 name: "_test_gitlab_ci_table", classification: :gitlab_ci5817 is expected to eq :gitlab_ci5818 name: "_test_gitlab_main_clusterwide_table", classification: :gitlab_main_clusterwide5819 is expected to eq :gitlab_main_clusterwide5820 name: "_test_gitlab_main_cell_table", classification: :gitlab_main_cell5821 is expected to eq :gitlab_main_cell5822 name: "_test_gitlab_pm_table", classification: :gitlab_pm5823 is expected to eq :gitlab_pm5824 name: "_test_my_table", classification: :gitlab_shared5825 is expected to eq :gitlab_shared5826 name: "pg_attribute", classification: :gitlab_internal5827 is expected to eq :gitlab_internal5828 when mapping fails5829 raises error5830 when testing cross schema access5831 .cross_joins_allowed?5832 schemas: [], result: true5833 is expected to eq true5834 schemas: [:gitlab_main_clusterwide, :gitlab_main], result: true5835 is expected to eq true5836 schemas: [:gitlab_main_clusterwide, :gitlab_ci], result: false5837 is expected to eq false5838 schemas: [:gitlab_main_clusterwide, :gitlab_main, :gitlab_ci], result: false5839 is expected to eq false5840 schemas: [:gitlab_main_clusterwide, :gitlab_internal], result: false5841 is expected to eq false5842 schemas: [:gitlab_main, :gitlab_ci], result: false5843 is expected to eq false5844 schemas: [:gitlab_main_clusterwide, :gitlab_main, :gitlab_shared], result: true5845 is expected to eq true5846 schemas: [:gitlab_main_clusterwide, :gitlab_shared], result: true5847 is expected to eq true5848 .cross_transactions_allowed?5849 schemas: [], result: true5850 is expected to eq true5851 schemas: [:gitlab_main_clusterwide, :gitlab_main], result: true5852 is expected to eq true5853 schemas: [:gitlab_main_clusterwide, :gitlab_ci], result: false5854 is expected to eq false5855 schemas: [:gitlab_main_clusterwide, :gitlab_main, :gitlab_ci], result: false5856 is expected to eq false5857 schemas: [:gitlab_main_clusterwide, :gitlab_internal], result: true5858 is expected to eq true5859 schemas: [:gitlab_main, :gitlab_ci], result: false5860 is expected to eq false5861 schemas: [:gitlab_main_clusterwide, :gitlab_main, :gitlab_shared], result: true5862 is expected to eq true5863 schemas: [:gitlab_main_clusterwide, :gitlab_shared], result: true5864 is expected to eq true5865 .cross_foreign_key_allowed?5866 schemas: [], result: false5867 is expected to eq false5868 schemas: [:gitlab_main_clusterwide, :gitlab_main], result: true5869 is expected to eq true5870 schemas: [:gitlab_main_clusterwide, :gitlab_ci], result: false5871 is expected to eq false5872 schemas: [:gitlab_main_clusterwide, :gitlab_internal], result: false5873 is expected to eq false5874 schemas: [:gitlab_main, :gitlab_ci], result: false5875 is expected to eq false5876 schemas: [:gitlab_main_clusterwide, :gitlab_shared], result: false5877 is expected to eq false5878DiffsEntity5879 as json5880 contains needed attributes5881 broken merge request5882 renders without errors5883 when a commit_id is passed5884 when the passed commit is not the first or last in the group5885 includes commit references for previous and next5886 when the passed commit is the first in the group5887 includes commit references for nil and previous commit5888 when the passed commit is the last in the group5889 includes commit references for the next and nil5890 diff_files5891 serializes diff files using DiffFileEntity5892 when there are conflicts5893 serializes diff files with conflicts5894Groups::GroupLinks::CreateService#execute5895 when user has proper membership to share a group5896 behaves like shareable5897 adds group to another group5898 when sharing outside the hierarchy is disabled5899 behaves like not shareable5900 does not share and returns an error5901 when group is inside hierarchy5902 behaves like shareable5903 adds group to another group5904 project authorizations based on group hierarchies5905 project authorizations refresh5906 is executed only for the direct members of the group5907 project authorizations5908 group user5909 create proper authorizations5910 parent group user5911 create proper authorizations5912 child group user5913 create proper authorizations5914 user does not have access to group5915 behaves like not shareable5916 does not share and returns an error5917 user does not have admin access to shared group5918 behaves like not shareable5919 does not share and returns an error5920 when group is blank5921 does not share and returns an error5922 when shared_with_group is blank5923 behaves like not shareable5924 does not share and returns an error5925EventCollection5926 # order random5927 #to_a5928 returns no events if no projects are passed5929 with project events5930 returns an Array of all event types when no filter is passed5931 includes the wiki page events when using to_a5932 includes the design events5933 includes the wiki page events when using all_project_events5934 applies a limit to the number of events5935 can paginate through events5936 returns an empty Array when crossing the maximum page number5937 allows filtering of events using an EventFilter, returning single item5938 allows filtering of events using an EventFilter, returning several items5939 allows filtering of events using an EventFilter, returning pushes5940 when there are multiple issue events5941 includes work item events too5942 with group events5943 includes also group events5944 does not include events from inaccessible groups5945 with pagination through events5946 returns recent groups and projects events5947 with project exclusive event types5948 filter: "push", event: lazy { create(:push_event, project: project) }5949 queries only project events5950 filter: "merged", event: lazy { create(:event, :merged, project: project, target: merge_request) }5951 queries only project events5952 filter: "team", event: lazy { create(:event, :joined, project: project) }5953 queries only project events5954 filter: "issue", event: lazy { create(:closed_issue_event, project: project) }5955 queries only project events5956 filter: "designs", event: lazy { create(:design_event, project: project) }5957 queries only project events5958DiffFileEntity5959 when there is no merge request5960 behaves like diff file entity5961 exposes correct attributes5962 behaves like diff file base entity5963 exposes essential attributes5964 when diff file does not have a blob and content sha5965 exposes some attributes as nil5966 when a viewer5967 matches the schema5968 when it is a whitespace only change5969 has whitespace_only true5970 when the highlighted lines arent shown5971 has whitespace_only nil5972 when it is a new file5973 has whitespace_only false5974 when it is a collapsed file5975 has whitespace_only false5976 diff files5977 when diff_view is parallel5978 contains only the parallel diff lines5979 when diff_view is parallel5980 contains only the inline diff lines5981 when there is a merge request5982 exposes additional attributes5983 points all urls to merge request target project5984 exposes load_collapsed_diff_url if the file viewer is collapsed5985 behaves like diff file entity5986 exposes correct attributes5987 behaves like diff file base entity5988 exposes essential attributes5989 when diff file does not have a blob and content sha5990 exposes some attributes as nil5991 when a viewer5992 matches the schema5993 when it is a whitespace only change5994 has whitespace_only true5995 when the highlighted lines arent shown5996 has whitespace_only nil5997 when it is a new file5998 has whitespace_only false5999 when it is a collapsed file6000 has whitespace_only false6001 diff files6002 when diff_view is parallel6003 contains only the parallel diff lines6004 when diff_view is parallel6005 contains only the inline diff lines6006 when diff_view is unknown6007 hides highlighted_diff_lines and parallel_diff_lines6008 #parallel_diff_lines6009 exposes parallel diff lines correctly6010 #highlighted_diff_lines6011 calls diff_lines_for_serializer on diff_file6012 behaves like diff file with conflict_type6013 #conflict_type6014 returns nil by default6015 when there is matching conflict file6016 returns false6017SystemNotes::CommitService6018 #add_commits6019 behaves like a system note6020 has the correct attributes6021 note body6022 comparison diff link line6023 adds the comparison text6024 without existing commits6025 adds a message header6026 adds a message for each commit6027 with HTML content6028 escapes HTML titles6029 with one commit exceeding the NEW_COMMIT_DISPLAY_LIMIT6030 includes the truncated new commits summary6031 with oldrev6032 includes the truncated new commits summary with the oldrev6033 with multiple commits exceeding the NEW_COMMIT_DISPLAY_LIMIT6034 includes the truncated new commits summary6035 with oldrev6036 includes the truncated new commits summary with the oldrev6037 summary line for existing commits6038 with one existing commit6039 includes the existing commit6040 with new commits exceeding the display limit6041 includes the existing commit as well as the truncated new commit summary6042 with multiple existing commits6043 with oldrev6044 includes a commit range and count6045 with new commits exceeding the display limit6046 includes the existing commit as well as the truncated new commit summary6047 without oldrev6048 includes a commit range and count6049 with new commits exceeding the display limit6050 includes the existing commit as well as the truncated new commit summary6051 on a fork6052 includes the project namespace6053 #tag_commit6054 sets the note text6055 behaves like a system note6056 has the correct attributes6057Ci::ArchiveTraceService#execute6058 when job is finished6059 creates an archived trace6060 integration hooks6061 is expected not to raise Exception6062 when trace is already archived6063 ignores an exception6064 does not create an archived trace6065 when live trace chunks still exist6066 removes the trace chunks6067 when associated data does not exist6068 removes the trace artifact and builds a new one6069 when the job is out of archival attempts6070 skips archiving6071 leaves a warning message in sidekiq log6072 job has archive and chunks6073 removes trace chunks6074 archive is not completed6075 cleanups any stale archive data6076 when the archival process is backed off6077 skips archiving6078 leaves a warning message in sidekiq log6079 when job is running6080 increments Prometheus counter, sends crash report to Sentry and ignore an error for continuing to archive6081 #batch_execute6082 archives multiple traces6083 processes traces independently6084 when timeout is reached6085 stops executing traces6086 when loop limit is reached6087 skips archiving6088 stops executing traces6089Gitlab::SidekiqConfig::WorkerMatcher6090 #match?6091 with valid input6092 query: "worker_name=WorkerA", expected_metadatas: ["WorkerA"]6093 is expected to contain exactly "WorkerA"6094 query: "worker_name=WorkerA2", expected_metadatas: ["WorkerA2"]6095 is expected to contain exactly "WorkerA2"6096 query: "worker_name=WorkerB|worker_name=WorkerD", expected_metadatas: ["WorkerB"]6097 is expected to contain exactly "WorkerB"6098 query: "worker_name!=WorkerA", expected_metadatas: ["WorkerA2", "WorkerB", "WorkerC"]6099 is expected to contain exactly "WorkerA2", "WorkerB", and "WorkerC"6100 query: "feature_category=category_a", expected_metadatas: ["WorkerA", "WorkerA2"]6101 is expected to contain exactly "WorkerA" and "WorkerA2"6102 query: "feature_category=category_a,category_c", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerC"]6103 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerC"6104 query: "feature_category=category_a|feature_category=category_c", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerC"]6105 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerC"6106 query: "feature_category!=category_a", expected_metadatas: ["WorkerB", "WorkerC"]6107 is expected to contain exactly "WorkerB" and "WorkerC"6108 query: "has_external_dependencies=true", expected_metadatas: ["WorkerB"]6109 is expected to contain exactly "WorkerB"6110 query: "has_external_dependencies=false", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerC"]6111 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerC"6112 query: "has_external_dependencies=true,false", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]6113 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"6114 query: "has_external_dependencies=true|has_external_dependencies=false", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]6115 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"6116 query: "has_external_dependencies!=true", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerC"]6117 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerC"6118 query: "urgency=high", expected_metadatas: ["WorkerA2", "WorkerB"]6119 is expected to contain exactly "WorkerA2" and "WorkerB"6120 query: "urgency=low", expected_metadatas: ["WorkerA"]6121 is expected to contain exactly "WorkerA"6122 query: "urgency=high,low,throttled", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]6123 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"6124 query: "urgency=low|urgency=throttled", expected_metadatas: ["WorkerA", "WorkerC"]6125 is expected to contain exactly "WorkerA" and "WorkerC"6126 query: "urgency!=high", expected_metadatas: ["WorkerA", "WorkerC"]6127 is expected to contain exactly "WorkerA" and "WorkerC"6128 query: "name=a", expected_metadatas: ["WorkerA"]6129 is expected to contain exactly "WorkerA"6130 query: "name=a,b", expected_metadatas: ["WorkerA", "WorkerB"]6131 is expected to contain exactly "WorkerA" and "WorkerB"6132 query: "name=a,a:2|name=b", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB"]6133 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerB"6134 query: "name!=a,a:2", expected_metadatas: ["WorkerB", "WorkerC"]6135 is expected to contain exactly "WorkerB" and "WorkerC"6136 query: "resource_boundary=memory", expected_metadatas: ["WorkerB", "WorkerC"]6137 is expected to contain exactly "WorkerB" and "WorkerC"6138 query: "resource_boundary=memory,cpu", expected_metadatas: ["WorkerA", "WorkerB", "WorkerC"]6139 is expected to contain exactly "WorkerA", "WorkerB", and "WorkerC"6140 query: "resource_boundary=memory|resource_boundary=cpu", expected_metadatas: ["WorkerA", "WorkerB", "WorkerC"]6141 is expected to contain exactly "WorkerA", "WorkerB", and "WorkerC"6142 query: "resource_boundary!=memory,cpu", expected_metadatas: ["WorkerA2"]6143 is expected to contain exactly "WorkerA2"6144 query: "tags=no_disk_io", expected_metadatas: ["WorkerA", "WorkerB"]6145 is expected to contain exactly "WorkerA" and "WorkerB"6146 query: "tags=no_disk_io,git_access", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB"]6147 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerB"6148 query: "tags=no_disk_io|tags=git_access", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB"]6149 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerB"6150 query: "tags=no_disk_io&tags=git_access", expected_metadatas: ["WorkerA"]6151 is expected to contain exactly "WorkerA"6152 query: "tags!=no_disk_io", expected_metadatas: ["WorkerA2", "WorkerC"]6153 is expected to contain exactly "WorkerA2" and "WorkerC"6154 query: "tags!=no_disk_io,git_access", expected_metadatas: ["WorkerC"]6155 is expected to contain exactly "WorkerC"6156 query: "tags=unknown_tag", expected_metadatas: []6157 is expected to contain exactly6158 query: "tags!=no_disk_io", expected_metadatas: ["WorkerA2", "WorkerC"]6159 is expected to contain exactly "WorkerA2" and "WorkerC"6160 query: "tags!=no_disk_io,git_access", expected_metadatas: ["WorkerC"]6161 is expected to contain exactly "WorkerC"6162 query: "tags!=unknown_tag", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]6163 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"6164 query: "feature_category=category_a&urgency=high", expected_metadatas: ["WorkerA2"]6165 is expected to contain exactly "WorkerA2"6166 query: "feature_category=category_a&urgency=high|feature_category=category_c", expected_metadatas: ["WorkerA2", "WorkerC"]6167 is expected to contain exactly "WorkerA2" and "WorkerC"6168 query: "*", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]6169 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"6170 with invalid input6171 query: "feature_category=\"category_a\"", error: Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm6172 is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm6173 query: "feature_category=", error: Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm6174 is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm6175 query: "feature_category~category_a", error: Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm6176 is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm6177 query: "invalid_term=a", error: Gitlab::SidekiqConfig::WorkerMatcher::UnknownPredicate6178 is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::UnknownPredicate6179CiPlatformMetric6180 behaves like a BulkInsertSafe model6181 when calling class methods directly6182 raises an error when method is not bulk-insert safe6183 does not raise an error when method is bulk-insert safe6184 .bulk_insert!6185 when all items are valid6186 inserts them all6187 returns an empty array6188 when some items are invalid6189 does not insert any of them and raises an error6190 inserts them anyway when bypassing validations6191 validations6192 is expected to validate that :recorded_at cannot be empty/falsy6193 is expected to validate that :count cannot be empty/falsy6194 is expected to validate that :count looks like an integer greater than 06195 is expected to allow :platform_target to be ‹""›6196 is expected not to allow :platform_target to be ‹nil›6197 is expected to validate that the length of :platform_target is at most 2556198 .insert_auto_devops_platform_targets!6199 when there is already existing metrics data6200 does not erase any existing data6201 when there are multiple platform target variables6202 inserts platform target counts for that day6203 when there are invalid ci variable values for platform_target6204 ignores those values6205 when there are no platform target variables6206 does not generate any new platform metrics6207ExtractsPath6208 #assign_ref_vars6209 log tree path has no escape sequences6210 behaves like assigns ref vars6211 assigns the repository var6212 ref contains %206213 is not converted to a space in @id6214 ref contains trailing space6215 strips surrounding space6216 ref contains leading space6217 strips surrounding space6218 path contains space6219 is not converted to %20 in @path6220 subclass overrides get_id6221 uses ref returned by get_id6222 ref contains space in the middle6223 returns 4046224 ref only exists without .atom suffix6225 with a path6226 renders a 4046227 without a path6228 sets the un-suffixed version as @ref6229 sets the request format to Atom6230 ref exists with .atom suffix6231 with a path6232 sets the suffixed version as @ref6233 does not change the request format6234 without a path6235 sets the suffixed version as @ref6236 does not change the request format6237 ref and path are nil6238 does not set commit6239 ref points to a previous default branch6240 redirects to the new default branch for a GET request6241 redirects to the new default branch for a HEAD request6242 returns 404 for any other request type6243 redirect behaviour is disabled6244 returns 404 for a GET request6245 behaves like extracts refs6246 #extract_ref6247 returns an empty pair when no repository_container is set6248 without a path6249 extracts a valid branch6250 extracts a valid tag6251 extracts a valid commit ref without a path6252 falls back to a primitive split for an invalid ref6253 does not fetch ref names when there is no slash6254 fetches ref names when there is a slash6255 with a path6256 extracts a valid branch6257 extracts a valid tag6258 extracts a valid commit SHA6259 falls back to a primitive split for an invalid ref6260 extracts the longest matching ref6261 when the repository does not have ambiguous refs6262 does not fetch all ref names when the first path component is a ref6263 fetches all ref names when the first path component is not a ref6264 when the repository has ambiguous refs6265 always fetches all ref names6266 #extract_ref_without_atom6267 ignores any matching refs suffixed with atom6268 returns the longest matching ref6269 raises an error if there are no matching refs6270SafeFormatHelper6271 # order random6272 #safe_format6273 behaves like safe formatting6274 is expected to eq ""6275 is expected to be html safe6276 behaves like safe formatting6277 is expected to eq "Foo"6278 is expected to be html safe6279 behaves like safe formatting6280 is expected to eq "<b>strong</b>"6281 is expected to be html safe6282 behaves like safe formatting6283 is expected to eq "<b>strong</b>"6284 is expected to be html safe6285 behaves like safe formatting6286 is expected to eq "<b>strong</b> <a href="">link</a>"6287 is expected to be html safe6288 when format is marked as html_safe6289 behaves like safe formatting6290 is expected to eq "<b>strong</b>"6291 is expected to be html safe6292 with multiple args6293 behaves like safe formatting6294 is expected to eq "<a>c</a> <x>z</x>"6295 is expected to be html safe6296 with a view component6297 safetly formats6298 with format containing escaped entities6299 behaves like safe formatting6300 is expected to eq "In < hour"6301 is expected to be html safe6302 behaves like safe formatting6303 is expected to eq ""air""6304 is expected to be html safe6305 behaves like safe formatting6306 is expected to eq "Mix & match > all"6307 is expected to be html safe6308 #tag_pair6309 plain_tag: "", open: nil, close: nil6310 is expected to eq {}6311 plain_tag: "a", open: nil, close: nil6312 is expected to eq {}6313 plain_tag: "<a", open: nil, close: nil6314 is expected to eq {}6315 plain_tag: "<a>", open: nil, close: nil6316 is expected to eq {}6317 plain_tag: "<a><a>", open: nil, close: nil6318 is expected to eq {}6319 plain_tag: "<input/>", open: nil, close: nil6320 is expected to eq {}6321 plain_tag: "<a></a>", open: "<a>", close: "</a>"6322 is expected to eq {:tag_close=>"</a>", :tag_open=>"<a>"}6323 is expected to be all6324 plain_tag: "<a href=\"\">x</a>", open: "<a href=\"\">", close: "</a>"6325 is expected to eq {:tag_close=>"</a>", :tag_open=>"<a href=\"\">"}6326 is expected to be all6327 when tag is not html_safe6328 raises an ArgumentError6329Gitlab::Ci::Build::Rules::Rule::Clause::Changes6330 #satisfied_by?6331 a glob matching rule6332 exact top-level match6333 is expected to eq true6334 exact top-level no match6335 is expected to eq false6336 pattern top-level match6337 is expected to eq true6338 pattern top-level no match6339 is expected to eq false6340 exact nested match6341 is expected to eq true6342 exact nested no match6343 is expected to eq false6344 pattern nested match6345 is expected to eq true6346 pattern nested no match6347 is expected to eq false6348 ext top-level match6349 is expected to eq true6350 ext nested no match6351 is expected to eq false6352 ext slash no match6353 is expected to eq false6354 when pipeline is nil6355 is expected to be truthy6356 when using variable expansion6357 when context is nil6358 is expected to be falsey6359 when modified paths are nil6360 is expected to be truthy6361 when context has the specified variables6362 is expected to be truthy6363 when variable expansion does not match6364 is expected to be truthy6365 when using compare_to6366 when compare_to is branch or tag6367 pipeline_ref: "feature_1", compare_to: "master", paths: ["file1.txt"], result: true6368 is expected to eq true6369 pipeline_ref: "feature_1", compare_to: "master", paths: ["README.md"], result: false6370 is expected to eq false6371 pipeline_ref: "feature_1", compare_to: "master", paths: ["xyz.md"], result: false6372 is expected to eq false6373 pipeline_ref: "feature_2", compare_to: "master", paths: ["file1.txt"], result: true6374 is expected to eq true6375 pipeline_ref: "feature_2", compare_to: "master", paths: ["file2.txt"], result: true6376 is expected to eq true6377 pipeline_ref: "feature_2", compare_to: "feature_1", paths: ["file1.txt"], result: false6378 is expected to eq false6379 pipeline_ref: "feature_2", compare_to: "feature_1", paths: ["file2.txt"], result: true6380 is expected to eq true6381 pipeline_ref: "feature_1", compare_to: "tag_1", paths: ["file1.txt"], result: false6382 is expected to eq false6383 pipeline_ref: "feature_1", compare_to: "tag_1", paths: ["file2.txt"], result: true6384 is expected to eq true6385 pipeline_ref: "feature_2", compare_to: "tag_1", paths: ["file2.txt"], result: true6386 is expected to eq true6387 when compare_to is a sha6388 is expected to be truthy6389 when compare_to is not a valid ref6390 raises ParseError6391Timelogs::CreateService6392 #execute6393 when issuable is an Issue6394 behaves like issuable supports timelog creation service6395 when the user does not have permission6396 returns an error6397 when the user has permissions6398 when spent_at is in the future6399 returns an error6400 when time_spent is zero6401 returns an error6402 when time_spent is nil6403 returns an error6404 when the timelog save fails6405 returns an error6406 when the creation completes sucessfully6407 behaves like success_response6408 sucessfully saves the timelog6409 when issuable is a MergeRequest6410 behaves like issuable supports timelog creation service6411 when the user does not have permission6412 returns an error6413 when the user has permissions6414 when spent_at is in the future6415 returns an error6416 when time_spent is zero6417 returns an error6418 when time_spent is nil6419 returns an error6420 when the timelog save fails6421 returns an error6422 when the creation completes sucessfully6423 behaves like success_response6424 sucessfully saves the timelog6425 when issuable is a WorkItem6426 behaves like issuable supports timelog creation service6427 when the user does not have permission6428 returns an error6429 when the user has permissions6430 when spent_at is in the future6431 returns an error6432 when time_spent is zero6433 returns an error6434 when time_spent is nil6435 returns an error6436 when the timelog save fails6437 returns an error6438 when the creation completes sucessfully6439 behaves like success_response6440 sucessfully saves the timelog6441 when issuable is an Incident6442 behaves like issuable supports timelog creation service6443 when the user does not have permission6444 returns an error6445 when the user has permissions6446 when spent_at is in the future6447 returns an error6448 when time_spent is zero6449 returns an error6450 when time_spent is nil6451 returns an error6452 when the timelog save fails6453 returns an error6454 when the creation completes sucessfully6455 behaves like success_response6456 sucessfully saves the timelog6457Sbom::PackageUrl::ArgumentValidator6458 # order random6459 with multiple errors6460 reports all errors6461 with valid arguments6462 valid maven purl6463 does not raise error6464 basic valid maven purl without version6465 does not raise error6466 valid go purl without version and with subpath6467 does not raise error6468 valid go purl with version and subpath6469 does not raise error6470 bitbucket namespace and name should be lowercased6471 does not raise error6472 github namespace and name should be lowercased6473 does not raise error6474 debian can use qualifiers6475 does not raise error6476 docker uses qualifiers and hash image id as versions6477 does not raise error6478 Java gem can use a qualifier6479 does not raise error6480 maven often uses qualifiers6481 does not raise error6482 maven pom reference6483 does not raise error6484 maven can come with a type qualifier6485 does not raise error6486 npm can be scoped6487 does not raise error6488 nuget names are case sensitive6489 does not raise error6490 pypi names have special rules and not case sensitive6491 does not raise error6492 rpm often use qualifiers6493 does not raise error6494 slash / after scheme is not significant6495 does not raise error6496 double slash // after scheme is not significant6497 does not raise error6498 slash /// after type is not significant6499 does not raise error6500 valid maven purl with case sensitive namespace and name6501 does not raise error6502 valid maven purl containing a space in the version and qualifier6503 does not raise error6504 valid conan purl6505 does not raise error6506 valid conan purl with namespace and qualifier channel6507 does not raise error6508 valid conda purl with qualifiers6509 does not raise error6510 valid cran purl6511 does not raise error6512 valid swift purl6513 does not raise error6514 valid hackage purl6515 does not raise error6516 with invalid arguments6517 a scheme is always required6518 raises an ArgumentError6519 a type is always required6520 raises an ArgumentError6521 a name is required6522 raises an ArgumentError6523 checks for invalid qualifier keys6524 raises an ArgumentError6525 invalid conan purl only namespace6526 raises an ArgumentError6527 invalid conan purl only channel qualifier6528 raises an ArgumentError6529 invalid cran purl without name6530 raises an ArgumentError6531 invalid cran purl without version6532 raises an ArgumentError6533 invalid swift purl without namespace6534 raises an ArgumentError6535 invalid swift purl without name6536 raises an ArgumentError6537 invalid swift purl without version6538 raises an ArgumentError6539 name and version are always required6540 raises an ArgumentError6541RepositoryCheck::BatchWorker6542 prefers projects that have never been checked6543 sorts projects by last_repository_check_at6544 excludes projects that were checked recently6545 excludes projects on another shard6546 does nothing when repository checks are disabled6547 does nothing when shard is unhealthy6548 skips projects created less than 24 hours ago6549 does not run if the exclusive lease is taken6550groups/edit.html.haml6551 "Share with group lock" setting6552 for a root group6553 behaves like "Share with group lock" setting6554 has the correct label, help text, and checkbox options6555 for a subgroup6556 when the root_group has "Share with group lock" disabled6557 when the subgroup has "Share with group lock" disabled6558 as the root_owner6559 behaves like "Share with group lock" setting6560 has the correct label, help text, and checkbox options6561 as the sub_owner6562 behaves like "Share with group lock" setting6563 has the correct label, help text, and checkbox options6564 when the subgroup has "Share with group lock" enabled6565 as the root_owner6566 behaves like "Share with group lock" setting6567 has the correct label, help text, and checkbox options6568 as the sub_owner6569 behaves like "Share with group lock" setting6570 has the correct label, help text, and checkbox options6571 when the root_group has "Share with group lock" enabled6572 when the subgroup has "Share with group lock" disabled (parent overridden)6573 as the root_owner6574 behaves like "Share with group lock" setting6575 has the correct label, help text, and checkbox options6576 as the sub_owner6577 behaves like "Share with group lock" setting6578 has the correct label, help text, and checkbox options6579 when the subgroup has "Share with group lock" enabled (same as parent)6580 as the root_owner6581 behaves like "Share with group lock" setting6582 has the correct label, help text, and checkbox options6583 as the sub_owner6584 behaves like "Share with group lock" setting6585 has the correct label, help text, and checkbox options6586 ip_restriction6587 prompt user about registration features6588 with service ping disabled6589 renders a placeholder input with registration features message6590 with service ping enabled6591 does not render a placeholder input with registration features message6592Gitlab::ImportExport::CommandLineUtil6593 #download_or_copy_upload6594 when the upload is local6595 copies the file6596 when the upload is remote6597 downloads the file6598 #download6599 a non-localhost uri6600 with ok status code6601 gets the contents6602 streams the contents via Gitlab::HTTP6603 does not get the content over the size_limit6604 gets the content within the size_limit6605 with a redirect status code MOVED_PERMANENTLY6606 logs the redirect6607 with a redirect status code FOUND6608 logs the redirect6609 with a redirect status code SEE_OTHER6610 logs the redirect6611 with a redirect status code TEMPORARY_REDIRECT6612 logs the redirect6613 with an invalid status code ACCEPTED6614 throws an error6615 with an invalid status code UNAUTHORIZED6616 throws an error6617 with an invalid status code BAD_REQUEST6618 throws an error6619 a localhost uri6620 throws a blocked url error6621 for object_storage uri6622 gets the content6623 #gzip6624 compresses specified file6625 when exception occurs6626 raises an exception6627 #gunzip6628 decompresses specified file6629 when exception occurs6630 raises an exception6631 #tar_cf6632 archives a folder without compression6633 when something goes wrong6634 raises an error6635 #untar_zxf6636 has the right mask for project.json6637 has the right mask for uploads6638 behaves like deletes symlinks6639 deletes the symlinks6640 behaves like handles shared hard links6641 raises an exception and deletes the extraction dir6642 #untar_xf6643 extracts archive without decompression6644 behaves like deletes symlinks6645 deletes the symlinks6646 behaves like handles shared hard links6647 raises an exception and deletes the extraction dir6648 when something goes wrong6649 raises an error6650 returns false and includes error status6651Gitlab::Seeders::Ci::Runner::RunnerFleetSeeder6652 # order random6653 #seed6654 creates expected hierarchy6655 when number of group runners exceeds plan limit6656The plan limits for group runners is set to 1 runners. You should raise the plan limits to avoid errors during runner creation by running the following command in the Rails console:6657Plan.default.actual_limits.update!(ci_registered_group_runners: 20)6658 is expected to be nil6659The plan limits for group runners is set to 1 runners. You should raise the plan limits to avoid errors during runner creation by running the following command in the Rails console:6660Plan.default.actual_limits.update!(ci_registered_group_runners: 20)6661 does not change runner count6662 when number of project runners exceeds plan limit6663The plan limits for project runners is set to 1 runners. You should raise the plan limits to avoid errors during runner creation by running the following command in the Rails console:6664Plan.default.actual_limits.update!(ci_registered_project_runners: 20)6665 is expected to be nil6666The plan limits for project runners is set to 1 runners. You should raise the plan limits to avoid errors during runner creation by running the following command in the Rails console:6667Plan.default.actual_limits.update!(ci_registered_project_runners: 20)6668 does not change runner count6669JoinedGroupsFinder6670 #execute6671 without a user6672 only shows public groups from profile owner6673 with a user6674 when the profile visitor is in the private group6675 only shows groups where both users are authorized to see6676 if profile visitor is in one of the private group projects6677 shows group6678 external users6679 if not a member6680 does not show internal groups6681 if authorized6682 shows internal groups if authorized6683Users::CreditCardValidation6684 is expected to belong to user required: false6685 is expected to validate that the length of :holder_name is at most 506686 is expected to validate that the length of :network is at most 326687 is expected to validate that :last_digits looks like a number less than or equal to 99996688 .similar_records6689 returns matches with the same last_digits, expiration and network, ordered by credit_card_validated_at6690 #similar_holder_names_count6691 when holder_name is present6692 returns the count of cards with similar case insensitive holder names6693 when holder_name is nil6694 returns 06695 scopes6696 .by_banned_user6697 returns only records associated to banned users6698 .similar_by_holder_name6699 returns only records that case-insensitive match the given holder name6700 when given holder name is falsey6701 returns [] when given holder name is ""6702 returns [] when given holder name is nil6703 .similar_to6704 returns only records with similar expiration_date, last_digits, and network attribute values6705 #used_by_banned_user?6706 when there is a similar credit card associated to a banned user6707 is expected to be used by banned user6708 when holder names do not match6709 is expected not to be used by banned user6710 when .similar_to returns nothing6711 is expected not to be used by banned user6712 when there is a similar credit card not associated to a banned user6713 is expected not to be used by banned user6714Gitlab::Ci::Reports::TestSuiteComparer6715 #new_failures6716 when head suite has a newly failed test case which does not exist in base6717 returns the failed test case6718 when head suite still has a failed test case which failed in base6719 does not return the failed test case6720 when head suite has a success test case which failed in base6721 does not return the failed test case6722 #existing_failures6723 when head suite has a newly failed test case which does not exist in base6724 returns the failed test case6725 when head suite still has a failed test case which failed in base6726 does not return the failed test case6727 when head suite has a success test case which failed in base6728 does not return the failed test case6729 #resolved_failures6730 when head suite has a newly failed test case which does not exist in base6731 returns the failed test case6732 returns the correct resolved count6733 when head suite still has a failed test case which failed in base6734 does not return the failed test case6735 returns the correct resolved count6736 when head suite has a success test case which failed in base6737 does not return the resolved test case6738 returns the correct resolved count6739 #new_errors6740 when head suite has a new error test case which does not exist in base6741 returns the error test case6742 when head suite still has an error test case which errored in base6743 does not return the error test case6744 when head suite has a success test case which errored in base6745 does not return the error test case6746 #existing_errors6747 when head suite has a new error test case which does not exist in base6748 does not return the error test case6749 when head suite still has an error test case which errored in base6750 returns the error test case6751 when head suite has a success test case which errored in base6752 does not return the error test case6753 #resolved_errors6754 when head suite has a new error test case which does not exist in base6755 does not return the error test case6756 returns the correct resolved count6757 when head suite still has an error test case which errored in base6758 does not return the error test case6759 returns the correct resolved count6760 when head suite has a success test case which errored in base6761 returns the resolved test case6762 returns the correct resolved count6763 #total_count6764 returns the total test counts in head suite6765 #failed_count6766 when there are a new failure and an existing failure6767 returns the correct count6768 when there is a new failure6769 returns the correct count6770 when there is an existing failure6771 returns the correct count6772 #total_status6773 when all test cases in head suite are success6774 returns the total status in head suite6775 when there is a failed test case in head suite6776 returns the total status in head suite as failed6777 when there is an error test case in head suite6778 returns the total status in head suite as failed6779 #limited_tests6780 limits amount of tests returned6781 prefers new over existing and resolved6782 returns 2 of each new category, and 1 of each resolved and existing6783 does not affect the overall count6784 prefers existing over resolved6785 returns 2 of each existing category, and 1 of each resolved6786 does not affect the overall count6787 limits amount of resolved6788 returns 2 of each resolved category6789 does not affect the overall count6790Sidebars::Projects::Menus::AnalyticsMenu6791 # order random6792 Menu items6793 CI/CD6794 is expected not to be nil6795 when the project repository is empty6796 is expected to be nil6797 when builds access level is DISABLED6798 is expected to be nil6799 when the user does not have access6800 is expected to be nil6801 Repository6802 is expected not to be nil6803 when the project repository is empty6804 is expected to be nil6805 when a user does not have access to repository graphs6806 is expected to be nil6807 when the user does not have access6808 is expected to be nil6809 Value Stream6810 is expected not to be nil6811 when the user does not have access6812 is expected to be nil6813 when issues are disabled6814 is expected not to be nil6815 when merge requests are disabled6816 is expected not to be nil6817 when the issues and merge requests are disabled6818 is expected to be nil6819 #link6820 returns link to the value stream page6821 when Value Stream is not visible6822 returns link to the the first visible menu item6823 #render?6824 whe user cannot read analytics6825 returns false6826 whe user can read analytics6827 returns true6828 when menu does not have any menu items6829 returns false6830 when menu has menu items6831 returns true6832Clusters::Agents::Authorizations::CiAccess::Finder6833 # order random6834 #execute6835 project authorizations6836 agent configuration project does not share a root namespace with the given project6837 is expected to be empty6838 agent configuration project shares a root namespace, but does not belong to an ancestor of the given project6839 is expected to contain exactly #<Clusters::Agents::Authorizations::CiAccess::ProjectAuthorization id: 2, project_id: 952, agent_id: 1, config: {"default_namespace"=>"production"}>6840 with project authorizations present6841 is expected to contain exactly #<Clusters::Agents::Authorizations::CiAccess::ProjectAuthorization id: 3, project_id: 952, agent_id: 3, config: {"default_namespace"=>"production"}>6842 with overlapping authorizations6843 is expected to contain exactly #<Clusters::Agents::Authorizations::CiAccess::ProjectAuthorization id: 4, project_id: 952, agent_id: 5, config: {"default_namespace"=>"production"}>6844 behaves like access_as6845 agent6846 is expected to contain exactly #<Clusters::Agents::Authorizations::CiAccess::ProjectAuthorization id: 5, project_id: 952, agent_id: 3, config: {"access_as"=>{"agent"=>{}}}>6847 impersonate6848 is expected to be empty6849 ci_user6850 is expected to be empty6851 ci_job6852 is expected to be empty6853 implicit authorizations6854 returns authorizations for agents directly associated with the project6855 authorized groups6856 agent configuration project is outside the requesting project hierarchy6857 is expected to be empty6858 multiple agents are authorized for the same group6859 returns authorizations for all agents6860 a single agent is authorized to more than one matching group6861 picks the authorization for the closest group to the requesting project6862 agent configuration project does not belong to an ancestor of the authorized group6863 is expected to contain exactly #<Clusters::Agents::Authorizations::CiAccess::GroupAuthorization id: 7, group_id: 3108, agent_id: 1, config: {"default_namespace"=>"production"}>6864 behaves like access_as6865 agent6866 is expected to contain exactly #<Clusters::Agents::Authorizations::CiAccess::GroupAuthorization id: 8, group_id: 3105, agent_id: 3, config: {"access_as"=>{"agent"=>{}}}>6867 impersonate6868 is expected to be empty6869 ci_user6870 is expected to be empty6871 ci_job6872 is expected to be empty6873Gitlab::I18n::Pluralization6874 # order random6875 .call6876 with available locales6877 locale: "bg"6878 supports pluralization6879 locale: "cs_CZ"6880 supports pluralization6881 locale: "da_DK"6882 supports pluralization6883 locale: "de"6884 supports pluralization6885 locale: "en"6886 supports pluralization6887 locale: "eo"6888 supports pluralization6889 locale: "es"6890 supports pluralization6891 locale: "fil_PH"6892 supports pluralization6893 locale: "fr"6894 supports pluralization6895 locale: "gl_ES"6896 supports pluralization6897 locale: "id_ID"6898 supports pluralization6899 locale: "it"6900 supports pluralization6901 locale: "ja"6902 supports pluralization6903 locale: "ko"6904 supports pluralization6905 locale: "nb_NO"6906 supports pluralization6907 locale: "nl_NL"6908 supports pluralization6909 locale: "pl_PL"6910 supports pluralization6911 locale: "pt_BR"6912 supports pluralization6913 locale: "ro_RO"6914 supports pluralization6915 locale: "ru"6916 supports pluralization6917 locale: "si_LK"6918 supports pluralization6919 locale: "tr_TR"6920 supports pluralization6921 locale: "uk"6922 supports pluralization6923 locale: "zh_CN"6924 supports pluralization6925 locale: "zh_HK"6926 supports pluralization6927 locale: "zh_TW"6928 supports pluralization6929 with missing rules6930 raises an ArgumentError6931 .install_on6932 adds pluralisation_rule method6933Gitlab::GithubImport::Importer::NoteImporter6934 #execute6935 produces a valid Note6936 skips markdown field cache callback6937 when the noteable exists6938 when the author could be found6939 imports the note with the found author as the note author6940 when the note author could not be found6941 imports the note with the project creator as the note author6942 when the note have invalid chars6943 removes invalid chars6944 when note is invalid6945 fails validation6946 when the noteable does not exist6947 does not import the note6948 when the import fails due to a foreign key error6949 does not raise any errors6950 #find_noteable_id6951 returns the ID of the noteable6952Pages::ZipDirectoryService6953 returns true if ZIP64 is enabled6954 when work directory doesn't exist6955 returns success6956 when public directory is absent6957 returns success6958 when public directory is a symlink6959 returns success6960 when there is a public directory6961 creates the file next the public directory6962 includes public directory6963 returns number of entries6964 removes the old file if it exists6965 ignores other top level files and directories6966 includes index.html file6967 includes hidden file6968 includes nested directories and files6969 adds a valid symlink6970 includes raw symlink if it's target is a valid directory6971 when symlink points outside of public directory6972 raises error6973 when errors are ignored6974 does not create entry6975 when target of the symlink is absent6976 raises error6977 when errors are ignored6978 does not create entry6979 when targets itself6980 raises error6981 when errors are ignored6982 does not create entry6983 when symlink is absolute and points to outside of directory6984 raises error6985 when errors are ignored6986 does not create entry6987 when entry has unknown ftype6988 raises error6989 when errors are ignored6990 does not create entry6991 validating fixtures pages archives6992 fixture_path: "spec/fixtures/pages.zip"6993 a created archives contains exactly the same entries6994 fixture_path: "spec/fixtures/pages_non_writeable.zip"6995 a created archives contains exactly the same entries6996Ci::RefDeleteUnlockArtifactsWorker6997 #perform6998 is labeled as idempotent6999 performs multiple times sequentially without raising an exception7000 unlocks the artifacts from older pipelines7001 when project exists7002 when user exists7003 when ci ref exists for project7004 calls the service7005 when a locked pipeline with persisted artifacts exists7006 logs the correct extra metadata7007 when ci ref does not exist for the given project7008 does not call the service7009 when same ref path exists for a different project7010 calls the service with the correct ref_id7011 when user does not exist7012 does not call service7013 when project does not exist7014 does not call service7015Todos::Destroy::ConfidentialIssueService7016 #execute7017 when issue_id parameter is present7018 when provided issue is confidential7019 removes issue todos for users who can not access the confidential issue7020 when provided issue is not confidential7021 does not remove any todos7022 when project_id parameter is present7023 removes issues todos for users that cannot access confidential issues7024Ci::NamespaceMirror7025 scopes7026 .by_group_and_descendants7027 returns groups having group2.id in traversal_ids7028 .contains_any_of_namespaces7029 returns groups having group2.id in traversal_ids7030 .contains_traversal_ids7031 when passing a top-level group7032 returns only itself and children of that group7033 when passing many levels of groups7034 returns only the asked group7035 when passing invalid data7036 data is properly sanitised7037 .by_namespace_id7038 returns namespace mirrors of namespace id7039 .sync!7040 when namespace mirror does not exist in the first place7041 creates the mirror7042 when namespace mirror does already exist7043 updates the mirror7044Gitlab::Middleware::HandleMalformedStrings7045 does not modify the env7046 in the URL7047 rejects null bytes7048 rejects escaped null bytes7049 rejects malformed strings7050 rejects escaped malformed strings7051 in authorization headers7052 does not reject correct non-basic-auth tokens7053 does not reject correct encoded password with special characters7054 behaves like rejecting invalid input7055 rejects problematic input in the password7056 rejects problematic input in the username7057 rejects problematic input in non-basic-auth tokens7058 behaves like rejecting invalid input7059 rejects problematic input in the password7060 rejects problematic input in the username7061 rejects problematic input in non-basic-auth tokens7062 behaves like rejecting invalid input7063 rejects problematic input in the password7064 rejects problematic input in the username7065 rejects problematic input in non-basic-auth tokens7066 in params7067 with null byte7068 gives up and does not reject too deeply nested params7069 behaves like checks params7070 rejects bad params in a top level param7071 rejects bad params for hashes with strings7072 rejects bad params for arrays with strings7073 rejects bad params for arrays containing hashes with string values7074 with malformed strings7075 behaves like checks params7076 rejects bad params in a top level param7077 rejects bad params for hashes with strings7078 rejects bad params for arrays with strings7079 rejects bad params for arrays containing hashes with string values7080 without problematic input7081 does not error for strings7082 does not error with no params7083Packages::Conan::PackageFinder7084 #execute7085 visibility: :private, role: :maintainer, packages_visible: true7086 is expected to eq [#<Packages::Package id: 79, project_id: 981, created_at: "2023-08-13 07:30:53.049610448 +0000", upda...e_type: "conan", creator_id: 2007, status: "default", last_downloaded_at: nil, status_message: nil>]7087 visibility: :private, role: :developer, packages_visible: true7088 is expected to eq [#<Packages::Package id: 79, project_id: 981, created_at: "2023-08-13 07:30:53.049610448 +0000", upda...e_type: "conan", creator_id: 2007, status: "default", last_downloaded_at: nil, status_message: nil>]7089 visibility: :private, role: :reporter, packages_visible: true7090 is expected to eq [#<Packages::Package id: 79, project_id: 981, created_at: "2023-08-13 07:30:53.049610448 +0000", upda...e_type: "conan", creator_id: 2007, status: "default", last_downloaded_at: nil, status_message: nil>]7091 visibility: :private, role: :guest, packages_visible: false7092 is expected to eq []7093 visibility: :private, role: :anonymous, packages_visible: false7094 is expected to eq []7095 visibility: :internal, role: :maintainer, packages_visible: true7096 is expected to eq [#<Packages::Package id: 79, project_id: 981, created_at: "2023-08-13 07:30:53.049610448 +0000", upda...e_type: "conan", creator_id: 2007, status: "default", last_downloaded_at: nil, status_message: nil>]7097 visibility: :internal, role: :developer, packages_visible: true7098 is expected to eq [#<Packages::Package id: 79, project_id: 981, created_at: "2023-08-13 07:30:53.049610448 +0000", upda...e_type: "conan", creator_id: 2007, status: "default", last_downloaded_at: nil, status_message: nil>]7099 visibility: :internal, role: :reporter, packages_visible: true7100 is expected to eq [#<Packages::Package id: 79, project_id: 981, created_at: "2023-08-13 07:30:53.049610448 +0000", upda...e_type: "conan", creator_id: 2007, status: "default", last_downloaded_at: nil, status_message: nil>]7101 visibility: :internal, role: :guest, packages_visible: true7102 is expected to eq [#<Packages::Package id: 79, project_id: 981, created_at: "2023-08-13 07:30:53.049610448 +0000", upda...e_type: "conan", creator_id: 2007, status: "default", last_downloaded_at: nil, status_message: nil>]7103 visibility: :internal, role: :anonymous, packages_visible: false7104 is expected to eq []7105 visibility: :public, role: :maintainer, packages_visible: true7106 is expected to eq [#<Packages::Package id: 79, project_id: 981, created_at: "2023-08-13 07:30:53.049610448 +0000", upda...e_type: "conan", creator_id: 2007, status: "default", last_downloaded_at: nil, status_message: nil>]7107 visibility: :public, role: :developer, packages_visible: true7108 is expected to eq [#<Packages::Package id: 79, project_id: 981, created_at: "2023-08-13 07:30:53.049610448 +0000", upda...e_type: "conan", creator_id: 2007, status: "default", last_downloaded_at: nil, status_message: nil>]7109 visibility: :public, role: :reporter, packages_visible: true7110 is expected to eq [#<Packages::Package id: 79, project_id: 981, created_at: "2023-08-13 07:30:53.049610448 +0000", upda...e_type: "conan", creator_id: 2007, status: "default", last_downloaded_at: nil, status_message: nil>]7111 visibility: :public, role: :guest, packages_visible: true7112 is expected to eq [#<Packages::Package id: 79, project_id: 981, created_at: "2023-08-13 07:30:53.049610448 +0000", upda...e_type: "conan", creator_id: 2007, status: "default", last_downloaded_at: nil, status_message: nil>]7113 visibility: :public, role: :anonymous, packages_visible: true7114 is expected to eq [#<Packages::Package id: 79, project_id: 981, created_at: "2023-08-13 07:30:53.049610448 +0000", upda...e_type: "conan", creator_id: 2007, status: "default", last_downloaded_at: nil, status_message: nil>]7115 with project7116 is expected to contain exactly #<Packages::Package id: 79, project_id: 981, created_at: "2023-08-13 07:30:53.049610448 +0000", updat...ge_type: "conan", creator_id: 2007, status: "default", last_downloaded_at: nil, status_message: nil> and #<Packages::Package id: 77, project_id: 981, created_at: "2023-08-13 07:30:52.717849724 +0000", updat...ge_type: "conan", creator_id: 2007, status: "default", last_downloaded_at: nil, status_message: nil>7117 respects the limit7118 with a different project7119 is expected to contain exactly #<Packages::Package id: 83, project_id: 982, created_at: "2023-08-13 07:30:53.694227667 +0000", updat...ge_type: "conan", creator_id: 2009, status: "default", last_downloaded_at: nil, status_message: nil>7120Sidebars::Projects::Menus::SettingsMenu7121 #render?7122 returns false when menu does not have any menu items7123 #separated?7124 returns true7125 Menu items7126 General7127 behaves like access rights checks7128 is expected not to be nil7129 when the user does not have access7130 is expected to be nil7131 Integrations7132 behaves like access rights checks7133 is expected not to be nil7134 when the user does not have access7135 is expected to be nil7136 Webhooks7137 behaves like access rights checks7138 is expected not to be nil7139 when the user does not have access7140 is expected to be nil7141 Access Tokens7142 behaves like access rights checks7143 is expected not to be nil7144 when the user does not have access7145 is expected to be nil7146 Repository7147 behaves like access rights checks7148 is expected not to be nil7149 when the user does not have access7150 is expected to be nil7151 CI/CD7152 when project is archived7153 is expected to be nil7154 when project is not archived7155 is expected not to be nil7156 when the user does not have access7157 is expected to be nil7158 Monitor7159 when project is archived7160 is expected to be nil7161 when project is not archived7162 is expected not to be nil7163 is expected to eq "Monitor"7164 when the user does not have access7165 is expected to be nil7166 Merge requests7167 behaves like access rights checks7168 is expected not to be nil7169 when the user does not have access7170 is expected to be nil7171 Packages and registries7172 when container registry setting is disabled7173 is expected to be nil7174 when container registry setting is enabled7175 is expected not to be nil7176 when the user does not have access7177 is expected to be nil7178 when package registry setting is enabled7179 is expected not to be nil7180 when the user does not have access7181 is expected to be nil7182 Usage Quotas7183 is expected not to be nil7184 when the user does not have access7185 is expected to be nil7186Todos::Destroy::DesignService7187 #execute7188 when the design has been archived7189 removes todos for that design7190 when no design has been archived7191 does not remove any todos7192Clusters::Agents::ActivityEvent7193 is expected to belong to agent class_name => Clusters::Agent required: true7194 is expected to belong to user optional: true7195 is expected to belong to agent_token class_name => Clusters::AgentToken optional: true7196 is expected to validate that :kind cannot be empty/falsy7197 is expected to validate that :level cannot be empty/falsy7198 is expected to validate that :recorded_at cannot be empty/falsy7199 is expected to nullify if blank :detail7200 scopes7201 .in_timeline_order7202 sorts by recorded_at: :desc, id: :desc7203 .recorded_before7204 returns only events recorded before the cutoff7205Gitlab::Ci::Components::InstancePath7206 # order random7207 FQDN path7208 when project exists7209 provides the expected attributes7210 when content exists7211 when user has permissions to read code7212 fetches the content7213 when user does not have permissions to download code7214 raises an error when fetching the content7215 when project path is nested under a subgroup7216 provides the expected attributes7217 when current GitLab instance is installed on a relative URL7218 provides the expected attributes7219 when version does not exist7220 provides the expected attributes7221 returns nil when fetching the content7222 when version is `~latest`7223 when project has releases7224 returns the sha of the latest release7225 when project does not have releases7226 is expected to be nil7227 when project does not exist7228 provides the expected attributes7229 returns nil when fetching the content7230Verify/Load-Performance-Testing.gitlab-ci.yml7231 the created pipeline7232 has no errors7233 on master7234 behaves like load_performance job on tag or branch7235 by default7236 on another branch7237 behaves like load_performance job on tag or branch7238 by default7239 on tag7240 behaves like load_performance job on tag or branch7241 by default7242 on merge request7243 has no jobs7244Gitlab::HotlinkingDetector7245 .intercept_hotlinking?7246 hotlinked as media7247 return_value: false, accept_header: "*/*"7248 is expected to equal false7249 return_value: false, accept_header: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"7250 is expected to equal false7251 return_value: false, accept_header: "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"7252 is expected to equal false7253 return_value: false, accept_header: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"7254 is expected to equal false7255 return_value: false, accept_header: "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"7256 is expected to equal false7257 return_value: false, accept_header: "image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/msword, */*"7258 is expected to equal false7259 return_value: false, accept_header: "text/html, application/xhtml+xml, image/jxr, */*"7260 is expected to equal false7261 return_value: false, accept_header: "text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1"7262 is expected to equal false7263 return_value: true, accept_header: "image/webp,*/*"7264 is expected to equal true7265 return_value: true, accept_header: "image/png,image/*;q=0.8,*/*;q=0.5"7266 is expected to equal true7267 return_value: true, accept_header: "image/webp,image/apng,image/*,*/*;q=0.8"7268 is expected to equal true7269 return_value: true, accept_header: "image/png,image/svg+xml,image/*;q=0.8, */*;q=0.5"7270 is expected to equal true7271 return_value: true, accept_header: "video/webm,video/ogg,video/*;q=0.9,application/ogg;q=0.7,audio/*;q=0.6,*/*;q=0.5"7272 is expected to equal true7273 return_value: true, accept_header: "audio/webm,audio/ogg,audio/wav,audio/*;q=0.9,application/ogg;q=0.7,video/*;q=0.6,*/*;q=0.5"7274 is expected to equal true7275 return_value: true, accept_header: "text/css,*/*;q=0.1"7276 is expected to equal true7277 return_value: true, accept_header: "text/css"7278 is expected to equal true7279 return_value: true, accept_header: "text/css,*/*;q=0.1"7280 is expected to equal true7281 return_value: true, accept_header: "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"7282 is expected to equal true7283 hotlinked as a script7284 return_value: false, fetch_mode: "navigate"7285 is expected to equal false7286 return_value: false, fetch_mode: "nested-navigate"7287 is expected to equal false7288 return_value: false, fetch_mode: "same-origin"7289 is expected to equal false7290 return_value: true, fetch_mode: "cors"7291 is expected to equal true7292 return_value: true, fetch_mode: "no-cors"7293 is expected to equal true7294 return_value: true, fetch_mode: "websocket"7295 is expected to equal true7296BoardProjectRecentVisit7297 relationships7298 is expected to belong to user required: false7299 is expected to belong to project required: false7300 is expected to belong to board required: false7301 validations7302 is expected to validate that :user cannot be empty/falsy7303 is expected to validate that :project cannot be empty/falsy7304 is expected to validate that :board cannot be empty/falsy7305 behaves like boards recent visit7306 #visited7307 creates a visit if one does not exists7308 behaves like was visited previously7309 updates the timestamp7310 when we try to create a visit that is not unique7311 behaves like was visited previously7312 updates the timestamp7313 #latest7314 returns the most recent visited7315 returns last 3 visited boards7316ContainerExpirationPolicyWorker7317 #perform7318 process cleanups7319 calls the limited capacity worker7320 with exclusive lease taken7321 does not do anything7322 process stale ongoing cleanups7323 set them as unfinished7324 policies without container repositories7325 disables them7326 counts logging7327 logs all the counts7328 with load balancing enabled7329 reads the counts from the replica7330Ci::DropPipelineWorker7331 #perform7332 calls delegates to the service7333 behaves like an idempotent worker7334 is labeled as idempotent7335 performs multiple times sequentially without raising an exception7336 executes the service7337Packages::Rpm::RepositoryMetadata::UpdateXmlService7338 # order random7339 #execute7340 when building empty xml7341 behaves like handling not implemented xml filename7342 raise error7343 for 'primary' xml file7344 behaves like generating empty xml7345 generate expected xml7346 for 'other' xml file7347 behaves like generating empty xml7348 generate expected xml7349 for 'filelist' xml file7350 behaves like generating empty xml7351 generate expected xml7352 when updating xml file7353 behaves like handling not implemented xml filename7354 raise error7355 for 'primary' xml file7356 behaves like updating rpm xml file7357 when updating existing xml7358 generate valid xml add expected xml node to existing xml7359 when empty xml7360 behaves like changing root tag attribute7361 increment previous 'packages' value by 17362 when xml has children7363 when node with given 'pkgid' does not exist yet7364 has children nodes7365 behaves like changing root tag attribute7366 increment previous 'packages' value by 17367 when node with given 'pkgid' already exist7368 has children nodes7369 replace existing node with new data7370 for 'other' xml file7371 behaves like updating rpm xml file7372 when updating existing xml7373 generate valid xml add expected xml node to existing xml7374 when empty xml7375 behaves like changing root tag attribute7376 increment previous 'packages' value by 17377 when xml has children7378 when node with given 'pkgid' does not exist yet7379 has children nodes7380 behaves like changing root tag attribute7381 increment previous 'packages' value by 17382 when node with given 'pkgid' already exist7383 has children nodes7384 replace existing node with new data7385 for 'filelist' xml file7386 behaves like updating rpm xml file7387 when updating existing xml7388 generate valid xml add expected xml node to existing xml7389 when empty xml7390 behaves like changing root tag attribute7391 increment previous 'packages' value by 17392 when xml has children7393 when node with given 'pkgid' does not exist yet7394 has children nodes7395 behaves like changing root tag attribute7396 increment previous 'packages' value by 17397 when node with given 'pkgid' already exist7398 has children nodes7399 replace existing node with new data7400Deployments::HooksWorker7401 #perform7402 logs deployment and project IDs as metadata7403 executes project services for deployment_hooks7404 does not execute an inactive service7405 does not execute if a deployment does not exist7406 execute webhooks7407 behaves like worker with data consistency7408 .get_data_consistency_feature_flag_enabled?7409 returns true7410 .get_data_consistency7411 returns correct data consistency7412Gitlab::BackgroundTask7413 when stopped7414 is not running7415 #start7416 runs the given task on a background thread7417 returns self7418 when installing exit handler7419 stops a running background task7420 when task responds to start7421 calls start7422 when start returns true7423 runs the task7424 when start returns false7425 does not run the task7426 when synchronous is set to true7427 calls join on the thread7428 #stop7429 is a no-op7430 when running7431 #start7432 raises an error7433 #stop7434 stops running7435 when task responds to stop7436 calls stop7437 when task stop raises an error7438 stops gracefully7439 reports the error7440 when task run raises exception7441#<Thread:0x00007ee190f6b198@test_background_task /builds/edith007/gitlab/lib/gitlab/background_task.rb:58 run> terminated with exception (report_on_exception is true):7442/builds/edith007/gitlab/spec/lib/gitlab/background_task_spec.rb:189:in `block (5 levels) in <top (required)>': task error (RuntimeError)7443 from /builds/edith007/gitlab/lib/gitlab/background_task.rb:60:in `block (2 levels) in start'7444 stops gracefully7445#<Thread:0x00007ee191e0a1e0@test_background_task /builds/edith007/gitlab/lib/gitlab/background_task.rb:58 run> terminated with exception (report_on_exception is true):7446/builds/edith007/gitlab/spec/lib/gitlab/background_task_spec.rb:189:in `block (5 levels) in <top (required)>': task error (RuntimeError)7447 from /builds/edith007/gitlab/lib/gitlab/background_task.rb:60:in `block (2 levels) in start'7448 reports the error7449Ci::RunnerNamespace7450 behaves like includes Limitable concern7451 #exceeds_limits?7452 without plan limits configured7453 is expected to eq false7454 without plan limits configured7455 is expected to eq false7456 with an existing model7457 is expected to eq true7458 validations7459 is expected to be a kind of Limitable7460 without plan limits configured7461 can create new models7462 with plan limits configured7463 can create new models7464 with an existing model7465 cannot create new models exceeding the plan limits7466 behaves like cleanup by a loose foreign key7467 cleans up (delete or nullify) the model7468 .for_runner7469 with runner ids7470 returns requested runner namespaces7471 with runners7472 returns requested runner namespaces7473Gitlab::Chat::Responder::Slack7474 #send_response7475 sends a response back to Slack7476 #success7477 returns the output for a successful build7478 limits the output to a fixed size7479 does not send a response if the output is empty7480 #failure7481 returns the output for a failed build7482 #scheduled_output7483 returns the output for a scheduled build7484KeysFinder7485 key_type7486 when `key_type` is `ssh`7487 returns only SSH keys7488 when `key_type` is not specified7489 returns all types of keys7490 fingerprint7491 with invalid fingerprint7492 with invalid MD5 fingerprint7493 raises InvalidFingerprint7494 with invalid SHA fingerprint7495 raises InvalidFingerprint7496 with valid fingerprints7497 personal key with valid MD5 params7498 with an existent fingerprint7499 returns the key7500 with FIPS mode7501 raises InvalidFingerprint7502 deploy key with an existent fingerprint7503 returns the key7504 with FIPS mode7505 raises InvalidFingerprint7506 with a non-existent fingerprint7507 returns nil7508 with FIPS mode7509 raises InvalidFingerprint7510 personal key with valid SHA256 params7511 with an existent fingerprint7512 returns key7513 deploy key with an existent fingerprint7514 returns key7515 with a non-existent fingerprint7516 returns nil7517 user7518 without user7519 contains ssh_keys of all users in the system7520 with user7521 contains ssh_keys of only the specified users7522 sort order7523 sorts in last_used_at_desc order7524AutoDevops::DisableWorker#perform7525 disables auto devops for project7526 when project owner is a user7527 sends an email to pipeline user and project owner(s)7528 when project does not have owner7529 sends an email to pipeline user7530 when pipeline is not related to a user and project does not have owner7531 does not send an email7532Gitlab::JiraImport::IssueSerializer7533 #execute7534 attributes setting7535 sets the basic attributes7536 creates a hash for valid issue7537 labels7538 creates all missing labels (on project level)7539 when there are no new labels7540 assigns the labels to the Issue hash7541 does not create new labels7542 author7543 when reporter maps to a valid GitLab user7544 sets the issue author to the mapped user7545 when reporter does not map to a valid Gitlab user7546 defaults the issue author to project creator7547 when reporter field is empty7548 defaults the issue author to project creator7549 when reporter field is missing accountId7550 defaults the issue author to project creator7551 assignee7552 when assignee maps to a valid GitLab user7553 sets the issue assignees to the mapped user7554 when assignee does not map to a valid GitLab user7555 leaves the assignee empty7556 when assginee field is empty7557 leaves the assignee empty7558 when assginee field is missing accountId7559 leaves the assignee empty7560 with jira server response7561 when assignee maps to a valid GitLab user7562 sets the issue assignees to the mapped user7563 with done status7564 maps the status to closed7565 without the iid7566 does not set the iid7567PagesDomainVerificationCronWorker7568 #perform7569 does nothing if the database is read-only7570 enqueues a PagesDomainVerificationWorker for domains needing verification7571 behaves like a pages cronjob scheduling jobs with context7572 schedules the renewal with a context7573 with RequestStore enabled7574 does not cause extra queries for multiple domains7575Tooling::Danger::SidekiqQueues7576 #changed_queue_files7577 modified_files: ["app/workers/all_queues.yml", "ee/app/workers/all_queues.yml", "foo"], changed_queue_files: ["app/workers/all_queues.yml", "ee/app/workers/all_queues.yml"]7578 is expected to contain exactly "app/workers/all_queues.yml" and "ee/app/workers/all_queues.yml"7579 modified_files: ["app/workers/all_queues.yml", "ee/app/workers/all_queues.yml"], changed_queue_files: ["app/workers/all_queues.yml", "ee/app/workers/all_queues.yml"]7580 is expected to contain exactly "app/workers/all_queues.yml" and "ee/app/workers/all_queues.yml"7581 modified_files: ["app/workers/all_queues.yml", "foo"], changed_queue_files: ["app/workers/all_queues.yml"]7582 is expected to contain exactly "app/workers/all_queues.yml"7583 modified_files: ["ee/app/workers/all_queues.yml", "foo"], changed_queue_files: ["ee/app/workers/all_queues.yml"]7584 is expected to contain exactly "ee/app/workers/all_queues.yml"7585 modified_files: ["foo"], changed_queue_files: []7586 is expected to contain exactly7587 modified_files: [], changed_queue_files: []7588 is expected to contain exactly7589 #added_queue_names7590 returns queue names added by this change7591 #changed_queue_names7592 returns names for queues whose attributes were changed7593 ignores removed queues7594Gitlab::EncryptedConfiguration7595 #initialize7596 accepts all args as optional fields7597 generates 32 byte key when provided a larger base key7598 generates 32 byte key when provided a smaller base key7599 throws an error when the base key is too small7600 when provided a config file but no key7601 throws an error when writing without a key7602 throws an error when reading without a key7603 when provided key and config file7604 #write7605 encrypts the file using the provided key7606 #read7607 reads yaml configuration7608 allows referencing top level keys via dot syntax7609 throws a custom error when referencing an invalid key map config7610 #change7611 changes yaml configuration7612 when provided previous_keys for rotation7613 #write7614 rotates the key when provided a new key7615 #read7616 supports reading using rotated config7617RepositoryCheck::SingleRepositoryWorker7618 skips when the project has no push events7619 fails when the project has push events and a broken repository7620 succeeds when the project repo is valid7621 fails if the wiki repository is broken7622 skips wikis when disabled7623 creates missing wikis7624Grafana::ProxyService7625 .from_cache7626 behaves like initializes an instance7627 initializes an instance of ProxyService class7628 #initialize7629 behaves like initializes an instance7630 initializes an instance of ProxyService class7631 #execute7632 with unsupported proxy path7633 proxy_path: "/api/vl/query_range"7634 returns API not supported error7635 proxy_path: "api/vl/query_range/"7636 returns API not supported error7637 proxy_path: "api/vl/labels"7638 returns API not supported error7639 proxy_path: "api/v2/query_range"7640 returns API not supported error7641 proxy_path: "../../../org/users"7642 returns API not supported error7643 with unsupported datasource_id7644 datasource_id: ""7645 returns API not supported error7646 datasource_id: "-1"7647 returns API not supported error7648 datasource_id: "1str"7649 returns API not supported error7650 datasource_id: "str1"7651 returns API not supported error7652 datasource_id: "../../1"7653 returns API not supported error7654 datasource_id: "1/../.."7655 returns API not supported error7656 datasource_id: "1\n1"7657 returns API not supported error7658 when grafana integration is not configured7659 returns API not supported error7660 with caching7661 when value not present in cache7662 returns nil7663 when value present in cache7664 returns cached value7665 call prometheus api7666 connection to grafana datasource succeeds7667 returns the http status code and body from prometheus7668 connection to grafana datasource fails7669 returns error7670Gitlab::BlamePresenter7671 precalculates necessary data on init7672 #groups7673 delegates #groups call to the blame7674 #first_line7675 delegates #first_line call to the blame7676 #commit_data7677 has the data necessary to render the view7678 renamed file7679 does not generate link to previous blame on initial commit7680 generates link link to previous blame7681Resolvers::DesignManagement::Version::DesignAtVersionResolver7682 #resolve7683 passing combinations of arguments7684 passing no arguments7685 behaves like a bad argument7686 generates an error7687 passing all arguments7688 behaves like a bad argument7689 generates an error7690 passing any two arguments7691 behaves like a bad argument7692 generates an error7693 passing id7694 finds the design7695 when the user cannot see designs7696 returns nothing7697 passing design_id7698 finds the design7699 when the user cannot see designs7700 returns nothing7701 passing filename7702 finds the design7703 when the user cannot see designs7704 returns nothing7705 attempting to retrieve an object not visible at this version7706 passing id7707 does not find the design7708 passing design_id7709 does not find the design7710 passing filename7711 does not find the design7712Gitlab::GithubImport::Importer::SingleEndpointIssueEventsImporter7713 is expected to includes the Gitlab::GithubImport::ParallelScheduling module7714 #importer_class7715 is expected to eq Gitlab::GithubImport::Importer::IssueEventImporter7716 #representation_class7717 is expected to eq Gitlab::GithubImport::Representation::IssueEvent7718 #sidekiq_worker_class7719 is expected to eq Gitlab::GithubImport::ImportIssueEventWorker7720 #object_type7721 is expected to eq :issue_event7722 #collection_method7723 is expected to eq :issue_timeline7724 #page_counter_id7725 is expected to eq "issues/1/issue_timeline"7726 #id_for_already_imported_cache7727 is expected to eq 17728 #collection_options7729 is expected to eq {:direction=>"asc", :sort=>"created", :state=>"all"}7730 #compose_associated_id!7731 when event type is cross-referenced7732 assigns event id7733 when event type isn't cross-referenced7734 doesn't assign event id7735 #each_object_to_import7736 triggers page number increment7737 with issues7738 imports each issue event page by page7739 with merge requests7740 imports each merge request event page by page7741 when page is already processed7742 doesn't process this page7743 when event is already processed7744 doesn't process this event7745Gitlab::Tracking::EventDefinition7746 has all definitions valid7747 #validate7748 attribute: :description, value: 17749 raise exception7750 attribute: :category, value: nil7751 raise exception7752 attribute: :action, value: nil7753 raise exception7754 attribute: :label_description, value: 17755 raise exception7756 attribute: :property_description, value: 17757 raise exception7758 attribute: :value_description, value: 17759 raise exception7760 attribute: :extra_properties, value: "smth"7761 raise exception7762 attribute: :product_stage, value: 17763 raise exception7764 attribute: :product_section, value: nil7765 raise exception7766 attribute: :product_group, value: nil7767 raise exception7768 attribute: :distributions, value: "be eb"7769 raise exception7770 attribute: :tiers, value: "pro"7771 raise exception7772 .definitions7773 has empty list when there are no definition files7774 has one metric when there is one file7775Gitlab::Git::User7776 .from_gitaly7777 is expected to eq #<Gitlab::Git::User:0x00007ee1a582e730 @username="janedoe", @name="Jane Doé", @email="janedoé@example.com", @gl_id="user-123", @timezone="Asia/Shanghai">7778 .from_gitlab7779 when no commit_email has been set7780 is expected to eq #<Gitlab::Git::User:0x00007ee194abe740 @username="user1078", @name="Sidney Jones2153", @email="alice@example.com", @gl_id="user-", @timezone="Asia/Shanghai">7781 when commit_email has been set7782 is expected to eq #<Gitlab::Git::User:0x00007ee195c82530 @username="user1079", @name="Sidney Jones2154", @email="bob@example.com", @gl_id="user-", @timezone="Asia/Shanghai">7783 #==7784 is expected to eq #<Gitlab::Git::User:0x00007ee196f19338 @username="janedoe", @name="Jane Doé", @email="janedoé@example.com", @gl_id="user-123", @timezone="Asia/Shanghai">7785 is expected not to eq #<Gitlab::Git::User:0x00007ee1982cc740 @username=nil, @name=nil, @email=nil, @gl_id=nil, @timezone="Asia/Shanghai">7786 is expected not to eq #<Gitlab::Git::User:0x00007ee199534540 @username="janedoex", @name="Jane Doé", @email="janedoé@example.com", @gl_id="user-123", @timezone="Asia/Shanghai">7787 is expected not to eq #<Gitlab::Git::User:0x00007ee19a7c01f0 @username="janedoe", @name="Jane Doéx", @email="janedoé@example.com", @gl_id="user-123", @timezone="Asia/Shanghai">7788 is expected not to eq #<Gitlab::Git::User:0x00007ee19b9a82c8 @username="janedoe", @name="Jane Doé", @email="janedoé@example.comx", @gl_id="user-123", @timezone="Asia/Shanghai">7789 is expected not to eq #<Gitlab::Git::User:0x00007ee19caa8a50 @username="janedoe", @name="Jane Doé", @email="janedoé@example.com", @gl_id="user-123x", @timezone="Asia/Shanghai">7790 is expected not to eq #<Gitlab::Git::User:0x00007ee19dac2260 @username="janedoe", @name="Jane Doé", @email="janedoé@example.com", @gl_id="user-123", @timezone="Etc/UTC">7791 when add_timezone_to_web_operations is disabled7792 ignores timezone arg and sets Etc/UTC by default7793 #to_gitaly7794 creates a Gitaly::User with the correct data7795DependencyProxy::FindCachedManifestService7796 #execute7797 when no manifest exists7798 successful head request7799 behaves like returning no manifest7800 returns a nil manifest7801 failed head request7802 behaves like returning no manifest7803 returns a nil manifest7804 when manifest exists7805 behaves like using the cached manifest7806 uses cached manifest instead of downloading one7807 when digest is stale7808 behaves like returning no manifest7809 returns a nil manifest7810 when the cached manifest is pending destruction7811 behaves like returning no manifest7812 returns a nil manifest7813 when the connection fails7814 behaves like using the cached manifest7815 uses cached manifest instead of downloading one7816 and no manifest is cached7817 behaves like returning an error7818 returns an error7819 when the connection is successful but with error in result7820 behaves like using the cached manifest7821 uses cached manifest instead of downloading one7822 and no manifest is cached7823 behaves like returning no manifest7824 returns a nil manifest7825RuboCop::Formatter::TodoFormatter7826 # order random7827 without offenses detected7828 without existing TODOs7829 does not output anything7830 does not write any YAML files7831 with existing TODOs7832 when existing offenses only7833 does not output anything7834 does not write any YAML files7835 when in grace period7836 outputs its actions7837 creates YAML file with Details only7838 with offenses detected7839 outputs its actions7840 creates YAML files7841 with existing HAML exclusions7842 does not remove them7843 when cop previously not explicitly disabled7844 does not disable cop7845 when cop previously explicitly disabled in rubocop_todo/7846 keeps cop disabled7847 when cop previously explicitly disabled in rubocop_todo.yml7848 keeps cop disabled7849 with grace period7850 in rubocop_todo/7851 behaves like keeps grace period7852 keeps Details: grace period7853 in rubocop_todo.yml7854 behaves like keeps grace period7855 keeps Details: grace period7856 with invalid details value7857 ignores the details and warns7858 and previously disabled7859 raises an exception7860 with cop configuration in both .rubocop_todo/ and .rubocop_todo.yml7861 raises an error7862 without files to inspect7863 does not output anything7864 does not write any YAML files7865Gitlab::Database::Partitioning::PartitionManager7866 creating partitions (mocked)7867 when the given table is partitioned7868 creates the partition7869 with explicitly provided connection7870 uses the explicitly provided connection when any7871 when an ArgumentError occurs during partition management7872 raises error7873 when an error occurs during partition management7874 does not raise an error7875 when the table is not partitioned7876 does not try creating the partitions7877 creating partitions7878 creates partitions7879 detaching partitions (mocked)7880 detaches each extra partition7881 logs an error if the partitions are not detachable7882 #detach_partitions7883 detaches exactly one partition7884 detaches the old partition7885 deletes zero tables7886 creates the appropriate PendingPartitionDrop entry7887 when the model is the target of a foreign key7888 does not detach partitions with a referenced foreign key7889 creating and then detaching partitions for a table7890 creates partitions for the future then drops the oldest one after a month7891notify/change_in_merge_request_draft_status_email.html.haml7892 shows user added draft status on email7893 shows user removed draft status on email7894 renders the email correctly7895AuthorizedProjectUpdate::UserRefreshWithLowUrgencyWorker7896 is labeled as low urgency7897 behaves like refreshes user's project authorizations7898 #perform7899 refreshes user's authorized projects7900 when the user is not found7901 does nothing7902 behaves like an idempotent worker7903 is labeled as idempotent7904 performs multiple times sequentially without raising an exception7905 does not change authorizations when run twice7906Gitlab::Database::HealthStatus7907 # order random7908 .evaluate7909 returns the signal of the given indicator7910 does not log signals of no interest7911 with default indicators7912 returns a collection of signals7913 with stop signals7914 with batched migrations as the status checker7915 captures BatchedMigration class name in the log7916 with sidekiq deferred job as the status checker7917 captures sidekiq job class in the log7918 on indicator error7919 does not fail7920 returns Unknown signal7921 reports the exception to error tracking7922Lfs::PushService7923 does nothing if there are no LFS objects7924 #execute7925 uploads the object when upload is requested7926 does not upload the object when upload is not requested7927 verifies the upload if requested7928 skips verification if requested but upload fails7929 returns a failure when submitting a batch fails7930 returns a failure when submitting an upload fails7931 non-project-repository LFS objects7932 only tries to upload the project-repository LFS object7933Gitlab::Ci::Status::Build::Manual7934 #illustration7935 is expected to include :image, :size, :title, and :content7936 when the user can trigger the job7937 when the job has not been played7938 instructs the user about possible actions7939 when the job is retryable7940 instructs the user about possible actions7941 when the user can not trigger the job because of outdated deployment7942 is expected to match /This deployment job does not run automatically and must be started manually, but it's older than the latest deployment, and therefore can't run/7943 when the user can not trigger the job due to another reason7944 informs the user7945 .matches?7946 when build is manual7947 is a correct match7948 when build is not manual7949 does not match7950Constraints::GroupUrlConstrainer7951 #matches?7952 valid request7953 is expected to be truthy7954 valid request for nested group7955 is expected to be truthy7956 valid request for nested group with reserved top level name7957 is expected to be truthy7958 invalid request7959 is expected to be falsey7960 when the request matches a redirect route7961 for a root group7962 and is a GET request7963 is expected to be truthy7964 and is NOT a GET request7965 is expected to be falsey7966 for a nested group7967 is expected to be truthy7968InitializerConnections7969 .raise_if_new_database_connection7970 prevents any database connection within the block7971 prevents any database connection re-use within the block7972 does not prevent database connection if SKIP_RAISE_ON_INITIALIZE_CONNECTIONS is set7973 prevents any database connection if SKIP_RAISE_ON_INITIALIZE_CONNECTIONS is false7974 restores original connection handler7975 restores original connection handler even there is an error7976 does not raise if connection_pool is retrieved in the block7977Tooling::Danger::DatabaseDictionary7978 # order random7979 #database_dictionary_files7980 retrieves added database dictionary files7981 with added added database dictionary files7982 returns an array of Found objects7983 without added added database dictionary files7984 returns an array of Found objects7985 retrieves modified database dictionary files7986 with modified modified database dictionary files7987 returns an array of Found objects7988 without modified modified database dictionary files7989 returns an array of Found objects7990 retrieves deleted database dictionary files7991 with deleted deleted database dictionary files7992 returns an array of Found objects7993 without deleted deleted database dictionary files7994 returns an array of Found objects7995 Tooling::Danger::DatabaseDictionary::Found7996 #table_name7997 returns value from the YAML7998 #classes7999 returns value from the YAML8000 #feature_categories8001 returns value from the YAML8002 #description8003 returns value from the YAML8004 #introduced_by_url8005 returns value from the YAML8006 #milestone8007 returns value from the YAML8008 #gitlab_schema8009 returns value from the YAML8010 #raw8011 returns the raw YAML8012 #ci_schema?8013 is expected to be truthy8014 with main schema8015 is expected to be falsey8016 #main_schema?8017 is expected to be falsey8018 with main schema8019 is expected to be truthy8020Sidebars::YourWork::Menus::MergeRequestsMenu8021 # order random8022 #pill_count8023 returns the assigned_open_merge_requests_count of the user8024 memoizes the query8025 submenu items8026 order: 0, title: "Assigned", key: :assigned8027 renders items in the right order8028 when there are no MR counts8029 shows a pill even though count is zero8030 when there are MR counts8031 shows a pill with the correct count8032 order: 1, title: "Review requests", key: :review_requested8033 renders items in the right order8034 when there are no MR counts8035 shows a pill even though count is zero8036 when there are MR counts8037 shows a pill with the correct count8038 #has_pill?8039 when count is zero8040 returns false8041 when count is larger than zero8042 returns true8043BulkImports::FinishBatchedRelationExportWorker8044 # order random8045 #perform8046 behaves like an idempotent worker8047 is labeled as idempotent8048 performs multiple times sequentially without raising an exception8049 marks export as finished and expires batches cache8050 when export is finished8051 returns without updating export8052 when export is failed8053 returns without updating export8054 when export is in progress8055 reenqueues itself8056 when export timed out8057 marks export as failed8058 when export is missing8059 returns8060Sidebars::Projects::Menus::ConfluenceMenu8061 render?8062 when Confluence integration is not present8063 returns false8064 when Confluence integration is present8065 when integration is disabled8066 returns false8067 when issues integration is enabled8068 returns true8069 does not contain any sub menu8070 serialize_as_menu_item_args8071 renders as part of the Plan section8072Boards::Lists::DestroyService8073 #execute8074 when board parent is a project8075 behaves like lists destroy service8076 does not remove list from board when list type is closed8077 when list type is label8078 removes list from board8079 decrements position of higher lists8080 when board parent is a group8081 behaves like lists destroy service8082 does not remove list from board when list type is closed8083 when list type is label8084 removes list from board8085 decrements position of higher lists8086Gitlab::SQL::CTE8087 #to_arel8088 when relation is an ActiveRecord::Relation8089 generates an Arel relation for the CTE body8090 when relation is a String8091 generates an Arel relation for the CTE body8092 #alias_to8093 returns an alias for the CTE8094 #apply_to8095 applies a CTE to an ActiveRecord::Relation8096 behaves like CTE with MATERIALIZED keyword examples8097 adding MATERIALIZE to the CTE8098 when PG version is <128099 does not add MATERIALIZE keyword8100 when PG version is >=128101 adds MATERIALIZE keyword8102 when version is higher than 128103 adds MATERIALIZE keyword8104 when materialized is disabled8105 does not add MATERIALIZE keyword8106Gitlab::GithubImport::Importer::LabelLinksImporter8107 #execute8108 creates the label links8109 #create_labels8110 inserts the label links in bulk8111 does not insert label links for non-existing labels8112 does not insert label links for non-existing targets8113 #find_target_id8114 returns the ID of the issuable to create the label link for8115ContainerRegistry::CleanupWorker8116 # order random8117 #perform8118 with no delete scheduled container repositories8119 doesn't enqueue delete container repository jobs8120 with delete scheduled container repositories8121 enqueues delete container repository jobs8122 with stale delete ongoing container repositories8123 resets them and enqueue delete container repository jobs8124 with stale ongoing repair details8125 deletes them8126 when on gitlab.com8127 when the gitlab api is supported8128 when there are pending projects to analyze8129 enqueues record repair detail jobs8130 when there are no pending projects to analyze8131 behaves like does not enqueue record repair detail jobs8132 does not enqueue record repair detail jobs8133 when the Gitlab API is not supported8134 behaves like does not enqueue record repair detail jobs8135 does not enqueue record repair detail jobs8136 when not on Gitlab.com8137 behaves like does not enqueue record repair detail jobs8138 does not enqueue record repair detail jobs8139 when registry_data_repair_worker feature is disabled8140 behaves like does not enqueue record repair detail jobs8141 does not enqueue record repair detail jobs8142Sidebars::Projects::Panel8143 has a scope menu8144 Confluence menu item8145 when integration is present and active8146 confluence only8147 contains Confluence menu item8148 does not contain Wiki menu item8149 shimo only8150 contains Shimo menu item8151 confluence & shimo8152 contains Confluence menu item, not Shimo8153 when integration is not present8154 does not contain Confluence menu item8155 contains Wiki menu item8156Ci::EnqueueJobService#execute8157 # order random8158 calls Ci::ResetSkippedJobsService8159 calls enqueue!8160 returns the job8161 assigns the user to the job8162 when a transition block is supplied8163 calls the transition block instead of enqueue!8164 when variables are supplied8165 assigns the variables to the job8166 when the job transition is invalid8167 raises StateMachines::InvalidTransition8168Sidebars::Groups::Menus::IssuesMenu8169 Menu Items8170 List8171 is expected not to be nil8172 behaves like menu access rights8173 is expected not to be nil8174 when the user does not have access8175 is expected to be nil8176 Boards8177 behaves like menu access rights8178 is expected not to be nil8179 when the user does not have access8180 is expected to be nil8181 Milestones8182 behaves like menu access rights8183 is expected not to be nil8184 when the user does not have access8185 is expected to be nil8186 behaves like pill_count formatted results8187 returns all digits for count value under 10008188 returns truncated digits for count value over 10008189 returns truncated digits for count value over 100008190 returns truncated digits for count value over 1000008191 behaves like serializable as super_sidebar_menu_args8192 returns hash with provided attributes8193 returns hash with an item_id8194ContainerRepositoriesSerializer8195 #represent8196 has basic attributes8197 #represent_read_only8198 does not include destroy_path8199 #with_pagination8200 creates a paginated serializer8201 when multiple ContainerRepository objects are serialized8202 serializes appropriate number of objects8203 appends relevant headers8204Guest8205 .can_pull?8206 when project is private8207 does not allow to pull the repo8208 when project is internal8209 does not allow to pull the repo8210 when project is public8211 when repository is disabled8212 does not allow to pull the repo8213 when repository is accessible only by team members8214 does not allow to pull the repo8215 when repository is enabled8216 allows to pull the repo8217DependencyProxy::AuthTokenService8218 .user_or_deploy_token_from_jwt8219 with a user8220 is expected to eq #<User id:2221 @user1113>8221 with an invalid user id8222 raises an not found error8223 behaves like handling token errors8224 with a decoding error8225 is expected to eq nil8226 with an immature signature error8227 is expected to eq nil8228 with an expired signature error8229 returns nil8230 with a deploy token8231 is expected to eq #<DeployToken id: 9, revoked: false, read_repository: true, read_registry: true, expires_at: "2023-08...write_registry: false, read_package_registry: false, write_package_registry: false, creator_id: nil>8232 with an invalid token8233 is expected to eq nil8234 behaves like handling token errors8235 with a decoding error8236 is expected to eq nil8237 with an immature signature error8238 is expected to eq nil8239 with an expired signature error8240 returns nil8241 with an empty token payload8242 is expected to eq nil8243RuboCop::Cop::API::Base8244 # order random8245 adds an offense when inheriting from Grape::API::Instance8246 does not add an offense when inheriting from BaseAPI8247 adds an offense when inheriting from ::Grape::API::Instance8248 adds an offense when inheriting from ::Grape::API8249 adds an offense when inheriting from Grape::API8250Users::GroupCalloutsHelper8251 .show_invite_banner?8252 when user has the admin ability for the group8253 when the invite_members_banner has not been dismissed8254 is expected to eq true8255 when the group was just created8256 is expected to eq false8257 with concerning multiple members8258 on current group8259 is expected to eq false8260 on current group that is a subgroup8261 with only one user on parent and this group8262 is expected to eq true8263 when another user is on this group8264 is expected to eq false8265 when another user is on the parent group8266 is expected to eq false8267 when the invite_members_banner has been dismissed8268 is expected to eq false8269 when user does not have admin ability for the group8270 is expected to eq false8271Types::ContainerExpirationPolicyType8272 is expected to eq "ContainerExpirationPolicy"8273 is expected to eq "A tag expiration policy designed to keep only the images that matter most"8274 is expected to require graphql authorizations :admin_container_image8275 older_than field8276 returns older_than enum8277 keep n field8278 returns keep enum8279 name_regex field8280 returns untrusted regexp type8281 name_regex_keep field8282 returns untrusted regexp type8283Gitlab::GithubImport::Representation::ExposeAttribute8284 defines a getter method that returns an attribute value8285 #[]8286 returns exposed attributes value using array notation8287 when attribute does not exist8288 returns nil8289 when attribute is not exposed8290 returns nil8291BulkImports::UsersMapper8292 #map8293 when value for specified key exists8294 returns a map of source & destination user ids from redis8295 when value for specified key does not exist8296 returns default value8297 #default_user_id8298 returns current user id8299 #include?8300 when source user id is present in the map8301 returns true8302 when source user id is missing in the map8303 returns false8304 #cache_source_user_id8305 caches provided source & destination user ids in redis8306Resolvers::ProjectMilestonesResolver8307 #resolve8308 calls MilestonesFinder to retrieve all milestones8309 when including ancestor milestones8310 calls MilestonesFinder with correct parameters8311 by ids8312 calls MilestonesFinder with correct parameters8313 by state8314 calls MilestonesFinder with correct parameters8315 by sort8316 calls MilestonesFinder with correct parameters8317 uses offset-pagination when sorting by EXPIRED_LAST_DUE_DATE_ASC8318 uses offset-pagination when sorting by EXPIRED_LAST_DUE_DATE_DESC8319 by timeframe8320 when passing a timeframe8321 calls MilestonesFinder with correct parameters8322 when title is present8323 calls MilestonesFinder with correct parameters8324 when search_title is present8325 calls MilestonesFinder with correct parameters8326 when containing date is present8327 calls MilestonesFinder with correct parameters8328dashboard/projects/_blank_state_welcome.html.haml8329 with regular user8330 with project creation enabled8331 has a doc_url8332 shows create project panel8333 with project creation disabled8334 doesn't show create project panel8335 shows an alert8336 with external user8337 doesn't show create project panel8338 shows an alert8339Taskable8340 .get_tasks8341 is expected to match ["#<struct TaskList::Item checkbox_text=\"- [ ]\", source=\"First item\">", "#<struct TaskList::Item checkbox_text=\"- [x]\", source=\"Second item\">", "#<struct TaskList::Item checkbox_text=\"* [x]\", source=\"First item\">", "#<struct TaskList::Item checkbox_text=\"* [ ]\", source=\"Second item\">", "#<struct TaskList::Item checkbox_text=\"1. [ ]\", source=\"Numbered 1\">", "#<struct TaskList::Item checkbox_text=\"2) [x]\", source=\"Numbered 2\">"]8342 with single line comments8343 is expected to match ["#<struct TaskList::Item checkbox_text=\"- [ ]\", source=\"only task item\">"]8344 #task_list_items8345 issuable_type: :issue8346 when description is present8347 gets tasks from markdown8348 when description is blank8349 returns empty array8350 does not try to get tasks from markdown8351 issuable_type: :merge_request8352 when description is present8353 gets tasks from markdown8354 when description is blank8355 returns empty array8356 does not try to get tasks from markdown8357MergeRequests::HandleAssigneesChangeWorker8358 behaves like an idempotent worker8359 is labeled as idempotent8360 performs multiple times sequentially without raising an exception8361 #perform8362 calls MergeRequests::HandleAssigneesChangeService#execute to handle the changes8363 when there are no changes8364 still calls MergeRequests::HandleAssigneesChangeService#execute8365 when the old assignees cannot be found8366 still calls MergeRequests::HandleAssigneesChangeService#execute8367 with a non-existing merge request8368 does nothing8369 with a non-existing user8370 does nothing8371Gitlab::Ci::Status::Build::Canceled8372 #illustration8373 is expected to include :image, :size, and :title8374 .matches?8375 when build is canceled8376 is a correct match8377 when build is not canceled8378 does not match8379Ci::JobArtifacts::DeleteService8380 # order random8381 #execute8382 is successful8383 deletes erasable artifacts8384 does not delete trace8385 when project is undergoing stats refresh8386 logs a warning8387 returns an error response with the correct message and reason8388 when an error response is received from DestroyBatchService8389 returns an error response with the correct message8390Gitlab::Database::BackgroundMigrationJob8391 is expected to be a kind of Gitlab::Database::SharedModel(abstract)8392 behaves like having unique enum values8393 has unique values in "status"8394 .for_migration_execution8395 returns jobs matching class_name and arguments8396 normalizes class names by removing leading ::8397 .mark_all_as_succeeded8398 marks all matching jobs as succeeded8399 normalizes class_names by removing leading ::8400 returns the number of jobs updated8401 when previous matching jobs have already succeeded8402 does not update non-pending jobs8403 #class_name=8404 when the class_name is given without the leading ::8405 sets the class_name to the given value8406 when the class_name is given with the leading ::8407 removes the leading :: when setting the class_name8408 when the value is nil8409 sets the class_name to nil8410 when the values is blank8411 sets the class_name to the given value8412Issuable::ProcessAssignees8413 #execute8414 returns assignee_ids when add_assignee_ids and remove_assignee_ids are not specified8415 combines other ids when assignee_ids is nil8416 combines other ids when both add_assignee_ids and remove_assignee_ids are not empty8417 combines other ids when remove_assignee_ids is not empty8418 combines other ids when add_assignee_ids is not empty8419 combines ids when existing_assignee_ids and extra_assignee_ids are omitted8420 handles mixed string and integer arrays8421Gitlab::Analytics::CycleAnalytics::StageEvents::MergeRequestCreated8422 behaves like value stream analytics event8423 is expected to be a kind of String8424 is expected to be a kind of Symbol8425 is expected to include ApplicationRecord(abstract)8426 is expected to respond to #timestamp_projection8427 is expected to respond to #html_description8428 is expected to be a kind of Array8429 #apply_query_customization8430 expects an ActiveRecord::Relation object as argument and returns a modified version of it8431 #hash_code8432 returns a hash that uniquely identifies an event8433 does not differ when the same object is built with the same params8434 behaves like LEFT JOIN-able value stream analytics event8435 can use the event as LEFT JOIN8436 when looking at the record with data8437 contains the timestamp expression8438 when looking at the record without data8439 returns nil for the timestamp expression8440Banzai::Filter::MarkdownFilter8441 markdown engine from context8442 finds the correct engine8443 defaults to the DEFAULT_ENGINE8444 raise error for unrecognized engines8445 code block8446 adds language to lang attribute when specified8447 does not add language to lang attribute when not specified8448 works with utf8 chars in language8449 works with additional language parameters8450 source line position8451 defaults to add data-sourcepos8452 disables data-sourcepos8453 footnotes in tables8454 processes footnotes in table cells8455ProjectCacheWorker8456 #perform8457 with a non-existing project8458 does nothing8459 with an existing project without a repository8460 updates statistics but does not refresh the method cashes8461 with an existing project8462 refreshes the method caches8463 with statistics disabled8464 does not update the project statistics8465 with statistics8466 updates the project statistics8467 with plain readme8468 refreshes the method caches8469 #update_statistics8470 when a lease could not be obtained8471 does not update the project statistics8472 when a lease could be obtained8473 updates the project statistics twice8474 behaves like an idempotent worker8475 is labeled as idempotent8476 performs multiple times sequentially without raising an exception8477 calls Projects::UpdateStatisticsService service twice8478Gitlab::JiraImport::Stage::ImportIssuesWorker8479 modules8480 behaves like include import workers modules8481 is expected to includes the ApplicationWorker module8482 is expected to includes the Gitlab::JiraImport::QueueOptions module8483 is expected to includes the Gitlab::JiraImport::ImportWorker module8484 #perform8485 when import did not start8486 behaves like cannot do Jira import8487 does not advance to next stage8488 behaves like does not advance to next stage8489 does not advance to next stage8490 when import started8491 when start_at is nil8492 behaves like advance to next stage8493 advances to attachments stage8494 when start_at is zero8495 behaves like advance to next stage8496 advances to issues stage8497 when start_at is greater than zero8498 behaves like advance to next stage8499 advances to issues stage8500 when start_at is below zero8501 behaves like advance to next stage8502 advances to attachments stage8503BatchedGitRefUpdates::Deletion8504 # order random8505 .mark_records_processed8506 updates all records8507 sliding_list partitioning8508 next_partition_if callback8509 when the partition is empty8510 is expected to eq false8511 when the partition has records8512 is expected to eq false8513 when the first record of the partition is older than PARTITION_DURATION8514 is expected to eq true8515 detach_partition_if callback8516 when the partition contains unprocessed records8517 is expected to eq false8518 when the partition contains only processed records8519 is expected to eq true8520 the behavior of the strategy8521 moves records to new partitions as time passes8522RuboCop::Cop::Migration::AddReference8523 # order random8524 when outside of a migration8525 does not register any offenses8526 when in a migration8527 when the table existed before8528 registers an offense when using add_reference8529 registers an offense when using add_reference with index enabled8530 registers an offense if only a different table was created8531 when creating the table at the same time8532 registers an offense when using add_reference without index8533 registers an offense when using add_reference index disabled8534 does not register an offense when using add_reference with index enabled8535 does not register an offense when the index is unique8536BulkImports::FinishBatchedPipelineWorker8537 # order random8538 #perform8539 finishes pipeline and enqueues entity worker8540 when import is in progress8541 re-enqueues8542 when pipeline tracker is stale8543 fails pipeline tracker and its batches8544 when pipeline is not batched8545 returns8546 when pipeline is not started8547 returns8548Onboarding::IssueCreatedWorker#perform8549 # order random8550 behaves like records an onboarding progress action8551 is expected to receive execute({:action=>:issue_created}) 1 time8552 behaves like does not record an onboarding progress action8553 is expected not to receive new(*(any args)) 0 times8554 behaves like an idempotent worker8555 is labeled as idempotent8556 performs multiple times sequentially without raising an exception8557 sets the onboarding progress action8558Releases::Links::CreateService8559 # order random8560 #execute8561 successfully creates a release link8562 when user does not have access to create release link8563 returns an error8564 when url is invalid8565 returns an error8566 when both direct_asset_path and filepath are provided8567 prefers direct_asset_path8568 when only filepath is set8569 uses filepath8570Packages::Pypi::SimplePackageVersionsPresenter8571 #body8572 for project8573 behaves like pypi package presenter8574 avoids N+1 database queries8575 version: ">=2.7", expected_version: ">=2.7", with_package1: true8576 is expected to include "<a href=\"http://localhost/api/v4/projects/1130/packages/pypi/files/440e5e148a25331bbd7991575f7d5493...c0ebf6cc735a18ee5066ac1381bb590\" data-requires-python=\">=2.7\">sample-project-1.0.0.tar.gz</a>"8577 version: "\"><script>alert(1)</script>", expected_version: ""><script>alert(1)</script>", with_package1: true8578 is expected to include "<a href=\"http://localhost/api/v4/projects/1130/packages/pypi/files/440e5e148a25331bbd7991575f7d5493...requires-python=\""><script>alert(1)</script>\">sample-project-1.0.0.tar.gz</a>"8579 version: ">=2.7, !=3.0", expected_version: ">=2.7, !=3.0", with_package1: false8580 is expected to include "<a href=\"http://localhost/api/v4/projects/1130/packages/pypi/files/440e5e148a25331bbd7991575f7d5493...c735a18ee5066ac1381bb590\" data-requires-python=\">=2.7, !=3.0\">sample-project-2.0.0.tar.gz</a>"8581 for group8582 behaves like pypi package presenter8583 avoids N+1 database queries8584 version: ">=2.7", expected_version: ">=2.7", with_package1: true8585 is expected to include "<a href=\"http://localhost/api/v4/groups/3698/-/packages/pypi/files/440e5e148a25331bbd7991575f7d5493...c0ebf6cc735a18ee5066ac1381bb590\" data-requires-python=\">=2.7\">sample-project-1.0.0.tar.gz</a>"8586 version: "\"><script>alert(1)</script>", expected_version: ""><script>alert(1)</script>", with_package1: true8587 is expected to include "<a href=\"http://localhost/api/v4/groups/3698/-/packages/pypi/files/440e5e148a25331bbd7991575f7d5493...requires-python=\""><script>alert(1)</script>\">sample-project-1.0.0.tar.gz</a>"8588 version: ">=2.7, !=3.0", expected_version: ">=2.7, !=3.0", with_package1: false8589 is expected to include "<a href=\"http://localhost/api/v4/groups/3698/-/packages/pypi/files/440e5e148a25331bbd7991575f7d5493...c735a18ee5066ac1381bb590\" data-requires-python=\">=2.7, !=3.0\">sample-project-2.0.0.tar.gz</a>"8590 with package files pending destruction8591 is expected not to include "package_file_pending_destruction"8592Clusters::Agents::Authorizations::CiAccess::FilterService8593 # order random8594 #execute8595 when there are no filters8596 returns the authorizations as is8597 when filtering by environment8598 returns the authorizations with the given environment AND authorizations without any environment8599 when environment filter has a wildcard8600 returns the authorizations with matching environments AND authorizations without any environment8601 when environment filter is nil8602 returns the authorizations without any environment8603Gitlab::GithubImport::Stage::ImportPullRequestsWorker8604 raises an error8605 #import8606 with pull requests8607 imports all the pull requests and allocates internal iids8608 without pull requests8609 does not allocate internal iids8610 when retrying8611 does not allocate internal iids8612Gitlab::UsageDataCounters::VisualStudioExtensionActivityUniqueCounter8613 # order random8614 when tracking a visual studio api request8615 behaves like a request from an extension8616 tracks when the user agent is matching8617 does not track when the user agent is not matching8618 does not track if user agent is not present8619 does not track if user is not present8620Todos::Destroy::DestroyedIssuableService8621 #execute8622 when target is merge request8623 deletes todos for specified target ID and type8624 invalidates todos cache counts of todo users8625 when target is an work item8626 deletes todos8627Users::BatchStatusCleanerService8628 cleans up scheduled user statuses8629 does not affect rows with future clear_status_at8630 does not affect rows without clear_status_at8631 batch_size8632 clears status in batches8633Sidebars::UserProfile::Menus::PersonalProjectsMenu8634 # order random8635 behaves like User profile menu8636 does not contain any sub menu8637 renders the correct link8638 renders the correct title8639 renders the correct icon8640 defines correct active route8641 renders if user is logged in8642 when viewed user is blocked8643 when user is not logged in8644 is not allowed to view the menu item8645 when current user has permission8646 is allowed to view the menu item8647 when current user does not have permission8648 is not allowed to view the menu item8649 when viewed user is banned8650 when user is not logged in8651 is not allowed to view the menu item8652 when current user has permission8653 is allowed to view the menu item8654 when current user does not have permission8655 is not allowed to view the menu item8656Ci::CompareAccessibilityReportsService8657 #execute8658 when head pipeline has accessibility reports8659 returns status and data8660 when base and head pipelines have accessibility reports8661 returns status and data8662Releases::ManageEvidenceWorker8663 when `released_at` in inside the window8664 when Evidence has not been created8665 creates a new Evidence record8666 when evidence has already been created8667 behaves like does not create a new Evidence record8668 sidekiq_inline8669 when `released_at` is outside the window8670 behaves like does not create a new Evidence record8671 sidekiq_inline8672Ci::StuckBuilds::DropRunningWorker8673 #perform8674 executes an instance of Ci::StuckBuilds::DropRunningService8675 behaves like an idempotent worker8676 is labeled as idempotent8677 performs multiple times sequentially without raising an exception8678MergeRequests::SetReviewerReviewedWorker8679 # order random8680 calls MergeRequests::MarkReviewerReviewedService8681 when the merge request does not exist8682 behaves like when object does not exist8683 logs and does not call MergeRequests::MarkReviewerReviewedService8684 when the user does not exist8685 behaves like when object does not exist8686 logs and does not call MergeRequests::MarkReviewerReviewedService8687 behaves like subscribes to event8688 consumes the published event8689 behaves like an idempotent worker8690 is labeled as idempotent8691 performs multiple times sequentially without raising an exception8692Resolvers::Users::GroupsResolver8693 #resolve8694 when resolver object is current user8695 is expected to match [#<Group id:3738 @a-public-maintainer>, #<Group id:3739 @a-public-owner>, #<Group id:3736 @b-private-maintainer>, #<Group id:3737 @c-public-developer>, #<Group id:3735 @public-guest>]8696 when permission is :create_projects8697 is expected to match [#<Group id:3738 @a-public-maintainer>, #<Group id:3739 @a-public-owner>, #<Group id:3736 @b-private-maintainer>, #<Group id:3737 @c-public-developer>]8698 when permission is :transfer_projects8699 is expected to match [#<Group id:3738 @a-public-maintainer>, #<Group id:3739 @a-public-owner>, #<Group id:3736 @b-private-maintainer>]8700 when search is provided8701 is expected to match [#<Group id:3738 @a-public-maintainer>, #<Group id:3736 @b-private-maintainer>]8702 when resolver object is different from current user8703 is expected to be nil8704 when current_user is admin8705 is expected to match [#<Group id:3738 @a-public-maintainer>, #<Group id:3739 @a-public-owner>, #<Group id:3736 @b-private-maintainer>, #<Group id:3737 @c-public-developer>, #<Group id:3735 @public-guest>]8706Mutations::Terraform::State::Lock8707 is expected to eq "TerraformStateLock"8708 is expected to require graphql authorizations :admin_terraform_state8709 #resolve8710 user does not have permission8711 raises an error8712 user has permission8713 locks the state8714 state is already locked8715 does not modify the existing lock8716 with invalid params8717 raises an error8718MergeRequests::ResolveTodosWorker8719 behaves like an idempotent worker8720 is labeled as idempotent8721 performs multiple times sequentially without raising an exception8722 #perform8723 calls MergeRequests::ResolveTodosService#execute8724 with a non-existing merge request8725 does nothing8726 with a non-existing user8727 does nothing8728Gitlab::JiraImport::HandleLabelsService8729 #execute8730 when some provided jira labels are missing8731 creates the missing labels on the project level8732 returns the id of all labels matching the title8733 when no provided jira labels are missing8734 does not create any new labels8735 returns the id of all labels matching the title8736 when no labels are provided8737 does not create any new labels8738StuckExportJobsWorker8739 with started export status8740 behaves like project export job detection8741 when the job has completed8742 when the export status was already updated8743 does not mark the export as failed8744 when the export status was not updated8745 marks the project as failed8746 when the job is not in queue and db record in queued state8747 marks the project as failed8748 when the job is running in Sidekiq8749 does not mark the project export as failed8750Keys::RevokeService8751 # order random8752 does not unverifies signatures if destroy fails8753 unverifies associated signatures8754 destroys a key8755Gitlab::Ci::Reports::TestReportsComparer8756 #suite_comparers8757 when head and base reports include two test suites8758 returns test suite comparers with specified values8759 #total_status8760 when all tests cases are success in head suites8761 returns the total status8762 when there is a failed test case in head suites8763 returns the total status in head suite8764 when there is an error test case in head suites8765 returns the total status in head suite8766 #total_count8767 returns the total test counts in head suites8768 #resolved_count8769 when there is a resolved failure test case in head suites8770 returns the correct count8771 when there is a resolved error test case in head suites8772 returns the correct count8773 when there are no resolved test cases in head suites8774 returns the correct count8775 #failed_count8776 when there is a failed test case in head suites8777 returns the correct count8778 when there are no failed test cases in head suites8779 returns the correct count8780 #error_count8781 when there is an error test case in head suites8782 returns the correct count8783 when there are no error test cases in head suites8784 returns the correct count8785Ci::CreatePipelineService8786 merge requests handling8787 when pushing a change8788 when a merge request already exists8789 does not create a pipeline8790 when no merge request exists8791 does create a pipeline8792Gitlab::Git::RemoteMirror8793 #update8794 delegates to the Gitaly client8795 wraps gitaly errors8796Gitlab::SafeRequestLoader8797 .execute8798 gets data from the store and returns it8799 #execute8800 without a block8801 raises an error8802 when a resource_id is nil8803 contains resource_data with nil key8804 with SafeRequestStore considerations8805 when request store is active8806 gets data from the store8807 with already loaded resource_ids8808 does not re-fetch data if resource_id already exists8809 with mixture of new and existing resource_ids8810 when block does not filter for only the missing resource_ids8811 overwrites existing keyed data with results from the block8812 when passing the missing resource_ids to a block that filters for them8813 only updates resource_data with keyed items that did not exist8814 with default_value for resource_ids that did not exist in the results8815 when default_value is provided8816 populates a default value8817 when default_value is not provided8818 populates a default_value of nil8819 when request store is not active8820 has no data added from the store8821 with mixture of new and existing resource_ids8822 when block does not filter out existing resource_data keys8823 overwrites existing keyed data with results from the block8824 when passing the missing resource_ids to a block that filters for them8825 only updates resource_data with keyed items that did not exist8826 with default_value for resource_ids that did not exist in the results8827 when default_value is provided8828 populates a default value8829 when default_value is not provided8830 populates a default_value of nil8831Gitlab::JiraImport::ImportIssueWorker8832 modules8833 is expected to includes the ApplicationWorker module8834 is expected to includes the Gitlab::NotifyUponDeath module8835 is expected to includes the Gitlab::JiraImport::QueueOptions module8836 is expected to includes the Gitlab::Import::DatabaseHelpers module8837 #perform8838 when any exception raised while inserting to DB8839 record a failed to import issue8840 when record is successfully inserted8841 when import label does not exist8842 does not record import failure8843 when import label exists8844 does not record import failure8845 creates an issue with the correct attributes8846 when assignee_ids is nil8847 creates an issue without assignee8848 when assignee_ids is an empty array8849 creates an issue without assignee8850Sidebars::Groups::SuperSidebarMenus::DeployMenu8851 # order random8852 defines list of NilMenuItem placeholders8853 has title and sprite_icon8854Gitlab::Email::Message::InProductMarketing::TeamShort8855 public methods8856 returns value for series8857 #progress8858 on gitlab.com8859 is expected to include "This is email 1 of 4 in the Team series"8860 not on gitlab.com8861 is expected to include "This is email 1 of 4 in the Team series" and "http://localhost/-/profile/notifications"8862Projects::LfsPointers::LfsLinkService8863 #execute8864 raises an error when trying to link too many objects at once8865 executes a block after validation and before execution8866 links existing lfs objects to the project8867 returns linked oids8868 links in batches8869 only queries for the batch that will be processed8870 only queries 3 times8871API::Entities::Package8872 exposes correct attributes8873 exposes correct web_path in _links8874 with a terraform_module8875 exposes correct web_path in _links8876 when package has no default status8877 does not expose web_path in _links8878Gitlab::Metrics::Exporter::GcRequestMiddleware8879 #call8880 runs a major GC after the next middleware is called8881Gitlab::Database::TransactionTimeoutSettings8882 # order random8883 #disable_timeouts8884 sets timeouts to 08885 #restore_timeouts8886 resets value8887Gitlab::GitalyClient::BlobsStitcher8888 enumeration8889 combines segregated blob messages together8890ErrorTrackingIssueLinkWorker8891 #perform8892 creates a link between an issue and a Sentry issue in Sentry8893 when issue is unavailable8894 behaves like makes no external API requests8895 takes no action8896 when project does not have error tracking configured8897 behaves like makes no external API requests8898 takes no action8899 when the issue is not linked to a Sentry issue in GitLab8900 behaves like makes no external API requests8901 takes no action8902 when Sentry disabled the GitLab integration8903 behaves like attempts to create a link via plugin8904 takes no action8905 when Sentry the GitLab integration is for another project8906 behaves like attempts to create a link via plugin8907 takes no action8908 when Sentry repos request errors8909 falls back to creating a link via plugin8910events/event/_common.html.haml8911 # order random8912 when it is an issue event8913 renders the correct url8914 uses issue_type for the target_name8915 when it is a work item event8916 renders the correct url with iid8917 uses issue_type for the target_name8918Gitlab::Memory::Watchdog::Configuration8919 # order random8920 #initialize8921 initialize monitors8922 #handler8923 when handler is not set8924 defaults to NullHandler8925 #sleep_time_seconds8926 when sleep_time_seconds is not set8927 defaults to SLEEP_TIME_SECONDS8928 #monitors8929 when monitors are configured to be used8930 when two different monitor class are configured8931 when monitors are not configured8932 monitors are empty8933 when monitors are configured inline8934 calls each monitor and returns correct results8935 monitors are not empty8936 when monitors are configured in a block8937 calls each monitor and returns correct results8938 monitors are not empty8939 when monitors are configured with monitor name8940 calls each monitor and returns correct results8941 monitors are not empty8942 #event_reporter8943 when event reporter is not set8944 defaults to EventReporter8945BulkImports::Groups::Pipelines::ProjectEntitiesPipeline8946 #run8947 creates project entity8948 pipeline parts8949 is expected to includes the BulkImports::Pipeline module8950 is expected to includes the BulkImports::Pipeline::Runner module8951 has extractors8952 has transformers8953Gitlab::Memory::ReportsUploader8954 # order random8955 #upload8956 calls fog, logs upload requested and success with duration8957 when Google API responds with an error8958 logs error raised by Fog and do not re-raise8959Ci::VariablesHelper8960 # order random8961 #create_deploy_token_path8962 returns the project deploy token path8963 returns the group deploy token path8964 #ci_variable_maskable_regex8965 converts to a javascript regex8966 #ci_variable_maskable_raw_regex8967 converts to a javascript regex8968 #ci_variable_protected?8969 when variable is provided and only_key_value is false8970 expect ci_variable_protected? to return true8971 when variable is not provided / provided and only_key_value is true8972 is equal to the value of ci_variable_protected_by_default?8973 #ci_variable_masked?8974 when variable is provided and only_key_value is false8975 expect ci_variable_masked? to return true8976 when variable is not provided / provided and only_key_value is true8977 expect ci_variable_masked? to return false8978Gitlab::Middleware::Multipart::Handler8979 #allowed_paths8980 package_features_enabled: false, object_storage_enabled: false, direct_upload_enabled: true, expected_paths: :expected_allowed_paths8981 is expected to eq ["/tmp", "/builds/edith007/gitlab/tmp/tests/public/uploads", "/builds/edith007/gitlab/tmp/tests/publi.../edith007/gitlab/shared/dependency_proxy/tmp/uploads", "/builds/edith007/gitlab/public/uploads/tmp"]8982 package_features_enabled: false, object_storage_enabled: false, direct_upload_enabled: false, expected_paths: :expected_allowed_paths8983 is expected to eq ["/tmp", "/builds/edith007/gitlab/tmp/tests/public/uploads", "/builds/edith007/gitlab/tmp/tests/publi.../edith007/gitlab/shared/dependency_proxy/tmp/uploads", "/builds/edith007/gitlab/public/uploads/tmp"]8984 package_features_enabled: false, object_storage_enabled: true, direct_upload_enabled: true, expected_paths: :expected_allowed_paths8985 is expected to eq ["/tmp", "/builds/edith007/gitlab/tmp/tests/public/uploads", "/builds/edith007/gitlab/tmp/tests/publi.../edith007/gitlab/shared/dependency_proxy/tmp/uploads", "/builds/edith007/gitlab/public/uploads/tmp"]8986 package_features_enabled: false, object_storage_enabled: true, direct_upload_enabled: false, expected_paths: :expected_allowed_paths8987 is expected to eq ["/tmp", "/builds/edith007/gitlab/tmp/tests/public/uploads", "/builds/edith007/gitlab/tmp/tests/publi.../edith007/gitlab/shared/dependency_proxy/tmp/uploads", "/builds/edith007/gitlab/public/uploads/tmp"]8988 package_features_enabled: true, object_storage_enabled: false, direct_upload_enabled: true, expected_paths: :expected_with_packages_path8989 is expected to eq ["/tmp", "/builds/edith007/gitlab/tmp/tests/public/uploads", "/builds/edith007/gitlab/tmp/tests/publi..."/builds/edith007/gitlab/public/uploads/tmp", "/builds/edith007/gitlab/shared/packages/tmp/uploads"]8990 package_features_enabled: true, object_storage_enabled: false, direct_upload_enabled: false, expected_paths: :expected_with_packages_path8991 is expected to eq ["/tmp", "/builds/edith007/gitlab/tmp/tests/public/uploads", "/builds/edith007/gitlab/tmp/tests/publi..."/builds/edith007/gitlab/public/uploads/tmp", "/builds/edith007/gitlab/shared/packages/tmp/uploads"]8992 package_features_enabled: true, object_storage_enabled: true, direct_upload_enabled: true, expected_paths: :expected_allowed_paths8993 is expected to eq ["/tmp", "/builds/edith007/gitlab/tmp/tests/public/uploads", "/builds/edith007/gitlab/tmp/tests/publi.../edith007/gitlab/shared/dependency_proxy/tmp/uploads", "/builds/edith007/gitlab/public/uploads/tmp"]8994 package_features_enabled: true, object_storage_enabled: true, direct_upload_enabled: false, expected_paths: :expected_with_packages_path8995 is expected to eq ["/tmp", "/builds/edith007/gitlab/tmp/tests/public/uploads", "/builds/edith007/gitlab/tmp/tests/publi..."/builds/edith007/gitlab/public/uploads/tmp", "/builds/edith007/gitlab/shared/packages/tmp/uploads"]8996Gitlab::GithubImport::Stage::ImportIssuesAndDiffNotesWorker8997 #import8998 imports the issues and diff notes8999 #importers9000 when optional stage single_endpoint_notes_import is enabled9001 includes single endpoint diff notes importer9002 when optional stage single_endpoint_notes_import is disabled9003 includes default diff notes importer9004ProgrammingLanguagesHelper9005 # order random9006 .programming_languages9007 callings ProgrammingLanguage.most_popular9008 .language_state_class9009 when language param matches9010 returns `is-active`9011 when language param does not match9012 returns ``9013 .search_language_placeholder9014 with no `language` param9015 returns a placeholder9016 with a `language` param9017 when invalid9018 returns a placeholder9019 when valid9020 returns the chosen language9021Constraints::UserUrlConstrainer9022 #matches?9023 valid request9024 is expected to be truthy9025 invalid request9026 is expected to be falsey9027 when the request matches a redirect route9028 and is a GET request9029 is expected to be truthy9030 and is NOT a GET request9031 is expected to be falsey9032RemoteMirrorNotificationWorker9033 #perform9034 calls NotificationService#remote_mirror_update_failed when the mirror exists9035 does nothing when the mirror has no errors9036 does nothing when the mirror does not exist9037 does nothing when a notification has already been sent9038Gitlab::Git::BaseError9039 message: "GRPC::DeadlineExceeded: 4:DeadlineExceeded. debug_error_string:{\"hello\":1}", result: "GRPC::DeadlineExceeded: 4:DeadlineExceeded."9040 is expected to eq "GRPC::DeadlineExceeded: 4:DeadlineExceeded."9041 message: "GRPC::DeadlineExceeded: 4:DeadlineExceeded.", result: "GRPC::DeadlineExceeded: 4:DeadlineExceeded."9042 is expected to eq "GRPC::DeadlineExceeded: 4:DeadlineExceeded."9043 message: "GRPC::DeadlineExceeded: 4:DeadlineExceeded. debug_error_string:{\"created\":\"@1598978902.544524530\",\"description\":\"Error received from peer ipv4: debug_error_string:test\"}", result: "GRPC::DeadlineExceeded: 4:DeadlineExceeded."9044 is expected to eq "GRPC::DeadlineExceeded: 4:DeadlineExceeded."9045 message: "9:Multiple lines\nTest line. debug_error_string:{\"created\":\"@1599074877.106467000\"}", result: "9:Multiple lines\nTest line."9046 is expected to eq "9:Multiple lines\nTest line."9047 message: "other message", result: "other message"9048 is expected to eq "other message"9049 message: nil, result: "Gitlab::Git::BaseError"9050 is expected to eq "Gitlab::Git::BaseError"9051 when initialized with GRPC errors without metadata9052 has status and code fields9053 when initialized with GRPC errors with metadata9054 has status, code, and metadata fields9055RuboCop::Cop::CodeReuse::Worker9056 # order random9057 flags the use of a worker in an API9058 flags the use of a worker in GraphQL9059 flags the use of a worker in a model class method9060 flags the use of a worker in a Serializer9061 flags the use of a worker in a Finder9062 flags the use of a worker in a controller9063 flags the use of a worker in a Presenter9064Gitlab::Git::LfsChanges9065 #new_pointers9066 filters new objects to find lfs pointers9067 limits new_objects using object_limit9068 times out if given a small dynamic timeout9069Mutations::Achievements::Delete9070 # order random9071 is expected to require graphql authorizations :admin_achievement9072 #resolve9073 when the user does not have permission9074 raises an error9075 when the user has permission9076 deletes the achievement9077 when the params are invalid9078 returns the validation error9079Gitlab::Database::LoadBalancing::ServiceDiscovery::Sampler9080 # order random9081 #sample9082 samples max_replica_pools addresses9083 samples random ports across all hosts9084 returns the same answer for the same input when called multiple times9085 gives a consistent answer regardless of input ordering9086 samples fairly across all hosts9087 when input is an empty array9088 returns an empty array9089 when there are less replicas than max_replica_pools9090 returns the same addresses9091 when max_replica_pools is nil9092 returns the same addresses9093Sidebars::UserSettings::Menus::ChatMenu9094 # order random9095 behaves like User settings menu #render? method9096 #render?9097 when user is logged in9098 renders9099 when user is not logged in9100 does not render9101 behaves like User settings menu9102 does not contain any sub menu9103 renders the correct link9104 renders the correct title9105 renders the correct icon9106 defines correct active route9107Gitlab::Ci::Input::Arguments::Required9108 # order random9109 returns an error if user-provided value is unspecified9110 returns an empty value if user-provider value is empty9111 returns a user-provided value if it is present9112 .matches?9113 matches specs without configuration9114 matches specs with empty configuration9115 matches specs with an empty hash configuration9116 does not match specs with configuration9117Gitlab::Git::DiffTree9118 # order random9119 .from_commit9120 when commit is an initial commit9121 returns the expected diff tree object9122 when commit is a regular commit9123 returns the expected diff tree object9124Packages::MlModel::PackageFinder9125 # order random9126 #execute!9127 finds package by name and version9128 ignores packages with same name but different version9129 when package name+version does not exist9130 raises ActiveRecord::RecordNotFound9131 when package exists but is marked for destruction9132 raises ActiveRecord::RecordNotFound9133 when package name+version does not exist but it is not ml_model9134 raises ActiveRecord::RecordNotFound9135ErrorTracking::SentryClient9136 # order random9137 is expected to respond to #create_issue_link9138 is expected to respond to #projects9139 is expected to respond to #issue_latest_event9140 is expected to respond to #issue_details9141 is expected to respond to #repos9142 is expected to respond to #list_issues9143Sidebars::UserSettings::Menus::SshKeysMenu9144 # order random9145 behaves like User settings menu9146 does not contain any sub menu9147 renders the correct link9148 renders the correct title9149 renders the correct icon9150 defines correct active route9151 behaves like User settings menu #render? method9152 #render?9153 when user is logged in9154 renders9155 when user is not logged in9156 does not render9157Gitlab::SidekiqMiddleware::AdminMode::Server9158 yields block9159 job has no admin mode field9160 session is not bypassed9161 job has admin mode field9162 nil admin mode id9163 session is not bypassed9164 valid admin mode id9165 session is bypassed9166 admin mode setting disabled9167 yields block9168 session is not bypassed9169RuboCop::Cop::Performance::ActiveRecordSubtransactionMethods9170 # order random9171 when the method uses a subtransaction9172 method: :safe_ensure_unique9173 registers an offense9174 method: :safe_find_or_create_by9175 registers an offense9176 method: :safe_find_or_create_by!9177 registers an offense9178 method: :with_fast_read_statement_timeout9179 registers an offense9180 method: :create_or_find_by9181 registers an offense9182 method: :create_or_find_by!9183 registers an offense9184Packages::Generic::PackageFinder9185 #execute!9186 finds package by name and version9187 ignores packages with same name but different version9188 does not find uninstallable packages9189 raises ActiveRecord::RecordNotFound if package is not found9190API::Base9191 declare feature categories at handler level for all routes9192 sets feature category for a particular route9193 sets request urgency for a particular route9194 declare feature categories at route level9195 sets feature category for a particular route9196 sets request urgency for a particular route9197 declare feature categories at both handler level and route level9198 sets feature category for a particular route9199 sets target duration for a particular route9200Gitlab::Graphql::TypeNameDeprecations9201 .deprecated?9202 returns a boolean to signal if model name has a deprecation9203 .deprecation_for9204 returns the deprecation for the model if it exists9205 .deprecation_by9206 returns the deprecation by the model if it exists9207 .apply_to_graphql_name9208 returns the corresponding graphql_name of the GID for the new model9209 returns the same value if there is no deprecation9210Ci::BridgePresenter9211 presents information about recoverable state9212 presents the detailed status for the user9213DescriptionVersion9214 associations9215 is expected to belong to issue required: false9216 is expected to belong to merge_request required: false9217 validations9218 exactly_one_issuable9219 issue_id: nil, merge_request_id: 1, valid?: true9220 is expected to eq true9221 issue_id: 1, merge_request_id: nil, valid?: true9222 is expected to eq true9223 issue_id: nil, merge_request_id: nil, valid?: false9224 is expected to eq false9225 issue_id: 1, merge_request_id: 1, valid?: false9226 is expected to eq false9227Ci::DailyBuildGroupReportResultEntity9228 #as_json9229 is expected to include :date9230 is expected not to include :group_name9231 is expected to include :coverage9232 when given param_type is not allowed9233 is expected not to include :coverage9234 is expected not to include :something_else9235Gitlab::HealthChecks::Server9236 with running server thread9237 /readiness9238 behaves like serves health check at9239[2023-08-13 07:33:54] INFO WEBrick 1.8.19240[2023-08-13 07:33:54] INFO ruby 3.0.6 (2023-03-30) [x86_64-linux]9241[2023-08-13 07:33:54] INFO WEBrick::HTTPServer#start: pid=45747 port=80829242[2023-08-13 07:33:54] INFO going to shutdown ...9243[2023-08-13 07:33:54] INFO WEBrick::HTTPServer#start done.9244 responds with 200 OK9245 /liveness9246 behaves like serves health check at9247[2023-08-13 07:33:54] INFO WEBrick 1.8.19248[2023-08-13 07:33:54] INFO ruby 3.0.6 (2023-03-30) [x86_64-linux]9249[2023-08-13 07:33:54] INFO WEBrick::HTTPServer#start: pid=45747 port=80829250[2023-08-13 07:33:54] INFO going to shutdown ...9251[2023-08-13 07:33:54] INFO WEBrick::HTTPServer#start done.9252 responds with 200 OK9253 other routes9254[2023-08-13 07:33:54] INFO WEBrick 1.8.19255[2023-08-13 07:33:54] INFO ruby 3.0.6 (2023-03-30) [x86_64-linux]9256[2023-08-13 07:33:54] INFO WEBrick::HTTPServer#start: pid=45747 port=80829257[2023-08-13 07:33:54] INFO going to shutdown ...9258[2023-08-13 07:33:54] INFO WEBrick::HTTPServer#start done.9259 serves 4049260 when server thread goes away9261[2023-08-13 07:33:54] INFO WEBrick 1.8.19262[2023-08-13 07:33:54] INFO ruby 3.0.6 (2023-03-30) [x86_64-linux]9263 stop closes TCP socket9264ProjectBadge9265 associations9266 is expected to belong to project required: false9267 validations9268 is expected to validate that :project cannot be empty/falsy9269 methods9270 #rendered_link_url9271 behaves like rendered_links9272 uses the badge project information to populate the url placeholders9273 #rendered_image_url9274 behaves like rendered_links9275 uses the badge project information to populate the url placeholders9276Ci::DisableUserPipelineSchedulesService9277 #execute9278 when user has active pipeline schedules9279 disables all active pipeline schedules9280sidekiq9281 enable_reliable_fetch?9282 when gitlab_sidekiq_reliable_fetcher is enabled9283 is expected to be truthy9284 when gitlab_sidekiq_reliable_fetcher is disabled9285 is expected to be falsey9286 enable_semi_reliable_fetch_mode?9287 when gitlab_sidekiq_enable_semi_reliable_fetcher is enabled9288 is expected to be truthy9289 when gitlab_sidekiq_enable_semi_reliable_fetcher is disabled9290 is expected to be falsey9291 load_cron_jobs!9292 loads the cron jobs into sidekiq-cron9293BulkImports::Projects::Pipelines::ServiceDeskSettingPipeline9294 #run9295 imports project feature9296Gitlab::Memory::Watchdog::Monitor::UniqueMemoryGrowth9297 # order random9298 #call9299 gets memory_usage_uss_pss9300 when monitor is called twice9301 reference memory is calculated only once9302 when process exceeds threshold9303 returns if threshold is violated and payload9304 when process does not exceed threshold9305 returns if threshold is violated and payload9306BulkImports::FileDownloads::Validations9307 # order random9308 #raise_error9309 is expected to raise NotImplementedError9310 #filepath9311 is expected to raise NotImplementedError9312 #response_headers9313 is expected to raise NotImplementedError9314 #file_size_limit9315 is expected to raise NotImplementedError9316shared/milestones/_issuables.html.haml9317 shows the issuables count if show_counter is true9318 does not show the issuables count if show_counter is false9319 a high issuables count9320 shows a delimited number if show_counter is true9321Gitlab::PerformanceBar::WithTopLevelWarnings9322 #has_warnings?9323 has_warnings: false, results: {:data=>{}}9324 is expected to eq false9325 has_warnings: false, results: {:data=>{:gitaly=>{:warnings=>[]}}}9326 is expected to eq false9327 has_warnings: true, results: {:data=>{:gitaly=>{:warnings=>[1]}}}9328 is expected to eq true9329 has_warnings: true, results: {:data=>{:gitaly=>{:warnings=>[]}, :redis=>{:warnings=>[1]}}}9330 is expected to eq true9331ServiceDeskEmailReceiverWorker9332 #perform9333 when service_desk_email config is enabled9334 does not ignore the email9335 when service desk receiver raises an exception9336 sends a rejection email9337 when service_desk_email config is disabled9338 ignores the email9339Gitlab::Middleware::RackMultipartTempfileFactory9340 for a multipart request9341 immediately unlinks the temporary file9342 processes the request as normal9343 for a regular request9344 does nothing9345Gitlab::Prometheus::Queries::ValidateQuery9346 valid query9347 passess query to prometheus9348 invalid query9349 returns invalid9350 when exceptions occur9351 Gitlab::HTTP::BlockedUrlError9352 catches exception and returns invalid9353Gitlab::Database::HealthStatus::Logger9354 # order random9355 excludes context9356 behaves like a json logger9357 formats strings9358 formats hashes9359Projects::ClusterAgentsHelper9360 #js_cluster_agent_details_data9361 is expected to match {:agent_name=>"agent-name", :project_path=>"namespace1104/project-1087", :activity_empty_state_image=>#<RSpec::Mocks::ArgumentMatchers::KindOf:0x00007ee1a79dd6d8 @klass=String>, :empty_state_svg_path=>#<RSpec::Mocks::ArgumentMatchers::KindOf:0x00007ee1a79c7c48 @klass=String>, :can_admin_vulnerability=>"true", :kas_address=>"wss://kas.example.com", :kas_version=>#<Gitlab::VersionInfo:0x00007ee1a79c5dd0 @major=16, @minor=3, @patch=0, @suffix_s="-rc6", @suffix=["pre", "rc", 6]>, :can_admin_cluster=>"false"}9362 user has admin cluster permissions9363 displays that the user can admin cluster9364Types::RootStorageStatisticsType9365 is expected to eq "RootStorageStatistics"9366 has the expected fields9367 is expected to require graphql authorizations :read_statistics9368Gitlab::Audit::UnauthenticatedAuthor9369 #initialize9370 sets correct attributes9371 sets default name when it is not provided9372 #impersonated?9373 returns false9374Resolvers::AuditEvents::AuditEventDefinitionsResolver9375 # order random9376 #resolve9377 returns an array of audit event definitions9378Tooling::Danger::ConfigFiles9379 # order random9380 #new_config_files9381 returns added, modified, and renamed_after files by default9382 #add_suggestion_for_missing_introduced_by_url9383 when config file has an empty introduced_by_url line9384 adds suggestions at the correct line9385 when config file has an introduced_by_url line with value9386 does not add suggestion9387Types::ErrorTracking::SentryDetailedErrorType9388 is expected to eq "SentryDetailedError"9389 is expected to require graphql authorizations :read_sentry_issue9390 exposes the expected fields9391Gitlab::Logging::CloudflareHelper9392 #store_cloudflare_headers!9393 with normal headers9394 adds Cf-Ray-Id and Cf-Request-Id9395 with header values with long strings9396 filters invalid header values9397 with header values with non-alphanumeric characters9398 filters invalid header values9399Types::MemberAccessLevelEnum9400 # order random9401 is expected to eq "MemberAccessLevel"9402 exposes all the existing access levels9403Types::NamespaceType9404 is expected to eq "Namespace"9405 has the expected fields9406 is expected to require graphql authorizations :read_namespace9407Gitlab::StringRegexMarker9408 #mark9409 with a single occurrence9410 marks the match9411 with multiple occurrences9412 marks the matches9413 with a Gitlab::UntrustedRegexp9414 marks the matches9415Types::Users::AutocompletedUserType9416 # order random9417 is expected to require graphql authorizations :read_user9418 #merge_request_interaction9419 returns the correct type9420 has the correct arguments9421RuboCop::Cop::RSpec::EnvAssignment9422 # order random9423 with a key using single quotes9424 behaves like an offensive and correction ENV#[]= call9425 registers an offense for `ENV['FOO'] = 'bar'` and corrects9426 with a key using double quotes9427 behaves like an offensive and correction ENV#[]= call9428 registers an offense for `ENV["FOO"] = 'bar'` and corrects9429Sidebars::Projects::SuperSidebarMenus::BuildMenu9430 # order random9431 has title and sprite_icon9432 defines list of NilMenuItem placeholders9433RuboCop::Cop::RSpec::MissingFeatureCategory9434 # order random9435 flags missing feature category in top level example group9436 does not flag if feature category is defined9437Gitlab::FogbugzImport::Client9438 retrieves user_map with one user9439 retrieves user_map with two users9440Types::LabelType9441 has the correct fields9442 is expected to require graphql authorizations :read_label9443BulkImports::Common::Transformers::ProhibitedAttributesTransformer9444 #transform9445 removes prohibited attributes9446 when there is no data to transform9447 returns9448SystemCheck::App::HashedStorageEnabledCheck9449 #check?9450 fails when hashed storage is disabled9451 succeeds when hashed storage is enabled9452RegistrationsHelper9453 #signup_username_data_attributes9454 has expected attributes9455 #register_omniauth_params9456 adds intent to register9457Gitlab::Utils::MergeHash9458 # order random9459 .crush9460 can flatten a hash to each element9461 .elements9462 deep merges an array of elements9463Packages::Composer::CacheCleanupWorker9464 #perform9465 does nothing9466Types::Tree::SubmoduleType9467 is expected to eq "Submodule"9468 is expected to have graphql fields :id, :sha, :name, :type, :path, :flat_path, :web_url, and :tree_url9469Types::X509IssuerType9470 # order random9471 contains attributes for X.509 issuers9472 is expected to eq "X509Issuer"9473Types::CommitActionModeEnum9474 is expected to eq "CommitActionMode"9475 exposes all the existing commit actions9476groups/observability/observability.html.haml9477 # order random9478 renders as expected9479Gitlab::Usage::Metrics::Instrumentations::BatchedBackgroundMigrationFailedJobsMetric9480 # order random9481 behaves like a correct instrumented metric value9482 has correct value9483Gitlab::Ci::Pipeline::Metrics9484 .pipeline_creation_step_duration_histogram9485 adds the step to the step duration histogram9486Gitlab::Ci::Status::Bridge::WaitingForResource9487 is expected to be < Gitlab::Ci::Status::Processable::WaitingForResource9488MicrosoftTeams::Activity9489 #prepare9490 returns the correct JSON object9491API::Entities::ProjectImportFailedRelation9492 #as_json9493 includes basic fields9494IssuableBaseService9495 # order random9496 #constructor_container_arg9497 is expected to eq {:container=>"some-value"}9498Gitlab::Diff::FileCollectionSorter9499 #sort9500 returns list sorted directory first9501processing of SAMLResponse in dependencies9502 can extract AuthnContextClassRef from SAMLResponse param9503Gitlab::Utils::DelegatorOverride::Error9504 # order random9505 #to_s9506 is expected to eq "Delegator#foo is overriding Target#foo. delegator_location: /path/to/delegator target_location: /path/to/target"9507Gitlab::Usage::Metrics::Instrumentations::IndexInconsistenciesMetric9508 # order random9509 behaves like a correct instrumented metric value9510 has correct value9511Types::WorkItems::Widgets::LabelsType9512 exposes the expected fields9513Knapsack report was generated. Preview:9514{9515 "spec/models/merge_request_diff_spec.rb": 347.89921702200036,9516 "spec/services/issues/update_service_spec.rb": 145.57547334499986,9517 "spec/models/clusters/cluster_spec.rb": 62.01719638100076,9518 "spec/finders/issues_finder_spec.rb": 44.41477944500002,9519 "spec/services/projects/create_service_spec.rb": 68.25493962000019,9520 "spec/services/packages/npm/create_package_service_spec.rb": 47.886943522000365,9521 "spec/lib/banzai/filter/references/commit_range_reference_filter_spec.rb": 37.25442026899964,9522 "spec/models/integrations/mattermost_spec.rb": 24.70568014699984,9523 "spec/lib/gitlab/ssh_public_key_spec.rb": 7.784987838000234,9524 "spec/presenters/ci/build_runner_presenter_spec.rb": 30.807374876000722,9525 "spec/lib/banzai/reference_parser/snippet_parser_spec.rb": 28.44348008199995,9526 "spec/models/concerns/milestoneish_spec.rb": 23.94801945600011,9527 "spec/tasks/gitlab/uploads/migrate_rake_spec.rb": 29.493098549000024,9528 "spec/models/error_tracking/project_error_tracking_setting_spec.rb": 6.6612964760006435,9529 "spec/lib/gitlab/counters/buffered_counter_spec.rb": 4.078255568999339,9530 "spec/lib/feature_spec.rb": 9.557743577999645,9531 "spec/lib/gitlab/database/background_migration/batched_migration_spec.rb": 5.265185835999546,9532 "spec/services/issues/import_csv_service_spec.rb": 22.59171212199999,9533 "spec/presenters/ci/pipeline_presenter_spec.rb": 9.996531212999798,9534 "spec/lib/container_registry/tag_spec.rb": 16.06239715600077,9535 "spec/models/integrations/hangouts_chat_spec.rb": 11.320084609000332,9536 "spec/lib/container_registry/client_spec.rb": 4.2333025469997665,9537 "spec/models/clusters/integrations/prometheus_spec.rb": 10.189420418000736,9538 "spec/services/design_management/save_designs_service_spec.rb": 10.453209337000771,9539 "spec/lib/gitlab/observability_spec.rb": 4.6752146219996575,9540 "spec/lib/gitlab/ci/config/entry/retry_spec.rb": 3.5985916870004075,9541 "spec/workers/issuable_export_csv_worker_spec.rb": 7.6836111160000655,9542 "spec/lib/gitlab/database/gitlab_schema_spec.rb": 2.607463905000259,9543 "spec/serializers/diffs_entity_spec.rb": 9.840370936,9544 "spec/services/groups/group_links/create_service_spec.rb": 11.730877166999562,9545 "spec/models/event_collection_spec.rb": 8.241453982000166,9546 "spec/serializers/diff_file_entity_spec.rb": 6.1551242260002255,9547 "spec/services/system_notes/commit_service_spec.rb": 8.03879521700037,9548 "spec/services/ci/archive_trace_service_spec.rb": 7.849478641999667,9549 "spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb": 1.8851050109997232,9550 "spec/models/ci_platform_metric_spec.rb": 4.032911113000409,9551 "spec/lib/extracts_path_spec.rb": 2.7066266069996345,9552 "spec/helpers/safe_format_helper_spec.rb": 1.5965818739996394,9553 "spec/lib/gitlab/ci/build/rules/rule/clause/changes_spec.rb": 5.685532942999998,9554 "spec/services/timelogs/create_service_spec.rb": 4.6870753610000975,9555 "spec/lib/sbom/package_url/argument_validator_spec.rb": 1.7844389390002107,9556 "spec/workers/repository_check/batch_worker_spec.rb": 5.345105430000331,9557 "spec/views/groups/edit.html.haml_spec.rb": 7.062888753999687,9558 "spec/lib/gitlab/import_export/command_line_util_spec.rb": 3.184986258999743,9559 "spec/lib/gitlab/seeders/ci/runner/runner_fleet_seeder_spec.rb": 7.606907401000171,9560 "spec/finders/joined_groups_finder_spec.rb": 6.106464629999209,9561 "spec/models/users/credit_card_validation_spec.rb": 3.448872358999324,9562 "spec/lib/gitlab/ci/reports/test_suite_comparer_spec.rb": 1.8836463219995494,9563 "spec/lib/sidebars/projects/menus/analytics_menu_spec.rb": 3.181144679000681,9564 "spec/finders/clusters/agents/authorizations/ci_access/finder_spec.rb": 3.63784439400024,9565 "spec/lib/gitlab/i18n/pluralization_spec.rb": 1.2668303899999955,9566 "spec/lib/gitlab/github_import/importer/note_importer_spec.rb": 4.095653448000121,9567 "spec/services/pages/zip_directory_service_spec.rb": 1.3588396329996613,9568 "spec/workers/ci/ref_delete_unlock_artifacts_worker_spec.rb": 4.038672092000525,9569 "spec/services/todos/destroy/confidential_issue_service_spec.rb": 5.500227307000387,9570 "spec/models/ci/namespace_mirror_spec.rb": 4.589266308999868,9571 "spec/lib/gitlab/middleware/handle_malformed_strings_spec.rb": 1.3801446810002744,9572 "spec/finders/packages/conan/package_finder_spec.rb": 4.285330833000444,9573 "spec/lib/sidebars/projects/menus/settings_menu_spec.rb": 2.3189848680003706,9574 "spec/services/todos/destroy/design_service_spec.rb": 4.843662729000243,9575 "spec/models/clusters/agents/activity_event_spec.rb": 3.4710285169994677,9576 "spec/lib/gitlab/ci/components/instance_path_spec.rb": 2.7282596049999484,9577 "spec/lib/gitlab/ci/templates/Verify/load_performance_testing_gitlab_ci_yaml_spec.rb": 6.094988949999788,9578 "spec/lib/gitlab/hotlinking_detector_spec.rb": 1.3814426209992234,9579 "spec/models/board_project_recent_visit_spec.rb": 3.874936066000373,9580 "spec/workers/container_expiration_policy_worker_spec.rb": 2.6688377300006323,9581 "spec/workers/ci/drop_pipeline_worker_spec.rb": 3.1565247309999904,9582 "spec/services/packages/rpm/repository_metadata/update_xml_service_spec.rb": 1.3120063269998354,9583 "spec/workers/deployments/hooks_worker_spec.rb": 4.610286897000151,9584 "spec/lib/gitlab/background_task_spec.rb": 1.3108881769994696,9585 "spec/models/ci/runner_namespace_spec.rb": 3.3542208759999994,9586 "spec/lib/gitlab/chat/responder/slack_spec.rb": 3.574104219000219,9587 "spec/finders/keys_finder_spec.rb": 1.8948105910003505,9588 "spec/workers/auto_devops/disable_worker_spec.rb": 5.931344492999415,9589 "spec/lib/gitlab/jira_import/issue_serializer_spec.rb": 1.8485313139999562,9590 "spec/workers/pages_domain_verification_cron_worker_spec.rb": 2.534084330999576,9591 "spec/tooling/danger/sidekiq_queues_spec.rb": 0.6056252320004205,9592 "spec/lib/gitlab/encrypted_configuration_spec.rb": 1.4254031979999127,9593 "spec/workers/repository_check/single_repository_worker_spec.rb": 4.899090154000078,9594 "spec/services/grafana/proxy_service_spec.rb": 1.4054918100000577,9595 "spec/presenters/gitlab/blame_presenter_spec.rb": 5.272229865000554,9596 "spec/graphql/resolvers/design_management/version/design_at_version_resolver_spec.rb": 2.7773132709999118,9597 "spec/lib/gitlab/github_import/importer/single_endpoint_issue_events_importer_spec.rb": 2.527494230999764,9598 "spec/lib/gitlab/tracking/event_definition_spec.rb": 1.1038030230001823,9599 "spec/lib/gitlab/git/user_spec.rb": 0.5178858199997194,9600 "spec/services/dependency_proxy/find_cached_manifest_service_spec.rb": 0.8920253300002514,9601 "spec/rubocop/formatter/todo_formatter_spec.rb": 0.7758072579999862,9602 "spec/lib/gitlab/database/partitioning/partition_manager_spec.rb": 1.3176212070002293,9603 "spec/views/notify/change_in_merge_request_draft_status_email.html.haml_spec.rb": 3.9181194009997853,9604 "spec/workers/authorized_project_update/user_refresh_with_low_urgency_worker_spec.rb": 1.4163710789998731,9605 "spec/lib/gitlab/database/health_status_spec.rb": 0.4077255279999008,9606 "spec/services/lfs/push_service_spec.rb": 0.9103947189996688,9607 "spec/lib/gitlab/ci/status/build/manual_spec.rb": 1.9893649129999176,9608 "spec/lib/constraints/group_url_constrainer_spec.rb": 1.270728388999487,9609 "spec/lib/initializer_connections_spec.rb": 0.6367630999993708,9610 "spec/tooling/danger/database_dictionary_spec.rb": 0.745263772000726,9611 "spec/lib/sidebars/your_work/menus/merge_requests_menu_spec.rb": 0.7169720729998517,9612 "spec/workers/bulk_imports/finish_batched_relation_export_worker_spec.rb": 1.2784380000002784,9613 "spec/lib/sidebars/projects/menus/confluence_menu_spec.rb": 0.6580073479999555,9614 "spec/services/boards/lists/destroy_service_spec.rb": 3.331363197000428,9615 "spec/lib/gitlab/sql/cte_spec.rb": 0.4640590439994412,9616 "spec/lib/gitlab/github_import/importer/label_links_importer_spec.rb": 1.852098364000085,9617 "spec/workers/container_registry/cleanup_worker_spec.rb": 1.2471483720000833,9618 "spec/lib/sidebars/projects/panel_spec.rb": 2.1018136050006433,9619 "spec/services/ci/enqueue_job_service_spec.rb": 2.929351929000404,9620 "spec/lib/sidebars/groups/menus/issues_menu_spec.rb": 1.4294560379994437,9621 "spec/serializers/container_repositories_serializer_spec.rb": 2.8637368439995043,9622 "spec/models/guest_spec.rb": 1.037429608999446,9623 "spec/services/dependency_proxy/auth_token_service_spec.rb": 0.6618909769995298,9624 "spec/rubocop/cop/api/base_spec.rb": 0.4072343779998846,9625 "spec/helpers/users/group_callouts_helper_spec.rb": 2.3076627979999103,9626 "spec/graphql/types/container_expiration_policy_type_spec.rb": 0.4113599570000588,9627 "spec/lib/gitlab/github_import/representation/expose_attribute_spec.rb": 0.25586352000027546,9628 "spec/lib/bulk_imports/users_mapper_spec.rb": 0.4374814860002516,9629 "spec/graphql/resolvers/project_milestones_resolver_spec.rb": 1.672666408000623,9630 "spec/views/dashboard/projects/_blank_state_welcome.html.haml_spec.rb": 0.6299268699995082,9631 "spec/models/concerns/taskable_spec.rb": 0.5252192680000007,9632 "spec/workers/merge_requests/handle_assignees_change_worker_spec.rb": 2.0727166970000326,9633 "spec/lib/gitlab/ci/status/build/canceled_spec.rb": 1.1944587059997502,9634 "spec/services/ci/job_artifacts/delete_service_spec.rb": 0.9734160130001328,9635 "spec/lib/gitlab/database/background_migration_job_spec.rb": 0.721291024000493,9636 "spec/services/issuable/process_assignees_spec.rb": 0.35622699200030183,9637 "spec/lib/gitlab/analytics/cycle_analytics/stage_events/merge_request_created_spec.rb": 1.457020195000041,9638 "spec/lib/banzai/filter/markdown_filter_spec.rb": 0.5061411699998644,9639 "spec/workers/project_cache_worker_spec.rb": 1.564018517000477,9640 "spec/workers/gitlab/jira_import/stage/import_issues_worker_spec.rb": 1.395460390000153,9641 "spec/models/batched_git_ref_updates/deletion_spec.rb": 0.6216574709997076,9642 "spec/rubocop/cop/migration/add_reference_spec.rb": 0.440510885000549,9643 "spec/workers/bulk_imports/finish_batched_pipeline_worker_spec.rb": 0.5921739430004891,9644 "spec/workers/onboarding/issue_created_worker_spec.rb": 0.6159654809998756,9645 "spec/services/releases/links/create_service_spec.rb": 1.9345181180005966,9646 "spec/presenters/packages/pypi/simple_package_versions_presenter_spec.rb": 1.0806580749995192,9647 "spec/services/clusters/agents/authorizations/ci_access/filter_service_spec.rb": 0.677564337000149,9648 "spec/workers/gitlab/github_import/stage/import_pull_requests_worker_spec.rb": 0.5792024040001706,9649 "spec/lib/gitlab/usage_data_counters/visual_studio_extension_activity_unique_counter_spec.rb": 0.31769572499979404,9650 "spec/services/todos/destroy/destroyed_issuable_service_spec.rb": 1.7237667939998573,9651 "spec/services/users/batch_status_cleaner_service_spec.rb": 0.5314886489995843,9652 "spec/lib/sidebars/user_profile/menus/personal_projects_menu_spec.rb": 0.8280492149997372,9653 "spec/services/ci/compare_accessibility_reports_service_spec.rb": 1.9444116069998927,9654 "spec/workers/releases/manage_evidence_worker_spec.rb": 2.1019361839998965,9655 "spec/workers/ci/stuck_builds/drop_running_worker_spec.rb": 0.24647761100004573,9656 "spec/workers/merge_requests/set_reviewer_reviewed_worker_spec.rb": 1.6272846219999337,9657 "spec/graphql/resolvers/users/groups_resolver_spec.rb": 1.388427621000119,9658 "spec/graphql/mutations/terraform/state/lock_spec.rb": 1.4385096070000145,9659 "spec/workers/merge_requests/resolve_todos_worker_spec.rb": 1.3202035360000082,9660 "spec/lib/gitlab/jira_import/handle_labels_service_spec.rb": 0.921260696999525,9661 "spec/workers/stuck_export_jobs_worker_spec.rb": 1.594002415000432,9662 "spec/services/keys/revoke_service_spec.rb": 1.1953262260003612,9663 "spec/lib/gitlab/ci/reports/test_reports_comparer_spec.rb": 0.4906680210006016,9664 "spec/services/ci/create_pipeline_service/merge_requests_spec.rb": 1.725392524000199,9665 "spec/lib/gitlab/git/remote_mirror_spec.rb": 1.6562532899997677,9666 "spec/lib/gitlab/safe_request_loader_spec.rb": 0.5878209539996533,9667 "spec/workers/gitlab/jira_import/import_issue_worker_spec.rb": 1.0020513910003501,9668 "spec/lib/sidebars/groups/super_sidebar_menus/deploy_menu_spec.rb": 0.1784746659996017,9669 "spec/lib/gitlab/email/message/in_product_marketing/team_short_spec.rb": 0.2289279919996261,9670 "spec/services/projects/lfs_pointers/lfs_link_service_spec.rb": 0.8126721959997667,9671 "spec/lib/api/entities/package_spec.rb": 1.5544083380000302,9672 "spec/lib/gitlab/metrics/exporter/gc_request_middleware_spec.rb": 0.14807846799976687,9673 "spec/lib/gitlab/database/transaction_timeout_settings_spec.rb": 0.18853005499931896,9674 "spec/lib/gitlab/gitaly_client/blobs_stitcher_spec.rb": 0.1513288679998368,9675 "spec/workers/error_tracking_issue_link_worker_spec.rb": 0.7762430189995939,9676 "spec/views/events/event/_common.html.haml_spec.rb": 1.165649738999491,9677 "spec/lib/gitlab/memory/watchdog/configuration_spec.rb": 0.6290794710002956,9678 "spec/lib/bulk_imports/groups/pipelines/project_entities_pipeline_spec.rb": 0.6792405169999256,9679 "spec/lib/gitlab/memory/reports_uploader_spec.rb": 0.2208506219994888,9680 "spec/helpers/ci/variables_helper_spec.rb": 0.5292176479997579,9681 "spec/lib/gitlab/middleware/multipart/handler_spec.rb": 0.4461052650003694,9682 "spec/workers/gitlab/github_import/stage/import_issues_and_diff_notes_worker_spec.rb": 1.2016498650000358,9683 "spec/helpers/programming_languages_helper_spec.rb": 0.37224732100003166,9684 "spec/lib/constraints/user_url_constrainer_spec.rb": 0.6189736910000647,9685 "spec/workers/remote_mirror_notification_worker_spec.rb": 0.977618242999597,9686 "spec/lib/gitlab/git/base_error_spec.rb": 0.4049069470001996,9687 "spec/rubocop/cop/code_reuse/worker_spec.rb": 0.385078708999572,9688 "spec/lib/gitlab/git/lfs_changes_spec.rb": 0.8805075909995139,9689 "spec/graphql/mutations/achievements/delete_spec.rb": 0.7908075780005674,9690 "spec/lib/gitlab/database/load_balancing/service_discovery/sampler_spec.rb": 0.37570327000048565,9691 "spec/lib/sidebars/user_settings/menus/chat_menu_spec.rb": 0.4014582290001272,9692 "spec/lib/gitlab/ci/input/arguments/required_spec.rb": 0.3970130679999784,9693 "spec/lib/gitlab/git/diff_tree_spec.rb": 0.8766192309994949,9694 "spec/finders/packages/ml_model/package_finder_spec.rb": 0.5818589749997045,9695 "spec/lib/error_tracking/sentry_client_spec.rb": 0.30315579600028286,9696 "spec/lib/sidebars/user_settings/menus/ssh_keys_menu_spec.rb": 0.4080137780001678,9697 "spec/lib/gitlab/sidekiq_middleware/admin_mode/server_spec.rb": 0.3882920100004412,9698 "spec/rubocop/cop/performance/active_record_subtransaction_methods_spec.rb": 0.33747107300041534,9699 "spec/finders/packages/generic/package_finder_spec.rb": 0.5509747369997058,9700 "spec/lib/api/base_spec.rb": 0.329970644000241,9701 "spec/lib/gitlab/graphql/type_name_deprecations_spec.rb": 0.2943673169993417,9702 "spec/presenters/ci/bridge_presenter_spec.rb": 0.5911127930003204,9703 "spec/models/description_version_spec.rb": 0.321677224999803,9704 "spec/serializers/ci/daily_build_group_report_result_entity_spec.rb": 0.2789249879997442,9705 "spec/lib/gitlab/health_checks/server_spec.rb": 0.42240112699983,9706 "spec/models/badges/project_badge_spec.rb": 0.3180073240000638,9707 "spec/services/ci/disable_user_pipeline_schedules_service_spec.rb": 0.6614067979999163,9708 "spec/initializers/sidekiq_spec.rb": 0.2946012160000464,9709 "spec/lib/bulk_imports/projects/pipelines/service_desk_setting_pipeline_spec.rb": 0.5875166339992575,9710 "spec/lib/gitlab/memory/watchdog/monitor/unique_memory_growth_spec.rb": 0.2510719900001277,9711 "spec/lib/bulk_imports/file_downloads/validations_spec.rb": 0.24740372100040986,9712 "spec/views/shared/milestones/_issuables.html.haml_spec.rb": 0.41064602700043906,9713 "spec/lib/gitlab/performance_bar/with_top_level_warnings_spec.rb": 0.2635964900000545,9714 "spec/workers/service_desk_email_receiver_worker_spec.rb": 0.34097770399966976,9715 "spec/lib/gitlab/middleware/rack_multipart_tempfile_factory_spec.rb": 0.22276643199984392,9716 "spec/lib/gitlab/prometheus/queries/validate_query_spec.rb": 0.3750649200001135,9717 "spec/lib/gitlab/database/health_status/logger_spec.rb": 0.24063253199983592,9718 "spec/helpers/projects/cluster_agents_helper_spec.rb": 0.5530587169996579,9719 "spec/graphql/types/root_storage_statistics_type_spec.rb": 0.23834970099960628,9720 "spec/lib/gitlab/audit/unauthenticated_author_spec.rb": 0.2300981819998924,9721 "spec/graphql/resolvers/audit_events/audit_event_definitions_resolver_spec.rb": 0.2500472700003229,9722 "spec/tooling/danger/config_files_spec.rb": 0.22078515300017898,9723 "spec/graphql/types/error_tracking/sentry_detailed_error_type_spec.rb": 0.2199788529997022,9724 "spec/lib/gitlab/logging/cloudflare_helper_spec.rb": 0.21675953199974174,9725 "spec/graphql/types/member_access_level_enum_spec.rb": 0.18464595600016764,9726 "spec/graphql/types/namespace_type_spec.rb": 0.21415191300002334,9727 "spec/lib/gitlab/string_regex_marker_spec.rb": 0.22319696199974715,9728 "spec/graphql/types/users/autocompleted_user_type_spec.rb": 0.21305941299942788,9729 "spec/rubocop/cop/rspec/env_assignment_spec.rb": 0.19630895400041481,9730 "spec/lib/sidebars/projects/super_sidebar_menus/build_menu_spec.rb": 0.19240159499986476,9731 "spec/rubocop/cop/rspec/missing_feature_category_spec.rb": 0.2368076110005859,9732 "spec/lib/gitlab/fogbugz_import/client_spec.rb": 0.18963629499921808,9733 "spec/graphql/types/label_type_spec.rb": 0.18586505600069358,9734 "spec/lib/bulk_imports/common/transformers/prohibited_attributes_transformer_spec.rb": 0.19370231499942747,9735 "spec/lib/system_check/app/hashed_storage_enabled_check_spec.rb": 0.19955565399959596,9736 "spec/helpers/registrations_helper_spec.rb": 0.19914902500022436,9737 "spec/lib/gitlab/utils/merge_hash_spec.rb": 0.18521912500000326,9738 "spec/workers/packages/composer/cache_cleanup_worker_spec.rb": 0.2870622080008616,9739 "spec/graphql/types/tree/submodule_type_spec.rb": 0.18715730599978997,9740 "spec/graphql/types/x509_issuer_type_spec.rb": 0.18118657499962865,9741 "spec/graphql/types/commit_action_mode_enum_spec.rb": 0.18770526500065898,9742 "spec/views/groups/observability/observability.html.haml_spec.rb": 0.1909880040002463,9743 "spec/lib/gitlab/usage/metrics/instrumentations/batched_background_migration_failed_jobs_metric_spec.rb": 0.20691359299962642,9744 "spec/lib/gitlab/ci/pipeline/metrics_spec.rb": 0.15175748900037433,9745 "spec/lib/gitlab/ci/status/bridge/waiting_for_resource_spec.rb": 0.147751359000722,9746 "spec/lib/microsoft_teams/activity_spec.rb": 0.14340068799992878,9747 "spec/lib/api/entities/project_import_failed_relation_spec.rb": 0.16115524799988634,9748 "spec/services/issues/issuable_base_service_spec.rb": 0.151299757999368,9749 "spec/lib/gitlab/diff/file_collection_sorter_spec.rb": 0.15421564799999032,9750 "spec/dependencies/omniauth_saml_spec.rb": 0.15726481700039585,9751 "spec/lib/gitlab/utils/delegator_override/error_spec.rb": 0.154033038000307,9752 "spec/lib/gitlab/usage/metrics/instrumentations/index_inconsistencies_metric_spec.rb": 0.15979685799993604,9753 "spec/graphql/types/work_items/widgets/labels_type_spec.rb": 0.14672552800038839754}9755Knapsack global time execution for tests: 22m 39s9756Pending: (Failures listed here are expected and do not affect your suite's status)9757 1) DesignManagement::SaveDesignsService#execute when the feature is available scalability runs the same queries for all requests, regardless of number of files9759 # ./spec/services/design_management/save_designs_service_spec.rb:4119760Finished in 22 minutes 44 seconds (files took 1 minute 15.46 seconds to load)97613883 examples, 0 failures, 1 pending9762Randomized with seed 21339763[TEST PROF INFO] Time spent in factories: 13:51.714 (59.42% of total time)9764RSpec exited with 0.9765No examples to retry, congrats! 9766 Running after_script 9767Running after script...9768$ echo -e "\e[0Ksection_start:`date +%s`:report_results_section[collapsed=true]\r\e[0KReport results"9793Not uploading cache ruby-gems-debian-bullseye-ruby-3.0-protected due to policy9795Uploading artifacts...9796WARNING: auto_explain/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/edith007/gitlab) 9797coverage/: found 5 matching artifact files and directories 9798WARNING: crystalball/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/edith007/gitlab) 9799WARNING: deprecations/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/edith007/gitlab) 9800knapsack/: found 4 matching artifact files and directories 9801rspec/: found 10 matching artifact files and directories 9802WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/edith007/gitlab) 9803log/*.log: found 18 matching artifact files and directories 9804WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4863614019/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com9805WARNING: Retrying... context=artifacts-uploader error=request redirected9806Uploading artifacts as "archive" to coordinator... 201 Created id=4863614019 responseStatus=201 Created token=64_PZizT9807Uploading artifacts...9808rspec/rspec-*.xml: found 1 matching artifact files and directories 9809WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4863614019/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com9810WARNING: Retrying... context=artifacts-uploader error=request redirected9811Uploading artifacts as "junit" to coordinator... 201 Created id=4863614019 responseStatus=201 Created token=64_PZizT9813Job succeeded