rspec unit pg12 minimal 5/28
Passed Started
by
@thomasrandolph
Thomas Randolph
1Running with gitlab-runner 15.6.0~beta.186.ga889181a (a889181a)2 on green-3.shared-gitlab-org.runners-manager.gitlab.com/default EuhiQzPR3 feature flags: FF_USE_FASTZIP:true6Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.18-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-106-yarn-1.22-graphicsmagick-1.3.36 ...7Starting service postgres:12 ...8Pulling docker image postgres:12 ...9Using docker image sha256:31c3beb3b8968af162019219a074f3d4c1a5b1ab319ec86668229ad0a7ed0e4f for postgres:12 with digest postgres@sha256:63a045745aec8457cb208e929118b557e95e1b1327e2ad29f14174054be5d56e ...10Starting service redis:6.0-alpine ...11Pulling docker image redis:6.0-alpine ...12Using docker image sha256:f30aed8202b4ddc9ed0c833f7bd2b90470dc3a438a51b6567e9955adfe224051 for redis:6.0-alpine with digest redis@sha256:fcf49f0ab799e3b7217aab710606e888b190bbf3c3a81b5c912dd8ef351d1f69 ...13Waiting for services to be up and running (timeout 30 seconds)...14Authenticating with credentials from job payload (GitLab Registry)15Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.18-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-106-yarn-1.22-graphicsmagick-1.3.36 ...16Using docker image sha256:9f9846a4ac0697e6010265e736ea0ed08cd0506c4323c4e2a29d17e1b28665ce for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.18-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-106-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.18-node-16.14-postgresql-12@sha256:9229dfe0f4ee76cecfd8411f6668b0b2a5fd730d1d3688013b3a721189fcccb5 ...18Running on runner-euhiqzpr-project-278964-concurrent-0 via runner-euhiqzpr-shared-gitlab-org-1670454860-7eaafbca...20$ eval "$CI_PRE_CLONE_SCRIPT"21Fetching changes with git depth set to 20...22Initialized empty Git repository in /builds/gitlab-org/gitlab/.git/23Created fresh repository.24remote: Enumerating objects: 141131, done. 25remote: Counting objects: 100% (141131/141131), done. 26remote: Compressing objects: 100% (89744/89744), done. 27remote: Total 141131 (delta 65036), reused 99095 (delta 46172), pack-reused 0 28Receiving objects: 100% (141131/141131), 119.18 MiB | 32.64 MiB/s, done.29Resolving deltas: 100% (65036/65036), done.31 * [new ref] refs/pipelines/716546384 -> refs/pipelines/71654638432Checking out 7c747a9f as refs/merge-requests/106378/merge...33Skipping Git submodules setup34$ git remote set-url origin "${CI_REPOSITORY_URL}"36Checking cache for ruby-gems-debian-bullseye-ruby-2.7-16...37Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/ruby-gems-debian-bullseye-ruby-2.7-16 38Successfully extracted cache39Checking cache for gitaly-ruby-gems-debian-bullseye-ruby-2.7-16...40Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/gitaly-ruby-gems-debian-bullseye-ruby-2.7-16 41Successfully extracted cache43Downloading artifacts for compile-test-assets (3441843123)...44Downloading artifacts from coordinator... ok id=3441843123 responseStatus=200 OK token=gRWfDMvr45Downloading artifacts for detect-tests (3441843133)...46Downloading artifacts from coordinator... ok id=3441843133 responseStatus=200 OK token=gRWfDMvr47Downloading artifacts for retrieve-tests-metadata (3441843138)...48Downloading artifacts from coordinator... ok id=3441843138 responseStatus=200 OK token=gRWfDMvr49Downloading artifacts for setup-test-env (3441843127)...50Downloading artifacts from coordinator... ok id=3441843127 responseStatus=200 OK token=gRWfDMvr52Using docker image sha256:9f9846a4ac0697e6010265e736ea0ed08cd0506c4323c4e2a29d17e1b28665ce for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.18-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-106-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.18-node-16.14-postgresql-12@sha256:9229dfe0f4ee76cecfd8411f6668b0b2a5fd730d1d3688013b3a721189fcccb5 ...53$ echo $FOSS_ONLY54$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb55$ export GOPATH=$CI_PROJECT_DIR/.go56$ mkdir -p $GOPATH57$ source scripts/utils.sh58$ source scripts/prepare_build.sh687Using decomposed database config (config/database.yml.decomposed-postgresql)688$ setup_db_user_only689CREATE ROLE690GRANT691==> 'setup_db_user_only' succeeded in 1 seconds.692$ bundle exec rake db:drop db:create db:schema:load db:migrate693Dropped database 'gitlabhq_test'694Dropped database 'gitlabhq_test_ci'695Dropped database 'gitlabhq_geo_test'696Created database 'gitlabhq_test'697Created database 'gitlabhq_test_ci'698Created database 'gitlabhq_geo_test'699==> 'bundle exec rake db:drop db:create db:schema:load db:migrate' succeeded in 34 seconds.700$ setup_db_praefect701SELECT pg_catalog.set_config('search_path', '', false);702CREATE DATABASE praefect_test ENCODING 'UTF8';703==> 'setup_db_praefect' succeeded in 0 seconds.704$ source ./scripts/rspec_helpers.sh705$ run_timed_command "gem install knapsack --no-document"706$ gem install knapsack --no-document707Successfully installed knapsack-4.0.07081 gem installed709==> 'gem install knapsack --no-document' succeeded in 1 seconds.710$ echo -e "\e[0Ksection_start:`date +%s`:gitaly-test-spawn[collapsed=true]\r\e[0KStarting Gitaly"820$ rspec_paralellized_job "--tag ~quarantine --tag ~level:migration"821SKIP_FLAKY_TESTS_AUTOMATICALLY: true822RETRY_FAILED_TESTS_IN_NEW_PROCESS: true823KNAPSACK_GENERATE_REPORT: true824FLAKY_RSPEC_GENERATE_REPORT: true825KNAPSACK_TEST_FILE_PATTERN: spec/{bin,channels,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,components}{,/**/}*_spec.rb826KNAPSACK_LOG_LEVEL: debug827KNAPSACK_REPORT_PATH: knapsack/rspec_unit_pg12_minimal_5_28_report.json828FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json829FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg12_minimal_5_28_report.json830NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg12_minimal_5_28_report.json831SKIPPED_FLAKY_TESTS_REPORT_PATH: rspec/flaky/skipped_flaky_tests_rspec_unit_pg12_minimal_5_28_report.txt832RETRIED_TESTS_REPORT_PATH: rspec/flaky/retried_tests_rspec_unit_pg12_minimal_5_28_report.txt833CRYSTALBALL: 834Knapsack node specs:835spec/models/user_spec.rb836spec/lib/gitlab/auth_spec.rb837spec/models/ci/runner_spec.rb838spec/lib/gitlab/background_migration/recalculate_vulnerabilities_occurrences_uuid_spec.rb839spec/services/projects/create_service_spec.rb840spec/services/system_notes/issuables_service_spec.rb841spec/helpers/integrations_helper_spec.rb842spec/views/search/_results.html.haml_spec.rb843spec/lib/banzai/filter/references/milestone_reference_filter_spec.rb844spec/services/repositories/changelog_service_spec.rb845spec/lib/gitlab/import_export/importer_spec.rb846spec/lib/gitlab/background_migration/cleanup_orphaned_lfs_objects_projects_spec.rb847spec/lib/gitlab/pagination/offset_pagination_spec.rb848spec/lib/gitlab/background_migration/remove_all_trace_expiration_dates_spec.rb849spec/models/packages/debian/file_metadatum_spec.rb850spec/models/concerns/awardable_spec.rb851spec/lib/gitlab/version_info_spec.rb852spec/services/verify_pages_domain_service_spec.rb853spec/presenters/ci/pipeline_presenter_spec.rb854spec/metrics_server/metrics_server_spec.rb855spec/models/commit_collection_spec.rb856spec/lib/gitlab/background_migration/backfill_user_details_fields_spec.rb857spec/lib/gitlab/cycle_analytics/permissions_spec.rb858spec/services/suggestions/create_service_spec.rb859spec/lib/gitlab/background_migration/reset_duplicate_ci_runners_token_encrypted_values_on_projects_spec.rb860spec/workers/packages/go/sync_packages_worker_spec.rb861spec/helpers/diff_helper_spec.rb862spec/helpers/auto_devops_helper_spec.rb863spec/finders/alert_management/alerts_finder_spec.rb864spec/lib/gitlab/search/abuse_detection_spec.rb865spec/lib/api/entities/user_spec.rb866spec/lib/gitlab/cache/ci/project_pipeline_status_spec.rb867spec/lib/gitlab/database/rename_reserved_paths_migration/v1_spec.rb868spec/models/ci/daily_build_group_report_result_spec.rb869spec/lib/gitlab/database/migration_helpers/v2_spec.rb870spec/services/clusters/agents/refresh_authorization_service_spec.rb871spec/lib/gitlab/encoding_helper_spec.rb872spec/graphql/resolvers/work_items_resolver_spec.rb873spec/lib/gitlab/zentao/client_spec.rb874spec/services/projects/hashed_storage/rollback_attachments_service_spec.rb875spec/lib/gitlab/ci/templates/AWS/deploy_ecs_gitlab_ci_yaml_spec.rb876spec/lib/gitlab/import_export/snippet_repo_restorer_spec.rb877spec/lib/gitlab/ci/pipeline/chain/ensure_environments_spec.rb878spec/support_specs/helpers/graphql_helpers_spec.rb879spec/policies/design_management/design_policy_spec.rb880spec/services/environments/auto_stop_service_spec.rb881spec/lib/gitlab/diff/file_collection/compare_spec.rb882spec/lib/gitlab/ci/config/entry/root_spec.rb883spec/serializers/diff_file_base_entity_spec.rb884spec/models/ci/persistent_ref_spec.rb885spec/services/google_cloud/generate_pipeline_service_spec.rb886spec/lib/gitlab/sidekiq_config/worker_router_spec.rb887spec/lib/gitlab/ci/status/build/waiting_for_approval_spec.rb888spec/models/hooks/web_hook_log_spec.rb889spec/lib/gitlab/diff/suggestions_parser_spec.rb890spec/services/packages/debian/process_package_file_service_spec.rb891spec/finders/crm/organizations_finder_spec.rb892spec/workers/delete_container_repository_worker_spec.rb893spec/services/metrics/dashboard/pod_dashboard_service_spec.rb894spec/policies/protected_branch_policy_spec.rb895spec/lib/gitlab/i18n/translation_entry_spec.rb896spec/lib/gitlab/import_export/project/sample/relation_factory_spec.rb897spec/uploaders/file_mover_spec.rb898spec/finders/packages/maven/package_finder_spec.rb899spec/lib/gitlab/github_import/importer/single_endpoint_issue_events_importer_spec.rb900spec/models/users_statistics_spec.rb901spec/services/todos/destroy/project_private_service_spec.rb902spec/models/product_analytics_event_spec.rb903spec/finders/resource_state_event_finder_spec.rb904spec/uploaders/object_storage/cdn/google_cdn_spec.rb905spec/lib/kramdown/parser/atlassian_document_format_spec.rb906spec/lib/gitlab/gl_repository/identifier_spec.rb907spec/lib/gitlab/ci/project_config_spec.rb908spec/lib/gitlab/metrics/system_spec.rb909spec/models/commit_signatures/x509_commit_signature_spec.rb910spec/models/chat_name_spec.rb911spec/lib/gitlab/service_desk_email_spec.rb912spec/views/projects/merge_requests/edit.html.haml_spec.rb913spec/lib/gitlab/ci/config/entry/port_spec.rb914spec/finders/clusters/agents_finder_spec.rb915spec/lib/gitlab/ci/config/entry/artifacts_spec.rb916spec/helpers/ci/status_helper_spec.rb917spec/lib/banzai/pipeline/description_pipeline_spec.rb918spec/graphql/resolvers/terraform/states_resolver_spec.rb919spec/helpers/notifications_helper_spec.rb920spec/models/concerns/expirable_spec.rb921spec/services/milestones/close_service_spec.rb922spec/models/deployment_cluster_spec.rb923spec/services/ci/create_pipeline_service/parameter_content_spec.rb924spec/lib/banzai/filter/image_link_filter_spec.rb925spec/services/groups/deploy_tokens/create_service_spec.rb926spec/tooling/danger/product_intelligence_spec.rb927spec/lib/gitlab/harbor/client_spec.rb928spec/lib/gitlab/encrypted_configuration_spec.rb929spec/graphql/mutations/release_asset_links/delete_spec.rb930spec/lib/gitlab/background_migration_spec.rb931spec/services/design_management/generate_image_versions_service_spec.rb932spec/models/merge_request/approval_removal_settings_spec.rb933spec/workers/ci/external_pull_requests/create_pipeline_worker_spec.rb934spec/services/projects/group_links/destroy_service_spec.rb935spec/models/packages/debian/publication_spec.rb936spec/models/concerns/loaded_in_group_list_spec.rb937spec/tasks/gitlab/dependency_proxy/migrate_rake_spec.rb938spec/services/packages/maven/create_package_service_spec.rb939spec/lib/gitlab/otp_key_rotator_spec.rb940spec/services/issuable/process_assignees_spec.rb941spec/models/blob_viewer/changelog_spec.rb942spec/models/packages/go/module_version_spec.rb943spec/lib/gitlab/database/count/reltuples_count_strategy_spec.rb944spec/lib/gitlab/marker_range_spec.rb945spec/services/ci/pipelines/hook_service_spec.rb946spec/graphql/resolvers/users/groups_resolver_spec.rb947spec/workers/releases/manage_evidence_worker_spec.rb948spec/workers/destroy_pages_deployments_worker_spec.rb949spec/lib/gitlab/ci/pipeline/duration_spec.rb950spec/models/merge_request_context_commit_spec.rb951spec/lib/bulk_imports/groups/pipelines/group_attributes_pipeline_spec.rb952spec/lib/gitlab/ci/status/manual_spec.rb953spec/presenters/packages/pypi/simple_package_versions_presenter_spec.rb954spec/services/cohorts_service_spec.rb955spec/lib/gitlab/git/user_spec.rb956spec/lib/gitlab/database/migrations/test_background_runner_spec.rb957spec/lib/gitlab/import_export/wiki_repo_saver_spec.rb958spec/services/emails/create_service_spec.rb959spec/lib/gitlab/import/merge_request_helpers_spec.rb960spec/graphql/resolvers/error_tracking/sentry_error_collection_resolver_spec.rb961spec/workers/gitlab/github_import/refresh_import_jid_worker_spec.rb962spec/lib/gitlab/ci/build/artifacts/path_spec.rb963spec/lib/gitlab/audit/ci_runner_token_author_spec.rb964spec/lib/bulk_imports/common/rest/get_badges_query_spec.rb965spec/models/namespaces/project_namespace_spec.rb966spec/lib/gitlab/middleware/speedscope_spec.rb967spec/models/snippet_input_action_collection_spec.rb968spec/lib/gitlab/merge_requests/mergeability/results_store_spec.rb969spec/workers/ci/test_failure_history_worker_spec.rb970spec/services/system_hooks_service_spec.rb971spec/lib/gitlab/ci/processable_object_hierarchy_spec.rb972spec/tooling/danger/sidekiq_queues_spec.rb973spec/lib/gitlab/database/migrations/lock_retry_mixin_spec.rb974spec/rubocop/cop/performance/active_record_subtransaction_methods_spec.rb975spec/services/packages/conan/create_package_service_spec.rb976spec/lib/gitlab/ci/parsers/sbom/cyclonedx_spec.rb977spec/services/groups/deploy_tokens/destroy_service_spec.rb978spec/rubocop/cop/migration/background_migration_record_spec.rb979spec/initializers/pages_storage_check_spec.rb980spec/rubocop/cop/performance/ar_exists_and_present_blank_spec.rb981spec/views/notify/changed_milestone_email.html.haml_spec.rb982spec/services/releases/create_evidence_service_spec.rb983spec/workers/concerns/gitlab/github_import/object_importer_spec.rb984spec/models/integrations/issue_tracker_data_spec.rb985spec/workers/authorized_projects_worker_spec.rb986spec/lib/gitlab/graphql/pagination/offset_active_record_relation_connection_spec.rb987spec/graphql/resolvers/metrics/dashboard_resolver_spec.rb988spec/lib/gitlab/ci/reports/codequality_reports_spec.rb989spec/services/merge_requests/mergeability/check_open_status_service_spec.rb990spec/workers/gitlab/phabricator_import/import_tasks_worker_spec.rb991spec/policies/alert_management/http_integration_policy_spec.rb992spec/validators/ip_address_validator_spec.rb993spec/services/projects/all_merge_requests_count_service_spec.rb994spec/models/concerns/vulnerability_finding_helpers_spec.rb995spec/validators/bytesize_validator_spec.rb996spec/initializers/00_deprecations_spec.rb997spec/models/plan_spec.rb998spec/lib/gitlab/github_import/importer/pull_requests/review_request_importer_spec.rb999spec/lib/gitlab/middleware/memory_report_spec.rb1000spec/helpers/calendar_helper_spec.rb1001spec/graphql/resolvers/alert_management/alert_status_counts_resolver_spec.rb1002spec/lib/gitlab/graphql/loaders/batch_model_loader_spec.rb1003spec/lib/gitlab/config/entry/simplifiable_spec.rb1004spec/lib/bitbucket_server/collection_spec.rb1005spec/views/profiles/show.html.haml_spec.rb1006spec/workers/onboarding/pipeline_created_worker_spec.rb1007spec/models/ci/pipeline_config_spec.rb1008spec/lib/gitlab/memory/watchdog/configuration_spec.rb1009spec/rubocop/cop/migration/remove_index_spec.rb1010spec/rubocop/cop/destroy_all_spec.rb1011spec/models/concerns/issuable_link_spec.rb1012spec/lib/gitlab/auth/blocked_user_tracker_spec.rb1013spec/lib/gitlab/global_id/deprecations_spec.rb1014spec/lib/gitlab/auth/otp/strategies/forti_token_cloud_spec.rb1015spec/lib/gitlab/config_checker/external_database_checker_spec.rb1016spec/models/concerns/stepable_spec.rb1017spec/lib/gitlab/webpack/graphql_known_operations_spec.rb1018spec/lib/banzai/filter/footnote_filter_spec.rb1019spec/lib/gitlab/graphql/loaders/batch_lfs_oid_loader_spec.rb1020spec/lib/api/entities/nuget/package_metadata_catalog_entry_spec.rb1021spec/lib/gitlab/kubernetes/kubeconfig/entry/context_spec.rb1022spec/lib/gitlab/sidekiq_middleware/worker_context/server_spec.rb1023spec/validators/cron_validator_spec.rb1024spec/lib/gitlab/empty_search_results_spec.rb1025spec/serializers/prometheus_alert_entity_spec.rb1026spec/graphql/types/ci/config/need_type_spec.rb1027spec/lib/gitlab/kubernetes/tls_secret_spec.rb1028spec/graphql/types/ci/runner_upgrade_status_enum_spec.rb1029spec/serializers/analytics_merge_request_serializer_spec.rb1030spec/lib/gitlab/kubernetes/role_spec.rb1031spec/serializers/ci/daily_build_group_report_result_serializer_spec.rb1032spec/lib/gitlab/application_rate_limiter/increment_per_action_spec.rb1033spec/lib/gitlab/word_diff/line_processor_spec.rb1034spec/lib/gitlab/middleware/handle_ip_spoof_attack_error_spec.rb1035spec/graphql/types/issuable_severity_enum_spec.rb1036spec/lib/gitlab/email/message/in_product_marketing/create_spec.rb1037spec/lib/gitlab/sidekiq_middleware/extra_done_log_metadata_spec.rb1038spec/lib/gitlab/sidekiq_death_handler_spec.rb1039spec/lib/gitlab/metrics/dashboard/defaults_spec.rb1040spec/initializers/mailer_retries_spec.rb1041spec/presenters/sentry_error_presenter_spec.rb1042spec/graphql/types/error_tracking/sentry_error_stack_trace_entry_type_spec.rb1043spec/lib/gitlab/git/gitmodules_parser_spec.rb1044spec/graphql/types/jira_user_type_spec.rb1045spec/lib/gitlab/tcp_checker_spec.rb1046spec/lib/gitlab/grape_logging/loggers/perf_logger_spec.rb1047spec/graphql/types/tree/tree_entry_type_spec.rb1048spec/serializers/namespace_basic_entity_spec.rb1049spec/lib/api/validations/validators/integer_none_any_spec.rb1050spec/workers/google_cloud/fetch_google_ip_list_worker_spec.rb1051spec/graphql/types/countable_connection_type_spec.rb1052spec/policies/concerns/policy_actor_spec.rb1053spec/lib/bitbucket/representation/user_spec.rb1054Filter specs:1055Running specs:1056Running all node tests without filter1057spec/models/user_spec.rb1058spec/lib/gitlab/auth_spec.rb1059spec/models/ci/runner_spec.rb1060spec/lib/gitlab/background_migration/recalculate_vulnerabilities_occurrences_uuid_spec.rb1061spec/services/projects/create_service_spec.rb1062spec/services/system_notes/issuables_service_spec.rb1063spec/helpers/integrations_helper_spec.rb1064spec/views/search/_results.html.haml_spec.rb1065spec/lib/banzai/filter/references/milestone_reference_filter_spec.rb1066spec/services/repositories/changelog_service_spec.rb1067spec/lib/gitlab/import_export/importer_spec.rb1068spec/lib/gitlab/background_migration/cleanup_orphaned_lfs_objects_projects_spec.rb1069spec/lib/gitlab/pagination/offset_pagination_spec.rb1070spec/lib/gitlab/background_migration/remove_all_trace_expiration_dates_spec.rb1071spec/models/packages/debian/file_metadatum_spec.rb1072spec/models/concerns/awardable_spec.rb1073spec/lib/gitlab/version_info_spec.rb1074spec/services/verify_pages_domain_service_spec.rb1075spec/presenters/ci/pipeline_presenter_spec.rb1076spec/metrics_server/metrics_server_spec.rb1077spec/models/commit_collection_spec.rb1078spec/lib/gitlab/background_migration/backfill_user_details_fields_spec.rb1079spec/lib/gitlab/cycle_analytics/permissions_spec.rb1080spec/services/suggestions/create_service_spec.rb1081spec/lib/gitlab/background_migration/reset_duplicate_ci_runners_token_encrypted_values_on_projects_spec.rb1082spec/workers/packages/go/sync_packages_worker_spec.rb1083spec/helpers/diff_helper_spec.rb1084spec/helpers/auto_devops_helper_spec.rb1085spec/finders/alert_management/alerts_finder_spec.rb1086spec/lib/gitlab/search/abuse_detection_spec.rb1087spec/lib/api/entities/user_spec.rb1088spec/lib/gitlab/cache/ci/project_pipeline_status_spec.rb1089spec/lib/gitlab/database/rename_reserved_paths_migration/v1_spec.rb1090spec/models/ci/daily_build_group_report_result_spec.rb1091spec/lib/gitlab/database/migration_helpers/v2_spec.rb1092spec/services/clusters/agents/refresh_authorization_service_spec.rb1093spec/lib/gitlab/encoding_helper_spec.rb1094spec/graphql/resolvers/work_items_resolver_spec.rb1095spec/lib/gitlab/zentao/client_spec.rb1096spec/services/projects/hashed_storage/rollback_attachments_service_spec.rb1097spec/lib/gitlab/ci/templates/AWS/deploy_ecs_gitlab_ci_yaml_spec.rb1098spec/lib/gitlab/import_export/snippet_repo_restorer_spec.rb1099spec/lib/gitlab/ci/pipeline/chain/ensure_environments_spec.rb1100spec/support_specs/helpers/graphql_helpers_spec.rb1101spec/policies/design_management/design_policy_spec.rb1102spec/services/environments/auto_stop_service_spec.rb1103spec/lib/gitlab/diff/file_collection/compare_spec.rb1104spec/lib/gitlab/ci/config/entry/root_spec.rb1105spec/serializers/diff_file_base_entity_spec.rb1106spec/models/ci/persistent_ref_spec.rb1107spec/services/google_cloud/generate_pipeline_service_spec.rb1108spec/lib/gitlab/sidekiq_config/worker_router_spec.rb1109spec/lib/gitlab/ci/status/build/waiting_for_approval_spec.rb1110spec/models/hooks/web_hook_log_spec.rb1111spec/lib/gitlab/diff/suggestions_parser_spec.rb1112spec/services/packages/debian/process_package_file_service_spec.rb1113spec/finders/crm/organizations_finder_spec.rb1114spec/workers/delete_container_repository_worker_spec.rb1115spec/services/metrics/dashboard/pod_dashboard_service_spec.rb1116spec/policies/protected_branch_policy_spec.rb1117spec/lib/gitlab/i18n/translation_entry_spec.rb1118spec/lib/gitlab/import_export/project/sample/relation_factory_spec.rb1119spec/uploaders/file_mover_spec.rb1120spec/finders/packages/maven/package_finder_spec.rb1121spec/lib/gitlab/github_import/importer/single_endpoint_issue_events_importer_spec.rb1122spec/models/users_statistics_spec.rb1123spec/services/todos/destroy/project_private_service_spec.rb1124spec/models/product_analytics_event_spec.rb1125spec/finders/resource_state_event_finder_spec.rb1126spec/uploaders/object_storage/cdn/google_cdn_spec.rb1127spec/lib/kramdown/parser/atlassian_document_format_spec.rb1128spec/lib/gitlab/gl_repository/identifier_spec.rb1129spec/lib/gitlab/ci/project_config_spec.rb1130spec/lib/gitlab/metrics/system_spec.rb1131spec/models/commit_signatures/x509_commit_signature_spec.rb1132spec/models/chat_name_spec.rb1133spec/lib/gitlab/service_desk_email_spec.rb1134spec/views/projects/merge_requests/edit.html.haml_spec.rb1135spec/lib/gitlab/ci/config/entry/port_spec.rb1136spec/finders/clusters/agents_finder_spec.rb1137spec/lib/gitlab/ci/config/entry/artifacts_spec.rb1138spec/helpers/ci/status_helper_spec.rb1139spec/lib/banzai/pipeline/description_pipeline_spec.rb1140spec/graphql/resolvers/terraform/states_resolver_spec.rb1141spec/helpers/notifications_helper_spec.rb1142spec/models/concerns/expirable_spec.rb1143spec/services/milestones/close_service_spec.rb1144spec/models/deployment_cluster_spec.rb1145spec/services/ci/create_pipeline_service/parameter_content_spec.rb1146spec/lib/banzai/filter/image_link_filter_spec.rb1147spec/services/groups/deploy_tokens/create_service_spec.rb1148spec/tooling/danger/product_intelligence_spec.rbKnapsack report generator started!1149Run options: exclude {:quarantine=>true, :level=>"migration"}1150==> Starting Gitaly set up...1151==> Starting GitLab Elasticsearch Indexer set up...1152Test environment set up in 1.365010014 seconds1153User1154 behaves like having unique enum values1155 has unique values in "user_type"1156 has unique values in "layout"1157 has unique values in "dashboard"1158 has unique values in "project_view"1159 has unique values in "role"1160 has unique values in "roadmap_layout"1161 has unique values in "group_view"1162 modules1163 is expected to includes the Gitlab::ConfigHelper module1164 is expected to includes the Referable module1165 is expected to includes the Sortable module1166 is expected to includes the TokenAuthenticatable module1167 is expected to includes the BlocksUnsafeSerialization module1168 is expected to includes the AsyncDeviseEmail module1169 constants1170 is expected to be a kind of Integer1171 is expected to be a kind of Integer1172 is expected to be a kind of Integer1173 delegations1174 is expected to delegate #namespace_path to the #namespace object as #path1175 is expected to delegate #notes_filter_for to the #user_preference object1176 is expected to delegate #set_notes_filter to the #user_preference object1177 is expected to delegate #first_day_of_week to the #user_preference object1178 is expected to delegate #first_day_of_week= to the #user_preference object passing arguments [:args]1179 is expected to delegate #timezone to the #user_preference object1180 is expected to delegate #timezone= to the #user_preference object passing arguments [:args]1181 is expected to delegate #time_display_relative to the #user_preference object1182 is expected to delegate #time_display_relative= to the #user_preference object passing arguments [:args]1183 is expected to delegate #time_format_in_24h to the #user_preference object1184 is expected to delegate #time_format_in_24h= to the #user_preference object passing arguments [:args]1185 is expected to delegate #show_whitespace_in_diffs to the #user_preference object1186 is expected to delegate #show_whitespace_in_diffs= to the #user_preference object passing arguments [:args]1187 is expected to delegate #view_diffs_file_by_file to the #user_preference object1188 is expected to delegate #view_diffs_file_by_file= to the #user_preference object passing arguments [:args]1189 is expected to delegate #tab_width to the #user_preference object1190 is expected to delegate #tab_width= to the #user_preference object passing arguments [:args]1191 is expected to delegate #sourcegraph_enabled to the #user_preference object1192 is expected to delegate #sourcegraph_enabled= to the #user_preference object passing arguments [:args]1193 is expected to delegate #gitpod_enabled to the #user_preference object1194 is expected to delegate #gitpod_enabled= to the #user_preference object passing arguments [:args]1195 is expected to delegate #setup_for_company to the #user_preference object1196 is expected to delegate #setup_for_company= to the #user_preference object passing arguments [:args]1197 is expected to delegate #render_whitespace_in_code to the #user_preference object1198 is expected to delegate #render_whitespace_in_code= to the #user_preference object passing arguments [:args]1199 is expected to delegate #markdown_surround_selection to the #user_preference object1200 is expected to delegate #markdown_surround_selection= to the #user_preference object passing arguments [:args]1201 is expected to delegate #markdown_automatic_lists to the #user_preference object1202 is expected to delegate #markdown_automatic_lists= to the #user_preference object passing arguments [:args]1203 is expected to delegate #diffs_deletion_color to the #user_preference object1204 is expected to delegate #diffs_deletion_color= to the #user_preference object passing arguments [:args]1205 is expected to delegate #diffs_addition_color to the #user_preference object1206 is expected to delegate #diffs_addition_color= to the #user_preference object passing arguments [:args]1207 is expected to delegate #use_legacy_web_ide to the #user_preference object1208 is expected to delegate #use_legacy_web_ide= to the #user_preference object passing arguments [:args]1209 is expected to delegate #job_title to the #user_detail object, allowing #user_detail to return nil1210 is expected to delegate #job_title= to the #user_detail object passing arguments [:args], allowing #user_detail to return nil1211 is expected to delegate #pronouns to the #user_detail object, allowing #user_detail to return nil1212 is expected to delegate #pronouns= to the #user_detail object passing arguments [:args], allowing #user_detail to return nil1213 is expected to delegate #pronunciation to the #user_detail object, allowing #user_detail to return nil1214 is expected to delegate #pronunciation= to the #user_detail object passing arguments [:args], allowing #user_detail to return nil1215 is expected to delegate #bio to the #user_detail object, allowing #user_detail to return nil1216 is expected to delegate #bio= to the #user_detail object passing arguments [:args], allowing #user_detail to return nil1217 is expected to delegate #registration_objective to the #user_detail object, allowing #user_detail to return nil1218 is expected to delegate #registration_objective= to the #user_detail object passing arguments [:args], allowing #user_detail to return nil1219 is expected to delegate #requires_credit_card_verification to the #user_detail object, allowing #user_detail to return nil1220 is expected to delegate #requires_credit_card_verification= to the #user_detail object passing arguments [:args], allowing #user_detail to return nil1221 associations1222 is expected to have one namespace1223 is expected to have one status1224 is expected to have one user_detail1225 is expected to have one atlassian_identity1226 is expected to have one user_highest_role1227 is expected to have one credit_card_validation1228 is expected to have one phone_number_validation1229 is expected to have one banned_user1230 is expected to have many snippets dependent => destroy1231 is expected to have many members1232 is expected to have many project_members1233 is expected to have many group_members1234 is expected to have many groups1235 is expected to have many keys dependent => destroy1236 is expected to have many expired_today_and_unnotified_keys1237 is expected to have many deploy_keys dependent => nullify1238 is expected to have many group_deploy_keys1239 is expected to have many events dependent => delete_all1240 is expected to have many issues dependent => destroy1241 is expected to have many notes dependent => destroy1242 is expected to have many merge_requests dependent => destroy1243 is expected to have many identities dependent => destroy1244 is expected to have many spam_logs dependent => destroy1245 is expected to have many todos1246 is expected to have many award_emoji dependent => destroy1247 is expected to have many builds1248 is expected to have many pipelines1249 is expected to have many chat_names dependent => destroy1250 is expected to have many saved_replies class_name => ::Users::SavedReply1251 is expected to have many uploads1252 is expected to have many reported_abuse_reports class_name => AbuseReport dependent => destroy1253 is expected to have many custom_attributes class_name => UserCustomAttribute1254 is expected to have many releases dependent => nullify1255 is expected to have many metrics_users_starred_dashboards inverse_of => user1256 is expected to have many reviews inverse_of => author1257 is expected to have many merge_request_assignees inverse_of => assignee1258 is expected to have many merge_request_reviewers inverse_of => reviewer1259 is expected to have many created_custom_emoji inverse_of => creator1260 is expected to have many in_product_marketing_emails1261 is expected to have many timelogs1262 is expected to have many callouts class_name => Users::Callout1263 is expected to have many group_callouts class_name => Users::GroupCallout1264 is expected to have many project_callouts class_name => Users::ProjectCallout1265 is expected to have many created_projects class_name => Project dependent => nullify1266 default values1267 is expected to be falsey1268 is expected to eq false1269 is expected to eq true1270 is expected to be falsey1271 is expected to be falsey1272 is expected to be falsey1273 is expected to eq "files"1274 is expected to be falsey1275 is expected to eq "en"1276 is expected to eq 11277 #user_detail1278 does not persist `user_detail` by default1279 creates `user_detail` when `bio` is given1280 delegates `bio` to `user_detail`1281 delegates `pronouns` to `user_detail`1282 delegates `pronunciation` to `user_detail`1283 creates `user_detail` when `bio` is first updated1284 #abuse_report1285 is expected to have one abuse_report1286 refers to the abuse report whose user_id is the current user1287 does not refer to the abuse report whose reporter_id is the current user1288 does not update the user_id of an abuse report when the user is updated1289 #group_members1290 does not include group memberships for which user is a requester1291 #project_members1292 does not include project memberships for which user is a requester1293 Devise emails1294 behaviour1295 sends emails asynchronously1296 emails sent on changing password1297 when password is updated1298 default behaviour1299 enqueues the `password changed` email1300 does not enqueue the `admin changed your password` email1301 `admin changed your password` email1302 is enqueued only when explicitly allowed1303 `password changed` email is not enqueued if it is explicitly allowed1304 is not enqueued if sending notifications on password updates is turned off as per Devise config1305 when password is not updated1306 does not enqueue the `admin changed your password` email even if explicitly allowed1307 validations1308 has a DB-level NOT NULL constraint on projects_limit1309 is expected to validate that :projects_limit cannot be empty/falsy1310 is expected to validate that :projects_limit looks like a number1311 is expected to allow :projects_limit to be ‹0›1312 is expected not to allow :projects_limit to be ‹-1›1313 is expected not to allow :projects_limit to be ‹2147483648›1314 password1315 length1316 is expected to validate that the length of :password is between 10 and 1301317 length validator1318 for a short password1319 does not run the default Devise password length validation1320 runs the custom password length validator1321 for a long password1322 does not run the default Devise password length validation1323 runs the custom password length validator1324 check_password_weakness1325 checks for password weakness when password changes1326 adds an error when password is weak1327 is valid when password is not weak1328 is valid when weak password was already set1329 name1330 is expected to validate that :name cannot be empty/falsy1331 is expected to validate that the length of :name is at most 2551332 first name1333 is expected to validate that the length of :first_name is at most 1271334 last name1335 is expected to validate that the length of :last_name is at most 1271336 preferred_language1337 when its value is nil in the database1338 falls back to I18n.default_locale when empty in the database1339 falls back to english when I18n.default_locale is not an available language1340 username1341 validates presence1342 rejects denied names1343 allows child names1344 allows wildcard names1345 validates format1346 validates format on updated record1347 when username is changed1348 validates move_dir is allowed for the namespace1349 when the username is in use by another user1350 is invalid1351 behaves like an object with email-formatted attributes1352 specifically its :email attribute1353 with a value of 'info@example.com'1354 is valid1355 with a value of 'info+test@example.com'1356 is valid1357 with a value of 'o'reilly@example.com'1358 is valid1359 with a value of 'mailto:test@example.com'1360 is valid1361 with a value of 'lol!'+=?><#$%^&*()@gmail.com'1362 is valid1363 with a value of 'foobar'1364 is invalid1365 with a value of 'test@test@example.com'1366 is invalid1367 behaves like an object with email-formatted attributes1368 specifically its :public_email attribute1369 with a value of 'info@example.com'1370 is valid1371 with a value of 'info+test@example.com'1372 is valid1373 with a value of 'o'reilly@example.com'1374 is valid1375 with a value of 'mailto:test@example.com'1376 is valid1377 with a value of 'lol!'+=?><#$%^&*()@gmail.com'1378 is valid1379 with a value of 'foobar'1380 is invalid1381 with a value of 'test@test@example.com'1382 is invalid1383 specifically its :notification_email attribute1384 with a value of 'info@example.com'1385 is valid1386 with a value of 'info+test@example.com'1387 is valid1388 with a value of 'o'reilly@example.com'1389 is valid1390 with a value of 'mailto:test@example.com'1391 is valid1392 with a value of 'lol!'+=?><#$%^&*()@gmail.com'1393 is valid1394 with a value of 'foobar'1395 is invalid1396 with a value of 'test@test@example.com'1397 is invalid1398 #commit_email_or_default1399 defaults to the primary email1400 defaults to the primary email when the column in the database is null1401 returns the private commit email when commit_email has _private1402 #commit_email=1403 can be set to a confirmed email1404 can not be set to an unconfirmed email1405 can not be set to a non-existent email1406 can not be set to an invalid email, even if confirmed1407 email1408 when no signup domains allowed1409 accepts any email1410 bad regex1411 does not hang on evil input1412 when a signup domain is allowed and subdomains are allowed1413 accepts info@example.com1414 accepts info@test.example.com1415 rejects example@test.com1416 does not allow user to update email to a non-allowlisted domain1417 when a signup domain is allowed and subdomains are not allowed1418 accepts info@example.com1419 rejects info@test.example.com1420 rejects example@test.com1421 accepts example@test.com when added by another user1422 domain denylist1423 bad regex1424 does not hang on evil input1425 when a signup domain is denied1426 accepts info@test.com1427 rejects info@example.com1428 accepts info@example.com when added by another user1429 does not allow user to update email to a denied domain1430 when a signup domain is denied but a wildcard subdomain is allowed1431 gives priority to allowlist and allow info@test.example.com1432 with both lists containing a domain1433 accepts info@test.com1434 rejects info@example.com1435 email restrictions1436 when email restriction is disabled1437 does accept email address1438 when email restrictions is enabled1439 does not accept email address with + characters1440 does not accept email with a gitlab domain1441 adds an error message when email is not accepted1442 does not allow user to update email to a restricted domain1443 does accept a valid email address1444 when created_by_id is set1445 does accept the email address1446 when secondary email is same as primary1447 lets user change primary email without failing validations1448 when commit_email is changed to _private1449 passes user validations1450 scopes1451 blocked users1452 .blocked1453 returns only blocked users1454 .blocked_pending_approval1455 returns only pending approval users1456 .banned1457 returns only banned users1458 .with_two_factor1459 returns users with 2fa enabled via OTP1460 and U2F1461 behaves like returns the right users1462 returns users with 2fa enabled via hardware token1463 returns users with 2fa enabled via OTP and hardware token1464 works with ORDER BY1465 and WebAuthn1466 behaves like returns the right users1467 returns users with 2fa enabled via hardware token1468 returns users with 2fa enabled via OTP and hardware token1469 works with ORDER BY1470 .without_two_factor1471 excludes users with 2fa enabled via OTP1472 and u2f1473 excludes users with 2fa enabled via U2F1474 excludes users with 2fa enabled via OTP and U2F1475 and webauthn1476 excludes users with 2fa enabled via WebAuthn1477 excludes users with 2fa enabled via OTP and WebAuthn1478 .random_password1479 length1480 conforms to the current password length settings1481 .password_length1482 is expected to be a Range1483 minimum value1484 is determined by the current value of `minimum_password_length` attribute of application_setting1485 maximum value1486 is determined by the current value of `Devise.password_length.max`1487 .limit_to_todo_authors1488 when filtering by todo authors1489 only returns users that have authored todos1490 ignores users that do not have a todo in the matching state1491 when not filtering by todo authors1492 returns the input relation1493 when no user is provided1494 returns the input relation1495 .by_username1496 finds users regardless of the case passed1497 finds a single user regardless of the case passed1498 .with_expiring_and_not_notified_personal_access_tokens1499 in one day1500 doesn't include an user1501 in three days1502 only includes user21503 .with_personal_access_tokens_expired_today1504 returns users whose token has expired today1505 SSH key expiration scopes1506 .with_ssh_key_expiring_soon1507 returns users whose keys will expire soon1508 .active_without_ghosts1509 returns all active users but ghost users1510 .without_ghosts1511 returns users without ghosts users1512 .for_todos1513 returns users for the given todos1514 .order_recent_last_activity1515 sorts users by activity and id to make the ordes deterministic1516 .order_oldest_last_activity1517 sorts users by activity and id to make the ordes deterministic1518 .order_recent_sign_in1519 sorts users by current_sign_in_at in descending order1520 .order_oldest_sign_in1521 sorts users by current_sign_in_at in ascending order1522 strip attributes1523 name1524 strips whitespaces on validation1525 Respond to1526 is expected to respond to #admin?1527 is expected to respond to #name1528 is expected to respond to #external?1529 before save hook1530 #default_private_profile_to_false1531 converts nil to false1532 when saving an external user1533 sets other properties as well1534 #check_for_verified_email1535 allows a verified secondary email to be used as the primary without needing reconfirmation1536 after commit hook1537 when the primary email is updated1538 keeps old primary to secondary emails when secondary is a new email1539 when the first email was unconfirmed and the second email gets confirmed1540 updates user.email1541 confirms user.email1542 does not add unconfirmed email to secondary1543 has only one email association1544 when an existing email record is set as primary1545 when it is unconfirmed1546 keeps the user confirmed1547 keeps the original email1548 when the email gets confirmed1549 keeps the user confirmed1550 updates the email1551 when it is confirmed1552 keeps the user confirmed1553 updates the email1554 keeps the old email1555 when unconfirmed user deletes a confirmed additional email1556 does not affect the confirmed status1557 when changing email1558 if notification_email was nil1559 sets :unconfirmed_email1560 does not change notification_email or notification_email_or_default before email is confirmed1561 updates notification_email_or_default to the new email once confirmed1562 when notification_email is set to a secondary email1563 does not change notification_email to email before email is confirmed1564 does not change notification_email to email once confirmed1565 #update_invalid_gpg_signatures1566 does nothing when the name is updated1567 synchronizes the gpg keys when the email is updated1568 name getters1569 derives first name from full name, if not present1570 derives last name from full name, if not present1571 #highest_role1572 when user_highest_role does not exist1573 returns NO_ACCESS1574 when user_highest_role exists1575 stored highest access level is nil1576 returns Gitlab::Access::NO_ACCESS1577 stored highest access level present1578 with association :user_highest_role1579 returns the correct highest role1580 #credit_card_validated_at1581 when credit_card_validation does not exist1582 returns nil1583 when credit_card_validation exists1584 returns the credit card validated time1585 #update_tracked_fields!1586 writes trackable attributes1587 does not write trackable attributes when called a second time within the hour1588 writes trackable attributes for a different user1589 does not write if the DB is in read-only mode1590 #keys1591 with key and deploy key stored1592 returns stored key, but not deploy_key1593 #accessible_deploy_keys1594 user can only see deploy keys accessible to right projects1595 #deploy_keys1596 with key and deploy key stored1597 returns stored deploy key, but not normal key1598 #confirm1599 when the confirmation period has expired1600 does not confirm the user1601 does not add the confirmed primary email to emails1602 behaves like unconfirmed user1603 returns unconfirmed1604 when the confirmation period has not expired1605 confirms a user1606 adds the confirmed primary email to emails1607 behaves like unconfirmed user1608 returns unconfirmed1609 when the primary email is already included in user.emails1610 when the confirmation period of the email record has expired1611 does not confirm the email record1612 when the confirmation period of the email record has not expired1613 confirms the email record1614 saving primary email to the emails table1615 when calling skip_reconfirmation! while updating the primary email1616 adds the new email to emails1617 when the email is changed but not confirmed1618 does not add the new email to emails yet1619 adds the new email to emails upon confirmation1620 when the user is created as not confirmed1621 does not add the email to emails yet1622 adds the email to emails upon confirmation1623 when the user is created as confirmed1624 adds the email to emails1625 when skip_confirmation! is called1626 adds the email to emails1627 #force_confirm1628 when the confirmation period has expired1629 behaves like unconfirmed user1630 returns unconfirmed1631 behaves like confirms the user on force_confirm1632 confirms a user1633 behaves like adds the confirmed primary email to emails1634 adds the confirmed primary email to emails1635 behaves like confirms the email record if the primary email was already present in user.emails1636 when the primary email is already included in user.emails1637 when the confirmation period of the email record has expired1638 behaves like confirms the email record1639 confirms the email record1640 when the confirmation period of the email record has not expired1641 behaves like confirms the email record1642 confirms the email record1643 when the confirmation period has not expired1644 behaves like unconfirmed user1645 returns unconfirmed1646 behaves like confirms the user on force_confirm1647 confirms a user1648 behaves like adds the confirmed primary email to emails1649 adds the confirmed primary email to emails1650 behaves like confirms the email record if the primary email was already present in user.emails1651 when the primary email is already included in user.emails1652 when the confirmation period of the email record has expired1653 behaves like confirms the email record1654 confirms the email record1655 when the confirmation period of the email record has not expired1656 behaves like confirms the email record1657 confirms the email record1658 if the user is created with confirmed_at set to a time1659 adds the confirmed primary email to emails upon creation1660 #to_reference1661 returns a String reference to the object1662 #generate_password1663 does not generate password by default1664 ensure user preference1665 has user preference upon user initialization1666 ensure incoming email token1667 has incoming email token1668 uses SecureRandom to generate the incoming email token1669 #ensure_user_rights_and_limits1670 with external user1671 receives callback when external changes1672 ensures correct rights and limits for user1673 without external user1674 receives callback when external changes1675 ensures correct rights and limits for user1676 feed token1677 ensures a feed token on read1678 ensures no feed token when disabled1679 static object token1680 ensures a static object token on read1681 generates an encrypted version of the token1682 prefers an encoded version of the token1683 enabled_static_object_token1684 returns incoming email token when supported1685 returns `nil` when not supported1686 enabled_incoming_email_token1687 returns incoming email token when supported1688 returns `nil` when not supported1689 #recently_sent_password_reset?1690 is false when reset_password_sent_at is nil1691 is false when sent more than one minute ago1692 is true when sent less than one minute ago1693 #disable_two_factor!1694 clears all 2FA-related fields1695 #two_factor_otp_enabled?1696 when 2FA is enabled by an MFA Device1697 is expected to eq true1698 FortiAuthenticator1699 when enabled via GitLab settings1700 when feature is disabled for the user1701 is expected to eq false1702 when feature is enabled for the user1703 is expected to eq true1704 when disabled via GitLab settings1705 is expected to eq false1706 FortiTokenCloud1707 when enabled via GitLab settings1708 when feature is disabled for the user1709 is expected to eq false1710 when feature is enabled for the user1711 is expected to eq true1712 when disabled via GitLab settings1713 is expected to eq false1714 two_factor_u2f_enabled?1715 when webauthn feature flag is enabled1716 user has no U2F registration1717 is expected to eq false1718 user has existing U2F registration1719 returns false1720 when webauthn feature flag is disabled1721 user has no U2F registration1722 is expected to eq false1723 user has existing U2F registration1724 returns true1725 needs_new_otp_secret?1726 when two-factor is not enabled1727 returns true if otp_secret_expires_at is nil1728 returns true if the otp_secret_expires_at has passed1729 returns false if the otp_secret_expires_at has not passed1730 when two-factor is enabled1731 returns false even if ttl is expired1732 otp_secret_expired?1733 returns true if otp_secret_expires_at is nil1734 returns true if the otp_secret_expires_at has passed1735 returns false if the otp_secret_expires_at has not passed1736 update_otp_secret!1737 sets the otp_secret1738 updates the otp_secret_expires_at1739 projects1740 is expected to include #<Project id:17 user266/project17>>1741 is expected to include #<Project id:21 group4/project21>>1742 is expected to include #<Project id:25 group7/project25>>1743 is expected to include #<Project id:26 user275/project26>>1744 is expected not to include #<Project id:30 group10/project30>>1745 is expected not to include #<Project id:34 group13/project34>>1746 is expected to include #<Project id:35 user284/project35>>1747 is expected not to include #<Project id:39 group16/project39>>1748 is expected not to include #<Project id:43 group19/project43>>1749 groups1750 is expected to be truthy1751 is expected to eq [#<Group id:338 @group21>]1752 is expected to eq [#<Group id:340 @group22>]1753 is expected to contain exactly #<Namespaces::UserNamespace id: 343, name: "Sidney Jones456", path: "user296", owner_id: 277, created...runners_enabled: true, allow_descendants_override_disabled_shared_runners: false, traversal_ids: []> and #<Group id:342 @group23>1754 is expected to contain exactly #<Namespaces::UserNamespace id: 345, name: "Sidney Jones457", path: "user297", owner_id: 278, created...runners_enabled: true, allow_descendants_override_disabled_shared_runners: false, traversal_ids: []> and #<Group id:344 @group24>1755 with owned groups only1756 is expected to contain exactly #<Namespaces::UserNamespace id: 347, name: "Sidney Jones458", path: "user298", owner_id: 279, created...runners_enabled: true, allow_descendants_override_disabled_shared_runners: false, traversal_ids: []> and #<Group id:346 @group25>1757 with child groups1758 #forkable_namespaces1759 includes all the namespaces the user can fork into1760 #manageable_groups1761 behaves like manageable groups examples1762 includes all the namespaces the user can manage1763 does not include duplicates if a membership was added for the subgroup1764 when feature flag :linear_user_manageable_groups is disabled1765 behaves like manageable groups examples1766 includes all the namespaces the user can manage1767 does not include duplicates if a membership was added for the subgroup1768 #manageable_groups_with_routes1769 eager loads routes from manageable groups1770 group multiple owners1771 is expected to be truthy1772 namespaced1773 is expected to be falsey1774 is expected to eq [#<Namespaces::UserNamespace id: 374, name: "Sidney Jones468", path: "user308", owner_id: 289, create...unners_enabled: true, allow_descendants_override_disabled_shared_runners: false, traversal_ids: []>]1775 blocking user1776 blocks user1777 when user has running CI pipelines1778 drops all running pipelines and related jobs1779 does not drop running pipelines if the transaction rolls back1780 when user has active CI pipeline schedules1781 disables any pipeline schedules1782 deactivating a user1783 an active user1784 can be deactivated1785 when user deactivation emails are disabled1786 does not send deactivated user an email1787 when user deactivation emails are enabled1788 sends deactivated user an email1789 a user who is blocked1790 cannot be deactivated1791 blocking a user pending approval1792 an active user1793 can be blocked pending approval1794 behaves like a blocked user1795 starred_projects1796 when blocking a user1797 decrements star count of project1798 when activating a user1799 increments star count of project1800 .instance_access_request_approvers_to_be_notified1801 returns up to the ten most recently active instance admins1802 banning and unbanning a user1803 banning a user1804 bans and blocks the user1805 creates a BannedUser record1806 unbanning a user1807 unbans the user1808 deletes the BannedUser record1809 .filter_items1810 filters by active users by default1811 filters by admins1812 filters by blocked1813 filters by banned1814 filters by blocked pending approval1815 filters by deactivated1816 filters by two_factor_disabled1817 filters by two_factor_enabled1818 filters by wop1819 .without_projects1820 is expected not to include #<User id:321 @user334>1821 is expected to include #<User id:328 @user339>1822 is expected to include #<User id:335 @user344>1823 user creation1824 normal user1825 is expected to be falsey1826 is expected to be truthy1827 is expected to be truthy1828 is expected to be truthy1829 is expected to eq "John"1830 is expected to be falsey1831 with defaults1832 applies defaults to user1833 with default overrides1834 applies defaults to user1835 does not undo projects_limit setting if it matches old DB default of 101836 when Gitlab::CurrentSettings.user_default_external is true1837 creates external user by default1838 with default overrides1839 creates a non-external user1840 #require_ssh_key?1841 has correct require_ssh_key?1842 has correct require_ssh_key?1843 has correct require_ssh_key?1844 returns false when the user has 1 or more SSH keys1845 .find_for_database_authentication1846 strips whitespace from login1847 .find_by_any_email1848 finds user through private commit email1849 finds user through private commit email when user is unconfirmed1850 finds by primary email1851 finds by primary email when user is unconfirmed according to confirmed argument1852 finds by uppercased email1853 returns nil when nothing found1854 finds by secondary email1855 when primary email is confirmed1856 when secondary email is confirmed1857 finds user1858 when secondary email is unconfirmed1859 does not find user1860 when primary email is unconfirmed1861 when secondary email is confirmed1862 finds user according to confirmed argument1863 when secondary email is unconfirmed1864 does not find user1865 .by_any_email1866 returns an ActiveRecord::Relation1867 returns empty relation of users when nothing found1868 returns a relation of users for confirmed primary emails1869 returns a relation of users for unconfirmed primary emails according to confirmed argument1870 finds users through private commit emails1871 finds unconfirmed users through private commit emails1872 finds user through a private commit email in an array1873 finds by uppercased email1874 finds by secondary email1875 when primary email is confirmed1876 when secondary email is confirmed1877 finds user1878 when secondary email is unconfirmed1879 does not find user1880 when primary email is unconfirmed1881 when secondary email is confirmed1882 finds user according to confirmed argument1883 when secondary email is unconfirmed1884 does not find user1885 .search1886 returns no matches for an empty string1887 returns no matches for nil1888 returns no matches for an array1889 name user and email relative ordering1890 prioritizes exact matches1891 falls back to ordering by name1892 name matching1893 returns users with a matching name with exact match first1894 returns users with a partially matching name1895 returns users with a matching name regardless of the casing1896 returns users with a exact matching name shorter than 3 chars1897 returns users with a exact matching name shorter than 3 chars regardless of the casing1898 when use_minimum_char_limit is false1899 returns users with a partially matching name1900 email matching1901 returns users with a matching public email1902 does not return users with a partially matching public email1903 returns users with a matching public email regardless of the casing1904 does not return users with a matching private email1905 with private emails search1906 returns users with matching private primary email1907 returns users with matching private unconfirmed primary email1908 returns users with matching private confirmed secondary email1909 does not return users with matching private unconfirmed secondary email1910 username matching1911 returns users with a matching username1912 returns users with a matching username starting with a @1913 returns users with a partially matching username1914 returns users with a partially matching username starting with @1915 returns users with a matching username regardless of the casing1916 returns users with a exact matching username shorter than 3 chars1917 returns users with a exact matching username shorter than 3 chars regardless of the casing1918 when use_minimum_char_limit is false1919 returns users with a partially matching username1920 .user_search_minimum_char_limit1921 returns true1922 .find_by_ssh_key_id1923 only performs a single query1924 does not return a signing-only key1925 using an existing SSH key ID1926 returns the corresponding User1927 using an invalid SSH key ID1928 returns nil1929 .by_login1930 behaves like find user by login1931 when login is nil or empty1932 returns nil1933 when login is invalid1934 returns nil1935 when login is username1936 returns user1937 when login is email1938 returns user1939 .find_by_login1940 behaves like find user by login1941 when login is nil or empty1942 returns nil1943 when login is invalid1944 returns nil1945 when login is username1946 returns user1947 when login is email1948 returns user1949 .find_by_username1950 returns nil if not found1951 is case-insensitive1952 .find_by_username!1953 raises RecordNotFound1954 is case-insensitive1955 .find_by_full_path1956 with a route matching the given path1957 returns the user1958 is case-insensitive1959 with a redirect route matching the given path1960 without the follow_redirects option1961 returns nil1962 with the follow_redirects option set to true1963 returns the user1964 is case-insensitive1965 without a route or a redirect route matching the given path1966 without the follow_redirects option1967 returns nil1968 with the follow_redirects option set to true1969 returns nil1970 with a group route matching the given path1971 when the group namespace has an owner_id (legacy data)1972 returns nil1973 when the group namespace does not have an owner_id1974 returns nil1975 all_ssh_keys1976 is expected to have many keys dependent => destroy1977 has all ssh keys1978 #avatar_type1979 is true if avatar is image1980 is false if avatar is html page1981 #avatar_url1982 when avatar file is uploaded1983 shows correct avatar url1984 #clear_avatar_caches1985 clears the avatar cache when saving1986 #accept_pending_invitations!1987 accepts all the user members pending invitations and returns the accepted_members1988 #all_emails1989 returns all emails1990 when the primary email is confirmed1991 includes the primary email1992 when the primary email is unconfirmed1993 includes the primary email1994 when the primary email is temp email for oauth1995 does not include the primary email1996 when `include_private_email` is true1997 includes the private commit email1998 when `include_private_email` is false1999 does not include the private commit email2000 when the secondary email is confirmed2001 includes the secondary email2002 when the secondary email is unconfirmed2003 does not include the secondary email2004 #verified_emails2005 returns only confirmed emails2006 #public_verified_emails2007 returns only confirmed public emails2008 returns confirmed public emails plus main user email when user is not confirmed2009 #verified_email?2010 returns true when the email is verified/confirmed2011 returns true when user is found through private commit email2012 returns true for an outdated private commit email2013 returns false when the email is not verified/confirmed2014 crowd synchronized user2015 #crowd_user?2016 is true if provider is crowd2017 is false for other providers2018 is false if no extern_uid is provided2019 #requires_ldap_check?2020 is false when LDAP is disabled2021 when LDAP is enabled2022 is false for non-LDAP users2023 and when the user is an LDAP user2024 is true when the user has never had an LDAP check before2025 is true when the last LDAP check happened over 1 hour ago2026 ldap synchronized user2027 #ldap_user?2028 is true if provider name starts with ldap2029 is false for other providers2030 is false if no extern_uid is provided2031 #ldap_identity2032 returns ldap identity2033 #matches_identity?2034 finds the identity when the DN is formatted differently2035 #ldap_block2036 blocks user flaging the action caming from ldap2037 on a read-only instance2038 does not block user2039 #full_website_url2040 begins with http if website url omits it2041 begins with http if website url begins with http2042 begins with https if website url begins with https2043 #short_website_url2044 does not begin with http if website url omits it2045 does not begin with http if website url begins with http2046 does not begin with https if website url begins with https2047 #sanitize_attrs2048 encodes HTML entities in the Skype attribute2049 does not encode HTML entities in the name attribute2050 sanitizes attr from html tags2051 sanitizes attr from js scripts2052 sanitizes attr from iframe scripts2053 #starred?2054 determines if user starred a project2055 #toggle_star2056 toggles stars2057 #following?2058WARNING: Active Record does not support composite primary key.2059user_follow_users has composite primary key. Composite primary key is ignored.2060 check if following another user2061 #followed_by?2062 check if followed by another user2063 #follow2064 follow another user2065 follow itself is not possible2066 does not follow if max followee limit is reached2067 #unfollow2068 unfollow another user2069 unfollows when over followee limit2070 #notification_email_or_default2071 when the column in the database is null2072 defaults to the primary email2073 .find_by_private_commit_email2074 returns nil when email is nil2075 with email2076 returns user through private commit email2077 returns nil when email other than private_commit_email is used2078 #sort_by_attribute2079 sorts users in descending order by their creation time2080 sorts users in ascending order by their creation time2081 sorts users by id in descending order when nil is passed2082 sorts user by latest activity descending, nulls last ordered by ascending id2083 sorts user by latest activity ascending, nulls first ordered by descending id2084 when sort by recent_sign_in2085 sorts users by recent sign-in time with user that never signed in at the end2086 when sort by oldest_sign_in2087 sorts users by the oldest sign-in time with users that never signed in at the end2088 #last_active_at2089 for a user that has `last_activity_on` set2090 returns `last_activity_on` with current time zone2091 for a user that has `current_sign_in_at` set2092 returns `current_sign_in_at`2093 for a user that has both `current_sign_in_at` & ``last_activity_on`` set2094 returns the latest among `current_sign_in_at` & `last_activity_on`2095 for a user that does not have both `current_sign_in_at` & `last_activity_on` set2096 returns nil2097 #can_be_deactivated?2098 a user who is not active2099 behaves like not eligible for deactivation2100 returns false2101 a user who has activity within the specified minimum inactive days2102 behaves like not eligible for deactivation2103 returns false2104 a user who has signed in within the specified minimum inactive days2105 behaves like not eligible for deactivation2106 returns false2107 a user who has no activity within the specified minimum inactive days2108 behaves like eligible for deactivation2109 returns true2110 a user who has not signed in within the specified minimum inactive days2111 behaves like eligible for deactivation2112 returns true2113 a user who is internal2114 returns false2115 #contributed_projects2116 includes IDs for projects the user has pushed to2117 includes IDs for projects the user has had merge requests merged into2118 doesn't include IDs for unrelated projects2119 doesn't include projects aimed for deletion2120 #fork_of2121 returns a user's fork of a project2122 returns nil if the project does not have a fork network2123 #can_be_removed?2124 no owned groups2125 is expected to be truthy2126 has owned groups2127 is expected to be falsey2128 #solo_owned_groups2129 no owned groups2130 is expected to be empty2131 has owned groups2132 not solo owner2133 with another direct owner2134 is expected to be empty2135 with an inherited owner2136 is expected to be empty2137 solo owner2138 is expected to include #<Group id:645 @group56>2139 avoids N+1 queries2140 #can_remove_self?2141 returns true2142 #recent_push2143 returns the last push event for the user2144 returns the last push event for a project when one is given2145 #authorized_groups2146 is expected to contain exactly #<Group id:650 @group59> and #<Group id:652 @group61>2147 with shared memberships2148 is expected to include #<Group id:663 @group65>2149 is expected not to include #<Group id:673 @group71>2150 #membership_groups2151 is expected to contain exactly #<Group id:675 @group72> and #<Group id:676 @group72/group73>2152 #authorizations_for_projects2153 includes projects that belong to a user, but no other projects2154 includes projects a user has access to, but no other projects2155 with min_access_level2156 when developer access2157 includes projects a user has access to2158 when owner access2159 does not include projects with higher access level2160 #authorized_projects2161 includes user's personal projects2162 includes personal projects user has been given access to2163 includes projects of groups user has been added to2164 does not include projects of groups user has been removed from2165 includes projects shared with user's group2166 does not include destroyed projects user had access to2167 does not include projects of destroyed groups user had access to2168 with a minimum access level2169 includes projects for which the user is an owner2170 includes projects for which the user is a maintainer2171 #projects_where_can_admin_issues2172 includes projects for which the user access level is above or equal to reporter2173 does not include for which the user access level is below reporter2174 does not include archived projects2175 does not include projects for which issues are disabled2176 #authorized_project_mirrors2177 returns project mirrors where the user has access equal to or above the given level2178 #ci_owned_runners2179 behaves like #ci_owned_runners2180 without any projects nor groups2181 does not load any runner2182 returns false for owns_runner?2183 with runner in a personal project2184 behaves like project owner2185 when the user is the owner of a project2186 loads the runner belonging to the project2187 returns true for owns_runner?2188 with group runner in a non owned group2189 behaves like group member2190 when the user is a maintainer2191 does not load the runners of the group2192 returns false for owns_runner?2193 when the user is a developer2194 does not load any runner2195 returns false for owns_runner?2196 when the user is a reporter2197 does not load any runner2198 returns false for owns_runner?2199 when the user is a guest2200 does not load any runner2201 returns false for owns_runner?2202 with group runner in an owned group2203 behaves like group owner2204 when the user is the owner of a one level group2205 loads the runners in the group2206 returns true for owns_runner?2207 with group runner in an owned group and group runner in a different owner subgroup2208 behaves like nested groups owner2209 when the user is the owner of a multi-level group2210 loads all the runners in the tree of groups2211 returns true for owns_runner?2212 with personal project runner in an an owned group and a group runner in that same group2213 behaves like nested groups owner2214 when the user is the owner of a multi-level group2215 loads all the runners in the tree of groups2216 returns true for owns_runner?2217 with personal project runner in an owned group and a group runner in a subgroup2218 behaves like nested groups owner2219 when the user is the owner of a multi-level group2220 loads all the runners in the tree of groups2221 returns true for owns_runner?2222 with personal project runner in an owned group in an owned namespace and a group runner in that group2223 behaves like nested groups owner2224 when the user is the owner of a multi-level group2225 loads all the runners in the tree of groups2226 returns true for owns_runner?2227 with personal project runner in an owned namespace, an owned group, a subgroup and a group runner in that subgroup2228 behaves like nested groups owner2229 when the user is the owner of a multi-level group2230 loads all the runners in the tree of groups2231 returns true for owns_runner?2232 with a project runner that belong to projects that belong to a not owned group2233 behaves like project member2234 when the user is a maintainer2235 loads the runners of the project2236 returns true for owns_runner?2237 when the user is a developer2238 does not load any runner2239 returns false for owns_runner?2240 when the user is a reporter2241 does not load any runner2242 returns false for owns_runner?2243 when the user is a guest2244 does not load any runner2245 returns false for owns_runner?2246 with project runners that belong to projects that do not belong to any group2247 does not load any runner2248 with a group runner that belongs to a subgroup of a group owned by another user2249 behaves like group member2250 when the user is a maintainer2251 does not load the runners of the group2252 returns false for owns_runner?2253 when the user is a developer2254 does not load any runner2255 returns false for owns_runner?2256 when the user is a reporter2257 does not load any runner2258 returns false for owns_runner?2259 when the user is a guest2260 does not load any runner2261 returns false for owns_runner?2262 when FF use_traversal_ids is disabled fallbacks to inefficient implementation2263 behaves like #ci_owned_runners2264 without any projects nor groups2265 does not load any runner2266 returns false for owns_runner?2267 with runner in a personal project2268 behaves like project owner2269 when the user is the owner of a project2270 loads the runner belonging to the project2271 returns true for owns_runner?2272 with group runner in a non owned group2273 behaves like group member2274 when the user is a maintainer2275 does not load the runners of the group2276 returns false for owns_runner?2277 when the user is a developer2278 does not load any runner2279 returns false for owns_runner?2280 when the user is a reporter2281 does not load any runner2282 returns false for owns_runner?2283 when the user is a guest2284 does not load any runner2285 returns false for owns_runner?2286 with group runner in an owned group2287 behaves like group owner2288 when the user is the owner of a one level group2289 loads the runners in the group2290 returns true for owns_runner?2291 with group runner in an owned group and group runner in a different owner subgroup2292 behaves like nested groups owner2293 when the user is the owner of a multi-level group2294 loads all the runners in the tree of groups2295 returns true for owns_runner?2296 with personal project runner in an an owned group and a group runner in that same group2297 behaves like nested groups owner2298 when the user is the owner of a multi-level group2299 loads all the runners in the tree of groups2300 returns true for owns_runner?2301 with personal project runner in an owned group and a group runner in a subgroup2302 behaves like nested groups owner2303 when the user is the owner of a multi-level group2304 loads all the runners in the tree of groups2305 returns true for owns_runner?2306 with personal project runner in an owned group in an owned namespace and a group runner in that group2307 behaves like nested groups owner2308 when the user is the owner of a multi-level group2309 loads all the runners in the tree of groups2310 returns true for owns_runner?2311 with personal project runner in an owned namespace, an owned group, a subgroup and a group runner in that subgroup2312 behaves like nested groups owner2313 when the user is the owner of a multi-level group2314 loads all the runners in the tree of groups2315 returns true for owns_runner?2316 with a project runner that belong to projects that belong to a not owned group2317 behaves like project member2318 when the user is a maintainer2319 loads the runners of the project2320 returns true for owns_runner?2321 when the user is a developer2322 does not load any runner2323 returns false for owns_runner?2324 when the user is a reporter2325 does not load any runner2326 returns false for owns_runner?2327 when the user is a guest2328 does not load any runner2329 returns false for owns_runner?2330 with project runners that belong to projects that do not belong to any group2331 does not load any runner2332 with a group runner that belongs to a subgroup of a group owned by another user2333 behaves like group member2334 when the user is a maintainer2335 does not load the runners of the group2336 returns false for owns_runner?2337 when the user is a developer2338 does not load any runner2339 returns false for owns_runner?2340 when the user is a reporter2341 does not load any runner2342 returns false for owns_runner?2343 when the user is a guest2344 does not load any runner2345 returns false for owns_runner?2346 #projects_with_reporter_access_limited_to2347 returns the projects when using a single project ID2348 returns the projects when using an Array of project IDs2349 returns the projects when using an ActiveRecord relation2350 does not return projects you do not have reporter access to2351 #all_expanded_groups2352 user is not a member of any group2353 returns an empty array2354 user is member of all groups2355 returns all groups2356 user is member of the top group2357 returns all groups2358 user is member of the first child (internal node), branch 12359 returns the groups in the hierarchy2360 user is member of the first child (internal node), branch 22361 returns the groups in the hierarchy2362 user is member of the last child (leaf node)2363 returns the groups in the hierarchy2364 when the user is not saved2365 returns empty when there are no groups or ancestor groups for the user2366 #refresh_authorized_projects2367 refreshes the list of authorized projects2368 stores the correct access levels2369 #access_level=2370 does nothing for an invalid access level2371 assigns the 'admin' access level2372 doesn't clear existing access levels when an invalid access level is passed in2373 accepts string values in addition to symbols2374 #can_read_all_resources?2375 returns false for regular user2376 for admin user2377 when admin mode is disabled2378 returns false2379 when admin mode is enabled2380 returns true2381 #can_admin_all_resources?2382 returns false for regular user2383 for admin user2384 when admin mode is disabled2385 returns false2386 when admin mode is enabled2387 returns true2388 .ghost2389 creates a ghost user if one isn't already present2390 does not create a second ghost user if one is already present2391 when a regular user exists with the username 'ghost'2392 creates a ghost user with a non-conflicting username2393 when a regular user exists with the email 'ghost@example.com'2394 creates a ghost user with a non-conflicting email2395 when a domain allowlist is in place2396 creates a ghost user2397 #update_two_factor_requirement2398 with 2FA requirement on groups2399 requires 2FA2400 uses the shortest grace period2401 with 2FA requirement from expanded groups2402 requires 2FA2403 with 2FA requirement on nested child group2404 requires 2FA2405 with 2FA requirement from shared project's group2406 does not require 2FA2407 without 2FA requirement on groups2408 does not require 2FA2409 falls back to the default grace period2410 when the user is not saved2411 does not raise an ActiveRecord::StatementInvalid statement exception2412 #source_groups_of_two_factor_authentication_requirement2413 when user is direct member of group requiring 2FA2414 returns group requiring 2FA2415 when user is member of group which parent requires 2FA2416 returns group requiring 2FA2417 when user is member of group which child requires 2FA2418 returns group requiring 2FA2419 .active2420 only counts active and non internal users2421 preferred language2422 is English by default2423 #invalidate_issue_cache_counts2424 invalidates cache for issue counter2425 #invalidate_merge_request_cache_counts2426 invalidates cache for Merge Request counter2427 #invalidate_personal_projects_count2428 invalidates cache for personal projects counter2429 #allow_password_authentication_for_web?2430 returns false for ldap user2431 regular user2432 returns true when password authentication is enabled for the web interface2433 returns false when password authentication is disabled for the web interface2434 #allow_password_authentication_for_git?2435 returns false for ldap user2436 regular user2437 returns true when password authentication is enabled for Git2438 returns false when password authentication is disabled Git2439 #assigned_open_merge_requests_count2440 returns number of open merge requests from non-archived projects2441 #review_requested_open_merge_requests_count2442 returns number of open merge requests from non-archived projects2443 #assigned_open_issues_count2444 returns number of open issues from non-archived projects2445 #personal_projects_count2446 returns the number of personal projects using a single query2447 #projects_limit_left2448 returns the number of projects that can be created by the user2449 #ensure_namespace_correct2450 for a new user2451 creates the namespace2452 creates the namespace setting2453 for an existing user2454 when the user is updated2455 when the username or name is changed2456 changes the namespace (just to compare to when username is not changed)2457 updates the namespace path when the username was changed2458 updates the namespace name if the name was changed2459 updates nested routes for the namespace if the name was changed2460 when there is a validation error (namespace name taken) while updating namespace2461 causes the user save to fail2462 adds the namespace errors to the user2463 when the username is not changed2464 does not change the namespace2465 #ensure_user_detail_assigned2466 when no user detail field has been changed2467 does not assign user details before save2468 when a user detail field has been changed2469 assigns user details before save2470 #username_changed_hook2471 for a new user2472 does not trigger system hook2473 for an existing user2474 when the username is changed2475 triggers the rename system hook2476 when the username is not changed2477 does not trigger system hook2478 #will_save_change_to_login?2479 when the username is changed2480 is expected to equal true2481 when the email is changed2482 is expected to equal true2483 when both email and username are changed2484 is expected to equal true2485 when email and username aren't changed2486 is expected to be falsy2487 #sync_attribute?2488 oauth user2489 returns true if name can be synced2490 returns true if email can be synced2491 returns true if location can be synced2492 returns false if name can not be synced2493 returns false if email can not be synced2494 returns false if location can not be synced2495 returns true for all syncable attributes if all syncable attributes can be synced2496 returns false for all syncable attributes but email if no syncable attributes are declared2497 ldap user2498 returns true for email if ldap user2499 returns true for email and location if ldap user and location declared as syncable2500 #confirm_deletion_with_password?2501 password_automatically_set: true, ldap_user: true, password_authentication_disabled: true2502 returns false unless all inputs are true2503 password_automatically_set: true, ldap_user: true, password_authentication_disabled: false2504 returns false unless all inputs are true2505 password_automatically_set: true, ldap_user: false, password_authentication_disabled: true2506 returns false unless all inputs are true2507 password_automatically_set: true, ldap_user: false, password_authentication_disabled: false2508 returns false unless all inputs are true2509 password_automatically_set: false, ldap_user: true, password_authentication_disabled: true2510 returns false unless all inputs are true2511 password_automatically_set: false, ldap_user: true, password_authentication_disabled: false2512 returns false unless all inputs are true2513 password_automatically_set: false, ldap_user: false, password_authentication_disabled: true2514 returns false unless all inputs are true2515 password_automatically_set: false, ldap_user: false, password_authentication_disabled: false2516 returns false unless all inputs are true2517 #delete_async2518 blocks the user then schedules them for deletion if a hard delete is specified2519 schedules user for deletion without blocking them2520 #max_member_access_for_project_ids2521 with RequestStore enabled2522 returns correct roles for different projects2523 does not perform extra queries when asked for projects who have already been found2524 only requests the extra projects when uncached projects are passed2525 with RequestStore disabled2526 returns correct roles for different projects2527 #max_member_access_for_group_ids2528 with RequestStore enabled2529 returns correct roles for different groups2530 does not perform extra queries when asked for groups who have already been found2531 only requests the extra groups when uncached groups are passed2532 with RequestStore disabled2533 returns correct roles for different groups2534 changing a username2535 creates a redirect route2536 deletes the redirect when a user with the old username was created2537 #required_terms_not_accepted?2538 when terms are not enforced2539 is expected to be falsey2540 when terms are enforced2541 is not accepted by the user2542 is accepted by the user2543 auto accepts the term for project bots2544 #increment_failed_attempts!2545 logs failed sign-in attempts2546 does not log failed sign-in attempts when in a GitLab read-only instance2547 #requires_usage_stats_consent?2548 in single-user environment2549 requires user consent after one week2550 requires user consent after one week if there is another ghost user2551 does not require consent in the first week2552 does not require consent if usage stats were set by this user2553 in multi-user environment2554 does not require consent2555 with uploads2556 behaves like model with uploads2557 .destroy2558 with mounted uploader2559 deletes remote uploads2560 with not mounted uploads2561 with local files2562 deletes any FileUploader uploads which are not mounted (PENDING: No reason given)2563 deletes local files (PENDING: No reason given)2564 with remote files2565 deletes any FileUploader uploads which are not mounted (PENDING: No reason given)2566 deletes remote files (PENDING: No reason given)2567 .union_with_user2568 when no user ID is provided2569 returns the input relation2570 when a user ID is provided2571 includes the user object in the returned relation2572 does not re-apply any WHERE conditions on the outer query2573 .optionally_search2574 using nil as the argument2575 returns the current relation2576 using an empty String as the argument2577 returns the current relation2578 using a non-empty String2579 returns users matching the search query2580 .where_not_in2581 without an argument2582 returns the current relation2583 using a list of user IDs2584 excludes the users from the returned relation2585 .reorder_by_name2586 reorders the input relation2587 #notification_settings_for2588 when source is nil2589 returns a blank global notification settings object2590 when source is a Group2591 when group has no existing notification settings2592 when group has no ancestors2593 will be a default Global notification setting2594 when group has ancestors2595 when an ancestor has a level other than Global2596 has the same level set2597 has the same email set2598 when inherit is false2599 does not inherit settings2600 when an ancestor has a Global level but has an email set2601 has the same email set2602 #notification_settings_for_groups2603 when given an ActiveRecord relationship2604 uses #select to maintain lazy querying behavior2605 behaves like notification_settings_for_groups method2606 returns NotificationSetting objects for provided groups2607 when given an Array of Groups2608 behaves like notification_settings_for_groups method2609 returns NotificationSetting objects for provided groups2610 #notification_email_for2611 when namespace is nil2612 returns global notification email2613 for group namespace2614 when group has no notification email set2615 returns global notification email2616 when group has notification email set2617 returns group notification email2618 for user namespace2619 returns global notification email2620 #valid_password?2621 user with disallowed password2622 is expected to eq false2623 using a wrong password2624 is expected to eq false2625 user with autogenerated_password2626 is expected to eq false2627 #generate_otp_backup_codes!2628 with FIPS mode2629 attempts to use #generate_otp_backup_codes_pbkdf2!2630 outside FIPS mode2631 does not attempt to use #generate_otp_backup_codes_pbkdf2!2632 #invalidate_otp_backup_code!2633 with FIPS mode2634 does not attempt to use #invalidate_otp_backup_code_pdkdf2!2635 with a PBKDF2-encrypted password2636 attempts to use #invalidate_otp_backup_code_pdkdf2!2637 outside FIPS mode2638 does not attempt to use #invalidate_otp_backup_code_pdkdf2!2639 #password_expired?2640 when password_expires_at is not set2641 returns false2642 when password_expires_at is in the past2643 returns true2644 when password_expires_at is in the future2645 returns false2646 #password_expired_if_applicable?2647 with a regular user2648 when password_expires_at is not set2649 returns false2650 when password_expires_at is in the past2651 returns true2652 when password_expires_at is in the future2653 returns false2654 when user is a bot2655 behaves like password expired not applicable2656 when password_expires_at is not set2657 returns false2658 when password_expires_at is in the past2659 returns false2660 when password_expires_at is in the future2661 returns false2662 when password_automatically_set is true2663 behaves like password expired not applicable2664 when password_expires_at is not set2665 returns false2666 when password_expires_at is in the past2667 returns false2668 when password_expires_at is in the future2669 returns false2670 when allow_password_authentication is false2671 behaves like password expired not applicable2672 when password_expires_at is not set2673 returns false2674 when password_expires_at is in the past2675 returns false2676 when password_expires_at is in the future2677 returns false2678 #can_log_in_with_non_expired_password?2679 when user can log in2680 returns true2681 when user with expired password2682 returns false2683 when password expiration is not applicable2684 when ldap user2685 returns true2686 when user cannot log in2687 when user is blocked2688 returns false2689 #read_only_attribute?2690 when synced attributes metadata is present2691 delegates to synced_attributes_metadata2692 when synced attributes metadata is not present2693 is false for any attribute2694 .active_without_ghosts2695 returns all active users including active bots but ghost users2696 #dismissed_callout?2697 when no callout dismissal record exists2698 returns false when no ignore_dismissal_earlier_than provided2699 when dismissed callout exists2700 returns true when no ignore_dismissal_earlier_than provided2701 returns true when ignore_dismissal_earlier_than is earlier than dismissed_at2702 returns false when ignore_dismissal_earlier_than is later than dismissed_at2703 #find_or_initialize_callout2704 when callout exists2705 returns existing callout2706 when callout does not exist2707 when feature name is valid2708 initializes a new callout2709 is valid2710 when feature name is not valid2711 initializes a new callout2712 is not valid2713 #dismissed_callout_for_group?2714 when no callout dismissal record exists2715 returns false when no ignore_dismissal_earlier_than provided2716 when dismissed callout exists2717 returns true when no ignore_dismissal_earlier_than provided2718 returns true when ignore_dismissal_earlier_than is earlier than dismissed_at2719 returns false when ignore_dismissal_earlier_than is later than dismissed_at2720 #dismissed_callout_for_project?2721 when no callout dismissal record exists2722 returns false when no ignore_dismissal_earlier_than provided2723 when dismissed callout exists2724 returns true when no ignore_dismissal_earlier_than provided2725 returns true when ignore_dismissal_earlier_than is earlier than dismissed_at2726 returns false when ignore_dismissal_earlier_than is later than dismissed_at2727 #find_or_initialize_group_callout2728 when callout exists2729 returns existing callout2730 when callout does not exist2731 when feature name is valid2732 initializes a new callout2733 is valid2734 when feature name is not valid2735 initializes a new callout2736 is not valid2737 #find_or_initialize_project_callout2738 when callout exists2739 returns existing callout2740 when callout does not exist2741 when feature name is valid2742 initializes a new callout2743 is valid2744 when feature name is not valid2745 initializes a new callout2746 is not valid2747 #hook_attrs2748 with a public email2749 includes id, name, username, avatar_url, and email2750 without a public email2751 does not include email if user's email is private2752 #webhook_email2753 when public email is present2754 returns public email2755 when public email is nil2756 returns [REDACTED]2757 user credit card validation2758 when user is initialized2759 is expected not to be present2760 when create user without credit card validation2761 is expected not to be present2762 when user credit card validation exists2763 is expected to be persisted2764 user detail2765 when user is initialized2766 is expected to be present2767 is expected not to be persisted2768 when user detail exists2769 is expected to be persisted2770 #current_highest_access_level2771 when no memberships exist2772 returns nil2773 when memberships exist2774 returns the highest access level for non requested memberships2775 when after_commit :update_highest_role2776 create user2777 schedules a job in the future2778 when user already exists2779 update user2780 attributes: {:state=>"blocked"}2781 when state was changed2782 when lease is obtained2783 takes the lease but does not release it2784 schedules a job in the future2785 when lease cannot be obtained2786 only schedules one job2787 attributes: {:user_type=>:ghost}2788 when state was changed2789 when lease is obtained2790 takes the lease but does not release it2791 schedules a job in the future2792 when lease cannot be obtained2793 only schedules one job2794 attributes: {:user_type=>:alert_bot}2795 when state was changed2796 when lease is obtained2797 takes the lease but does not release it2798 schedules a job in the future2799 when lease cannot be obtained2800 only schedules one job2801 attributes: {:user_type=>:support_bot}2802 when state was changed2803 when lease is obtained2804 takes the lease but does not release it2805 schedules a job in the future2806 when lease cannot be obtained2807 only schedules one job2808 attributes: {:user_type=>:security_bot}2809 when state was changed2810 when lease is obtained2811 takes the lease but does not release it2812 schedules a job in the future2813 when lease cannot be obtained2814 only schedules one job2815 attributes: {:user_type=>:automation_bot}2816 when state was changed2817 when lease is obtained2818 takes the lease but does not release it2819 schedules a job in the future2820 when lease cannot be obtained2821 only schedules one job2822 attributes: {:user_type=>:admin_bot}2823 when state was changed2824 when lease is obtained2825 takes the lease but does not release it2826 schedules a job in the future2827 when lease cannot be obtained2828 only schedules one job2829 when state was not changed2830 does not obtain an exclusive lease2831 destroy user2832 does not obtain an exclusive lease2833 #active_for_authentication?2834 when user is blocked2835 is expected to equal false2836 does not check if LDAP is allowed2837 when user is a ghost user2838 is expected to equal false2839 when user is ldap_blocked2840 rechecks if LDAP is allowed when LDAP is enabled2841 does not check if LDAP is allowed when LDAP is not enabled2842 based on user type2843 user_type: "human", expected_result: true2844 is expected to equal true2845 user_type: "alert_bot", expected_result: false2846 is expected to equal false2847 user_type: "support_bot", expected_result: false2848 is expected to equal false2849 user_type: "security_bot", expected_result: false2850 is expected to equal false2851 user_type: "automation_bot", expected_result: false2852 is expected to equal false2853 user_type: "admin_bot", expected_result: false2854 is expected to equal false2855 #inactive_message2856 when user is blocked2857 is expected to eq :blocked2858 when user is an internal user2859 is expected to equal :forbidden2860 when user is locked2861 is expected to equal :locked2862 when user is blocked pending approval2863 is expected to equal :blocked_pending_approval2864 #password_required?2865 when user is an internal user2866 behaves like does not require password to be present2867 is expected not to validate that :password cannot be empty/falsy2868 is expected not to validate that :password_confirmation cannot be empty/falsy2869 when user is a project bot user2870 behaves like does not require password to be present2871 is expected not to validate that :password cannot be empty/falsy2872 is expected not to validate that :password_confirmation cannot be empty/falsy2873 can_trigger_notifications?2874 when user is not confirmed2875 returns false2876 when user is blocked2877 returns false2878 when user is a ghost2879 returns false2880 when user is confirmed and neither blocked or a ghost2881 returns true2882 bot users2883 behaves like bot users2884 creates the user if it does not exist2885 creates a route for the namespace of the created user2886 does not create a new user if it already exists2887 behaves like bot users2888 creates the user if it does not exist2889 creates a route for the namespace of the created user2890 does not create a new user if it already exists2891 behaves like bot users2892 creates the user if it does not exist2893 creates a route for the namespace of the created user2894 does not create a new user if it already exists2895 behaves like bot users2896 creates the user if it does not exist2897 creates a route for the namespace of the created user2898 does not create a new user if it already exists2899 behaves like bot users2900 creates the user if it does not exist2901 creates a route for the namespace of the created user2902 does not create a new user if it already exists2903 behaves like bot users2904 creates the user if it does not exist2905 creates a route for the namespace of the created user2906 does not create a new user if it already exists2907 behaves like bot users2908 creates the user if it does not exist2909 creates a route for the namespace of the created user2910 does not create a new user if it already exists2911 behaves like bot user avatars2912 sets the custom avatar for the created bot2913 behaves like bot user avatars2914 sets the custom avatar for the created bot2915 behaves like bot user avatars2916 sets the custom avatar for the created bot2917 behaves like bot user avatars2918 sets the custom avatar for the created bot2919 behaves like bot user avatars2920 sets the custom avatar for the created bot2921 when bot is the support_bot2922 is expected to be confirmed2923 when bot is the admin bot2924 is expected to be admin2925 is expected to be confirmed2926 #confirmation_required_on_sign_in?2927 when user is confirmed2928 is falsey2929 when user is not confirmed2930 is truthy when soft_email_confirmation feature is disabled2931 when soft_email_confirmation feature is enabled2932 is falsey when confirmation period is valid2933 is truthy when confirmation period is expired2934 when user has no confirmation email sent2935 is truthy2936 .dormant2937 returns dormant users2938 .with_no_activity2939 returns users with no activity2940 .by_provider_and_extern_uid2941 calls Identity model scope to ensure case-insensitive query2942 #unset_secondary_emails_matching_deleted_email!2943 when no secondary email matches the deleted email2944 does nothing2945 when a secondary email matches the deleted_email2946 un-sets the secondary email2947 #groups_with_developer_maintainer_project_access2948 is expected to contain exactly #<Group id:1533 @group324>2949 .get_ids_by_ids_or_usernames2950 returns the id of each record matching username2951 returns the id of each record matching user id2952 return the id for all records matching either user id or user name2953 .by_ids_or_usernames2954 returns matching records based on username2955 returns matching records based on id2956 returns matching records based on both username and id2957 .without_forbidden_states2958 does not return blocked or banned users2959 user_project2960 returns users project matched by username and public visibility2961 user_readme2962 returns readme from user project2963 returns nil if project is private2964 behaves like it has loose foreign keys2965 has at least one loose foreign key definition2966 has the deletion trigger present2967 records record deletions2968 cleans up record deletions2969 user age2970 returns age in days2971 state machine and default attributes2972 raises errors by default2973 with state machine default attributes override2974 does not raise errors2975 raises errors when default attributes are used2976 does not evaluate default attributes when values are provided2977 sets the state machine default value2978Gitlab::Auth2979 constants2980 API_SCOPES contains all scopes for API access2981 ADMIN_SCOPES contains all scopes for ADMIN access2982 REPOSITORY_SCOPES contains all scopes for REPOSITORY access2983 OPENID_SCOPES contains all scopes for OpenID Connect2984 DEFAULT_SCOPES contains all default scopes2985 optional_scopes contains all non-default scopes2986 available_scopes2987 contains all non-default scopes2988 contains for non-admin user all non-default scopes without ADMIN access2989 contains for admin user all non-default scopes with ADMIN access2990 registry_scopes2991 when registry is disabled2992 is empty2993 when registry is enabled2994 contains all registry related scopes2995 find_for_git_client2996 recognizes other ci services2997 recognizes master passwords2998 allows user authenticating from the same ip2999 blocks user authenticating from two distinct ips3000 returns double nil for invalid credentials3001 throws an error suggesting user create a PAT when internal auth is disabled3002 rate limiting3003 when IP is already banned3004 raises an IpBlacklisted exception3005 for CI registry user3006 skips rate limiting for successful auth3007 skips rate limiting for failed auth3008 for other users3009 resets rate limit for successful auth3010 rate limits a user by unique IPs3011 registers failure for failed auth3012 build token3013 for running build3014 recognises user-less build3015 recognises user token3016 recognises project level bot access token3017 recognises group level bot access token3018 fails with blocked user token3019 username is not gitlab-ci-token3020 fails to authenticate3021 for created build3022 denies authentication3023 for waiting_for_resource build3024 denies authentication3025 for preparing build3026 denies authentication3027 for pending build3028 denies authentication3029 for success build3030 denies authentication3031 for failed build3032 denies authentication3033 for canceled build3034 denies authentication3035 for skipped build3036 denies authentication3037 for manual build3038 denies authentication3039 for scheduled build3040 denies authentication3041 while using LFS authenticate3042 recognizes user lfs tokens3043 recognizes deploy key lfs tokens3044 does not try password auth before oauth3045 grants deploy key write permissions3046 does not grant deploy key write permissions3047 while using OAuth tokens as passwords3048 does not try password auth before oauth3049 with specified scopes3050 scopes: "api", abilities: [:read_project, :download_code, :read_container_image, :push_code, :create_container_image, :admin_container_image]3051 authenticates with correct abilities3052 scopes: "read_api", abilities: [:read_project, :download_code, :read_container_image]3053 authenticates with correct abilities3054 scopes: "read_repository", abilities: [:download_code]3055 authenticates with correct abilities3056 scopes: "write_repository", abilities: [:download_code, :push_code]3057 authenticates with correct abilities3058 scopes: "read_user", abilities: []3059 authenticates with correct abilities3060 scopes: "sudo", abilities: []3061 authenticates with correct abilities3062 scopes: "openid", abilities: []3063 authenticates with correct abilities3064 scopes: "profile", abilities: []3065 authenticates with correct abilities3066 scopes: "email", abilities: []3067 authenticates with correct abilities3068 blocked user3069 behaves like an oauth failure3070 fails3071 orphaned token3072 behaves like an oauth failure3073 fails3074 while using personal access tokens as passwords3075 succeeds for personal access tokens with the `api` scope3076 succeeds for personal access tokens with the `read_repository` scope3077 succeeds for personal access tokens with the `write_repository` scope3078 succeeds if it is an impersonation token3079 fails if it is an impersonation token but impersonation is blocked3080 limits abilities based on scope3081 fails if password is nil3082 updates last_used_at column if token is valid3083 when registry is enabled3084 succeeds for personal access tokens with the `read_registry` scope3085 when user is blocked3086 fails if user is blocked3087 when using a resource access token3088 when using a personal namespace project access token3089 when the token belongs to the project3090 behaves like with a valid access token3091 successfully authenticates the project bot3092 successfully authenticates the project bot with a nil project3093 behaves like with an invalid access token3094 fails for a non-member3095 when project bot user is blocked3096 fails for a blocked project bot3097 when in a group namespace3098 when using a project access token3099 when token user belongs to the project3100 behaves like with a valid access token3101 successfully authenticates the project bot3102 successfully authenticates the project bot with a nil project3103 behaves like with an invalid access token3104 fails for a non-member3105 when project bot user is blocked3106 fails for a blocked project bot3107 when using a group access token3108 when the token belongs to the group3109 behaves like with a valid access token3110 successfully authenticates the project bot3111 successfully authenticates the project bot with a nil project3112 behaves like with an invalid access token3113 fails for a non-member3114 when project bot user is blocked3115 fails for a blocked project bot3116 when the token belongs to a group via project share3117 behaves like with a valid access token3118 successfully authenticates the project bot3119 successfully authenticates the project bot with a nil project3120 while using regular user and password3121 fails for a blocked user3122 goes through lfs authentication3123 goes through oauth authentication when the username is oauth23124 when 2fa is enabled globally3125 fails if grace period expired3126 goes through if grace period is not expired yet3127 when 2fa is enabled personally3128 fails3129 while using deploy tokens3130 when deploy token and user have the same username3131 succeeds for the token3132 succeeds for the user3133 when deploy tokens have the same username3134 and belong to the same project3135 succeeds for the right token3136 fails for the wrong token3137 and belong to different projects3138 succeeds for the right token3139 fails for the wrong token3140 when the deploy token has read_repository as scope3141 succeeds when login and token are valid3142 succeeds when custom login and token are valid3143 does not attempt to rate limit unique IPs for a deploy token3144 fails when login is not valid3145 fails when token is not valid3146 fails if token is nil3147 fails if token is not related to project3148 fails if token has been revoked3149 when the deploy token is of group type3150 succeeds when login and a group deploy token are valid3151 fails if token is not related to group3152 when the deploy token has read_registry as a scope3153 when registry enabled3154 succeeds when login and a project token are valid3155 behaves like registry token scope3156 fails when login is not valid3157 fails when token is not valid3158 fails if token is nil3159 fails if token is not related to project3160 fails if token has been revoked3161 behaves like deploy token with disabled feature3162 when registry disabled3163 fails when login and token are valid3164 when repository is disabled3165 fails when login and token are valid3166 when the deploy token has write_registry as a scope3167 when registry enabled3168 succeeds when login and a project token are valid3169 behaves like registry token scope3170 fails when login is not valid3171 fails when token is not valid3172 fails if token is nil3173 fails if token is not related to project3174 fails if token has been revoked3175 behaves like deploy token with disabled feature3176 when registry disabled3177 fails when login and token are valid3178 when repository is disabled3179 fails when login and token are valid3180 #build_access_token_check3181 for running build3182 executes query using primary database3183 find_with_user_password3184 finds user by valid login/password3185 finds user by valid email/password with case-insensitive email3186 finds user by valid username/password with case-insensitive username3187 does not find user with invalid password3188 does not find user with invalid login3189 allows user authenticating from the same ip3190 blocks user authenticating from two distinct ips3191 finds the user in deactivated state3192 does not find user in blocked state3193 does not find user in locked state3194 does not find user in ldap_blocked state3195 does not find user in blocked_pending_approval state3196 with increment_failed_attempts3197 increments failed_attempts when true and password is incorrect3198 resets failed_attempts when true and password is correct3199 does not increment failed_attempts by default3200 when the database is read-only3201 does not increment failed_attempts when true and password is incorrect3202 does not reset failed_attempts when true and password is correct3203 with ldap enabled3204 tries to autheticate with db before ldap3205 does not find user by using ldap as fallback to for authentication3206 find new user by using ldap as fallback to for authentication3207 with password authentication disabled for Git3208 does not find user by valid login/password3209 with ldap enabled3210 does not find non-ldap user by valid login/password3211 .resource_bot_scopes3212 is expected to include :api and :read_api3213 is expected to include :read_repository and :write_repository3214 is expected to include nil3215Ci::Runner3216 behaves like having unique enum values3217 has unique values in "access_level"3218 has unique values in "runner_type"3219 has unique values in "executor_type"3220 behaves like it has loose foreign keys3221 has at least one loose foreign key definition3222 has the deletion trigger present3223 records record deletions3224 cleans up record deletions3225 groups association3226 does not create a cross-database query3227 projects association3228 does not create a cross-database query3229 acts_as_taggable3230 on save3231 tag does not exist3232 creates a tag3233 creates an association to the tag3234 tag already exists3235 does not create a tag3236 creates an association to the tag3237 validation3238 is expected to validate that :access_level cannot be empty/falsy3239 is expected to validate that :runner_type cannot be empty/falsy3240 when runner is not allowed to pick untagged jobs3241 when runner does not have tags3242 is not valid3243 when runner has too many tags3244 is not valid3245 when runner has tags3246 is valid3247 #exactly_one_group3248 disallows assigning group if already assigned to a group3249 runner_type validations3250 disallows assigning group to project_type runner3251 disallows assigning group to instance_type runner3252 disallows assigning project to group_type runner3253 disallows assigning project to instance_type runner3254 fails to save a group assigned to a project runner even if the runner is already saved3255 when runner has config3256 is valid3257 when runner has an invalid config3258 is invalid3259 cost factors validations3260 disallows :private_projects_minutes_cost_factor being nil3261 disallows :public_projects_minutes_cost_factor being nil3262 disallows :private_projects_minutes_cost_factor being negative3263 disallows :public_projects_minutes_cost_factor being negative3264 constraints3265 .UPDATE_CONTACT_COLUMN_EVERY3266 #access_level3267 when creating new runner and access_level is nil3268 object is invalid3269 when creating new runner and access_level is defined in enum3270 object is valid3271 when creating new runner and access_level is not defined in enum3272 raises an error3273 .instance_type3274 returns only shared runners3275 .belonging_to_project3276 returns the specific project runner3277 when use_traversal_ids* are enabled3278 behaves like .belonging_to_parent_group_of_project3279 returns the specific group runner3280 with a parent group with a runner3281 returns the group runner from the group and the parent group3282 with multiple project ids3283 raises ArgumentError3284 when use_traversal_ids* are disabled3285 behaves like .belonging_to_parent_group_of_project3286 returns the specific group runner3287 with a parent group with a runner3288 returns the group runner from the group and the parent group3289 with multiple project ids3290 raises ArgumentError3291 with instance runners sharing enabled3292 .owned_or_instance_wide3293 returns a globally shared, a project specific and a group specific runner3294 .group_or_instance_wide3295 returns a globally shared and a group specific runner3296 with instance runners sharing disabled3297 .owned_or_instance_wide3298 with group runners disabled3299 returns only the project specific runner3300 with group runners enabled3301 returns a project specific and a group specific runner3302 .group_or_instance_wide3303 returns a group specific runner3304 #display_name3305 returns the description if it has a value3306 returns the token if it does not have a description3307 returns the token if the description is an empty string3308 #only_for3309 with matching project3310 is expected to be truthy3311 without matching project3312 is expected to be falsey3313 with runner having multiple projects3314 is expected to be falsey3315 #assign_to3316 with shared_runner3317 raises an error3318 with group runner3319 raises an error3320 with project runner3321 assigns runner to project3322 .recent3323 is expected to eq [#<Ci::Runner id: 131, token: nil, created_at: "2022-10-08 01:09:22.378742860 +0000", updated_at: "20... executor_type: nil, maintainer_note: nil, token_expires_at: nil, allowed_plans: [], tag_list: nil>]3324 .active3325 with active_value set to false3326 returns inactive runners3327 with active_value set to true3328 returns active runners3329 .paused3330 returns inactive runners3331 .stale3332 returns stale runners3333 #stale?3334 table tests3335 created_at: nil, contacted_at: nil, expected_stale?: false3336 no cache value3337 is expected to eq false3338 with cache value3339 is expected to eq false3340 created_at: Thu, 08 Sep 2022 01:02:59.755825886 UTC +00:00, contacted_at: Thu, 08 Sep 2022 01:03:00.755075925 UTC +00:00, expected_stale?: true3341 no cache value3342 is expected to eq true3343 with cache value3344 is expected to eq true3345 created_at: Thu, 08 Sep 2022 01:02:59.756196616 UTC +00:00, contacted_at: Thu, 08 Sep 2022 02:03:00.756271896 UTC +00:00, expected_stale?: false3346 no cache value3347 is expected to eq false3348 with cache value3349 is expected to eq false3350 created_at: Thu, 08 Sep 2022 01:02:59.756330836 UTC +00:00, contacted_at: nil, expected_stale?: true3351 no cache value3352 is expected to eq true3353 with cache value3354 is expected to eq true3355 created_at: Thu, 08 Sep 2022 02:03:00.756381656 UTC +00:00, contacted_at: nil, expected_stale?: false3356 no cache value3357 is expected to eq false3358 with cache value3359 is expected to eq false3360 .online3361 is expected to contain exactly #<Ci::Runner id: 144, token: nil, created_at: "2022-12-08 01:09:23.014585423 +0000", updated_at: "202..., executor_type: nil, maintainer_note: nil, token_expires_at: nil, allowed_plans: [], tag_list: nil>3362 #online?3363 no cache value3364 never contacted3365 is expected to be falsey3366 contacted long time ago3367 is expected to be falsey3368 contacted 1s ago3369 is expected to be truthy3370 with cache value3371 contacted long time ago3372 is expected to be falsey3373 contacted 1s ago3374 is expected to be truthy3375 .offline3376 is expected to eq [#<Ci::Runner id: 145, token: nil, created_at: "2022-12-08 01:09:23.229608607 +0000", updated_at: "20... executor_type: nil, maintainer_note: nil, token_expires_at: nil, allowed_plans: [], tag_list: nil>]3377 .with_running_builds3378 with no builds running3379 is expected to be empty3380 with single build running on runner23381 is expected to contain exactly #<Ci::Runner id: 148, token: nil, created_at: "2022-12-08 01:09:23.979899125 +0000", updated_at: "202..., executor_type: nil, maintainer_note: nil, token_expires_at: nil, allowed_plans: [], tag_list: nil> and #<Ci::Runner id: 149, token: nil, created_at: "2022-12-08 01:09:24.143554865 +0000", updated_at: "202..., executor_type: nil, maintainer_note: nil, token_expires_at: nil, allowed_plans: [], tag_list: nil>3382 #matches_build?3383 when runner does not have tags3384 is expected to be truthy3385 cannot handle build with tags3386 when runner has tags3387 when runner can pick untagged jobs3388 is expected to be truthy3389 behaves like tagged build picker3390 can handle build with matching tags3391 cannot handle build without matching tags3392 when runner cannot pick untagged jobs3393 is expected to be falsey3394 behaves like tagged build picker3395 can handle build with matching tags3396 cannot handle build without matching tags3397 when runner is shared3398 is expected to be truthy3399 does not query for owned or instance runners3400 when runner is locked3401 is expected to be truthy3402 when runner is not shared3403 when runner is assigned to a project3404 is expected to be truthy3405 when runner is assigned to a group3406 is expected to be truthy3407 knows namespace id it is assigned to3408 when access_level of runner is not_protected3409 when build is protected3410 is expected to be truthy3411 when build is unprotected3412 is expected to be truthy3413 when access_level of runner is ref_protected3414 when build is protected3415 is expected to be truthy3416 when build is unprotected3417 is expected to be falsey3418 matches tags3419 run_untagged: true, runner_tags: [], build_tags: [], result: true3420 is expected to eq true3421 run_untagged: true, runner_tags: [], build_tags: ["a"], result: false3422 is expected to eq false3423 run_untagged: true, runner_tags: ["a", "b"], build_tags: ["a"], result: true3424 is expected to eq true3425 run_untagged: true, runner_tags: ["a"], build_tags: ["a", "b"], result: false3426 is expected to eq false3427 run_untagged: true, runner_tags: ["a"], build_tags: ["a"], result: true3428 is expected to eq true3429 run_untagged: false, runner_tags: ["a"], build_tags: ["a"], result: true3430 is expected to eq true3431 run_untagged: false, runner_tags: ["b"], build_tags: ["a"], result: false3432 is expected to eq false3433 run_untagged: false, runner_tags: ["a", "b"], build_tags: ["a"], result: true3434 is expected to eq true3435 #status3436 never connected3437 with legacy_mode enabled3438 is expected to eq :stale3439 with legacy_mode disabled3440 is expected to eq :stale3441 created recently3442 is expected to eq :never_contacted3443 inactive but online3444 with legacy_mode enabled3445 is expected to eq :paused3446 with legacy_mode disabled3447 is expected to eq :online3448 contacted 1s ago3449 is expected to eq :online3450 contacted recently3451 is expected to eq :offline3452 contacted long time ago3453 with legacy_mode enabled3454 is expected to eq :stale3455 with legacy_mode disabled3456 is expected to eq :stale3457 #deprecated_rest_status3458 never connected3459 is expected to eq :never_contacted3460 contacted 1s ago3461 is expected to eq :online3462 contacted long time ago3463 is expected to eq :stale3464 inactive3465 is expected to eq :paused3466 #tick_runner_queue3467 returns a new last_update value3468 sticks the runner to the primary and calls the original method3469 #ensure_runner_queue_value3470 sets a new last_update value when it is called the first time3471 does not change if it is not expired and called again3472 updates runner queue after changing editable value3473 sets a new last_update value3474 does not update runner value after save3475 has an old last_update value3476 #heartbeat3477 when database was updated recently3478 updates cache3479 when database was not updated recently3480 updates redis cache and database3481 with invalid runner3482 still updates redis cache and database3483 with unchanged runner version3484 does not schedule ci_runner_versions update3485 with custom executor3486 updates with expected executor type3487 with shell executor3488 updates with expected executor type3489 with docker executor3490 updates with expected executor type3491 with docker-windows executor3492 updates with expected executor type3493 with docker-ssh executor3494 updates with expected executor type3495 with ssh executor3496 updates with expected executor type3497 with parallels executor3498 updates with expected executor type3499 with virtualbox executor3500 updates with expected executor type3501 with docker+machine executor3502 updates with expected executor type3503 with docker-ssh+machine executor3504 updates with expected executor type3505 with kubernetes executor3506 updates with expected executor type3507 with some-unknown-type executor3508 updates with expected executor type3509 #destroy3510 when there is a tick in the queue3511 cleans up the queue3512 .assignable_for3513 with already assigned project3514 is expected to be empty3515 with a different project3516 is expected to include #<Ci::Runner id: 203, token: nil, created_at: "2022-12-08 01:09:33.076847978 +0000", updated_at: "202..., executor_type: nil, maintainer_note: nil, token_expires_at: nil, allowed_plans: [], tag_list: nil>3517 is expected not to include #<Ci::Runner id: 205, token: nil, created_at: "2022-12-08 01:09:33.193034664 +0000", updated_at: "202..., executor_type: nil, maintainer_note: nil, token_expires_at: nil, allowed_plans: [], tag_list: nil>3518 is expected not to include #<Ci::Runner id: 204, token: nil, created_at: "2022-12-08 01:09:33.107256405 +0000", updated_at: "202..., executor_type: nil, maintainer_note: nil, token_expires_at: nil, allowed_plans: [], tag_list: nil>3519 is expected not to include #<Ci::Runner id: 206, token: nil, created_at: "2022-12-08 01:09:33.205618853 +0000", updated_at: "202..., executor_type: nil, maintainer_note: nil, token_expires_at: nil, allowed_plans: [], tag_list: nil>3520 Project-related queries3521 #owner_project3522 with project1 as first project associated with runner3523 is expected to eq #<Project id:277 namespace240/project281>>3524 with project2 as first project associated with runner3525 is expected to eq #<Project id:278 namespace241/project282>>3526 #belongs_to_one_project?3527 returns false if there are two projects runner is assigned to3528 returns true if there is only one project runner is assigned to3529 #belongs_to_more_than_one_project?3530 project runner3531 two projects assigned to runner3532 returns true3533 one project assigned to runner3534 returns false3535 group runner3536 returns false3537 shared runner3538 returns false3539 #save_tags3540 saves tags3541 strips tags3542 with BulkInsertableTags.with_bulk_insert_tags3543 does not save_tags3544 over TAG_LIST_MAX_LENGTH3545 fails validation if over tag limit3546 #has_tags?3547 when runner has tags3548 is expected to have tags3549 when runner does not have tags3550 is expected not to have tags3551 .search3552 returns runners with a matching token3553 does not return runners with a partially matching token3554 does not return runners with a matching token with different casing3555 returns runners with a matching description3556 returns runners with a partially matching description3557 returns runners with a matching description regardless of the casing3558 #pick_build!3559 runner can pick the build3560 calls #tick_runner_queue3561 runner cannot pick the build3562 does not call #tick_runner_queue3563 project runner without projects is destroyable3564 does not have projects3565 can be destroyed3566 .order_by3567 supports ordering by the contact date3568 supports ordering by the creation date3569 supports ordering by the token expiration3570 .runner_matchers3571 deduplicates on runner_type3572 creates two matchers3573 deduplicates on public_projects_minutes_cost_factor3574 creates two matchers3575 deduplicates on private_projects_minutes_cost_factor3576 creates two matchers3577 deduplicates on run_untagged3578 creates two matchers3579 deduplicates on access_level3580 creates two matchers3581 deduplicates on tag_list3582 creates two matchers3583 with runner_ids3584 includes runner_ids3585 #runner_matcher3586 is expected to eq [1027]3587 is expected to eq "instance_type"3588 is expected to eq 0.03589 is expected to eq 1.03590 is expected to eq true3591 is expected to eq "not_protected"3592 is expected to contain exactly "tag1" and "tag2"3593 #uncached_contacted_at3594 is expected to eq 2022-12-08 00:09:37.000000000 +00003595 Group-related queries3596 .belonging_to_group3597 with scope set to top_level_group3598 returns the group runners from the top_level_group3599 with scope set to child_group3600 returns the group runners from the child_group3601 .belonging_to_group_and_ancestors3602 returns the group runners from the group and parent group3603 .belonging_to_group_or_project_descendants3604 with scope set to top_level_group3605 returns the expected group and project runners without duplicates3606 with scope set to child_group3607 returns the expected group and project runners without duplicates3608 .usable_from_scope3609 with scope set to top_level_group3610 returns all runners usable from top_level_group without duplicates3611 with scope set to child_group3612 returns all runners usable from child_group3613 with scope set to other_top_level_group3614 returns all runners usable from other_top_level_group3615 #token_expires_at3616 no expiration3617 behaves like non-expiring token3618 does not expire3619 system-wide shared expiration3620 behaves like expiring token3621 expires3622 system-wide group expiration3623 behaves like non-expiring token3624 does not expire3625 system-wide project expiration3626 behaves like non-expiring token3627 does not expire3628 group expiration3629 behaves like expiring token3630 expires3631 human-readable group expiration3632 behaves like expiring token3633 expires3634 project expiration3635 behaves like expiring token3636 expires3637 human-readable project expiration3638 behaves like expiring token3639 expires3640 multiple projects3641 behaves like expiring token3642 expires3643 with project runner token expiring3644 project overrides system3645 behaves like expiring token3646 expires3647 system overrides project3648 behaves like expiring token3649 expires3650 with group runner token expiring3651 group overrides system3652 behaves like expiring token3653 expires3654 system overrides group3655 behaves like expiring token3656 expires3657 with group's project runner token expiring3658 parent group overrides subgroup3659 behaves like expiring token3660 expires3661 subgroup overrides parent group3662 behaves like expiring token3663 expires3664 with group's project runner token expiring3665 group overrides project3666 behaves like expiring token3667 expires3668 project overrides group3669 behaves like expiring token3670 expires3671 #with_upgrade_status3672 :not_available3673 returns runners whose version is assigned :not_available3674 :available3675 returns runners whose version is assigned :available3676 :recommended3677 returns runners whose version is assigned :recommended3678 composed with other scopes3679 returns runner matching the composed scope3680Projects::CreateService#execute3681 calls the passed block3682 writes project full path to gitaly3683 triggers PostCreationWorker3684 with labels3685 creates labels on project creation3686 using gitlab project import3687 does not creates labels on project creation3688 setting name and path3689 when both are set3690 keeps them as specified3691 when path is set3692 sets name == path3693 when name is a valid path3694 sets path == name3695 when name is not a valid path3696 parameterizes the name3697 topics3698 with 'topics' parameter3699 keeps them as specified3700 with 'topic_list' parameter3701 keeps them as specified3702 with 'tag_list' parameter (deprecated)3703 keeps them as specified3704 user namespace3705 creates a project in user namespace3706 project_authorizations record creation3707 when the project_authrizations records are not created via the callback3708 still creates project_authrizations record for the user3709 when the passed in namespace is for a bot user3710 raises an error3711 after create actions3712 invalidate personal_projects_count caches3713 creates associated project settings3714 logs creation3715 publishes a ProjectCreatedEvent3716 behaves like storing arguments in the application context3717 places the expected params in the application context3718 admin creates project with other user's namespace_id3719 when admin mode is enabled3720 sets the correct permissions3721 when admin mode is disabled3722 is not allowed3723 group namespace3724 creates the project3725 behaves like has sync-ed traversal_ids3726 is expected to eq [1924, 1925]3727 group sharing3728 updates authorization3729 user with project limit3730 under personal namespace3731 cannot create a project3732 under group namespace3733 can create a project3734 membership overrides3735 membership is higher from group hierarchy3736 updates authorization3737 membership is higher from group share3738 share max access level is not limiting3739 updates authorization3740 share max access level is limiting3741 updates authorization3742 error handling3743 handles invalid options3744 wiki_enabled creates repository directory3745 wiki_enabled true creates wiki repository directory3746 is expected to be truthy3747 wiki_enabled false does not create wiki repository directory3748 is expected to be falsey3749 import data3750 does not write repository config3751 stores import data and URL3752 tracks for imported project3753 import scheduling3754 when project import type is gitlab project migration3755 does not schedule project import3756 builds_enabled global setting3757 global builds_enabled false does not enable CI by default3758 is expected to be falsey3759 global builds_enabled true does enable CI by default3760 is expected to be truthy3761 default visibility level3762 in public group3763 creates project with correct visibility level3764 in internal group3765 creates project with correct visibility level3766 in private group3767 creates project with correct visibility level3768 restricted visibility level3769 when visibility is project based3770 does not allow a restricted visibility level for non-admins3771 does not allow a restricted visibility level for admins when admin mode is disabled3772 allows a restricted visibility level for admins when admin mode is enabled3773 when visibility is overridden3774 does not allow a restricted visibility level for non-admins3775 does not allow a restricted visibility level for admins when admin mode is disabled3776 allows a restricted visibility level for admins when admin mode is enabled3777 when visibility is misspelled3778 does not restrict project creation3779 repository creation3780 synchronously creates the repository3781 when another repository already exists on disk3782 with legacy storage3783 does not allow to create a project when path matches existing repository on disk3784 does not allow to import project when path matches existing repository on disk3785 with hashed storage3786 does not allow to create a project when path matches existing repository on disk3787 when readme initialization is requested3788 behaves like a repo with a README.md3789 is expected to equal 13790 is expected to eql "README.md"3791 is expected to include "cd existing_repo\ngit remote add origin http://localhost/user1040/GitLab.git\ngit branch -M master\ngit push -uf origin master\n"3792 and a readme_template is specified3793 behaves like a repo with a README.md3794 is expected to equal 13795 is expected to eql "README.md"3796 is expected to include "# GitLab\nThis is customized readme."3797 and a default_branch_name is specified3798 creates the correct branch3799 behaves like a repo with a README.md3800 is expected to equal 13801 is expected to eql "README.md"3802 is expected to include "cd existing_repo\ngit remote add origin http://localhost/user1047/GitLab.git\ngit branch -M example_branch\ngit push -uf origin example_branch\n"3803 when SAST initialization is requested3804 creates a commit for SAST3805 create integration for the project3806 with an active instance-level integration3807 creates an integration from the instance-level integration3808 with an active group-level integration3809 creates an integration from the group-level integration3810 with an active subgroup3811 creates an integration from the subgroup-level integration3812 when skip_disk_validation is used3813 sets the project attribute3814 when import source is enabled3815 does not raise an error when import_source is string3816 does not raise an error when import_source is symbol3817 when import source is disabled3818 raises an error3819 with external authorization enabled3820 does not save the project with an error if the service denies access3821 saves the project when the user has access to the label3822 does not save the project when the user has no access to the default label and no label is provided3823 behaves like measurable service3824 when measurement is enabled3825 measure service execution with Gitlab::Utils::Measuring3826 when measurement is disabled3827 does not measure service execution3828 with specialized project_authorization workers3829 updates authorization for current_user3830 schedules authorization update for users with access to group3831 shared Runners config3832 when parent group is present3833 default value based on parent group setting3834 shared_runners_setting: "enabled", desired_config_for_new_project: nil, expected_result_for_project: true3835 creates project following the parent config3836 shared_runners_setting: "disabled_with_override", desired_config_for_new_project: nil, expected_result_for_project: false3837 creates project following the parent config3838 shared_runners_setting: "disabled_and_unoverridable", desired_config_for_new_project: nil, expected_result_for_project: false3839 creates project following the parent config3840 parent group is present and allows desired config3841 shared_runners_setting: "enabled", desired_config_for_new_project: true, expected_result_for_project: true3842 creates project following the parent config3843 shared_runners_setting: "enabled", desired_config_for_new_project: false, expected_result_for_project: false3844 creates project following the parent config3845 shared_runners_setting: "disabled_with_override", desired_config_for_new_project: false, expected_result_for_project: false3846 creates project following the parent config3847 shared_runners_setting: "disabled_with_override", desired_config_for_new_project: true, expected_result_for_project: true3848 creates project following the parent config3849 shared_runners_setting: "disabled_and_unoverridable", desired_config_for_new_project: false, expected_result_for_project: false3850 creates project following the parent config3851 parent group is present and disallows desired config3852 shared_runners_setting: "disabled_and_unoverridable", desired_config_for_new_project: true3853 does not create project3854 parent group is not present3855 desired_config: true, expected_result: true3856 follows desired config3857 desired_config: false, expected_result: false3858 follows desired config3859 desired_config: nil, expected_result: true3860 follows desired config3861SystemNotes::IssuablesService3862 #relate_issuable3863 behaves like a system note3864 has the correct attributes3865 when issue marks another as related3866 sets the note text3867 #unrelate_issuable3868 behaves like a system note3869 has the correct attributes3870 when issue relation is removed3871 sets the note text3872 #change_assignee3873 behaves like a system note3874 has the correct attributes3875 when assignee added3876 sets the note text3877 behaves like a note with overridable created_at3878 the note has the correct time3879 when assignee removed3880 sets the note text3881 behaves like a note with overridable created_at3882 the note has the correct time3883 #change_issuable_assignees3884 builds a correct phrase when an assignee is added to a non-assigned issue3885 builds a correct phrase when assignee removed3886 builds a correct phrase when assignees changed3887 builds a correct phrase when three assignees removed and one added3888 builds a correct phrase when one assignee changed from a set3889 builds a correct phrase when one assignee removed from a set3890 builds a correct phrase when the locale is different3891 behaves like a system note3892 has the correct attributes3893 behaves like a note with overridable created_at3894 the note has the correct time3895 #change_issuable_reviewers3896 builds a correct phrase when a reviewer is added to a non-assigned merge request3897 builds a correct phrase when reviewer is removed3898 builds a correct phrase when reviewers changed3899 builds a correct phrase when three reviewers removed and one added3900 builds a correct phrase when one reviewer is changed from a set3901 builds a correct phrase when one reviewer removed from a set3902 builds a correct phrase when the locale is different3903 behaves like a system note3904 has the correct attributes3905 #change_issuable_contacts3906 builds a correct phrase when one contact is added3907 builds a correct phrase when one contact is removed3908 builds a correct phrase when one contact is added and one contact is removed3909 builds a correct phrase when three contacts are added and one removed3910 builds a correct phrase when three contacts are removed and one added3911 builds a correct phrase when the locale is different3912 behaves like a system note3913 has the correct attributes3914 #change_status3915 creates a resource state event3916 #change_title3917 when noteable responds to `title`3918 sets the note text3919 behaves like a system note3920 has the correct attributes3921 behaves like a note with overridable created_at3922 the note has the correct time3923 #change_description3924 when noteable responds to `description`3925 sets the note text3926 associates the related description version3927 behaves like a system note3928 has the correct attributes3929 behaves like a note with overridable created_at3930 the note has the correct time3931 #change_issue_confidentiality3932 issue has been made confidential3933 sets the note text3934 behaves like a system note3935 has the correct attributes3936 issue has been made visible3937 sets the note text3938 behaves like a system note3939 has the correct attributes3940 #cross_reference3941 behaves like a system note3942 has the correct attributes3943 when cross-reference disallowed3944 returns nil3945 does not create a system note metadata record3946 when cross-reference allowed3947 behaves like a system note3948 has the correct attributes3949 behaves like a note with overridable created_at3950 the note has the correct time3951 note_body3952 cross-project3953 from Commit3954 references the mentioning commit3955 from non-Commit3956 references the mentioning object3957 within the same project3958 from Commit3959 references the mentioning commit3960 from non-Commit3961 references the mentioning object3962 with external issue3963 queues a background worker3964 #cross_reference_exists?3965 issue from commit3966 is truthy when already mentioned3967 is falsey when not already mentioned3968 legacy capitalized cross reference3969 is truthy when already mentioned3970 commit from commit3971 is truthy when already mentioned3972 is falsey when not already mentioned3973 legacy capitalized cross reference3974 is truthy when already mentioned3975 commit with cross-reference from fork3976 is true when a fork mentions an external issue3977 legacy capitalized cross reference3978 is true when a fork mentions an external issue3979 #change_task_status3980 posts the 'marked the checklist item as complete' system note3981 behaves like a system note3982 has the correct attributes3983 #noteable_moved3984 moved to3985 notifies about noteable being moved to3986 behaves like cross project mentionable3987 contains cross reference to new noteable3988 mentions referenced noteable3989 mentions referenced project3990 behaves like a system note3991 has the correct attributes3992 moved from3993 notifies about noteable being moved from3994 behaves like cross project mentionable3995 contains cross reference to new noteable3996 mentions referenced noteable3997 mentions referenced project3998 behaves like a system note3999 has the correct attributes4000 invalid direction4001 raises error4002 #noteable_cloned4003 cloned to4004 notifies about noteable being cloned to4005 behaves like cross project mentionable4006 contains cross reference to new noteable4007 mentions referenced noteable4008 mentions referenced project4009 behaves like a system note4010 has the correct attributes4011 cloned from4012 notifies about noteable being cloned from4013 behaves like cross project mentionable4014 contains cross reference to new noteable4015 mentions referenced noteable4016 mentions referenced project4017 behaves like a system note4018 has the correct attributes4019 invalid direction4020 raises error4021 custom created timestamp4022 allows setting of custom created_at value4023 defaults to current time when created_at is not given4024 metrics4025 cloned from4026 does not tracks usage4027 cloned to4028 tracks usage4029 behaves like issue_edit snowplow tracking4030 behaves like Snowplow event tracking with RedisHLL context4031 behaves like Snowplow event tracking4032 is emitted4033 #mark_duplicate_issue4034 within the same project4035 is expected to eq "marked this issue as a duplicate of #2"4036 behaves like a system note4037 has the correct attributes4038 across different projects4039 is expected to eq "marked this issue as a duplicate of namespace287/project323#1"4040 behaves like a system note4041 has the correct attributes4042 #mark_canonical_issue_of_duplicate4043 within the same project4044 is expected to eq "marked #2 as a duplicate of this issue"4045 behaves like a system note4046 has the correct attributes4047 across different projects4048 is expected to eq "marked namespace289/project325#1 as a duplicate of this issue"4049 behaves like a system note4050 has the correct attributes4051 #discussion_lock4052 discussion unlocked4053 creates the note text correctly4054 behaves like a system note4055 has the correct attributes4056 discussion locked4057 creates the note text correctly4058 behaves like a system note4059 has the correct attributes4060 #cross_reference_disallowed?4061 when mentioned_in is not a MergeRequest4062 is falsey4063 when mentioned_in is a MergeRequest4064 is truthy when noteable is in commits4065 is falsey when noteable is not in commits4066 when notable is an ExternalIssue4067 is false with issue tracker supporting referencing4068 is true with issue tracker not supporting referencing4069 is true without issue tracker4070 #close_after_error_tracking_resolve4071 creates the expected state event4072 #auto_resolve_prometheus_alert4073 creates the expected state event4074 #change_issue_type4075 is expected to eq "changed issue type to incident"4076 behaves like a system note4077 has the correct attributes4078 #hierarchy_changed4079 when task is added as a child4080 sets the correct note text4081 behaves like a system note4082 has the correct attributes4083 when child task is removed4084 sets the correct note text4085 behaves like a system note4086 has the correct attributes4087IntegrationsHelper4088 #integration_event_title4089 behaves like is defined for each integration event4090 when integration is buildkite, event is push4091 is expected not to be nil4092 when integration is buildkite, event is merge_request4093 is expected not to be nil4094 when integration is buildkite, event is tag_push4095 is expected not to be nil4096 when integration is discord, event is push4097 is expected not to be nil4098 when integration is discord, event is issue4099 is expected not to be nil4100 when integration is discord, event is confidential_issue4101 is expected not to be nil4102 when integration is discord, event is merge_request4103 is expected not to be nil4104 when integration is discord, event is note4105 is expected not to be nil4106 when integration is discord, event is confidential_note4107 is expected not to be nil4108 when integration is discord, event is tag_push4109 is expected not to be nil4110 when integration is discord, event is pipeline4111 is expected not to be nil4112 when integration is discord, event is wiki_page4113 is expected not to be nil4114 when integration is drone_ci, event is push4115 is expected not to be nil4116 when integration is drone_ci, event is merge_request4117 is expected not to be nil4118 when integration is drone_ci, event is tag_push4119 is expected not to be nil4120 when integration is emails_on_push, event is push4121 is expected not to be nil4122 when integration is emails_on_push, event is tag_push4123 is expected not to be nil4124 when integration is hangouts_chat, event is push4125 is expected not to be nil4126 when integration is hangouts_chat, event is issue4127 is expected not to be nil4128 when integration is hangouts_chat, event is confidential_issue4129 is expected not to be nil4130 when integration is hangouts_chat, event is merge_request4131 is expected not to be nil4132 when integration is hangouts_chat, event is note4133 is expected not to be nil4134 when integration is hangouts_chat, event is confidential_note4135 is expected not to be nil4136 when integration is hangouts_chat, event is tag_push4137 is expected not to be nil4138 when integration is hangouts_chat, event is pipeline4139 is expected not to be nil4140 when integration is hangouts_chat, event is wiki_page4141 is expected not to be nil4142 when integration is jenkins, event is push4143 is expected not to be nil4144 when integration is jenkins, event is merge_request4145 is expected not to be nil4146 when integration is jenkins, event is tag_push4147 is expected not to be nil4148 when integration is jira, event is commit4149 is expected not to be nil4150 when integration is jira, event is merge_request4151 is expected not to be nil4152 when integration is mattermost, event is push4153 is expected not to be nil4154 when integration is mattermost, event is issue4155 is expected not to be nil4156 when integration is mattermost, event is confidential_issue4157 is expected not to be nil4158 when integration is mattermost, event is merge_request4159 is expected not to be nil4160 when integration is mattermost, event is note4161 is expected not to be nil4162 when integration is mattermost, event is confidential_note4163 is expected not to be nil4164 when integration is mattermost, event is tag_push4165 is expected not to be nil4166 when integration is mattermost, event is pipeline4167 is expected not to be nil4168 when integration is mattermost, event is wiki_page4169 is expected not to be nil4170 when integration is mattermost, event is deployment4171 is expected not to be nil4172 when integration is mattermost, event is vulnerability4173 is expected not to be nil4174 when integration is microsoft_teams, event is push4175 is expected not to be nil4176 when integration is microsoft_teams, event is issue4177 is expected not to be nil4178 when integration is microsoft_teams, event is confidential_issue4179 is expected not to be nil4180 when integration is microsoft_teams, event is merge_request4181 is expected not to be nil4182 when integration is microsoft_teams, event is note4183 is expected not to be nil4184 when integration is microsoft_teams, event is confidential_note4185 is expected not to be nil4186 when integration is microsoft_teams, event is tag_push4187 is expected not to be nil4188 when integration is microsoft_teams, event is pipeline4189 is expected not to be nil4190 when integration is microsoft_teams, event is wiki_page4191 is expected not to be nil4192 when integration is packagist, event is push4193 is expected not to be nil4194 when integration is packagist, event is merge_request4195 is expected not to be nil4196 when integration is packagist, event is tag_push4197 is expected not to be nil4198 when integration is pumble, event is push4199 is expected not to be nil4200 when integration is pumble, event is issue4201 is expected not to be nil4202 when integration is pumble, event is confidential_issue4203 is expected not to be nil4204 when integration is pumble, event is merge_request4205 is expected not to be nil4206 when integration is pumble, event is note4207 is expected not to be nil4208 when integration is pumble, event is confidential_note4209 is expected not to be nil4210 when integration is pumble, event is tag_push4211 is expected not to be nil4212 when integration is pumble, event is pipeline4213 is expected not to be nil4214 when integration is pumble, event is wiki_page4215 is expected not to be nil4216 when integration is slack, event is push4217 is expected not to be nil4218 when integration is slack, event is issue4219 is expected not to be nil4220 when integration is slack, event is confidential_issue4221 is expected not to be nil4222 when integration is slack, event is merge_request4223 is expected not to be nil4224 when integration is slack, event is note4225 is expected not to be nil4226 when integration is slack, event is confidential_note4227 is expected not to be nil4228 when integration is slack, event is tag_push4229 is expected not to be nil4230 when integration is slack, event is pipeline4231 is expected not to be nil4232 when integration is slack, event is wiki_page4233 is expected not to be nil4234 when integration is slack, event is deployment4235 is expected not to be nil4236 when integration is slack, event is vulnerability4237 is expected not to be nil4238 when integration is slack, event is alert4239 is expected not to be nil4240 when integration is teamcity, event is push4241 is expected not to be nil4242 when integration is teamcity, event is merge_request4243 is expected not to be nil4244 when integration is unify_circuit, event is push4245 is expected not to be nil4246 when integration is unify_circuit, event is issue4247 is expected not to be nil4248 when integration is unify_circuit, event is confidential_issue4249 is expected not to be nil4250 when integration is unify_circuit, event is merge_request4251 is expected not to be nil4252 when integration is unify_circuit, event is note4253 is expected not to be nil4254 when integration is unify_circuit, event is confidential_note4255 is expected not to be nil4256 when integration is unify_circuit, event is tag_push4257 is expected not to be nil4258 when integration is unify_circuit, event is pipeline4259 is expected not to be nil4260 when integration is unify_circuit, event is wiki_page4261 is expected not to be nil4262 when integration is webex_teams, event is push4263 is expected not to be nil4264 when integration is webex_teams, event is issue4265 is expected not to be nil4266 when integration is webex_teams, event is confidential_issue4267 is expected not to be nil4268 when integration is webex_teams, event is merge_request4269 is expected not to be nil4270 when integration is webex_teams, event is note4271 is expected not to be nil4272 when integration is webex_teams, event is confidential_note4273 is expected not to be nil4274 when integration is webex_teams, event is tag_push4275 is expected not to be nil4276 when integration is webex_teams, event is pipeline4277 is expected not to be nil4278 when integration is webex_teams, event is wiki_page4279 is expected not to be nil4280 #integration_event_description4281 behaves like is defined for each integration event4282 when integration is buildkite, event is push4283 is expected not to be nil4284 when integration is buildkite, event is merge_request4285 is expected not to be nil4286 when integration is buildkite, event is tag_push4287 is expected not to be nil4288 when integration is discord, event is push4289 is expected not to be nil4290 when integration is discord, event is issue4291 is expected not to be nil4292 when integration is discord, event is confidential_issue4293 is expected not to be nil4294 when integration is discord, event is merge_request4295 is expected not to be nil4296 when integration is discord, event is note4297 is expected not to be nil4298 when integration is discord, event is confidential_note4299 is expected not to be nil4300 when integration is discord, event is tag_push4301 is expected not to be nil4302 when integration is discord, event is pipeline4303 is expected not to be nil4304 when integration is discord, event is wiki_page4305 is expected not to be nil4306 when integration is drone_ci, event is push4307 is expected not to be nil4308 when integration is drone_ci, event is merge_request4309 is expected not to be nil4310 when integration is drone_ci, event is tag_push4311 is expected not to be nil4312 when integration is emails_on_push, event is push4313 is expected not to be nil4314 when integration is emails_on_push, event is tag_push4315 is expected not to be nil4316 when integration is hangouts_chat, event is push4317 is expected not to be nil4318 when integration is hangouts_chat, event is issue4319 is expected not to be nil4320 when integration is hangouts_chat, event is confidential_issue4321 is expected not to be nil4322 when integration is hangouts_chat, event is merge_request4323 is expected not to be nil4324 when integration is hangouts_chat, event is note4325 is expected not to be nil4326 when integration is hangouts_chat, event is confidential_note4327 is expected not to be nil4328 when integration is hangouts_chat, event is tag_push4329 is expected not to be nil4330 when integration is hangouts_chat, event is pipeline4331 is expected not to be nil4332 when integration is hangouts_chat, event is wiki_page4333 is expected not to be nil4334 when integration is jenkins, event is push4335 is expected not to be nil4336 when integration is jenkins, event is merge_request4337 is expected not to be nil4338 when integration is jenkins, event is tag_push4339 is expected not to be nil4340 when integration is jira, event is commit4341 is expected not to be nil4342 when integration is jira, event is merge_request4343 is expected not to be nil4344 when integration is mattermost, event is push4345 is expected not to be nil4346 when integration is mattermost, event is issue4347 is expected not to be nil4348 when integration is mattermost, event is confidential_issue4349 is expected not to be nil4350 when integration is mattermost, event is merge_request4351 is expected not to be nil4352 when integration is mattermost, event is note4353 is expected not to be nil4354 when integration is mattermost, event is confidential_note4355 is expected not to be nil4356 when integration is mattermost, event is tag_push4357 is expected not to be nil4358 when integration is mattermost, event is pipeline4359 is expected not to be nil4360 when integration is mattermost, event is wiki_page4361 is expected not to be nil4362 when integration is mattermost, event is deployment4363 is expected not to be nil4364 when integration is mattermost, event is vulnerability4365 is expected not to be nil4366 when integration is microsoft_teams, event is push4367 is expected not to be nil4368 when integration is microsoft_teams, event is issue4369 is expected not to be nil4370 when integration is microsoft_teams, event is confidential_issue4371 is expected not to be nil4372 when integration is microsoft_teams, event is merge_request4373 is expected not to be nil4374 when integration is microsoft_teams, event is note4375 is expected not to be nil4376 when integration is microsoft_teams, event is confidential_note4377 is expected not to be nil4378 when integration is microsoft_teams, event is tag_push4379 is expected not to be nil4380 when integration is microsoft_teams, event is pipeline4381 is expected not to be nil4382 when integration is microsoft_teams, event is wiki_page4383 is expected not to be nil4384 when integration is packagist, event is push4385 is expected not to be nil4386 when integration is packagist, event is merge_request4387 is expected not to be nil4388 when integration is packagist, event is tag_push4389 is expected not to be nil4390 when integration is pumble, event is push4391 is expected not to be nil4392 when integration is pumble, event is issue4393 is expected not to be nil4394 when integration is pumble, event is confidential_issue4395 is expected not to be nil4396 when integration is pumble, event is merge_request4397 is expected not to be nil4398 when integration is pumble, event is note4399 is expected not to be nil4400 when integration is pumble, event is confidential_note4401 is expected not to be nil4402 when integration is pumble, event is tag_push4403 is expected not to be nil4404 when integration is pumble, event is pipeline4405 is expected not to be nil4406 when integration is pumble, event is wiki_page4407 is expected not to be nil4408 when integration is slack, event is push4409 is expected not to be nil4410 when integration is slack, event is issue4411 is expected not to be nil4412 when integration is slack, event is confidential_issue4413 is expected not to be nil4414 when integration is slack, event is merge_request4415 is expected not to be nil4416 when integration is slack, event is note4417 is expected not to be nil4418 when integration is slack, event is confidential_note4419 is expected not to be nil4420 when integration is slack, event is tag_push4421 is expected not to be nil4422 when integration is slack, event is pipeline4423 is expected not to be nil4424 when integration is slack, event is wiki_page4425 is expected not to be nil4426 when integration is slack, event is deployment4427 is expected not to be nil4428 when integration is slack, event is vulnerability4429 is expected not to be nil4430 when integration is slack, event is alert4431 is expected not to be nil4432 when integration is teamcity, event is push4433 is expected not to be nil4434 when integration is teamcity, event is merge_request4435 is expected not to be nil4436 when integration is unify_circuit, event is push4437 is expected not to be nil4438 when integration is unify_circuit, event is issue4439 is expected not to be nil4440 when integration is unify_circuit, event is confidential_issue4441 is expected not to be nil4442 when integration is unify_circuit, event is merge_request4443 is expected not to be nil4444 when integration is unify_circuit, event is note4445 is expected not to be nil4446 when integration is unify_circuit, event is confidential_note4447 is expected not to be nil4448 when integration is unify_circuit, event is tag_push4449 is expected not to be nil4450 when integration is unify_circuit, event is pipeline4451 is expected not to be nil4452 when integration is unify_circuit, event is wiki_page4453 is expected not to be nil4454 when integration is webex_teams, event is push4455 is expected not to be nil4456 when integration is webex_teams, event is issue4457 is expected not to be nil4458 when integration is webex_teams, event is confidential_issue4459 is expected not to be nil4460 when integration is webex_teams, event is merge_request4461 is expected not to be nil4462 when integration is webex_teams, event is note4463 is expected not to be nil4464 when integration is webex_teams, event is confidential_note4465 is expected not to be nil4466 when integration is webex_teams, event is tag_push4467 is expected not to be nil4468 when integration is webex_teams, event is pipeline4469 is expected not to be nil4470 when integration is webex_teams, event is wiki_page4471 is expected not to be nil4472 when integration is Jira4473 is expected to include "Jira"4474 when integration is Team City4475 is expected to include "TeamCity"4476 #integration_form_data4477 with Slack integration4478 is expected to include :id, :show_active, :activated, :activate_disabled, :type, :merge_request_events, :commit_events, :enable_comments, :comment_detail, :learn_more_path, :about_pricing_url, :trigger_events, :fields, :inherit_from_id, :integration_level, :editable, :cancel_path, :can_test, :test_path, :reset_path, :form_path, and :redirect_to4479 is expected not to include :jira_issue_transition_automatic and :jira_issue_transition_id4480 is expected to eq ""4481 is expected to eq "/services"4482 Jira service4483 is expected to include :id, :show_active, :activated, :activate_disabled, :type, :merge_request_events, :commit_events, :enable_comments, :comment_detail, :learn_more_path, :about_pricing_url, :trigger_events, :fields, :inherit_from_id, :integration_level, :editable, :cancel_path, :can_test, :test_path, :reset_path, :form_path, :redirect_to, :jira_issue_transition_automatic, and :jira_issue_transition_id4484 #integration_overrides_data4485 is expected to include {:edit_path => "/admin/application_settings/integrations/jira/edit", :overrides_path => "/admin/application_settings/integrations/jira/overrides.json"}4486 #scoped_reset_integration_path4487 when no group is present4488 returns instance-level path4489 when group is present4490 returns group-level path4491 when a new integration is not persisted4492 returns an empty string4493 #integration_issue_type4494 only consider these enumeration values are valid4495 issue_type: "issue", expected_i18n_issue_type: "Issue"4496 return the correct i18n issue type4497 issue_type: "incident", expected_i18n_issue_type: "Incident"4498 return the correct i18n issue type4499 issue_type: "test_case", expected_i18n_issue_type: "Test case"4500 return the correct i18n issue type4501 issue_type: "requirement", expected_i18n_issue_type: "Requirement"4502 return the correct i18n issue type4503 issue_type: "task", expected_i18n_issue_type: "Task"4504 return the correct i18n issue type4505 #integration_todo_target_type4506 target_type: "Commit", expected_i18n_target_type: "Commit"4507 is expected to eq "Commit"4508 target_type: "Issue", expected_i18n_target_type: "Issue"4509 is expected to eq "Issue"4510 target_type: "MergeRequest", expected_i18n_target_type: "Merge Request"4511 is expected to eq "Merge Request"4512 target_type: "Epic", expected_i18n_target_type: "Epic"4513 is expected to eq "Epic"4514 target_type: "DesignManagement::Design", expected_i18n_target_type: "design"4515 is expected to eq "design"4516 target_type: "AlertManagement::Alert", expected_i18n_target_type: "alert"4517 is expected to eq "alert"4518search/_results4519 search_page_vertical_nav_enabled: true4520 page size4521 when search results have a count4522 displays the page size4523 when search results do not have a count4524 does not display the page size4525 search_page_vertical_nav_enabled: false4526 page size4527 when search results have a count4528 displays the page size4529 when search results do not have a count4530 does not display the page size4531 when searching notes which contain quotes in markdown4532 renders plain quotes4533 rendering all types of search results4534 when scope is issues4535 does render the sidebar4536 when admin mode is enabled4537 renders the click text event tracking attributes4538 when admin mode is disabled4539 does not render the click text event tracking attributes4540 when scope is merge_requests4541 does render the sidebar4542 when admin mode is enabled4543 renders the click text event tracking attributes4544 when admin mode is disabled4545 does not render the click text event tracking attributes4546 git blame click tracking4547 when admin mode is enabled4548 renders the click link event tracking attributes4549 when admin mode is disabled4550 does not render the click link event tracking attributes4551 when scope is blobs4552 does not render the sidebar4553 when admin mode is enabled4554 renders the click text event tracking attributes4555 when admin mode is disabled4556 does not render the click text event tracking attributes4557 when scope is notes4558 does not render the sidebar4559 when admin mode is enabled4560 renders the click text event tracking attributes4561 when admin mode is disabled4562 does not render the click text event tracking attributes4563 when scope is wiki_blobs4564 does not render the sidebar4565 when admin mode is enabled4566 renders the click text event tracking attributes4567 when admin mode is disabled4568 does not render the click text event tracking attributes4569 when scope is milestones4570 does not render the sidebar4571 when admin mode is enabled4572 renders the click text event tracking attributes4573 when admin mode is disabled4574 does not render the click text event tracking attributes4575Banzai::Filter::References::MilestoneReferenceFilter4576 requires project context4577 group context4578 when project milestone4579 links to a valid reference4580 ignores internal references4581 when group milestone4582 ignores internal references4583 for subgroups4584 links to a valid reference of subgroup and group milestones4585 when referencing both project and group milestones4586 links to valid references4587 when milestone is open4588 project milestones4589 ignores valid references contained inside 'pre' element4590 ignores valid references contained inside 'code' element4591 ignores valid references contained inside 'a' element4592 ignores valid references contained inside 'style' element4593 includes default classes4594 includes a data-project attribute4595 includes a data-milestone attribute4596 supports an :only_path context4597 behaves like Integer-based references4598 links to a valid reference4599 links with adjacent text4600 ignores invalid milestone IIDs4601 behaves like String-based single-word references4602 links to a valid reference4603 links with adjacent text4604 links with adjacent html tags4605 ignores invalid milestone names4606 behaves like String-based multi-word references in quotes4607 links to a valid reference4608 links with adjacent text4609 ignores invalid milestone names4610 behaves like referencing a milestone in a link href4611 links to a valid reference4612 links with adjacent text4613 includes a data-project attribute4614 includes a data-milestone attribute4615 behaves like linking to a milestone as the entire link4616 replaces the link text with the milestone reference4617 includes a data-project attribute4618 includes a data-milestone attribute4619 behaves like cross-project / cross-namespace complete reference4620 points to referenced project milestone page4621 link has valid text4622 has valid text4623 escapes the name attribute4624 behaves like cross-project / same-namespace complete reference4625 points to referenced project milestone page4626 link has valid text4627 has valid text4628 escapes the name attribute4629 behaves like cross project shorthand reference4630 points to referenced project milestone page4631 link has valid text4632 has valid text4633 escapes the name attribute4634 behaves like references with HTML entities4635 links to a valid reference4636 ignores invalid milestone names and escapes entities4637 behaves like HTML text with references4638 preserves escaped HTML text and adds valid references4639 preserves escaped HTML text if there are no valid references4640 group milestones4641 ignores valid references contained inside 'pre' element4642 ignores valid references contained inside 'code' element4643 ignores valid references contained inside 'a' element4644 ignores valid references contained inside 'style' element4645 includes default classes4646 includes a data-project attribute4647 includes a data-milestone attribute4648 supports an :only_path context4649 does not support references by IID4650 does not support references by link4651 does not support cross-project references4652 supports parent group references4653 behaves like String-based single-word references4654 links to a valid reference4655 links with adjacent text4656 links with adjacent html tags4657 ignores invalid milestone names4658 behaves like String-based multi-word references in quotes4659 links to a valid reference4660 links with adjacent text4661 ignores invalid milestone names4662 behaves like referencing a milestone in a link href4663 links to a valid reference4664 links with adjacent text4665 includes a data-project attribute4666 includes a data-milestone attribute4667 behaves like references with HTML entities4668 links to a valid reference4669 ignores invalid milestone names and escapes entities4670 behaves like HTML text with references4671 preserves escaped HTML text and adds valid references4672 preserves escaped HTML text if there are no valid references4673 when milestone is closed4674 project milestones4675 ignores valid references contained inside 'pre' element4676 ignores valid references contained inside 'code' element4677 ignores valid references contained inside 'a' element4678 ignores valid references contained inside 'style' element4679 includes default classes4680 includes a data-project attribute4681 includes a data-milestone attribute4682 supports an :only_path context4683 behaves like Integer-based references4684 links to a valid reference4685 links with adjacent text4686 ignores invalid milestone IIDs4687 behaves like String-based single-word references4688 links to a valid reference4689 links with adjacent text4690 links with adjacent html tags4691 ignores invalid milestone names4692 behaves like String-based multi-word references in quotes4693 links to a valid reference4694 links with adjacent text4695 ignores invalid milestone names4696 behaves like referencing a milestone in a link href4697 links to a valid reference4698 links with adjacent text4699 includes a data-project attribute4700 includes a data-milestone attribute4701 behaves like linking to a milestone as the entire link4702 replaces the link text with the milestone reference4703 includes a data-project attribute4704 includes a data-milestone attribute4705 behaves like cross-project / cross-namespace complete reference4706 points to referenced project milestone page4707 link has valid text4708 has valid text4709 escapes the name attribute4710 behaves like cross-project / same-namespace complete reference4711 points to referenced project milestone page4712 link has valid text4713 has valid text4714 escapes the name attribute4715 behaves like cross project shorthand reference4716 points to referenced project milestone page4717 link has valid text4718 has valid text4719 escapes the name attribute4720 behaves like references with HTML entities4721 links to a valid reference4722 ignores invalid milestone names and escapes entities4723 behaves like HTML text with references4724 preserves escaped HTML text and adds valid references4725 preserves escaped HTML text if there are no valid references4726 group milestones4727 ignores valid references contained inside 'pre' element4728 ignores valid references contained inside 'code' element4729 ignores valid references contained inside 'a' element4730 ignores valid references contained inside 'style' element4731 includes default classes4732 includes a data-project attribute4733 includes a data-milestone attribute4734 supports an :only_path context4735 does not support references by IID4736 does not support references by link4737 does not support cross-project references4738 supports parent group references4739 behaves like String-based single-word references4740 links to a valid reference4741 links with adjacent text4742 links with adjacent html tags4743 ignores invalid milestone names4744 behaves like String-based multi-word references in quotes4745 links to a valid reference4746 links with adjacent text4747 ignores invalid milestone names4748 behaves like referencing a milestone in a link href4749 links to a valid reference4750 links with adjacent text4751 includes a data-project attribute4752 includes a data-milestone attribute4753 behaves like references with HTML entities4754 links to a valid reference4755 ignores invalid milestone names and escapes entities4756 behaves like HTML text with references4757 preserves escaped HTML text and adds valid references4758 preserves escaped HTML text if there are no valid references4759 checking N+14760 does not have N+1 per multiple references per project4761 has N+1 for multiple unique project/group references4762Repositories::ChangelogService4763 #execute4764 generates and commits a changelog section4765 ignores a commit when it's both added and reverted in the same range4766 includes a revert commit when it has a trailer4767 uses the target branch when "to" is unspecified4768 avoids N+1 queries4769 with commit_to_changelog: false4770 generates changelog section4771 when one of commits does not exist4772 raises an exception4773 when commit range exceeds the limit4774 raises an exception4775 when feature flag is off4776 returns the changelog4777 with specified changelog config file path4778 return specified changelog content4779 #start_of_commit_range4780 when the "from" argument is specified4781 returns the value of the argument4782 when the "from" argument is unspecified4783 returns the tag commit of the previous version4784 raises an error when no tag is found4785Gitlab::ImportExport::Importer4786 #execute4787/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil4788 succeeds4789/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil4790 extracts the archive4791/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil4792 checks the version4793 all restores are executed4794/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil4795 calls the Gitlab::ImportExport::AvatarRestorer4796/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil4797 calls the Gitlab::ImportExport::RepoRestorer4798/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil4799 calls the Gitlab::ImportExport::UploadsRestorer4800/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil4801 calls the Gitlab::ImportExport::LfsRestorer4802/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil4803 calls the Gitlab::ImportExport::StatisticsRestorer4804/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil4805 calls the Gitlab::ImportExport::SnippetsRepoRestorer4806/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil4807 calls the Gitlab::ImportExport::DesignRepoRestorer4808/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil4809 calls RepoRestorer with project and wiki4810/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil4811 removes the import file4812/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil4813 removes tmp files4814/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil4815 sets the correct visibility_level when visibility level is a string4816 with sample_data_template4817/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil4818 initializes the Sample::TreeRestorer4819 without sample_data_template4820/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil4821 initializes the ProjectTree4822 when import fails4823 when there is a graceful error4824/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil4825 raises and exception4826 behaves like removes any non migrated snippet4827/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil4828 is expected to be present4829 when an unexpected exception is raised4830/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil4831 captures it and raises the Projects::ImportService::Error exception4832 behaves like removes any non migrated snippet4833/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil4834 is expected to be present4835 when project successfully restored4836 with a project in a user's namespace4837 when import_data4838 has original_path4839/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil4840 overwrites existing project4841 has not original_path4842/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil4843 does not call the overwrite service4844 with a project in a group namespace4845 has original_path4846/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil4847 overwrites existing project4848/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil4849 does not allow user to overwrite existing project4850Gitlab::Pagination::OffsetPagination4851 #paginate4852 when resource can be paginated4853 first page4854 does not return the total headers when excluding them4855 when resources count is less than MAX_COUNT_LIMIT4856 behaves like paginated response4857 returns appropriate amount of resources4858 executes only one SELECT COUNT query4859 behaves like response with pagination headers4860 adds appropriate headers4861 when resources count is more than MAX_COUNT_LIMIT4862 does not return the X-Total and X-Total-Pages headers4863 behaves like paginated response4864 returns appropriate amount of resources4865 executes only one SELECT COUNT query4866 when without_count is true4867 does not return the X-Total and X-Total-Pages headers4868 behaves like paginated response4869 returns appropriate amount of resources4870 executes only one SELECT COUNT query4871 when resource already paginated4872 when per_page param is specified4873 returns appropriate amount of resources based on per_page param4874 when page and per page params are strings4875 returns appropriate amount of resources4876 when per_page param is blank4877 returns appropriate amount of resources4878 when page param is blank4879 returns appropriate amount of resources based on resource per(N)4880 when resource does not respond to limit_value4881 when page param is blank4882 returns appropriate amount of resources4883 when per_page param is blank4884 returns appropriate amount of resources with default per page value4885 when resource is a paginatable array4886 only returns the requested resources4887 does not return total headers when excluding them4888 behaves like response with pagination headers4889 adds appropriate headers4890 second page4891 returns appropriate amount of resources4892 adds appropriate headers4893 if order4894 is not present it adds default order(:id) if no order is present4895 is present it does not add anything4896 when resource empty4897 first page4898 returns appropriate amount of resources4899 adds appropriate headers4900Packages::Debian::FileMetadatum4901 factory: :debian_package_file, trait: :unknown, has_component: false, has_architecture: false, has_fields: false4902 behaves like Test Debian file metadatum4903 relationships4904 is expected to belong to package_file required: false4905 validations4906 #package_file4907 is expected to validate that :package_file cannot be empty/falsy4908 #file_type4909 is expected to validate that :file_type cannot be empty/falsy4910 #component4911 has_component=false4912 #architecture4913 has_architecture=false4914 #fields4915 is expected to validate that :fields is empty/falsy4916 #debian_package_type4917 validates package of type debian4918 factory: :debian_package_file, trait: :source, has_component: true, has_architecture: false, has_fields: false4919 behaves like Test Debian file metadatum4920 relationships4921 is expected to belong to package_file required: false4922 validations4923 #package_file4924 is expected to validate that :package_file cannot be empty/falsy4925 #file_type4926 is expected to validate that :file_type cannot be empty/falsy4927 #component4928 has_component=true4929 #architecture4930 has_architecture=false4931 #fields4932 is expected to validate that :fields is empty/falsy4933 #debian_package_type4934 validates package of type debian4935 factory: :debian_package_file, trait: :dsc, has_component: true, has_architecture: false, has_fields: true4936 behaves like Test Debian file metadatum4937 relationships4938 is expected to belong to package_file required: false4939 validations4940 #package_file4941 is expected to validate that :package_file cannot be empty/falsy4942 #file_type4943 is expected to validate that :file_type cannot be empty/falsy4944 #component4945 has_component=true4946 #architecture4947 has_architecture=false4948 #fields4949 is expected to validate that :fields cannot be empty/falsy4950 is expected to allow :fields to be ‹{a: "b"}›4951 is expected not to allow :fields to be ‹{a: {:b=>"c"}}›4952 #debian_package_type4953 validates package of type debian4954 factory: :debian_package_file, trait: :deb, has_component: true, has_architecture: true, has_fields: true4955 behaves like Test Debian file metadatum4956 relationships4957 is expected to belong to package_file required: false4958 validations4959 #package_file4960 is expected to validate that :package_file cannot be empty/falsy4961 #file_type4962 is expected to validate that :file_type cannot be empty/falsy4963 #component4964 has_component=true4965 #architecture4966 has_architecture=true4967 #fields4968 is expected to validate that :fields cannot be empty/falsy4969 is expected to allow :fields to be ‹{a: "b"}›4970 is expected not to allow :fields to be ‹{a: {:b=>"c"}}›4971 #debian_package_type4972 validates package of type debian4973 factory: :debian_package_file, trait: :udeb, has_component: true, has_architecture: true, has_fields: true4974 behaves like Test Debian file metadatum4975 relationships4976 is expected to belong to package_file required: false4977 validations4978 #package_file4979 is expected to validate that :package_file cannot be empty/falsy4980 #file_type4981 is expected to validate that :file_type cannot be empty/falsy4982 #component4983 has_component=true4984 #architecture4985 has_architecture=true4986 #fields4987 is expected to validate that :fields cannot be empty/falsy4988 is expected to allow :fields to be ‹{a: "b"}›4989 is expected not to allow :fields to be ‹{a: {:b=>"c"}}›4990 #debian_package_type4991 validates package of type debian4992 factory: :debian_package_file, trait: :buildinfo, has_component: true, has_architecture: false, has_fields: true4993 behaves like Test Debian file metadatum4994 relationships4995 is expected to belong to package_file required: false4996 validations4997 #package_file4998 is expected to validate that :package_file cannot be empty/falsy4999 #file_type5000 is expected to validate that :file_type cannot be empty/falsy5001 #component5002 has_component=true5003 #architecture5004 has_architecture=false5005 #fields5006 is expected to validate that :fields cannot be empty/falsy5007 is expected to allow :fields to be ‹{a: "b"}›5008 is expected not to allow :fields to be ‹{a: {:b=>"c"}}›5009 #debian_package_type5010 validates package of type debian5011 factory: :debian_package_file, trait: :changes, has_component: false, has_architecture: false, has_fields: true5012 behaves like Test Debian file metadatum5013 relationships5014 is expected to belong to package_file required: false5015 validations5016 #package_file5017 is expected to validate that :package_file cannot be empty/falsy5018 #file_type5019 is expected to validate that :file_type cannot be empty/falsy5020 #component5021 has_component=false5022 #architecture5023 has_architecture=false5024 #fields5025 is expected to validate that :fields cannot be empty/falsy5026 is expected to allow :fields to be ‹{a: "b"}›5027 is expected not to allow :fields to be ‹{a: {:b=>"c"}}›5028 #debian_package_type5029 validates package of type debian5030Awardable5031 Associations5032 is expected to have many award_emoji dependent => destroy5033 ClassMethods5034 orders5035 orders on upvotes5036 orders on downvotes5037 #awarded5038 filters by user and emoji name5039 filters by user and any emoji5040 #not_awarded5041 returns notes not awarded by user5042 #upvotes5043 counts the number of upvotes5044 #downvotes5045 counts the number of downvotes5046 #user_can_award?5047 is truthy when the user is allowed to award emoji5048 is falsy when the project is archived5049 querying award_emoji on an Awardable5050 sorts in ascending fashion5051 #grouped_awards5052 default award emojis5053 includes unused thumbs buttons by default5054 doesn't include unused thumbs buttons when disabled in project5055 includes unused thumbs buttons when enabled in project5056 doesn't include unused thumbs buttons in summary5057 includes used thumbs buttons when disabled in project5058 includes used thumbs buttons in summary5059Gitlab::VersionInfo5060 >5061 is expected to be > 1.1.05062 is expected to be > 1.0.15063 is expected to be > 1.0.05064 is expected to be > 1.0.05065 is expected to be > 1.0.1-b15066 is expected to be > 1.0.1-rc15067 is expected to be > 1.0.1-rc15068 is expected to be > 1.0.1-rc25069 is expected to be > 1.0.05070 is expected to be > 0.1.05071 is expected to be > 1.0.1-rc25072 is expected to be > 1.1.0-beta15073 is expected to be > 0.0.15074 >=5075 is expected to be >= 2.0.05076 is expected to be >= 1.1.05077 is expected to be >= 1.0.1-rc15078 <5079 is expected to be < 0.1.05080 is expected to be < 1.0.05081 is expected to be < 1.0.15082 is expected to be < 1.1.05083 is expected to be < 1.0.1-rc25084 is expected to be < 1.0.15085 is expected to be < 1.0.1-rc25086 is expected to be < 1.0.15087 is expected to be < 2.0.05088 is expected to be < 13.10.1~beta.1575.gf6ea93895089 is expected to be < 13.10.1~beta.1575.gf6ea93905090 <=5091 is expected to be <= 0.0.15092 is expected to be <= 0.1.05093 is expected to be <= 1.0.1-rc15094 is expected to be <= 1.0.1-rc25095 is expected to be <= 1.1.05096 ==5097 is expected to eq #<Gitlab::VersionInfo:0x00007f023fe13960 @major=0, @minor=0, @patch=1, @suffix_s="", @suffix=[]>5098 is expected to eq #<Gitlab::VersionInfo:0x00007f02383cdc28 @major=0, @minor=1, @patch=0, @suffix_s="", @suffix=[]>5099 is expected to eq #<Gitlab::VersionInfo:0x00007f023ef5bee0 @major=1, @minor=0, @patch=0, @suffix_s="", @suffix=[]>5100 is expected to eq #<Gitlab::VersionInfo:0x00007f023e819308 @major=1, @minor=0, @patch=1, @suffix_s="-rc1", @suffix=["pre", "rc", 1]>5101 !=5102 is expected not to eq #<Gitlab::VersionInfo:0x00007f023e0fe528 @major=0, @minor=1, @patch=0, @suffix_s="">5103 is expected not to eq #<Gitlab::VersionInfo:0x00007f0238e95980 @major=1, @minor=0, @patch=1, @suffix_s="-rc2", @suffix=["pre", "rc", 2]>5104 .unknown5105 is expected not to equal #<Gitlab::VersionInfo:0x00007f023d36e7c8 @major=0, @minor=0, @patch=1, @suffix_s="">5106 is expected not to equal #<Gitlab::VersionInfo:0x00007f0238322968 @major=0, @minor=0, @patch=0, @suffix_s="">5107 is expected to raise ArgumentError5108 is expected to raise ArgumentError5109 .parse5110 is expected to eq #<Gitlab::VersionInfo:0x00007f0239bc2fb8 @major=1, @minor=0, @patch=0, @suffix_s="", @suffix=[]>5111 is expected to eq #<Gitlab::VersionInfo:0x00007f0238de4680 @major=1, @minor=0, @patch=0, @suffix_s="", @suffix=[]>5112 is expected to eq #<Gitlab::VersionInfo:0x00007f023acd9fb8 @major=1, @minor=0, @patch=0, @suffix_s="", @suffix=[]>5113 is expected to eq #<Gitlab::VersionInfo:0x00007f02442452c8 @major=1, @minor=0, @patch=0, @suffix_s="", @suffix=[]>5114 is expected to eq #<Gitlab::VersionInfo:0x00007f02420673e0 @major=1, @minor=0, @patch=0, @suffix_s="", @suffix=[]>5115 is expected to eq #<Gitlab::VersionInfo:0x00007f024009a788 @major=1, @minor=0, @patch=0, @suffix_s="", @suffix=[]>5116 is expected to eq #<Gitlab::VersionInfo:0x00007f0250a8b390 @major=1, @minor=0, @patch=0, @suffix_s="", @suffix=[]>5117 is expected not to be valid5118 with parse_suffix: true5119 versions are returned in a correct order5120 .to_s5121 is expected to eq "1.0.0"5122 is expected to eq "1.0.1-rc1"5123 is expected to eq "Unknown"5124 .to_json5125 is expected to eq "{\"major\":1,\"minor\":0,\"patch\":1}"5126 is expected to eq "{\"major\":1,\"minor\":0,\"patch\":1}"5127 is expected to eq "{\"major\":0,\"minor\":0,\"patch\":0}"5128 .hash5129 is expected to eq 21282275434316291075130 is expected to eq 21282275434316291075131 is expected to eq -13430110172313446935132 is expected to eq 8026595355225834855133 .eql?5134 is expected to be truthy5135 is expected to be truthy5136 is expected to be truthy5137 is expected to be falsey5138 is expected to be falsey5139 is expected to be falsey5140 is expected to be falsey5141 is expected to be truthy5142 is expected to eq [#<Gitlab::VersionInfo:0x00007f02392789d0 @major=1, @minor=0, @patch=0, @suffix_s="">, #<Gitlab::Vers...fix_s="">, #<Gitlab::VersionInfo:0x00007f0239278958 @major=1, @minor=0, @patch=1, @suffix_s="-rc1">]5143 .same_minor_version?5144 is expected to be falsey5145 is expected to be truthy5146 is expected to be truthy5147 is expected to be truthy5148 is expected to be falsey5149 is expected to be falsey5150 .without_patch5151 is expected to eq #<Gitlab::VersionInfo:0x00007f022216f500 @major=0, @minor=1, @patch=0, @suffix_s="", @suffix=[]>5152 is expected to eq #<Gitlab::VersionInfo:0x00007f0221e623a8 @major=1, @minor=0, @patch=0, @suffix_s="", @suffix=[]>5153 is expected to eq #<Gitlab::VersionInfo:0x00007f0221b7b630 @major=1, @minor=0, @patch=0, @suffix_s="", @suffix=[]>5154 is expected to eq #<Gitlab::VersionInfo:0x00007f023718d608 @major=1, @minor=0, @patch=0, @suffix_s="", @suffix=[]>5155VerifyPagesDomainService5156 #execute5157 domain_sym: :domain, code_sym: :verification_code5158 when domain is disabled(or new)5159 when txt record contains verification code5160 verifies and enables the domain5161 when txt record contains verification code with other text5162 verifies and enables the domain5163 when txt record does not contain verification code5164 unverifies domain5165 disables domain and shedules it for removal in 1 week5166 when txt record does not contain verification code5167 unverifies domain5168 disables domain and shedules it for removal in 1 week5169 when no txt records are present5170 unverifies domain5171 disables domain and shedules it for removal in 1 week5172 when domain is verified5173 when txt record contains verification code5174 verifies and enables the domain5175 when txt record contains verification code with other text5176 verifies and enables the domain5177 when txt record does not contain verification code5178 unverifies but does not disable domain5179 does not schedule domain for removal5180 when no txt records are present5181 unverifies but does not disable domain5182 does not schedule domain for removal5183 when domain is expired5184 when the right code is present5185 verifies and enables the domain5186 when the right code is not present5187 unverifies domain5188 disables domain and shedules it for removal in 1 week5189 when domain is disabled and scheduled for removal5190 when the right code is present5191 verifies and enables domain5192 prevent domain from being removed5193 when the right code is not present5194 keeps domain scheduled for removal but does not change removal time5195 invalid domain5196 can be disabled5197 domain_sym: :domain, code_sym: :keyed_verification_code5198 when domain is disabled(or new)5199 when txt record contains verification code5200 verifies and enables the domain5201 when txt record contains verification code with other text5202 verifies and enables the domain5203 when txt record does not contain verification code5204 unverifies domain5205 disables domain and shedules it for removal in 1 week5206 when txt record does not contain verification code5207 unverifies domain5208 disables domain and shedules it for removal in 1 week5209 when no txt records are present5210 unverifies domain5211 disables domain and shedules it for removal in 1 week5212 when domain is verified5213 when txt record contains verification code5214 verifies and enables the domain5215 when txt record contains verification code with other text5216 verifies and enables the domain5217 when txt record does not contain verification code5218 unverifies but does not disable domain5219 does not schedule domain for removal5220 when no txt records are present5221 unverifies but does not disable domain5222 does not schedule domain for removal5223 when domain is expired5224 when the right code is present5225 verifies and enables the domain5226 when the right code is not present5227 unverifies domain5228 disables domain and shedules it for removal in 1 week5229 when domain is disabled and scheduled for removal5230 when the right code is present5231 verifies and enables domain5232 prevent domain from being removed5233 when the right code is not present5234 keeps domain scheduled for removal but does not change removal time5235 invalid domain5236 can be disabled5237 domain_sym: :verification_domain, code_sym: :verification_code5238 when domain is disabled(or new)5239 when txt record contains verification code5240 verifies and enables the domain5241 when txt record contains verification code with other text5242 verifies and enables the domain5243 when txt record does not contain verification code5244 unverifies domain5245 disables domain and shedules it for removal in 1 week5246 when txt record does not contain verification code5247 unverifies domain5248 disables domain and shedules it for removal in 1 week5249 when no txt records are present5250 unverifies domain5251 disables domain and shedules it for removal in 1 week5252 when domain is verified5253 when txt record contains verification code5254 verifies and enables the domain5255 when txt record contains verification code with other text5256 verifies and enables the domain5257 when txt record does not contain verification code5258 unverifies but does not disable domain5259 does not schedule domain for removal5260 when no txt records are present5261 unverifies but does not disable domain5262 does not schedule domain for removal5263 when domain is expired5264 when the right code is present5265 verifies and enables the domain5266 when the right code is not present5267 unverifies domain5268 disables domain and shedules it for removal in 1 week5269 when domain is disabled and scheduled for removal5270 when the right code is present5271 verifies and enables domain5272 prevent domain from being removed5273 when the right code is not present5274 keeps domain scheduled for removal but does not change removal time5275 invalid domain5276 can be disabled5277 domain_sym: :verification_domain, code_sym: :keyed_verification_code5278 when domain is disabled(or new)5279 when txt record contains verification code5280 verifies and enables the domain5281 when txt record contains verification code with other text5282 verifies and enables the domain5283 when txt record does not contain verification code5284 unverifies domain5285 disables domain and shedules it for removal in 1 week5286 when txt record does not contain verification code5287 unverifies domain5288 disables domain and shedules it for removal in 1 week5289 when no txt records are present5290 unverifies domain5291 disables domain and shedules it for removal in 1 week5292 when domain is verified5293 when txt record contains verification code5294 verifies and enables the domain5295 when txt record contains verification code with other text5296 verifies and enables the domain5297 when txt record does not contain verification code5298 unverifies but does not disable domain5299 does not schedule domain for removal5300 when no txt records are present5301 unverifies but does not disable domain5302 does not schedule domain for removal5303 when domain is expired5304 when the right code is present5305 verifies and enables the domain5306 when the right code is not present5307 unverifies domain5308 disables domain and shedules it for removal in 1 week5309 when domain is disabled and scheduled for removal5310 when the right code is present5311 verifies and enables domain5312 prevent domain from being removed5313 when the right code is not present5314 keeps domain scheduled for removal but does not change removal time5315 invalid domain5316 can be disabled5317 timeout behaviour5318 sets a timeout on the DNS query5319 email notifications5320 factory: nil, verification_succeeds: true, expected_notification: nil5321 sends a notification if appropriate5322 factory: nil, verification_succeeds: false, expected_notification: :verification_failed5323 sends a notification if appropriate5324 factory: :reverify, verification_succeeds: true, expected_notification: nil5325 sends a notification if appropriate5326 factory: :reverify, verification_succeeds: false, expected_notification: :verification_failed5327 sends a notification if appropriate5328 factory: :unverified, verification_succeeds: true, expected_notification: :verification_succeeded5329 sends a notification if appropriate5330 factory: :unverified, verification_succeeds: false, expected_notification: nil5331 sends a notification if appropriate5332 factory: :expired, verification_succeeds: true, expected_notification: nil5333 sends a notification if appropriate5334 factory: :expired, verification_succeeds: false, expected_notification: :disabled5335 sends a notification if appropriate5336 factory: :disabled, verification_succeeds: true, expected_notification: :enabled5337 sends a notification if appropriate5338 factory: :disabled, verification_succeeds: false, expected_notification: nil5339 sends a notification if appropriate5340 pages verification disabled5341 skips email notifications5342 no verification code5343 returns an error5344 pages domain verification is disabled5345 extends domain validity by unconditionally reverifying5346 does not shorten any grace period5347Ci::PipelinePresenter5348 inherits from Gitlab::View::Presenter::Delegated5349 #initialize5350 takes a pipeline and optional params5351 exposes pipeline5352 forwards missing methods to pipeline5353 #status_title5354 when pipeline is auto-canceled5355 shows that the pipeline is auto-canceled5356 when pipeline is not auto-canceled5357 does not have a status title5358 #failure_reason5359 when pipeline has a failure reason5360 when failure reason is unknown_failure5361 represents a failure reason sentence5362 when failure reason is config_error5363 represents a failure reason sentence5364 when failure reason is external_validation_failure5365 represents a failure reason sentence5366 when failure reason is user_not_verified5367 represents a failure reason sentence5368 when failure reason is activity_limit_exceeded5369 represents a failure reason sentence5370 when failure reason is size_limit_exceeded5371 represents a failure reason sentence5372 when failure reason is job_activity_limit_exceeded5373 represents a failure reason sentence5374 when failure reason is deployments_limit_exceeded5375 represents a failure reason sentence5376 when failure reason is project_deleted5377 represents a failure reason sentence5378 when pipeline does not have failure reason5379 returns nil5380 #event_type_name5381 for a detached merge request pipeline5382 is expected to eq "Merge request pipeline"5383 for a merged result pipeline5384 is expected to eq "Merged result pipeline"5385 for a merge train pipeline5386 is expected to eq "Merge train pipeline"5387 when pipeline is branch pipeline5388 is expected to eq "Pipeline"5389 #coverage5390 when pipeline has coverage5391 formats coverage into 2 decimal points5392 when pipeline does not have coverage5393 returns nil5394 #ref_text5395 when pipeline is detached merge request pipeline5396 returns a correct ref text5397 when pipeline is merge request pipeline5398 returns a correct ref text5399 when pipeline is branch pipeline5400 when ref exists in the repository5401 returns a correct ref text5402 when ref contains malicious script5403 does not include the malicious script5404 when ref does not exist in the repository5405 returns a correct ref text5406 when ref contains malicious script5407 does not include the malicious script5408 #all_related_merge_request_text5409 with zero related merge requests (branch pipeline)5410 is expected to eq "No related merge requests found."5411 with one related merge request5412 is expected to eq "1 related merge request: <a class=\"mr-iid\" href=\"/namespace574/project616/-/merge_requests/1\">!1 My title 366</a>"5413 with two related merge requests5414 is expected to eq "2 related merge requests: <a class=\"mr-iid\" href=\"/namespace575/project617/-/merge_requests/1\">!...7</a>, <a class=\"mr-iid\" href=\"/namespace574/project616/-/merge_requests/1\">!1 My title 366</a>"5415 with a limit passed5416 is expected to eq "2 related merge requests: <a class=\"mr-iid\" href=\"/namespace575/project617/-/merge_requests/1\">!1 My title 367</a>"5417 #all_related_merge_requests5418 memoizes the returned relation5419 for a branch pipeline with two open MRs5420 is expected to contain exactly #<MergeRequest id:61 namespace571/project613!1> and #<MergeRequest id:62 namespace571/project613!2>5421 permissions5422 with a private project5423 behaves like private merge requests5424 when not logged in5425 is expected to be empty5426 when logged in as a non_member5427 is expected to be empty5428 when logged in as a guest5429 is expected to be empty5430 when logged in as a developer5431 is expected to contain exactly #<MergeRequest id:63 namespace571/project613!1>5432 when logged in as a maintainer5433 is expected to contain exactly #<MergeRequest id:63 namespace571/project613!1>5434 with a public project with private merge requests5435 behaves like private merge requests5436 when not logged in5437 is expected to be empty5438 when logged in as a non_member5439 is expected to be empty5440 when logged in as a guest5441 is expected to be empty5442 when logged in as a developer5443 is expected to contain exactly #<MergeRequest id:63 namespace571/project613!1>5444 when logged in as a maintainer5445 is expected to contain exactly #<MergeRequest id:63 namespace571/project613!1>5446 with a public project with public merge requests5447 when not logged in5448 is expected to contain exactly #<MergeRequest id:63 namespace571/project613!1>5449 #link_to_merge_request5450 with a related merge request5451 returns a correct link5452 when pipeline is branch pipeline5453 is expected to be nil5454 #link_to_merge_request_source_branch5455 with a related merge request5456 returns a correct link5457 when pipeline is branch pipeline5458 is expected to be nil5459 #link_to_merge_request_target_branch5460 with a related merge request5461 returns a correct link5462 when pipeline is branch pipeline5463 is expected to be nil5464MetricsServer5465 when targeting puma5466 .fork5467 when in parent process5468 forks into a new process and detaches it5469 when in child process5470 starts the metrics server with the given arguments5471 resets signal handlers from parent process5472 .spawn5473 for legacy Ruby server5474 spawns a new server process and returns its PID5475 for Golang server5476 spawns a new server process and returns its PID5477 can launch from explicit path instead of PATH5478 when logs are enabled5479 sets log related environment variables5480 when TLS settings are present5481 sets the correct environment variables5482 when targeting sidekiq5483 .fork5484 when in parent process5485 forks into a new process and detaches it5486 when in child process5487 starts the metrics server with the given arguments5488 resets signal handlers from parent process5489 .spawn5490 for legacy Ruby server5491 spawns a new server process and returns its PID5492 for Golang server5493 spawns a new server process and returns its PID5494 can launch from explicit path instead of PATH5495 when logs are enabled5496 sets log related environment variables5497 when TLS settings are present5498 sets the correct environment variables5499 when targeting invalid target5500 .fork5501 raises an error5502 .spawn5503 for legacy Ruby server5504 raises an error5505 for Golang server5506 raises an error5507 for puma5508 behaves like a metrics exporter5509 #start5510 configures ::Prometheus::Client5511 ensures that metrics directory exists in correct mode (0700)5512 starts a metrics server5513 starts a RubySampler instance5514 when wipe_metrics_dir is true5515 removes any old metrics files5516 when wipe_metrics_dir is false5517 does not remove any old metrics files5518 #name5519 is expected to eq "web_exporter"5520 for sidekiq5521 behaves like a metrics exporter5522 #start5523 configures ::Prometheus::Client5524 ensures that metrics directory exists in correct mode (0700)5525 starts a metrics server5526 starts a RubySampler instance5527 when wipe_metrics_dir is true5528 removes any old metrics files5529 when wipe_metrics_dir is false5530 does not remove any old metrics files5531 #name5532 is expected to eq "sidekiq_exporter"5533 .start_for_puma5534 spawns a server process and supervises it5535 when the supervisor callback is invoked5536 restarts the metrics server5537 .start_for_sidekiq5538 for legacy Ruby server5539 forks the parent process5540 for Golang server5541 spawns the server process5542CommitCollection5543 #each5544 yields every commit5545 .committers5546 returns a relation of users when users are found5547 returns empty array when committers cannot be found5548 excludes authors of merge commits5549 #without_merge_commits5550 returns all commits except merge commits5551 #with_latest_pipeline5552 sets the latest pipeline for every commit so no additional queries are necessary5553 performs a single query to fetch pipeline warnings5554 #with_markdown_cache5555 preloads commits cache markdown5556 enrichment methods5557 #unenriched5558 returns all commits that are not backed by gitaly data5559 #fully_enriched?5560 returns true when all commits are backed by gitaly data5561 returns false when any commits are not backed by gitaly data5562 returns true when the collection is empty5563 #enrich!5564 replaces commits in the collection with those backed by gitaly data5565 maintains the original order of the commits5566 fetches data if there are unenriched commits5567 does not fetch data if all commits are enriched5568 returns the original commit if the commit could not be lazy loaded5569 #respond_to_missing?5570 returns true when the underlying Array responds to the message5571 returns false when the underlying Array does not respond to the message5572 #method_missing5573 delegates undefined methods to the underlying Array5574Gitlab::CycleAnalytics::Permissions5575 user with no relation to the project5576 has no permissions to issue stage5577 has no permissions to test stage5578 has no permissions to staging stage5579 has no permissions to code stage5580 has no permissions to review stage5581 has no permissions to plan stage5582 user is maintainer5583 has permissions to issue stage5584 has permissions to test stage5585 has permissions to staging stage5586 has permissions to code stage5587 has permissions to review stage5588 has permissions to plan stage5589 user has no build permissions5590 has permissions to issue stage5591 has no permissions to test stage5592 has no permissions to staging stage5593 user has no merge request permissions5594 has permissions to issue stage5595 has no permissions to code stage5596 has no permissions to review stage5597 user has no issue permissions5598 has permissions to code stage5599 has no permissions to issue stage5600Suggestions::CreateService5601 #execute5602 should not try to parse suggestions5603 when not a diff note for merge requests5604 does not try to parse suggestions5605 behaves like service not tracking add suggestion event5606 does not track add suggestion event5607 when diff note is not for text5608 does not try to parse suggestions5609 behaves like service not tracking add suggestion event5610 does not track add suggestion event5611 when diff file is not found5612 creates no suggestion5613 behaves like service not tracking add suggestion event5614 does not track add suggestion event5615 should create suggestions5616 persists suggestion records5617 persists suggestions data correctly5618 tracks add suggestion event5619 outdated position note5620 uses the correct position when creating the suggestion5621 when a patch removes an empty line5622 creates an appliable suggestion5623Packages::Go::SyncPackagesWorker5624 #perform5625 with no existing packages5626 behaves like it creates a package5627 returns a package for example.com/project@v1.0.15628 behaves like it creates a package5629 returns a package for example.com/project@v1.0.25630 behaves like it creates a package5631 returns a package for example.com/project@v1.0.35632 behaves like it creates a package5633 returns a package for example.com/project/mod@v1.0.35634 behaves like it creates a package5635 returns a package for example.com/project/v2@v2.0.05636 with existing packages5637 behaves like it creates a package5638 returns a package for example.com/project@v1.0.15639 behaves like it creates a package5640 returns a package for example.com/project@v1.0.25641 behaves like it creates a package5642 returns a package for example.com/project@v1.0.35643 behaves like it creates a package5644 returns a package for example.com/project/mod@v1.0.35645 behaves like it creates a package5646 returns a package for example.com/project/v2@v2.0.05647 marked as pending_destruction5648 behaves like it creates a package5649 returns a package for example.com/project@v1.0.15650 behaves like it creates a package5651 returns a package for example.com/project@v1.0.25652 behaves like it creates a package5653 returns a package for example.com/project@v1.0.35654 behaves like it creates a package5655 returns a package for example.com/project/mod@v1.0.35656 behaves like it creates a package5657 returns a package for example.com/project/v2@v2.0.05658 with a package that exceeds project limits5659 logs an exception5660 path: "", version: "v1.0.1"5661 behaves like an idempotent worker5662 is labeled as idempotent5663 performs multiple times sequentially without raising an exception5664 creates a package5665 path: "", version: "v1.0.2"5666 behaves like an idempotent worker5667 is labeled as idempotent5668 performs multiple times sequentially without raising an exception5669 creates a package5670 path: "", version: "v1.0.3"5671 behaves like an idempotent worker5672 is labeled as idempotent5673 performs multiple times sequentially without raising an exception5674 creates a package5675 path: "mod", version: "v1.0.3"5676 behaves like an idempotent worker5677 is labeled as idempotent5678 performs multiple times sequentially without raising an exception5679 creates a package5680 path: "v2", version: "v2.0.0"5681 behaves like an idempotent worker5682 is labeled as idempotent5683 performs multiple times sequentially without raising an exception5684 creates a package5685DiffHelper5686 diff_view5687 uses the view param over the cookie5688 returns the default value when the view param is invalid5689 returns a valid value when cookie is set5690 returns the default value when cookie is invalid5691 returns the default value when cookie is nil5692 diff_options5693 returns no collapse false5694 returns no collapse true if expanded5695 returns no collapse true if action name diff_for_path5696 returns paths if action name diff_for_path and param old path5697 returns paths if action name diff_for_path and param new path5698 #diff_line_content5699 when the line is empty5700 returns a non breaking space5701 returns an HTML-safe string5702 when the line is not empty5703 when the line starts with +, -, or a space5704 strips the first character5705 when the line is HTML-safe5706 returns an HTML-safe string5707 when the line is not HTML-safe5708 returns a non-HTML-safe string5709 when the line does not start with a +, -, or a space5710 returns the string5711 when the line is HTML-safe5712 returns an HTML-safe string5713 when the line is not HTML-safe5714 returns a non-HTML-safe string5715 #diff_link_number5716 line_type: "new", match: "new", line_number: 1, expected_return_value: " "5717 returns the expected value5718 line_type: "new", match: "old", line_number: 2, expected_return_value: 25719 returns the expected value5720 line_type: "old", match: "new", line_number: 3, expected_return_value: 35721 returns the expected value5722 line_type: "old", match: "old", line_number: 4, expected_return_value: " "5723 returns the expected value5724 line_type: "new-nonewline", match: "new", line_number: 5, expected_return_value: 55725 returns the expected value5726 line_type: "new-nonewline", match: "old", line_number: 6, expected_return_value: 65727 returns the expected value5728 line_type: "old-nonewline", match: "new", line_number: 7, expected_return_value: 75729 returns the expected value5730 line_type: "old-nonewline", match: "old", line_number: 8, expected_return_value: 85731 returns the expected value5732 line_type: "match", match: "new", line_number: 9, expected_return_value: 95733 returns the expected value5734 line_type: "match", match: "old", line_number: 10, expected_return_value: 105735 returns the expected value5736 #mark_inline_diffs5737 returns strings with marked inline diffs5738 when given HTML5739 sanitizes it5740 sanitizes the entire line, not just the changes5741 #parallel_diff_discussions5742 does not put comments on nonewline lines5743 puts comments on added lines5744 puts comments on unchanged lines5745 #diff_match_line5746 generates foldable top match line for inline view with empty text by default5747 allows to define text and bottom option5748 generates match line for parallel view5749 allows to generate only left match line for parallel view5750 allows to generate only right match line for parallel view5751 #diff_nomappinginraw_line5752 generates only single line num5753 generates only both line nums5754 line_type: "old-nomappinginraw", added_class: ".old"5755 appends the correct class5756 line_type: "new-nomappinginraw", added_class: ".new"5757 appends the correct class5758 line_type: "unchanged-nomappinginraw", added_class: ""5759 appends the correct class5760 #render_overflow_warning?5761 when no limits are hit5762 returns false and does not log any overflow events5763 overflow_method: :overflow_max_bytes?, event_name: :diffs_overflow_max_bytes_limits5764 returns false and only logs the correct collection overflow event5765 overflow_method: :overflow_max_files?, event_name: :diffs_overflow_max_files_limits5766 returns false and only logs the correct collection overflow event5767 overflow_method: :overflow_max_lines?, event_name: :diffs_overflow_max_lines_limits5768 returns false and only logs the correct collection overflow event5769 overflow_method: :collapsed_safe_bytes?, event_name: :diffs_overflow_collapsed_bytes_limits5770 returns false and only logs the correct collection overflow event5771 overflow_method: :collapsed_safe_files?, event_name: :diffs_overflow_collapsed_files_limits5772 returns false and only logs the correct collection overflow event5773 overflow_method: :collapsed_safe_lines?, event_name: :diffs_overflow_collapsed_lines_limits5774 returns false and only logs the correct collection overflow event5775 when the file collection has an overflow5776 returns true and only logs all the correct collection overflow event5777 when two individual files are too big5778 returns false and only logs single file overflow events5779 #diff_file_html_data5780 returns data for project files5781 #collapsed_diff_url5782 returns a valid URL5783 #params_with_whitespace5784 filters with safe_params5785 #render_fork_suggestion5786 user signed in5787 renders the partial5788 guest5789 is expected to be nil5790 #conflicts5791 returns list of conflicts indexed by path5792 when merge request can be merged5793 returns nil5794 when source branch does not exist5795 returns nil5796 when target branch does not exist5797 returns nil5798 when conflicts cannot be resolved in UI5799 returns nil5800 when allow_tree_conflicts is true5801 returns list of conflicts5802 when Gitlab::Git::Conflict::Resolver::ConflictSideMissing exception is raised5803 returns an empty hash5804 #show_only_context_commits?5805 when only_context_commits param is set to true5806 is expected to be truthy5807 when merge request has commits5808 is expected to be truthy5809 when only_context_commits param is set to false5810 is expected to be truthy5811 when merge request has commits5812 is expected to be falsey5813AutoDevopsHelper5814 .show_auto_devops_callout?5815 when auto devops is implicitly enabled5816 is expected to eq false5817 when auto devops is not implicitly enabled5818 is expected to eq true5819 when the banner is disabled by feature flag5820 is expected to be falsy5821 when dismissed5822 is expected to eq false5823 when user cannot admin project5824 is expected to eq false5825 when auto devops is enabled system-wide5826 is expected to eq false5827 when auto devops is explicitly enabled for project5828 is expected to eq false5829 when auto devops is explicitly disabled for project5830 is expected to eq false5831 when master contains a .gitlab-ci.yml file5832 is expected to eq false5833 when another service is enabled5834 is expected to eq false5835 #auto_devops_settings_path5836 returns auto devops settings path5837 #badge_for_auto_devops_scope5838 when receiver is a group5839 when explicitly enabled5840 is expected to eq "group enabled"5841 when explicitly disabled5842 is expected to be nil5843 when auto devops is implicitly enabled5844 by instance5845 is expected to eq "instance enabled"5846 with groups5847 when auto devops is enabled on parent5848 is expected to eq "group enabled"5849 when auto devops is enabled on parent group5850 is expected to eq "group enabled"5851 when auto devops disabled set on parent group5852 is expected to be nil5853 when receiver is a project5854 when auto devops is enabled at project level5855 is expected to be nil5856 when auto devops is disabled at project level5857 is expected to be nil5858 when auto devops is implicitly enabled5859 by instance5860 is expected to eq "instance enabled"5861 with groups5862 when auto devops is enabled on group level5863 is expected to eq "group enabled"5864 when auto devops is enabled on root group5865 is expected to eq "group enabled"5866 when auto devops is implicitly disabled5867 by instance5868 is expected to be nil5869 with groups5870 when auto devops is disabled on group level5871 is expected to be nil5872 when root group is enabled and parent disabled5873 is expected to be nil5874AlertManagement::AlertsFinder#execute5875 #execute5876 user is not a developer or above5877 is expected to be empty5878 user is developer5879 domain5880 domain is threat management5881 is expected to contain exactly #<AlertManagement::Alert id:1 namespace641/project687^alert#1> and #<AlertManagement::Alert id:2 namespace641/project687^alert#2>5882 domain is unknown5883 is expected to contain exactly #<AlertManagement::Alert id:1 namespace641/project687^alert#1> and #<AlertManagement::Alert id:2 namespace641/project687^alert#2>5884 domain is missing5885 is expected to contain exactly #<AlertManagement::Alert id:1 namespace641/project687^alert#1> and #<AlertManagement::Alert id:2 namespace641/project687^alert#2>5886 skips domain if iid is given5887 is expected to contain exactly #<AlertManagement::Alert id:1 namespace641/project687^alert#1>5888 empty params5889 is expected to contain exactly #<AlertManagement::Alert id:1 namespace641/project687^alert#1> and #<AlertManagement::Alert id:2 namespace641/project687^alert#2>5890 iid given5891 is expected to contain exactly #<AlertManagement::Alert id:1 namespace641/project687^alert#1>5892 unknown iid5893 is expected to be empty5894 status given5895 is expected to contain exactly #<AlertManagement::Alert id:1 namespace641/project687^alert#1>5896 with an array of statuses5897 is expected to contain exactly #<AlertManagement::Alert id:1 namespace641/project687^alert#1>5898 with no alerts of status5899 is expected to be empty5900 with an empty status array5901 is expected to contain exactly #<AlertManagement::Alert id:1 namespace641/project687^alert#1> and #<AlertManagement::Alert id:2 namespace641/project687^alert#2>5902 with an nil status5903 is expected to contain exactly #<AlertManagement::Alert id:1 namespace641/project687^alert#1> and #<AlertManagement::Alert id:2 namespace641/project687^alert#2>5904 sorting5905 when sorting by created5906 sorts alerts ascending5907 is expected to eq [#<AlertManagement::Alert id:1 namespace641/project687^alert#1>, #<AlertManagement::Alert id:2 namespace641/project687^alert#2>]5908 sorts alerts descending5909 is expected to eq [#<AlertManagement::Alert id:2 namespace641/project687^alert#2>, #<AlertManagement::Alert id:1 namespace641/project687^alert#1>]5910 when sorting by updated5911 sorts alerts ascending5912 is expected to eq [#<AlertManagement::Alert id:1 namespace641/project687^alert#1>, #<AlertManagement::Alert id:2 namespace641/project687^alert#2>]5913 sorts alerts descending5914 is expected to eq [#<AlertManagement::Alert id:2 namespace641/project687^alert#2>, #<AlertManagement::Alert id:1 namespace641/project687^alert#1>]5915 when sorting by start time5916 sorts alerts ascending5917 is expected to eq [#<AlertManagement::Alert id:1 namespace641/project687^alert#1>, #<AlertManagement::Alert id:2 namespace641/project687^alert#2>]5918 sorts alerts descending5919 is expected to eq [#<AlertManagement::Alert id:2 namespace641/project687^alert#2>, #<AlertManagement::Alert id:1 namespace641/project687^alert#1>]5920 when sorting by end time5921 sorts alerts ascending5922 is expected to eq [#<AlertManagement::Alert id:1 namespace641/project687^alert#1>, #<AlertManagement::Alert id:2 namespace641/project687^alert#2>]5923 sorts alerts descending5924 is expected to eq [#<AlertManagement::Alert id:2 namespace641/project687^alert#2>, #<AlertManagement::Alert id:1 namespace641/project687^alert#1>]5925 when sorting by events count5926 sorts alerts ascending5927 is expected to eq [#<AlertManagement::Alert id:2 namespace641/project687^alert#2>, #<AlertManagement::Alert id:1 namesp...:6 namespace641/project687^alert#4>, #<AlertManagement::Alert id:5 namespace641/project687^alert#3>]5928 sorts alerts descending5929 is expected to eq [#<AlertManagement::Alert id:5 namespace641/project687^alert#3>, #<AlertManagement::Alert id:6 namesp...:1 namespace641/project687^alert#1>, #<AlertManagement::Alert id:2 namespace641/project687^alert#2>]5930 when sorting by severity5931 with ascending sort order5932 sorts alerts by severity from less critical to more critical5933 with descending sort order5934 sorts alerts by severity from more critical to less critical5935 when sorting by status5936 with ascending sort order5937 sorts by status: Ignored > Resolved > Acknowledged > Triggered5938 with descending sort order5939 sorts by status: Triggered > Acknowledged > Resolved > Ignored5940 search query given5941 searching title5942 is expected to contain exactly #<AlertManagement::Alert id:17 namespace641/project687^alert#3>5943 searching description5944 is expected to contain exactly #<AlertManagement::Alert id:17 namespace641/project687^alert#3>5945 searching service5946 is expected to contain exactly #<AlertManagement::Alert id:17 namespace641/project687^alert#3>5947 searching monitoring tool5948 is expected to contain exactly #<AlertManagement::Alert id:17 namespace641/project687^alert#3>5949 searching something else5950 is expected to be empty5951 assignee username given5952 with valid assignee_username5953 is expected to contain exactly #<AlertManagement::Alert id:18 namespace641/project687^alert#3>5954 with invalid assignee_username5955 is expected to be empty5956 .counts_by_status5957 is expected to match {:resolved=>1, :ignored=>1}5958 when filtering params are included5959 is expected to match {:resolved=>1}5960Gitlab::Search::AbuseDetection5961 abusive scopes validation5962 allows only approved scopes5963 disallows anything not approved5964 abusive character matching5965 does match refs permitted by git refname: main5966 does NOT match refs with special characters: main5967 does match refs permitted by git refname: тест5968 does NOT match refs with special characters: тест5969 does match refs permitted by git refname: maiñ5970 does NOT match refs with special characters: maiñ5971 does match refs permitted by git refname: main1235972 does NOT match refs with special characters: main1235973 does match refs permitted by git refname: main-v1235974 does NOT match refs with special characters: main-v1235975 does match refs permitted by git refname: main-v12.35976 does NOT match refs with special characters: main-v12.35977 does match refs permitted by git refname: feature/it_works5978 does NOT match refs with special characters: feature/it_works5979 does match refs permitted by git refname: really_important!5980 does NOT match refs with special characters: really_important!5981 does match refs permitted by git refname: 测试5982 does NOT match refs with special characters: 测试5983 numericality validation5984 considers non Integers to be invalid5985 considers Integers to be valid5986 query_string validation5987 search: "a", errors: {:query_string=>["stopword only abusive search detected"]}5988 validates query string for pointless search5989 search: "an", errors: {:query_string=>["stopword only abusive search detected"]}5990 validates query string for pointless search5991 search: "and", errors: {:query_string=>["stopword only abusive search detected"]}5992 validates query string for pointless search5993 search: "are", errors: {:query_string=>["stopword only abusive search detected"]}5994 validates query string for pointless search5995 search: "as", errors: {:query_string=>["stopword only abusive search detected"]}5996 validates query string for pointless search5997 search: "at", errors: {:query_string=>["stopword only abusive search detected"]}5998 validates query string for pointless search5999 search: "be", errors: {:query_string=>["stopword only abusive search detected"]}6000 validates query string for pointless search6001 search: "but", errors: {:query_string=>["stopword only abusive search detected"]}6002 validates query string for pointless search6003 search: "by", errors: {:query_string=>["stopword only abusive search detected"]}6004 validates query string for pointless search6005 search: "for", errors: {:query_string=>["stopword only abusive search detected"]}6006 validates query string for pointless search6007 search: "if", errors: {:query_string=>["stopword only abusive search detected"]}6008 validates query string for pointless search6009 search: "in", errors: {:query_string=>["stopword only abusive search detected"]}6010 validates query string for pointless search6011 search: "into", errors: {:query_string=>["stopword only abusive search detected"]}6012 validates query string for pointless search6013 search: "is", errors: {:query_string=>["stopword only abusive search detected"]}6014 validates query string for pointless search6015 search: "it", errors: {:query_string=>["stopword only abusive search detected"]}6016 validates query string for pointless search6017 search: "no", errors: {:query_string=>["stopword only abusive search detected"]}6018 validates query string for pointless search6019 search: "not", errors: {:query_string=>["stopword only abusive search detected"]}6020 validates query string for pointless search6021 search: "of", errors: {:query_string=>["stopword only abusive search detected"]}6022 validates query string for pointless search6023 search: "on", errors: {:query_string=>["stopword only abusive search detected"]}6024 validates query string for pointless search6025 search: "or", errors: {:query_string=>["stopword only abusive search detected"]}6026 validates query string for pointless search6027 search: "such", errors: {:query_string=>["stopword only abusive search detected"]}6028 validates query string for pointless search6029 search: "that", errors: {:query_string=>["stopword only abusive search detected"]}6030 validates query string for pointless search6031 search: "the", errors: {:query_string=>["stopword only abusive search detected"]}6032 validates query string for pointless search6033 search: "their", errors: {:query_string=>["stopword only abusive search detected"]}6034 validates query string for pointless search6035 search: "then", errors: {:query_string=>["stopword only abusive search detected"]}6036 validates query string for pointless search6037 search: "there", errors: {:query_string=>["stopword only abusive search detected"]}6038 validates query string for pointless search6039 search: "these", errors: {:query_string=>["stopword only abusive search detected"]}6040 validates query string for pointless search6041 search: "they", errors: {:query_string=>["stopword only abusive search detected"]}6042 validates query string for pointless search6043 search: "this", errors: {:query_string=>["stopword only abusive search detected"]}6044 validates query string for pointless search6045 search: "to", errors: {:query_string=>["stopword only abusive search detected"]}6046 validates query string for pointless search6047 search: "was", errors: {:query_string=>["stopword only abusive search detected"]}6048 validates query string for pointless search6049 search: "will", errors: {:query_string=>["stopword only abusive search detected"]}6050 validates query string for pointless search6051 search: "with", errors: {:query_string=>["stopword only abusive search detected"]}6052 validates query string for pointless search6053 search: "x", errors: {:query_string=>["abusive tiny search detected"]}6054 validates query string for pointless search6055 search: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", errors: {:query_string=>["abusive term length detected"]}6056 validates query string for pointless search6057 search: "", errors: {}6058 validates query string for pointless search6059 search: "*", errors: {}6060 validates query string for pointless search6061 search: "ruby", errors: {}6062 validates query string for pointless search6063 abusive type coercion from string validation6064 considers anything not a String invalid6065 considers Strings to be valid6066API::Entities::User6067 exposes correct attributes6068 exposes created_at if the current user can read the user profile6069 does not expose created_at if the current user cannot read the user profile6070 exposes user as not a bot6071 exposes local_time6072 exposing follow relationships6073 when current user cannot read user profile6074 does not expose followers6075 when current user can read user profile6076 exposes followers6077 when current user cannot read user profile6078 does not expose following6079 when current user can read user profile6080 exposes following6081 when current user cannot read user profile6082 does not expose is_followed6083 when current user can read user profile6084 exposes is_followed6085 with project bot user6086 exposes user as a bot6087 when the requester is not an admin6088 does not expose project bot user name6089 when the requester is nil6090 does not expose project bot user name6091 when the requester is a project maintainer6092 exposes project bot user name6093 when the requester is an admin6094 exposes project bot user name6095 with group bot user6096 exposes user as a bot6097 when the requester is not a group member6098 with a public group6099 exposes group bot user name6100 with a private group6101 does not expose group bot user name6102 when the requester is nil6103 does not expose group bot user name6104 when the requester is a group maintainer6105 exposes group bot user name6106 when the requester is an admin6107 exposes group bot user name6108 with logged-out user6109 exposes is_followed as nil6110Gitlab::Cache::Ci::ProjectPipelineStatus6111 .load_for_project6112 loads the status6113 loading in batches6114 .load_in_batch_for_projects6115 loads pipeline_status on projects6116 loads 10 projects without hitting Gitaly call limit6117 .update_for_pipeline6118 refreshes the cache if nescessary6119 #has_status?6120 is false when the status wasn't loaded yet6121 is true when all status information was loaded6122 #load_status6123 loads the status from the cache when there is one6124 loads the status from the project commit when there is no cache6125 stores the status in the cache when it loading it from the project6126 sets the state to loaded6127 only loads the status once6128 handles Gitaly unavailable exceptions gracefully6129 handles Gitaly timeout exceptions gracefully6130 gitaly call counts6131 not cached6132 makes a Gitaly call6133 cached6134 makes no Gitaly calls6135 #load_from_project6136 reads the status from the pipeline for the commit6137 doesn't fail for an empty project6138 #store_in_cache6139 sets the object in caching6140 #store_in_cache_if_needed6141 stores the state in the cache when the sha is the HEAD of the project6142 doesn't store the status in redis_cache when the sha is not the head of the project6143 deletes the cache if the repository doesn't have a head commit6144 with a status in caching6145 #load_from_cache6146 reads the status from redis_cache6147 when status is empty string6148 reads the status as nil6149 #has_cache?6150 knows the status is cached6151 #delete_from_cache6152 deletes values from redis_cache6153Gitlab::Database::RenameReservedPathsMigration::V16154 #rename_child_paths6155 behaves like renames child namespaces6156 renames namespaces6157 #rename_wildcard_paths6158 renames projects6159 behaves like renames child namespaces6160 renames namespaces6161 #rename_root_paths6162 renames namespaces6163 #revert_renames6164 renames namespaces6165 renames projects6166Ci::DailyBuildGroupReportResult6167 associations6168 is expected to belong to last_pipeline required: false6169 is expected to belong to project required: false6170 is expected to belong to group required: false6171 validations6172 when attributes are valid6173 returns no errors6174 when data is invalid6175 returns errors6176 .upsert_reports6177 creates or updates matching report results6178 when given data is empty6179 does nothing6180 scopes6181 .by_projects6182 returns records by projects6183 .by_group6184 returns records by group6185 .by_ref_path6186 returns coverages by ref_path6187 .ordered_by_date_and_group_name6188 returns coverages ordered by data and group name6189 .by_dates6190 when daily coverages exist during those dates6191 returns coverages6192 .with_coverage6193 returns data with coverage6194 .with_default_branch6195 when coverage for the default branch exist6196 returns coverage with the default branch6197 when coverage for the default branch does not exist6198 returns an empty collection6199 behaves like cleanup by a loose foreign key6200 cleans up (delete or nullify) the model6201 behaves like cleanup by a loose foreign key6202 cleans up (delete or nullify) the model6203Gitlab::Database::MigrationHelpers::V26204 #rename_column_concurrently6205 behaves like Setting up to rename a column6206 creates the renamed column, syncing existing data6207 installs triggers to sync new data6208 requires the helper to run in ddl mode6209 when called inside a transaction block6210 raises an error6211 when the existing column has a default function6212 raises an error6213 when passing a batch column6214 when the batch column does not exist6215 raises an error6216 when the batch column does exist6217 passes it when creating the column6218 when the existing column has a default value6219 creates the renamed column, syncing existing data6220 installs triggers to sync new data6221 when the existing column has a default value that evaluates to NULL6222 creates the renamed column, syncing existing data6223 installs triggers to sync new data6224 when the column to rename does not exist6225 raises an error6226 #undo_cleanup_concurrent_column_rename6227 behaves like Setting up to rename a column6228 creates the renamed column, syncing existing data6229 installs triggers to sync new data6230 requires the helper to run in ddl mode6231 when called inside a transaction block6232 raises an error6233 when the existing column has a default function6234 raises an error6235 when passing a batch column6236 when the batch column does not exist6237 raises an error6238 when the batch column does exist6239 passes it when creating the column6240 when the existing column has a default value6241 creates the renamed column, syncing existing data6242 installs triggers to sync new data6243 when the existing column has a default value that evaluates to NULL6244 creates the renamed column, syncing existing data6245 installs triggers to sync new data6246 when the renamed column does not exist6247 raises an error6248 #undo_rename_column_concurrently6249 behaves like Cleaning up from renaming a column6250 when the helper is called repeatedly6251 does not make repeated attempts to cleanup6252 when the renamed column exists6253 removes the sync triggers and renamed columns6254 #cleanup_concurrent_column_rename6255 behaves like Cleaning up from renaming a column6256 when the helper is called repeatedly6257 does not make repeated attempts to cleanup6258 when the renamed column exists6259 removes the sync triggers and renamed columns6260 #create_table6261 using a limit: attribute on .text6262 creates the table as expected6263 #with_lock_retries6264-- transaction_open?()6265 -> 0.0002s6266 sets the migration class name in the logs6267-- transaction_open?()6268 -> 0.0002s6269 does not raise on exhaustion by default6270-- transaction_open?()6271 -> 0.0002s6272 defaults to disallowing subtransactions6273 raise_on_exhaustion: true6274-- transaction_open?()6275 -> 0.0002s6276 sets raise_on_exhaustion as requested6277 raise_on_exhaustion: false6278-- transaction_open?()6279 -> 0.0002s6280 sets raise_on_exhaustion as requested6281 when in transaction6282 when lock retries are enabled6283 does not use Gitlab::Database::WithLockRetries and executes the provided block directly6284 when lock retries are not enabled6285 raises an error6286Clusters::Agents::RefreshAuthorizationService6287 #execute6288 group authorization6289 refreshes authorizations for the agent6290 config contains too many groups6291 authorizes groups up to the limit6292 config contains no groups6293 removes all authorizations6294 config contains groups outside of the configuration project hierarchy6295 removes all authorizations6296 configuration project does not belong to a group6297 removes all authorizations6298 project authorization6299 refreshes authorizations for the agent6300 project does not belong to a group, and is in the same namespace as the agent6301 creates an authorization record for the project6302 project does not belong to a group, and is authorizing itself6303 creates an authorization record for the project6304 config contains too many projects6305 authorizes projects up to the limit6306 config contains no groups6307 removes all authorizations6308 config contains groups outside of the configuration project hierarchy6309 removes all authorizations6310 configuration project does not belong to a group6311 removes all authorizations6312Gitlab::EncodingHelper6313 #encode!6314 nil6315 empty string6316 invalid utf-8 encoded string6317 frozen non-ascii string6318 leaves ascii only string as is6319 leaves valid utf8 string as is6320 removes invalid bytes from ASCII-8bit encoded multibyte string. This can occur when a git diff match line truncates in the middle of a multibyte character. This occurs after the second word in this example. The test string is as short as we can get while still triggering the error condition when not looking at `detect[:confidence]`.6321 string with detected encoding that is not supported in Ruby6322 leaves binary string as is6323 with corrupted diff6324 does not corrupt data but remove invalid characters6325 #encode_utf8_no_detect6326 input: "abcd", expected: "abcd"6327 drops invalid UTF-86328 input: "DzDzDz", expected: "DzDzDz"6329 drops invalid UTF-86330 input: "Dz\xC7DzDzDz", expected: "Dz�DzDzDz"6331 drops invalid UTF-86332 input: "🐤🐤🐤🐤\xF0\x9F\x90", expected: "🐤🐤🐤🐤�"6333 drops invalid UTF-86334 #encode_utf8_with_escaping!6335 input: "abcd", expected: "abcd"6336 escapes invalid UTF-86337 input: "DzDzDz", expected: "DzDzDz"6338 escapes invalid UTF-86339 input: "Dz\xC7DzDzDz", expected: "Dz%C7DzDzDz"6340 escapes invalid UTF-86341 input: "🐤🐤🐤🐤\xF0\x9F\x90", expected: "🐤🐤🐤🐤%F0%9F%90"6342 escapes invalid UTF-86343 input: "Пр \x90", expected: "Пр %90"6344 escapes invalid UTF-86345 input: "A", expected: "A"6346 escapes invalid UTF-86347 #encode_utf86348 nil6349 empty string6350 invalid utf-8 encoded string6351 encodes valid utf8 encoded string to utf86352 encodes valid ASCII-8BIT encoded string to utf86353 encodes valid ISO-8859-1 encoded string to utf86354 Equifax branch name6355 returns empty string on conversion errors6356 replaces invalid and undefined chars with the replace argument6357 with strings that can be forcefully encoded into utf86358 doesn't use CharlockHolmes if the encoding can be forced into utf_86359 #clean6360 leaves ascii only string as is6361 leaves valid utf8 string as is6362 removes invalid bytes from ASCII-8bit encoded multibyte string.6363 handles UTF-16BE encoded strings6364 encode_binary6365 encodes nil to ""6366 encodes "" to ""6367 encodes " " to " "6368 encodes "a1" to "a1"6369 encodes "编码" to "\xE7\xBC\x96\xE7\xA0\x81"6370 #binary_io6371 does not mutate the original string encoding6372 returns a copy of the IO with the correct encoding6373 #detect_encoding6374 detects encoding6375 is expected to be a kind of Hash6376 correctly detects the binary6377 data is nil6378 is expected to be nil6379 limit is provided6380 correctly detects the binary6381 #unquote_path6382 is expected to eq "\a\b\e\f\n\r\t\v\""6383Resolvers::WorkItemsResolver6384 is expected to have nullable GraphQL type WorkItemConnection6385 with a project6386 #resolve6387 finds all items6388 filters by state6389 returns items user can see6390 batches queries that only include IIDs6391 finds a specific item with iids6392 finds multiple items with iids6393 finds only the items within the project we are looking at6394 when searching items6395 behaves like graphql query for searching issuables6396 uses search optimization6397 filters issuables by title6398 filters issuables by description6399 with in param6400 generates an error if param search is missing6401 filters issuables by title and description6402 filters issuables by description only6403 filters issuables by title only6404 with anonymous user6405 with disable_anonymous_search as `true`6406 returns an error6407 does not return error if search term is not present6408 with disable_anonymous_search as `false`6409 filters issuables by search term6410 sorting6411 when sorting by created6412 sorts items ascending6413 sorts items descending6414 when sorting by title6415 sorts items ascending6416 sorts items descending6417 when passing a non existent, batch loaded project6418 returns nil without breaking6419Gitlab::Zentao::Client6420 #new6421 if integration is nil6422 raises ConfigError6423 integration is provided6424 is initialized successfully6425 #fetch_product6426 with valid product6427 fetches the product6428 with invalid product6429 fetches the empty product6430 with invalid response6431 fetches the empty product6432 #ping6433 with valid resource6434 responds with success6435 with deleted resource6436 responds with unsuccess6437 #fetch_issues6438 returns the response6439 marking the issues as seen in the product6440 adds issue ids to the cache6441 does not add issue ids to the cache if max set size has been reached6442 does not duplicate issue ids in the cache6443 touches the cache ttl every time issues are fetched6444 #fetch_issue6445 with invalid id6446 raises Error6447 with valid id6448 when issue has been seen on the index6449 fetches the issue6450 when issue has not been seen on the index6451 raises RequestError6452 #url6453 api url6454 no ends slash6455 verify url6456 ends slash6457 verify url6458 no api url6459 joins url correctly6460Projects::HashedStorage::RollbackAttachmentsService6461 #execute6462 works even when project validation fails6463 when succeeds6464 moves attachments to legacy storage layout6465 returns true6466 sets skipped to false6467 when original folder does not exist anymore6468 skips moving folders and go to next6469 returns true6470 sets skipped to true6471 when target folder already exists6472 raises AttachmentCannotMoveError6473 #old_disk_path6474 returns old disk_path for project6475 #new_disk_path6476 returns new disk_path for project6477Deploy-ECS.gitlab-ci.yml6478 the created pipeline6479 creates the expected jobs6480 behaves like no pipeline yaml error6481 does not have any error6482 when the DAST template is also included6483 does not have any error6484 when running a pipeline for a branch6485 creates the expected jobs6486 behaves like no pipeline yaml error6487 does not have any error6488 when deploying to ECS Fargate6489 creates the expected jobs6490Gitlab::ImportExport::SnippetRepoRestorer6491 when the snippet does not have a bundle file path6492 behaves like no bundle file present6493 creates the repository from the database content6494 does not call snippet update statistics service6495 when the repository creation fails6496 returns false6497 when the snippet bundle path is not present6498 behaves like no bundle file present6499 creates the repository from the database content6500 does not call snippet update statistics service6501 when the repository creation fails6502 returns false6503 when the snippet repository bundle exists6504 refreshes snippet statistics6505 when it is valid6506 creates the repository from the bundle6507 sets same shard in snippet repository as in the repository storage6508 when it is invalid6509 returns false and deletes the repository from disk and the database6510Gitlab::Ci::Pipeline::Chain::EnsureEnvironments6511 #perform!6512 when a pipeline contains a deployment job6513 and the environment does not exist6514 creates the environment specified by the job6515 and the pipeline is for a merge request6516 associates the environment with the merge request6517 when an environment has already been existed6518 ensures environment existence for the job6519 and the pipeline is for a merge request6520 does not associate the environment with the merge request6521 when an environment name contains an invalid character6522 sets the failure status6523 when a pipeline contains a teardown job6524 ensures environment existence for the job6525 when a pipeline does not contain a deployment job6526 does not create any environments6527GraphqlHelpers6528 a_graphql_entity_for6529 when no arguments are passed6530 raises an error6531 when the model is nil, with no properties6532 raises an error6533 when the model is nil, any fields are passed6534 raises an error6535 with no model6536 behaves like hash-inclusion with camel-casing6537 with just a model6538 only considers the ID6539 with a model and some method names6540 also considers the method names6541 with a model and some other properties6542 behaves like the superset6543 with a model, method names, and some other properties6544 behaves like the superset6545 graphql_dig_at6546 transforms symbol keys to graphql field names6547 supports integer indexing6548 gracefully degrades to nil6549 supports implicitly flat-mapping traversals6550 does not omit nils at the leaves6551 supports fields with leading underscore6552 var6553 allocates a fresh name for each var6554 can be used to construct correct signatures6555 can be used to pass arguments to fields6556 can associate values with variables6557 does not mutate the variable when providing a value6558 can associate many values with variables6559 .query_nodes6560 can produce a basic connection selection6561 allows greater depth6562 accepts fields6563 accepts arguments6564 accepts arguments and fields6565 accepts explicit type name6566 can optionally provide pagination info6567 .query_graphql_path6568 can build nested paths6569 can insert arguments at any point6570 .attributes_to_graphql6571 can serialize hashes to literal arguments6572 .all_graphql_fields_for6573 returns a FieldSelection6574 returns nil if the depth is too shallow6575 can select just the scalar fields6576 selects only as far as 3 levels by default6577 selects only as far as requested6578 omits fields that have required arguments6579 .graphql_mutation6580 when fields argument is passed6581 behaves like correct mutation definition6582 returns correct mutation definition6583 when block is passed6584 behaves like correct mutation definition6585 returns correct mutation definition6586 when both fields and a block are passed6587 raises an ArgumentError6588 .fieldnamerize6589 makes an underscored string look like a fieldname6590 when field has a leading underscore6591 skips a transformation6592DesignManagement::DesignPolicy6593 when DesignManagement is not enabled6594 behaves like design abilities not available6595 for owners6596 is expected to be disallowed :read_design, :create_design, :destroy_design, and :move_design6597 for admins6598 is expected to be disallowed :read_design, :create_design, :destroy_design, and :move_design6599 for maintainers6600 is expected to be disallowed :read_design, :create_design, :destroy_design, and :move_design6601 for developers6602 is expected to be disallowed :read_design, :create_design, :destroy_design, and :move_design6603 for reporters6604 is expected to be disallowed :read_design, :create_design, :destroy_design, and :move_design6605 for guests6606 is expected to be disallowed :read_design, :create_design, :destroy_design, and :move_design6607 for anonymous users6608 is expected to be disallowed :read_design, :create_design, :destroy_design, and :move_design6609 when the feature is available6610 behaves like design abilities available for members6611 for owners6612 is expected to be allowed :read_design, :create_design, :destroy_design, and :move_design6613 for admins6614 when admin mode enabled6615 is expected to be allowed :read_design, :create_design, :destroy_design, and :move_design6616 when admin mode disabled6617 behaves like read-only design abilities6618 is expected to be allowed :read_design6619 is expected to be disallowed :create_design, :destroy_design, and :move_design6620 for maintainers6621 is expected to be allowed :read_design, :create_design, :destroy_design, and :move_design6622 for developers6623 is expected to be allowed :read_design, :create_design, :destroy_design, and :move_design6624 for reporters6625 behaves like read-only design abilities6626 is expected to be allowed :read_design6627 is expected to be disallowed :create_design, :destroy_design, and :move_design6628 for guests in private projects6629 behaves like read-only design abilities6630 is expected to be allowed :read_design6631 is expected to be disallowed :create_design, :destroy_design, and :move_design6632 for anonymous users in public projects6633 behaves like read-only design abilities6634 is expected to be allowed :read_design6635 is expected to be disallowed :create_design, :destroy_design, and :move_design6636 when the issue is confidential6637 behaves like design abilities available for members6638 for owners6639 is expected to be allowed :read_design, :create_design, :destroy_design, and :move_design6640 for admins6641 when admin mode enabled6642 is expected to be allowed :read_design, :create_design, :destroy_design, and :move_design6643 when admin mode disabled6644 behaves like read-only design abilities6645 is expected to be allowed :read_design6646 is expected to be disallowed :create_design, :destroy_design, and :move_design6647 for maintainers6648 is expected to be allowed :read_design, :create_design, :destroy_design, and :move_design6649 for developers6650 is expected to be allowed :read_design, :create_design, :destroy_design, and :move_design6651 for reporters6652 behaves like read-only design abilities6653 is expected to be allowed :read_design6654 is expected to be disallowed :create_design, :destroy_design, and :move_design6655 for guests6656 is expected to be disallowed :read_design, :create_design, :destroy_design, and :move_design6657 for anonymous users6658 is expected to be disallowed :read_design, :create_design, :destroy_design, and :move_design6659 when the project is archived6660 behaves like read-only design abilities6661 is expected to be allowed :read_design6662 is expected to be disallowed :create_design, :destroy_design, and :move_design6663Environments::AutoStopService6664 #execute6665 stops environments and play stop jobs6666 schedules stop processes in bulk6667 when the other sidekiq worker has already been running6668 does not execute stop_in_batch6669 when loop reached timeout6670 returns false and does not continue the process6671 when loop reached loop limit6672 stops only one available environment6673Gitlab::Diff::FileCollection::Compare6674 behaves like diff statistics6675 when include_stats is true6676 Repository#diff_stats is called6677 Gitlab::Diff::File is initialized with diff stats6678 when should not request diff stats6679 Repository#diff_stats is not called6680 behaves like sortable diff files6681 #raw_diff_files6682 when sorted is false (default)6683 returns unsorted diff files6684 when sorted is true6685 returns sorted diff files6686 #cache_key6687 returns with head and base6688 pagination methods6689 when pagination options are not present6690 returns default values6691 when pagination options are present6692 returns values based on options6693Gitlab::Ci::Config::Entry::Root6694 .nodes6695 returns a hash6696 when filtering all the entry/node names6697 contains the expected node names6698 when configuration is valid6699 when top-level entries are defined6700 #compose!6701 creates nodes hash6702 creates node object for each entry6703 creates node object using valid class6704 sets correct description for nodes6705 sets correct variables value6706 #leaf?6707 is not leaf6708 when composed6709 #errors6710 has no errors6711 #stages_value6712 when stages key defined6713 returns array of stages6714 #jobs_value6715 returns jobs configuration6716 when a mix of top-level and default entries is used6717 when composed6718 tracks log entries6719 #errors6720 has no errors6721 #jobs_value6722 returns jobs configuration6723 when most of entires not defined6724 #nodes6725 instantizes all nodes6726 contains unspecified nodes6727 #variables_value6728 returns root value for variables6729 #stages_value6730 returns an array of root stages6731 #cache_value6732 returns correct cache definition6733 when variables resembles script-type job6734 #variables_value6735 returns root value for variables6736 #jobs_value6737 returns one job6738 when entries are specified but not defined6739 #variables_value6740 undefined entry returns a root value6741 when variables have `options` data6742 and the value is in the `options` array6743 returns correct value6744 and the value is not in the `options` array6745 returns an error6746 when variables have "expand" data6747 returns correct value6748 when configuration is not valid6749 when before script is a number6750 #valid?6751 is not valid6752 #errors6753 reports errors from child nodes6754 when job does not have commands6755 #errors6756 reports errors about missing script or trigger6757 when a variable has an invalid data key6758 #errors6759 reports errors about the invalid variable6760 when value is not a hash6761 #valid?6762 is not valid6763 #errors6764 returns error about invalid type6765 #specified?6766 is concrete entry that is defined6767 #[]6768 when entry exists6769 returns correct entry6770 when entry does not exist6771 always return unspecified node6772DiffFileBaseEntity6773 submodule information for a6774 newly added submodule6775 says it is a submodule and contains links6776 has no compare url because the submodule was newly added6777 changed submodule6778 contains a link to compare the changes6779 normal file (no submodule)6780 sets submodule to false6781 contains raw sizes for the blob6782 is expected to eq 1326783 edit_path6784 open6785 behaves like a diff file edit path to the source branch6786 is expected to eq "/namespace773/project842/-/edit/feature/files/ruby/feature.rb?from_merge_request_iid=1"6787 behaves like nil if removed source branch6788 is expected to eq nil6789 closed6790 behaves like a diff file edit path to the source branch6791 is expected to eq "/namespace773/project842/-/edit/feature/files/ruby/feature.rb?from_merge_request_iid=1"6792 removed source branch6793 is expected to eq nil6794 merged6795 is expected to eq "/namespace773/project842/-/edit/feature/six"6796 ide_edit_path6797 when source_project and target_project are the same6798 returns the merge_request ide route6799 behaves like nil if removed source branch6800 is expected to eq nil6801 when source_project and target_project are different6802 returns the merge_request ide route with the target_project as param6803Ci::PersistentRef6804 cleans up persistent refs after pipeline finished6805 #exist?6806 when a persistent ref does not exist6807 is expected to eq false6808 when a persistent ref exists6809 is expected to eq true6810 #create6811 when a persistent ref does not exist6812 creates a persistent ref6813 when sha does not exist in the repository6814 fails to create a persistent ref6815 when a persistent ref already exists6816 overwrites a persistent ref6817 #delete6818 when a persistent ref exists6819 deletes the ref6820 when a persistent ref does not exist6821 does not raise an error6822GoogleCloud::GeneratePipelineService6823 for cloud-run6824 when there is no existing pipeline6825 creates a new branch with commit for cloud-run deployment6826 generated pipeline includes cloud-run deployment6827 simulate errors6828 fails to create branch6829 fails to commit changes6830 when there is an existing pipeline without `deploy` stage6831 introduces a `deploy` stage and includes the deploy-to-cloud-run job6832 stringifies keys from the existing pipelines6833 when there is an existing pipeline with `deploy` stage6834 includes the deploy-to-cloud-run job6835 when there is an existing pipeline with `includes`6836 includes the deploy-to-cloud-run job6837 for cloud-storage6838 when there is no existing pipeline6839 creates a new branch with commit for cloud-storage deployment6840 generated pipeline includes cloud-storage deployment6841Gitlab::SidekiqConfig::WorkerRouter6842 .queue_name_from_worker_name6843 worker: #<Class:0x00007f0241bd97d8>, expected_name: "pages"6844 generates a valid queue name from worker name6845 worker: #<Class:0x00007f0241bd9210>, expected_name: "pipeline_notification"6846 generates a valid queue name from worker name6847 worker: #<Class:0x00007f0241bd8f18>, expected_name: "post_receive"6848 generates a valid queue name from worker name6849 worker: #<Class:0x00007f0241bd8c70>, expected_name: "git:post_receive"6850 generates a valid queue name from worker name6851 worker: #<Class:0x00007f0241bd8978>, expected_name: "pipeline_hooks:pipeline_hooks"6852 generates a valid queue name from worker name6853 worker: #<Class:0x00007f0241bd8680>, expected_name: "jira_import_advance_stage"6854 generates a valid queue name from worker name6855 worker: #<Class:0x00007f0241bd8360>, expected_name: "importer:phabricator_import_import_tasks"6856 generates a valid queue name from worker name6857 .global6858 valid routing rules6859 routing_rules: [], expected_queue: "foo_bar"6860 routes the worker to the correct queue6861 routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=memory", "queue_b"], ["tags=cheap", "queue_c"]], expected_queue: "foo_bar"6862 routes the worker to the correct queue6863 routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=cpu", nil], ["tags=cheap", "queue_c"]], expected_queue: "foo_bar"6864 routes the worker to the correct queue6865 routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=cpu", ""], ["tags=cheap", "queue_c"]], expected_queue: "foo_bar"6866 routes the worker to the correct queue6867 routing_rules: [["feature_category=feature_a|urgency=high", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=cheap", "queue_c"]], expected_queue: "queue_a"6868 routes the worker to the correct queue6869 routing_rules: [["feature_category=feature_b|urgency=low", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=cheap", "queue_c"]], expected_queue: "queue_a"6870 routes the worker to the correct queue6871 routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=memory", "queue_b"], ["tags=expensive", "queue_c"]], expected_queue: "queue_c"6872 routes the worker to the correct queue6873 routing_rules: [["feature_category=feature_a|urgency=low", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=expensive", "queue_c"]], expected_queue: "queue_a"6874 routes the worker to the correct queue6875 routing_rules: [["feature_category=feature_a", "queue_a"], ["feature_category=feature_a", "queue_b"], ["feature_category=feature_a", "queue_c"]], expected_queue: "queue_a"6876 routes the worker to the correct queue6877 routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=memory", "queue_b"], ["tags=cheap", "queue_c"], ["*", "default"]], expected_queue: "default"6878 routes the worker to the correct queue6879 routing_rules: [["*", "queue_foo"], ["feature_category=feature_a|urgency=low", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=expensive", "queue_c"]], expected_queue: "queue_foo"6880 routes the worker to the correct queue6881 routing_rules: [["name=foo_bar", "queue_foo"], ["feature_category=feature_a|urgency=low", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=expensive", "queue_c"]], expected_queue: "queue_foo"6882 routes the worker to the correct queue6883 invalid routing rules6884 invalid routing rules format6885 captures the error and falls back to an empty route6886 invalid predicate6887 captures the error and falls back to an empty route6888 #route6889 valid routing rules6890 routing_rules: [], expected_queue: "foo_bar"6891 routes the worker to the correct queue6892 routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=memory", "queue_b"], ["tags=cheap", "queue_c"]], expected_queue: "foo_bar"6893 routes the worker to the correct queue6894 routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=cpu", nil], ["tags=cheap", "queue_c"]], expected_queue: "foo_bar"6895 routes the worker to the correct queue6896 routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=cpu", ""], ["tags=cheap", "queue_c"]], expected_queue: "foo_bar"6897 routes the worker to the correct queue6898 routing_rules: [["feature_category=feature_a|urgency=high", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=cheap", "queue_c"]], expected_queue: "queue_a"6899 routes the worker to the correct queue6900 routing_rules: [["feature_category=feature_b|urgency=low", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=cheap", "queue_c"]], expected_queue: "queue_a"6901 routes the worker to the correct queue6902 routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=memory", "queue_b"], ["tags=expensive", "queue_c"]], expected_queue: "queue_c"6903 routes the worker to the correct queue6904 routing_rules: [["feature_category=feature_a|urgency=low", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=expensive", "queue_c"]], expected_queue: "queue_a"6905 routes the worker to the correct queue6906 routing_rules: [["feature_category=feature_a", "queue_a"], ["feature_category=feature_a", "queue_b"], ["feature_category=feature_a", "queue_c"]], expected_queue: "queue_a"6907 routes the worker to the correct queue6908 routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=memory", "queue_b"], ["tags=cheap", "queue_c"], ["*", "default"]], expected_queue: "default"6909 routes the worker to the correct queue6910 routing_rules: [["*", "queue_foo"], ["feature_category=feature_a|urgency=low", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=expensive", "queue_c"]], expected_queue: "queue_foo"6911 routes the worker to the correct queue6912 routing_rules: [["name=foo_bar", "queue_foo"], ["feature_category=feature_a|urgency=low", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=expensive", "queue_c"]], expected_queue: "queue_foo"6913 routes the worker to the correct queue6914 invalid routing rules6915 raises an exception6916Gitlab::Ci::Status::Build::WaitingForApproval6917 .matches?6918 when build is waiting for approval6919 is a correct match6920 when build is not waiting for approval6921 does not match6922 #illustration6923 is expected to include :image and :size6924 is expected to eq "Waiting for approval"6925 is expected to include "This job deploys to the protected environment \"production\""6926 #has_action?6927 is expected to be truthy6928 #action_icon6929 is expected to be nil6930 #action_title6931 is expected to be nil6932 #action_button_title6933 is expected to eq "Go to environments page to approve or reject"6934 #action_path6935 is expected to include "environments"6936 #action_method6937 is expected to eq :get6938WebHookLog6939 is expected to belong to web_hook required: false6940 is expected to serialize :request_headers class_name => Hash6941 is expected to serialize :request_data class_name => Hash6942 is expected to serialize :response_headers class_name => Hash6943 is expected to validate that :web_hook cannot be empty/falsy6944 .recent6945 does not return web hook logs that are too old6946 returns the web hook logs in descending order6947 #save6948 with basic auth credentials6949 is expected to eq true6950 obfuscates the basic auth credentials6951 with users' emails6952 redacts users' emails6953 .delete_batch_for6954 does not loop forever6955 when the batch size is less than one6956 raises an argument error6957 when the batch size is smaller than the total6958 is expected to equal true6959 deletes min(batch_size, total) records6960 when the batch size is equal to the total6961 is expected to equal true6962 deletes min(batch_size, total) records6963 when the batch size is greater than the total6964 is expected to equal false6965 deletes min(batch_size, total) records6966 #success?6967 2xx6968 is expected to be truthy6969 not 2xx6970 is expected to be falsey6971 internal erorr6972 is expected to be falsey6973 #internal_error?6974 when response status is not an internal error6975 is expected to be falsey6976 when response status is an internal error6977 is expected to be truthy6978 #request_headers6979 with redacted headers token6980 is expected to eq {"X-Gitlab-Token"=>"[REDACTED]"}6981 with exposed headers token6982 is expected to eq {"X-Gitlab-Token"=>"[REDACTED]"}6983Gitlab::Diff::SuggestionsParser6984 .parse6985 single-line suggestions6986 returns a list of Gitlab::Diff::Suggestion6987 parsed suggestion has correct data6988 multi-line suggestions6989 returns a list of Gitlab::Diff::Suggestion6990 suggestion with above and below param has correct data6991 suggestion with above param has correct data6992 suggestion with below param has correct data6993Packages::Debian::ProcessPackageFileService6994 # order random6995 #execute6996 with a deb6997 creates package and updates package file6998 with existing package6999 does not create a package and assigns the package_file to the existing package7000 when marked as pending_destruction7001 does not re-use the existing package7002 with an udeb7003 creates package and updates package file7004 with existing package7005 does not create a package and assigns the package_file to the existing package7006 when marked as pending_destruction7007 does not re-use the existing package7008 without a distribution7009 raise ActiveRecord::RecordNotFound7010 with package file without Debian metadata7011 raise ArgumentError7012 with already processed package file7013 raise ArgumentError7014 with invalid package file type7015 raise ArgumentError7016 when creating package fails7017 re-raise error7018Crm::OrganizationsFinder7019 #execute7020 when customer relations feature is enabled for the group7021 when user does not have permissions to see organizations in the group7022 returns an empty array7023 when user is member of the root group7024 when feature flag is enabled7025 returns all group organizations7026 when user is member of the sub group7027 returns an empty array7028 when customer relations feature is disabled for the group7029 returns an empty array7030 with search informations7031 when search term is empty7032 returns all group organizations alphabetically ordered7033 when search term is not empty7034 searches for name7035 searches for description7036 searches for name and description7037 when searching for organizations state7038 returns only inactive organizations7039 returns only active organizations7040 when searching for organizations ids7041 returns the expected organizations7042 when sorting7043 returns the organiztions sorted by name in ascending order7044 returns the organizations sorted by description in descending order7045 returns the contacts sorted by default_rate in ascending order7046 .counts_by_state7047 returns correct counts7048DeleteContainerRepositoryWorker7049 #perform7050 executes the destroy service7051 with an invalid user id7052 is expected not to raise Exception7053 with an invalid repository id7054 is expected not to raise Exception7055 with a repository being migrated7056 with migration state set to pre importing7057 does not destroy the repository and re enqueue the job7058 behaves like not re enqueuing job if feature flag is disabled7059 behaves like destroying the repository7060 does destroy the repository7061 with migration state set to pre_import_done7062 does not destroy the repository and re enqueue the job7063 behaves like not re enqueuing job if feature flag is disabled7064 behaves like destroying the repository7065 does destroy the repository7066 with migration state set to importing7067 does not destroy the repository and re enqueue the job7068 behaves like not re enqueuing job if feature flag is disabled7069 behaves like destroying the repository7070 does destroy the repository7071 with migration state set to import_aborted7072 does not destroy the repository and re enqueue the job7073 behaves like not re enqueuing job if feature flag is disabled7074 behaves like destroying the repository7075 does destroy the repository7076 with migration state set to default7077 behaves like destroying the repository7078 does destroy the repository7079 behaves like not re enqueuing job if feature flag is disabled7080 behaves like destroying the repository7081 does destroy the repository7082 with migration state set to import_done7083 behaves like destroying the repository7084 does destroy the repository7085 behaves like not re enqueuing job if feature flag is disabled7086 behaves like destroying the repository7087 does destroy the repository7088 with migration state set to import_skipped7089 behaves like destroying the repository7090 does destroy the repository7091 behaves like not re enqueuing job if feature flag is disabled7092 behaves like destroying the repository7093 does destroy the repository7094Metrics::Dashboard::PodDashboardService7095 #raw_dashboard7096 behaves like #raw_dashboard raises error if dashboard loading fails7097 when yaml is too large7098 raises error7099 when yaml loader returns error7100 raises error7101 when yaml is not a hash7102 returns nil7103 .valid_params?7104 is expected to be truthy7105 missing dashboard_path7106 is expected to be falsey7107 non-matching dashboard_path7108 is expected to be falsey7109 #get_dashboard7110 behaves like valid dashboard service response7111 behaves like valid dashboard service response for schema7112 returns a json representation of the dashboard7113 behaves like caches the unprocessed dashboard for subsequent calls7114 is expected to receive load_raw!(*(any args)) 1 time7115 behaves like refreshes cache when dashboard_version is changed7116 is expected to receive read(#<Pathname:/builds/gitlab-org/gitlab/config/prometheus/pod_metrics.yml>) 2 times7117 behaves like updates gitlab_metrics_dashboard_processing_time_ms metric7118 prometheus7119 behaves like dashboard_version contains SHA256 hash of dashboard file content7120 is expected to eq "3a91b32f91b2dd3d90275333c0ea3630b3f3f37c4296ede5b5eef59bf523d66b"7121 .all_dashboard_paths7122 returns the dashboard attributes7123ProtectedBranchPolicy7124 as maintainers7125 can be read7126 can be created7127 can be updated7128 can be destroyed7129 as guests7130 can be read7131 can be created7132 can be updated7133 cannot be destroyed7134Gitlab::I18n::TranslationEntry7135 #singular_translation7136 returns the normal `msgstr` for translations without plural7137 returns the first string for entries with plurals7138 #all_translations7139 returns all translations for singular translations7140 returns all translations when including plural translations7141 #plural_translations7142 returns all translations if there is only one plural7143 returns all translations except for the first one if there are multiple7144 #has_singular_translation?7145 has a singular when the translation is not pluralized7146 has a singular when plural and singular are separately defined7147 does not have a separate singular if the plural string only has one translation7148 #msgid_contains_newlines7149 is true when the msgid is an array7150 #plural_id_contains_newlines7151 is true when the msgid is an array7152 #translations_contain_newlines7153 is true when the msgid is an array7154 #contains_unescaped_chars7155 is true when the msgid is an array7156 is false when the `%` char is escaped7157 is false when using an unnamed variable7158 is false when using a named variable7159 is true when an unnamed variable is not closed7160 is true when the string starts with a `%`7161 #msgid_contains_unescaped_chars7162 is true when the msgid contains a `%`7163 #plural_id_contains_unescaped_chars7164 is true when the plural msgid contains a `%`7165 #translations_contain_unescaped_chars7166 is true when the translation contains a `%`7167 #msgid_contains_potential_html?7168 when there are no angle brackets in the msgid7169 returns false7170 when there are angle brackets in the msgid7171 returns true7172 #plural_id_contains_potential_html?7173 when there are no angle brackets in the plural_id7174 returns false7175 when there are angle brackets in the plural_id7176 returns true7177 #translations_contain_potential_html?7178 when there are no angle brackets in the translations7179 returns false7180 when there are angle brackets in the translations7181 returns true7182Gitlab::ImportExport::Project::Sample::RelationFactory7183 issue object7184 correctly updated due date7185 milestone object7186 correctly updated due date7187 correctly updated start date7188 milestone object7189 correctly updated due date7190 correctly updated start date7191 hook object7192 does not calculate the closest date to average7193FileMover7194 #execute7195 local storage7196 when move and field update successful7197 updates the description correctly7198 updates existing upload record7199 when update_markdown fails7200 does not update the description7201 does not change the upload record7202 when tmp uploader is not local storage7203 when move and field update successful7204 updates the description correctly7205 creates new target upload record an delete the old upload7206 when update_markdown fails7207 does not update the description7208 does not change the upload record7209 security7210 when relative path is involved7211 does not trigger move if path is outside designated directory7212 when symlink is involved7213 does not trigger move if path is outside designated directory7214Packages::Maven::PackageFinder7215 uses CTE in the query7216 #execute!7217 within the project7218 behaves like handling valid and invalid paths7219 with a valid path7220 is expected to eq #<Packages::Package id: 62, project_id: 960, created_at: "2022-12-08 01:18:35.079926000 +0000", updat..."1.1-SNAPSHOT", package_type: "maven", creator_id: 2151, status: "default", last_downloaded_at: nil>7221 with an invalid path7222 raises an error7223 with an uninstallable package7224 is expected to raise ActiveRecord::RecordNotFound7225 within a group7226 behaves like handling valid and invalid paths7227 with a valid path7228 is expected to eq #<Packages::Package id: 62, project_id: 960, created_at: "2022-12-08 01:18:35.079926000 +0000", updat..."1.1-SNAPSHOT", package_type: "maven", creator_id: 2151, status: "default", last_downloaded_at: nil>7229 with an invalid path7230 raises an error7231 with an uninstallable package7232 is expected to raise ActiveRecord::RecordNotFound7233 across all projects7234 raises an error7235 versionless maven-metadata.xml package7236 without order by package file7237 is expected to eq #<Packages::Package id: 68, project_id: 964, created_at: "2022-12-08 01:18:38.042459032 +0000", updat..., version: nil, package_type: "maven", creator_id: 2158, status: "default", last_downloaded_at: nil>7238 with order by package file7239 is expected to eq #<Packages::Package id: 66, project_id: 963, created_at: "2022-12-08 01:18:37.778792064 +0000", updat..., version: nil, package_type: "maven", creator_id: 2156, status: "default", last_downloaded_at: nil>7240Gitlab::GithubImport::Importer::SingleEndpointIssueEventsImporter7241 is expected to includes the Gitlab::GithubImport::ParallelScheduling module7242 #importer_class7243 is expected to eq Gitlab::GithubImport::Importer::IssueEventImporter7244 #representation_class7245 is expected to eq Gitlab::GithubImport::Representation::IssueEvent7246 #sidekiq_worker_class7247 is expected to eq Gitlab::GithubImport::ImportIssueEventWorker7248 #object_type7249 is expected to eq :issue_event7250 #collection_method7251 is expected to eq :issue_timeline7252 #page_counter_id7253 is expected to eq "issues/1/issue_timeline"7254 #id_for_already_imported_cache7255 is expected to eq 17256 #collection_options7257 is expected to eq {:direction=>"asc", :sort=>"created", :state=>"all"}7258 #compose_associated_id!7259 when event type is cross-referenced7260 assigns event id7261 when event type isn't cross-referenced7262 doesn't assign event id7263 #each_object_to_import7264 triggers page number increment7265 with issues7266 imports each issue event page by page7267 with merge requests7268 imports each merge request event page by page7269 when page is already processed7270 doesn't process this page7271 when event is already processed7272 doesn't process this event7273UsersStatistics7274 scopes7275 .order_created_at_desc7276 returns the entries ordered by created at descending7277 .latest7278 returns the latest entry7279 .create_current_stats!7280 when successful7281 creates an entry with the current statistics values7282 when unsuccessful7283 raises an ActiveRecord::RecordInvalid exception7284 #active7285 sums users statistics values without the value for blocked7286 #total7287 sums all users statistics values7288Todos::Destroy::ProjectPrivateService7289 #execute7290 when a project set to private7291 removes issue todos for a user who is not a member7292 when project is not private7293 does not remove any todos7294ProductAnalyticsEvent7295 is expected to belong to project required: false7296 is expected to respond to #order_by_time7297 validations7298 is expected to validate that :project_id cannot be empty/falsy7299 is expected to validate that :event_id cannot be empty/falsy7300 is expected to validate that :v_collector cannot be empty/falsy7301 is expected to validate that :v_etl cannot be empty/falsy7302 .timerange7303 is expected to contain exactly #<ProductAnalyticsEvent id: 1, project_id: 979, platform: "web", etl_tstamp: nil, collector_tstamp: "...l, event_name: nil, event_format: nil, event_version: nil, event_fingerprint: nil, true_tstamp: nil>7304 is expected to contain exactly #<ProductAnalyticsEvent id: 1, project_id: 979, platform: "web", etl_tstamp: nil, collector_tstamp: "...l, event_name: nil, event_format: nil, event_version: nil, event_fingerprint: nil, true_tstamp: nil> and #<ProductAnalyticsEvent id: 2, project_id: 980, platform: "web", etl_tstamp: nil, collector_tstamp: "...l, event_name: nil, event_format: nil, event_version: nil, event_fingerprint: nil, true_tstamp: nil>7305 is expected to contain exactly #<ProductAnalyticsEvent id: 1, project_id: 979, platform: "web", etl_tstamp: nil, collector_tstamp: "...l, event_name: nil, event_format: nil, event_version: nil, event_fingerprint: nil, true_tstamp: nil>, #<ProductAnalyticsEvent id: 2, project_id: 980, platform: "web", etl_tstamp: nil, collector_tstamp: "...l, event_name: nil, event_format: nil, event_version: nil, event_fingerprint: nil, true_tstamp: nil>, and #<ProductAnalyticsEvent id: 3, project_id: 981, platform: "web", etl_tstamp: nil, collector_tstamp: "...l, event_name: nil, event_format: nil, event_version: nil, event_fingerprint: nil, true_tstamp: nil>7306 .count_by_graph7307 is expected to eq {"app"=>1, "web"=>2}7308 is expected to eq {"app"=>1, "mobile"=>1, "web"=>2}7309 .count_collector_tstamp_by_day7310 is expected to eq {2022-12-08 00:00:00.000000000 +0000=>3, 2022-12-03 00:00:00.000000000 +0000=>2}7311ResourceStateEventFinder7312 #execute7313 returns events accessible by user7314 when issues are private7315 does not return any events7316 when issue is not accesible to the user7317 does not return any events7318 #can_read_eventable?7319 when eventable is an Issue7320 when issue is readable7321 is expected to be truthy7322 when issue is not readable7323 is expected to be falsey7324 when eventable is a MergeRequest7325 when merge request is readable7326 is expected to be truthy7327 when merge request is not readable7328 is expected to be falsey7329ObjectStorage::CDN::GoogleCDN7330 # order random7331 #signed_url7332 with default query parameters7333 returns a valid signed URL7334 with nil query parameters7335 returns a valid signed URL7336 with extra query parameters7337 returns a valid signed URL7338 #use_cdn?7339 ip_address: "34.80.0.1", expected: false7340 is expected to eq false7341 ip_address: "18.245.0.42", expected: true7342 is expected to eq true7343 ip_address: "2500:1900:4180:0000:0000:0000:0000:0000", expected: true7344 is expected to eq true7345 ip_address: "2600:1900:4180:0000:0000:0000:0000:0000", expected: false7346 is expected to eq false7347 ip_address: "10.10.1.5", expected: false7348 is expected to eq false7349 ip_address: "fc00:0000:0000:0000:0000:0000:0000:0000", expected: false7350 is expected to eq false7351 ip_address: "127.0.0.1", expected: false7352 is expected to eq false7353 ip_address: "169.254.0.0", expected: false7354 is expected to eq false7355 when the key name is missing7356 returns false7357 when the key is missing7358 returns false7359 when the key is invalid7360 returns false7361 when the URL is missing7362 returns false7363 when URL is a domain7364 returns false7365 when URL uses HTTP7366 returns false7367Kramdown::Parser::AtlassianDocumentFormat7368 markdown render7369 renders header id to html7370 logs an error with invalid json7371 logs an error if no valid document node7372 invalid node gets ignored7373 behaves like render elements to markdown7374 renders blockquote7375 behaves like render elements to markdown7376 renders bullet_list7377 behaves like render elements to markdown7378 renders code_block7379 behaves like render elements to markdown7380 renders emoji7381 behaves like render elements to markdown7382 renders hard_break7383 behaves like render elements to markdown7384 renders heading7385 behaves like render elements to markdown7386 renders inline_card7387 behaves like render elements to markdown7388 renders media_group7389 behaves like render elements to markdown7390 renders media_single7391 behaves like render elements to markdown7392 renders mention7393 behaves like render elements to markdown7394 renders ordered_list7395 behaves like render elements to markdown7396 renders panel7397 behaves like render elements to markdown7398 renders paragraph7399 behaves like render elements to markdown7400 renders rule7401 behaves like render elements to markdown7402 renders table7403 behaves like render elements to markdown7404 renders strong_em_mark7405 behaves like render elements to markdown7406 renders code_mark7407 behaves like render elements to markdown7408 renders link_mark7409 behaves like render elements to markdown7410 renders strike_sup_sub_mark7411 behaves like render elements to markdown7412 renders underline_text_color_mark7413 behaves like render elements to markdown7414 renders complex_document7415Gitlab::GlRepository::Identifier7416 project repository7417 https://gitlab.com/gitlab-org/gitlab/-/issues/219192 (PENDING: No reason given)7418 behaves like parsing gl_repository identifier7419 returns correct information7420 behaves like parsing gl_repository identifier7421 returns correct information7422 wiki7423 behaves like parsing gl_repository identifier7424 returns correct information7425 behaves like parsing gl_repository identifier7426 returns correct information7427 snippet7428 when PersonalSnippet7429 behaves like parsing gl_repository identifier7430 returns correct information7431 when ProjectSnippet7432 behaves like parsing gl_repository identifier7433 returns correct information7434 design7435 behaves like parsing gl_repository identifier7436 returns correct information7437 when the format is incorrect7438 identifier: "wiki-noid"7439 raises InvalidIdentifier7440 identifier: "foo-2"7441 raises InvalidIdentifier7442 identifier: "project-0"7443 raises InvalidIdentifier7444 identifier: "2-project"7445 raises InvalidIdentifier7446 identifier: "snippet-2-wiki"7447 raises InvalidIdentifier7448 identifier: "project-wibble-wiki"7449 raises InvalidIdentifier7450 identifier: "wiki-1-project"7451 raises InvalidIdentifier7452 identifier: "snippet"7453 raises InvalidIdentifier7454 identifier: "project-1-wiki-bar"7455 raises InvalidIdentifier7456 identifier: "project-1-project"7457 raises InvalidIdentifier7458Gitlab::Ci::ProjectConfig7459 # order random7460 when config is the Auto-Devops template7461 returns root config including the auto-devops template7462 when config is defined in a separate repository7463 returns root config including the path to another repository7464 when path specifies a refname7465 returns root config including the path and refname to another repository7466 when config is defined in the default .gitlab-ci.yml7467 returns root config including the canonical CI config file7468 when config is not defined anywhere7469 returns nil7470 when bridge job is passed in as parameter7471 returns the content already available in command7472 when config is defined in a custom path in the repository7473 returns root config including the local custom file7474 when config is passed as a parameter7475 returns the parameter content7476 when config is defined remotely7477 returns root config including the remote config7478Gitlab::Metrics::System7479 when /proc files exist7480 .memory_usage_rss7481 without PID7482 returns a hash containing RSS metrics in bytes for current process7483 with PID7484 returns a hash containing RSS metrics in bytes for given process7485 .file_descriptor_count7486 returns the amount of open file descriptors7487 .max_open_file_descriptors7488 returns the max allowed open file descriptors7489 .memory_usage_uss_pss7490 without PID7491 returns the current process' unique and porportional set size (USS/PSS) in bytes7492 with PID7493 returns the given process' unique and porportional set size (USS/PSS) in bytes7494 .memory_total7495 returns the current process' resident set size (RSS) in bytes7496 .process_runtime_elapsed_seconds7497 returns the seconds elapsed since the process was started7498 when inputs are not available7499 returns 07500 .summary7501 contains a selection of the available fields7502 when /proc files do not exist7503 .memory_usage_rss7504 returns 0 for all components7505 .memory_usage_uss_pss7506 returns 0 for all components7507 .file_descriptor_count7508 returns 07509 .max_open_file_descriptors7510 returns 07511 .summary7512 returns only available fields7513 .cpu_time7514 returns a Float7515 .real_time7516 returns a Float7517 .monotonic_time7518 returns a Float7519 .thread_cpu_time7520 returns cpu_time on supported platform7521 returns nil on unsupported platform7522 .thread_cpu_duration7523 returns difference between start and current time7524 returns nil on unsupported platform7525CommitSignatures::X509CommitSignature7526 behaves like having unique enum values7527 has unique values in "verification_status"7528 behaves like commit signature7529 associations7530 is expected to belong to project required: true7531 validation7532 is expected to validate that :commit_sha cannot be empty/falsy7533 is expected to validate that :project_id cannot be empty/falsy7534 .safe_create!7535 finds a signature by commit sha if it existed7536 creates a new signature if it was not found7537 assigns the correct attributes when creating7538 does not raise an error in case of a race condition7539 #commit7540 fetches the commit through the project7541 behaves like signature with type checking7542 signature type checkers7543 method: :gpg?, expected: false7544 is expected to eq false7545 method: :ssh?, expected: false7546 is expected to eq false7547 method: :x509?, expected: true7548 is expected to eq true7549 validation7550 is expected to validate that :x509_certificate_id cannot be empty/falsy7551 associations7552 is expected to belong to x509_certificate required: true7553 #user7554 if email is not assigned to a user, return nil7555 if email is assigned to a user7556 returns user7557ChatName7558 is expected to belong to integration required: false7559 is expected to belong to user required: false7560 is expected to validate that :user cannot be empty/falsy7561 is expected to validate that :integration cannot be empty/falsy7562 is expected to validate that :team_id cannot be empty/falsy7563 is expected to validate that :chat_id cannot be empty/falsy7564 is expected to validate that :user_id is case-sensitively unique within the scope of :integration_id7565 is expected to validate that :chat_id is case-sensitively unique within the scope of :integration_id and :team_id7566 is removed when the project is deleted7567 #update_last_used_at7568 updates the last_used_at timestamp7569 does not update last_used_at if it was recently updated7570 behaves like it has loose foreign keys7571 has at least one loose foreign key definition7572 has the deletion trigger present7573 records record deletions7574 cleans up record deletions7575Gitlab::ServiceDeskEmail7576 behaves like common email methods7577 behaves like enabled? method for email7578 value: false, address: nil, result: false7579 is expected to eq false7580 value: false, address: "replies+%{key}@example.com", result: false7581 is expected to eq false7582 value: true, address: nil, result: false7583 is expected to eq false7584 value: true, address: "replies+%{key}@example.com", result: true7585 is expected to eq true7586 behaves like supports_wildcard? method for email7587 when address contains the wildcard placeholder7588 confirms that wildcard is supported7589 when address doesn't contain the wildcard placeholder7590 returns that wildcard is not supported7591 when address is nil7592 returns that wildcard is not supported7593 behaves like key_from_fallback_message_id method for email7594 returns reply key7595 behaves like supports_issue_creation? method for email7596 enabled_value: false, supports_wildcard_value: false, result: false7597 is expected to eq false7598 enabled_value: false, supports_wildcard_value: true, result: false7599 is expected to eq false7600 enabled_value: true, supports_wildcard_value: false, result: false7601 is expected to eq false7602 enabled_value: true, supports_wildcard_value: true, result: true7603 is expected to eq true7604 behaves like reply_address method for email7605 returns the address with an interpolated reply key7606 behaves like unsubscribe_address method for email7607 returns the address with interpolated reply key and unsubscribe suffix7608 behaves like scan_fallback_references method for email7609 returns reply key7610 .key_from_address7611 when service desk address is set7612 returns key7613 when service desk address is not set7614 returns nil7615 .address_for_key7616 when service desk address is set7617 returns address7618 when service desk address is not set7619 returns nil7620projects/merge_requests/edit.html.haml7621 when a merge request without fork7622 shows editable fields7623 when a merge request with an existing source project is closed7624 shows editable fields7625Gitlab::Ci::Config::Entry::Port7626 when configuration is a string7627 #valid?7628 is valid7629 #value7630 returns valid hash7631 #number7632 returns port number7633 #protocol7634 is nil7635 #name7636 is nil7637 when configuration is a hash7638 with the complete hash7639 #valid?7640 is valid7641 #value7642 returns valid hash7643 #number7644 returns port number7645 #protocol7646 returns port protocol7647 #name7648 returns port name7649 with only the port number7650 #valid?7651 is valid7652 #value7653 returns valid hash7654 #number7655 returns port number7656 #protocol7657 is nil7658 #name7659 is nil7660 without the number7661 #valid?7662 is not valid7663 when configuration is invalid7664 #valid?7665 is valid7666 when protocol7667 is http7668 #valid?7669 is valid7670 is https7671 #valid?7672 is valid7673 is neither http nor https7674 #valid?7675 is invalid7676Clusters::AgentsFinder7677 #execute7678 is expected to contain exactly #<Clusters::Agent id: 13, created_at: "2022-12-08 01:19:16.652591774 +0000", updated_at: "2022-12-08 ...74 +0000", project_id: 1019, name: "agent-13", created_by_user_id: 2255, has_vulnerabilities: false>7679 user does not have permission7680 is expected to be empty7681 filtering by name7682 name does not match7683 is expected to be empty7684 name does match7685 is expected to contain exactly #<Clusters::Agent id: 19, created_at: "2022-12-08 01:19:19.595612285 +0000", updated_at: "2022-12-08 ...85 +0000", project_id: 1025, name: "agent-19", created_by_user_id: 2270, has_vulnerabilities: false>7686Gitlab::Ci::Config::Entry::Artifacts7687 validation7688 when entry config value is correct7689 #value7690 returns artifacts configuration7691 #valid?7692 is valid7693 when value includes 'reports' keyword7694 returns general artifact and report-type artifacts configuration7695 when value includes 'expose_as' keyword7696 returns general artifact and report-type artifacts configuration7697 when value includes 'public' keyword7698 returns general artifact and report-type artifacts configuration7699 when entry value is not correct7700 #errors7701 when value of attribute is invalid7702 reports error7703 when there is an unknown key present7704 reports error7705 when 'reports' keyword is not hash7706 reports error7707 when 'public' is not a boolean7708 reports error7709 when 'expose_as' is not a string7710 reports error7711 when 'expose_as' is too long7712 reports error7713 when 'expose_as' is an empty string7714 reports error7715 when 'expose_as' contains invalid characters7716 reports error7717 when 'expose_as' is used without 'paths'7718 reports error7719 when 'paths' includes '*' and 'expose_as' is defined7720 reports error7721 when the `when` keyword is not a string7722 when it is an array7723 returns error7724 when it is a boolean7725 returns error7726 excluded artifacts7727 when configuration is valid7728 correctly parses the configuration7729 when configuration is not valid7730 returns an error7731Ci::StatusHelper7732 #ci_icon_for_status7733 renders to correct svg on success7734 renders the correct svg on failure7735 #ci_text_for_status7736 when status is manual7737 changes the status to blocked7738 when status is success7739 changes the status to passed7740 when status is something else7741 returns status unchanged7742 #pipeline_status_cache_key7743 builds a cache key for pipeline status7744 #render_status_with_link7745 renders a passed status icon7746 has 'Pipeline' as the status type in the title7747 has the success status icon7748 when pipeline has commit path7749 links to commit7750 does not contain a span element7751 has 'Pipeline' as the status type in the title7752 has the correct status icon7753 when different type than pipeline is provided7754 has the provided type in the title7755 when tooltip_placement is provided7756 has the provided tooltip placement7757 when additional CSS classes are provided7758 has appended extra class to icon classes7759 when container is provided7760 has the provided container in data7761 when icon_size is provided7762 has the svg class to change size7763Banzai::Pipeline::DescriptionPipeline7764 uses a limited allowlist7765 removes 'pre' elements7766 removes 'code' elements7767 removes 'img' elements7768 removes 'ol' elements7769 removes 'ul' elements7770 removes 'li' elements7771 still allows 'b' elements7772 still allows 'i' elements7773 still allows 'strong' elements7774 still allows 'em' elements7775 still allows 'a' elements7776 still allows 'ins' elements7777 still allows 'del' elements7778 still allows 'sup' elements7779 still allows 'sub' elements7780 still allows 'p' elements7781Resolvers::Terraform::StatesResolver7782 is expected to have nullable GraphQL type TerraformStateConnection7783 is expected to be truthy7784 #resolve7785 returns states associated with the agent7786 user does not have permission7787 is expected to be empty7788Resolvers::Terraform::StatesResolver.single7789 is expected to be < Resolvers::Terraform::StatesResolver7790 arguments7791 name7792 is expected to be present7793NotificationsHelper7794 notification_icon7795 is expected to match "data-testid=\"notifications-off-icon\""7796 is expected to match "data-testid=\"notifications-off-icon\""7797 is expected to match "data-testid=\"notifications-icon\""7798 is expected to match "data-testid=\"at-icon\""7799 is expected to match "data-testid=\"earth-icon"7800 is expected to match "data-testid=\"eye-icon\""7801 is expected to equal ""7802 notification_title7803 is expected to match "Watch"7804 is expected to match "On mention"7805 is expected to match "Global"7806 #notification_icon_level7807 is expected to eq "owner_disabled"7808 is expected to eq "watch"7809 is expected to eq "participating"7810Expirable7811 ProjectMember7812 .expired7813 is expected to contain exactly #<ProjectMember id: 1368, access_level: 40, source_id: 1034, source_type: "Project", user_id: 2288, n...erride: false, state: 0, invite_email_success: true, member_namespace_id: 3758, member_role_id: nil>7814 .not_expired7815 is expected to include #<ProjectMember id: 1364, access_level: 40, source_id: 1032, source_type: "Project", user_id: 2284, n...erride: false, state: 0, invite_email_success: true, member_namespace_id: 3752, member_role_id: nil> and #<ProjectMember id: 1366, access_level: 40, source_id: 1033, source_type: "Project", user_id: 2286, n...erride: false, state: 0, invite_email_success: true, member_namespace_id: 3755, member_role_id: nil>7816 is expected not to include #<ProjectMember id: 1368, access_level: 40, source_id: 1034, source_type: "Project", user_id: 2288, n...erride: false, state: 0, invite_email_success: true, member_namespace_id: 3758, member_role_id: nil>7817 #expired?7818 is expected to eq false7819 is expected to eq false7820 is expected to eq true7821 #expires?7822 is expected to eq false7823 is expected to eq true7824 is expected to eq true7825 #expires_soon?7826 is expected to eq false7827 is expected to eq true7828 is expected to eq true7829Milestones::CloseService7830 #execute7831 is expected to be valid7832 is expected to be closed7833 event7834 is expected to be truthy7835 is expected to eq #<Milestone id:52 namespace921/project994%"Milestone v1.2">7836 is expected to eq "closed"7837DeploymentCluster7838 is expected to belong to deployment required: true7839 is expected to belong to cluster required: true7840 is expected to have attributes {:cluster_id => 3, :deployment_id => 24, :kubernetes_namespace => "an-example-namespace"}7841 loose foreign key on deployment_clusters.cluster_id7842 behaves like cleanup by a loose foreign key7843 cleans up (delete or nullify) the model7844Ci::CreatePipelineService7845 #execute7846 when source is a dangling build7847 parameter config content7848 creates a pipeline7849 creates builds with the correct names7850 creates stages with the correct names7851 sets the correct config source7852Banzai::Filter::ImageLinkFilter7853 wraps the image with a link to the image src7854 does not wrap a duplicate link7855 works with external images7856 works with inline images7857 keep the data-canonical-src7858 moves the data-diagram* attributes7859 adds no-attachment icon class to the link7860 when :link_replaces_image is true7861 replaces the image with link to image src7862 uses image alt as a link text7863 uses image data-src as a link text7864 adds attachment icon class to the link7865 when link attributes contain malicious code7866 when image alt contains malicious code7867 ignores image alt and uses image path as the link text7868 when image src contains malicious code7869 ignores image src and does not use it as the link text7870 keeps image src unchanged, malicious code does not execute as part of url7871 when image data-src contains malicious code7872 ignores data-src and uses image path as the link text7873 uses image data-src, malicious code does not execute as part of url7874Groups::DeployTokens::CreateService7875 behaves like a deploy token creation service7876 #execute7877 when the deploy token is valid7878 creates a new DeployToken7879 creates a new ProjectDeployToken7880 returns a DeployToken7881 sets the creator_id as the id of the current_user7882 when expires at date is not passed7883 sets Forever.date7884 when username is empty string7885 converts it to nil7886 when username is provided7887 keeps the provided username7888 when the deploy token is invalid7889 does not create a new DeployToken7890 does not create a new ProjectDeployToken7891Tooling::Danger::ProductIntelligence7892 #check!7893 with growth experiment label7894 doesn't add new labels7895 doesn't add new warnings7896 without growth experiment label7897 with approved label7898 doesn't add new labels7899 doesn't add new warnings7900 without approved label7901For the following files, a review from the [Data team and Product Intelligence team](https://gitlab.com/groups/gitlab-org/analytics-section/product-intelligence/engineers/-/group_members?with_inherited_permissions=exclude) is recommended7902Please check the ~"product intelligence" [Service Ping guide](https://docs.gitlab.com/ee/development/service_ping/) or the [Snowplow guide](https://docs.gitlab.com/ee/development/snowplow/).7903For MR review guidelines, see the [Service Ping review guidelines](https://docs.gitlab.com/ee/development/service_ping/review_guidelines.html) or the [Snowplow review guidelines](https://docs.gitlab.com/ee/development/snowplow/review_guidelines.html).7904markdown formatted list7905 adds new labels7906 warns with proper message7907 with product intelligence::review pending label7908For the following files, a review from the [Data team and Product Intelligence team](https://gitlab.com/groups/gitlab-org/analytics-section/product-intelligence/engineers/-/group_members?with_inherited_permissions=exclude) is recommended7909Please check the ~"product intelligence" [Service Ping guide](https://docs.gitlab.com/ee/development/service_ping/) or the [Snowplow guide](https://docs.gitlab.com/ee/development/snowplow/).7910For MR review guidelines, see the [Service Ping review guidelines](https://docs.gitlab.com/ee/development/service_ping/review_guidelines.html) or the [Snowplow review guidelines](https://docs.gitlab.com/ee/development/snowplow/review_guidelines.html).7911markdown formatted list7912 doesn't add new labels7913 with product intelligence::approved label7914 doesn't add new labels7915 with the product intelligence label7916 with ci? false7917For the following files, a review from the [Data team and Product Intelligence team](https://gitlab.com/groups/gitlab-org/analytics-section/product-intelligence/engineers/-/group_members?with_inherited_permissions=exclude) is recommended7918Please check the ~"product intelligence" [Service Ping guide](https://docs.gitlab.com/ee/development/service_ping/) or the [Snowplow guide](https://docs.gitlab.com/ee/development/snowplow/).7919For MR review guidelines, see the [Service Ping review guidelines](https://docs.gitlab.com/ee/development/service_ping/review_guidelines.html) or the [Snowplow review guidelines](https://docs.gitlab.com/ee/development/snowplow/review_guidelines.html).7920markdown formatted list7921 doesn't add new labels7922 with ci? true7923For the following files, a review from the [Data team and Product Intelligence team](https://gitlab.com/groups/gitlab-org/analytics-section/product-intelligence/engineers/-/group_members?with_inherited_permissions=exclude) is recommended7924Please check the ~"product intelligence" [Service Ping guide](https://docs.gitlab.com/ee/development/service_ping/) or the [Snowplow guide](https://docs.gitlab.com/ee/development/snowplow/).7925For MR review guidelines, see the [Service Ping review guidelines](https://docs.gitlab.com/ee/development/service_ping/review_guidelines.html) or the [Snowplow review guidelines](https://docs.gitlab.com/ee/development/snowplow/review_guidelines.html).7926markdown formatted list7927 adds new labels7928 #check_affected_scopes!7929 when a model was modified7930 when a scope is changed7931 and a metrics uses the affected scope7932 producing warning7933 when no metrics using the affected scope7934 doesnt do anything7935 when an unrelated model with matching scope was modified7936 doesnt do anything7937 when models arent modified7938 doesnt do anything7939Gitlab::Harbor::Client7940 #initialize7941 if integration is nil7942 raises ConfigError7943 integration is provided7944 is initialized successfully7945 #get_repositories7946 with valid params7947 get repositories7948 when harbor project does not exist7949 raises Gitlab::Harbor::Client::Error7950 with invalid response7951 raises Gitlab::Harbor::Client::Error7952 #get_artifacts7953 with valid params7954 get artifacts7955 when harbor repository does not exist7956 raises Gitlab::Harbor::Client::Error7957 with invalid response7958 raises Gitlab::Harbor::Client::Error7959 #get_tags7960 with valid params7961 get tags7962 when harbor artifact does not exist7963 raises Gitlab::Harbor::Client::Error7964 with invalid response7965 raises Gitlab::Harbor::Client::Error7966 #ping7967 calls api/v2.0/ping successfully7968Gitlab::EncryptedConfiguration7969 #initialize7970 accepts all args as optional fields7971 generates 32 byte key when provided a larger base key7972 generates 32 byte key when provided a smaller base key7973 throws an error when the base key is too small7974 when provided a config file but no key7975 throws an error when writing without a key7976 throws an error when reading without a key7977 when provided key and config file7978 #write7979 encrypts the file using the provided key7980 #read7981 reads yaml configuration7982 allows referencing top level keys via dot syntax7983 throws a custom error when referencing an invalid key map config7984 #change7985 changes yaml configuration7986 when provided previous_keys for rotation7987 #write7988 rotates the key when provided a new key7989 #read7990 supports reading using rotated config7991Mutations::ReleaseAssetLinks::Delete7992 #resolve7993 when the current user has access to delete the link7994 deletes the link and returns it7995 with protected tag7996 when user has access to the protected tag7997 does not have errors7998 when user does not have access to the protected tag7999 raises a resource access error8000 when the link doesn't exist8001 raises an error8002 when the current user does not have access to delete the link8003 raises an error8004Gitlab::BackgroundMigration8005 .queue8006 returns background migration worker queue8007 .steal8008 when the queue contains unprocessed jobs8009 uses the coordinator to steal jobs8010 when a custom predicate is given8011 steals jobs that match the predicate8012 does not steal jobs that do not match the predicate8013 when retry_dead_jobs is true8014 steals from the dead and retry queue8015 .perform8016 uses the coordinator to perform a background migration8017 .exists?8018 uses the coordinator to find if a job exists8019 uses the coordinator to find a job does not exist8020 .remaining8021 uses the coordinator to find the number of remaining jobs8022DesignManagement::GenerateImageVersionsService8023 #execute8024 generates the image8025 skips generating image versions if the mime type is not whitelisted8026 skips generating image versions if the design file size is too large8027 returns the status8028 returns the version8029 logs if the raw image cannot be found8030 when an error is encountered when generating the image versions8031 CarrierWave::IntegrityError8032 logs the exception8033 logs the error8034 CarrierWave::UploadError8035 logs the error8036 tracks the error8037MergeRequest::ApprovalRemovalSettings8038 validations8039 when enabling selective_code_owner_removals and reset_approvals_on_push is disabled8040 is expected to be valid8041 when enabling selective_code_owner_removals and reset_approvals_on_push is enabled8042 is expected not to be valid8043 when enabling reset_approvals_on_push and selective_code_owner_removals is disabled8044 is expected to be valid8045 when enabling reset_approvals_on_push and selective_code_owner_removals is enabled8046 is expected not to be valid8047 when enabling reset_approvals_on_push and selective_code_owner_removals8048 is expected not to be valid8049Ci::ExternalPullRequests::CreatePipelineWorker8050 #perform8051 creates the pipeline8052 when the project not found8053 behaves like not calling service8054 does not call the service8055 when the user not found8056 behaves like not calling service8057 does not call the service8058 when the pull request not found8059 behaves like not calling service8060 does not call the service8061 when the pull request does not belong to the project8062 behaves like not calling service8063 does not call the service8064Projects::GroupLinks::DestroyService#execute8065 removes group from project8066 returns false if group_link is blank8067 project authorizations refresh8068 calls AuthorizedProjectUpdate::ProjectRecalculateWorker to update project authorizations8069 calls AuthorizedProjectUpdate::UserRefreshFromReplicaWorker with a delay to update project authorizations8070 updates project authorizations of users who had access to the project via the group share8071 todos cleanup8072 when project is private8073 triggers todos cleanup8074 when project is public or internal8075 when project is public8076 behaves like removes confidential todos8077 does not trigger todos cleanup8078 when project is internal8079 behaves like removes confidential todos8080 does not trigger todos cleanup8081Packages::Debian::Publication8082 relationships8083 is expected to belong to package class_name => Packages::Package required: false inverse_of => debian_publication8084 is expected to belong to distribution class_name => Packages::Debian::ProjectDistribution required: false inverse_of => publications8085 validations8086 #package8087 is expected to validate that :package cannot be empty/falsy8088 #valid_debian_package_type8089 with package type not being Debian8090 will not allow package type not being Debian8091 with package not being a Debian package8092 will not allow package not being a distribution8093 #distribution8094 is expected to validate that :distribution cannot be empty/falsy8095LoadedInGroupList8096 .with_selects_for_list8097 includes the preloaded counts for groups8098 with project namespaces8099 does not include project_namespaces in the count of subgroups8100 with archived projects8101 counts including archived projects when `true` is passed8102 when not counting archived projects8103 counts projects without archived ones8104 with archived only8105 counts only archived projects when `only` is passed8106 #children_count8107 counts groups and projects8108gitlab:dependency_proxy namespace rake task8109 migrate8110 object storage disabled8111 doesn't migrate files8112 object storage enabled8113 migrates local file to object storage8114 an error is raised while migrating8115 fails to migrate a local file that does not exist8116Packages::Maven::CreatePackageService8117 #execute8118 with version8119 creates a new package with metadatum8120 behaves like assigns the package creator8121 assigns the package creator8122 without version8123 creates a new package with metadatum8124 behaves like assigns the package creator8125 assigns the package creator8126 path is missing8127 raises an error8128Gitlab::OtpKeyRotator8129 #rotate!8130 stores the calculated values in a spreadsheet8131 new key is too short8132 is expected to raise ArgumentError8133 new key is the same as the old key8134 is expected to raise ArgumentError8135 #rollback!8136 updates rows to the old value8137Issuable::ProcessAssignees8138 #execute8139 returns assignee_ids when add_assignee_ids and remove_assignee_ids are not specified8140 combines other ids when assignee_ids is nil8141 combines other ids when both add_assignee_ids and remove_assignee_ids are not empty8142 combines other ids when remove_assignee_ids is not empty8143 combines other ids when add_assignee_ids is not empty8144 combines ids when existing_assignee_ids and extra_assignee_ids are omitted8145 handles mixed string and integer arrays8146BlobViewer::Changelog8147 #render_error8148 when there are no tags8149 returns :no_tags8150 when there are tags8151 returns nil8152Packages::Go::ModuleVersion8153 #name8154 with ref and name specified8155 returns that name8156 with ref specified and name unspecified8157 returns the name of the ref8158 with ref and name unspecified8159 returns nil8160 #gomod8161 with go.mod missing8162 returns nil8163 with go.mod present8164 returns the contents of go.mod8165 #files8166 with a root module8167 with an empty module path8168 behaves like #files8169 returns all the files8170 with a root module and a submodule8171 with an empty module path8172 behaves like #files8173 returns files excluding the submodule8174 with the submodule's path8175 behaves like #files8176 returns the submodule's files8177 #archive8178 with a root module8179 with an empty module path8180 behaves like #archive8181 returns an archive of all the files8182 with a root module and a submodule8183 with an empty module path8184 behaves like #archive8185 returns an archive of files excluding the submodule8186 with the submodule's path8187 behaves like #archive8188 returns an archive of the submodule's files8189Gitlab::Database::Count::ReltuplesCountStrategy8190 #count8191 when reltuples is up to date8192Skipping ./spec/lib/gitlab/database/count/reltuples_count_strategy_spec.rb[1:1:1:1] 'Gitlab::Database::Count::ReltuplesCountStrategy#count when reltuples is up to date uses statistics to do the count' because it's flaky.8193 uses statistics to do the count (PENDING: around hook at ./spec/support/flaky_tests.rb:21 did not execute the example)8194 when models using single-type inheritance are used8195 returns nil counts for inherited tables8196 insufficient permissions8197 returns an empty hash8198Gitlab::MarkerRange8199 is expected to eq 1..108200 behaves like a Range8201 #mode8202 is expected to be nil8203 when mode is provided8204 is expected to eq :deletion8205 #to_range8206 is expected to eq 1..108207 when mode is provided8208 is omitted during transformation8209 .from_range8210 converts Range to MarkerRange object8211 keeps correct range8212 when range excludes end8213 keeps correct range8214 when range is already a MarkerRange8215 is expected to equal 1, 2, 3, 4, 5, 6, 7, 8, 9, and 108216 #==8217 is expected to be truthy8218 when marker ranges have different modes8219 is expected to be falsey8220 when marker ranges have different ranges8221 is expected to be falsey8222 when marker ranges is a simple range8223 is expected to be falsey8224Ci::Pipelines::HookService8225 #execute_hooks8226 HOOK_NAME8227 is expected to eq :pipeline_hooks8228 with pipeline hooks enabled8229 calls pipeline.project.execute_hooks and pipeline.project.execute_integrations8230 with pipeline hooks and integrations disabled8231 does not call pipeline.project.execute_hooks and pipeline.project.execute_integrations8232Resolvers::Users::GroupsResolver8233 #resolve8234 when resolver object is current user8235 is expected to match [#<Group id:3928 @a-public-maintainer>, #<Group id:3929 @a-public-owner>, #<Group id:3926 @b-private-maintainer>, #<Group id:3927 @c-public-developer>, #<Group id:3925 @public-guest>]8236 when permission is :create_projects8237 is expected to match [#<Group id:3928 @a-public-maintainer>, #<Group id:3929 @a-public-owner>, #<Group id:3926 @b-private-maintainer>, #<Group id:3927 @c-public-developer>]8238 when permission is :transfer_projects8239 is expected to match [#<Group id:3928 @a-public-maintainer>, #<Group id:3929 @a-public-owner>, #<Group id:3926 @b-private-maintainer>]8240 when search is provided8241 is expected to match [#<Group id:3928 @a-public-maintainer>, #<Group id:3926 @b-private-maintainer>]8242 when resolver object is different from current user8243 is expected to be nil8244 when current_user is admin8245 is expected to match [#<Group id:3928 @a-public-maintainer>, #<Group id:3929 @a-public-owner>, #<Group id:3926 @b-private-maintainer>, #<Group id:3927 @c-public-developer>, #<Group id:3925 @public-guest>]8246Releases::ManageEvidenceWorker8247 when `released_at` in inside the window8248 when Evidence has not been created8249 creates a new Evidence record8250 when evidence has already been created8251 behaves like does not create a new Evidence record8252 sidekiq_inline8253 when `released_at` is outside the window8254 behaves like does not create a new Evidence record8255 sidekiq_inline8256DestroyPagesDeploymentsWorker8257 doesn't fail if project is already removed8258 can be called without last_deployment_id8259 calls destroy service8260Gitlab::Ci::Pipeline::Duration8261 .from_periods8262 test sample A8263 behaves like calculating duration8264 is expected to eq 48265 test sample B8266 behaves like calculating duration8267 is expected to eq 48268 test sample C8269 behaves like calculating duration8270 is expected to eq 88271 test sample D8272 behaves like calculating duration8273 is expected to eq 48274 test sample E8275 behaves like calculating duration8276 is expected to eq 78277 test sample F8278 behaves like calculating duration8279 is expected to eq 68280 test sample G8281 behaves like calculating duration8282 is expected to eq 48283 .from_pipeline8284 returns the duration of the running build8285 when there is no running build8286 returns the duration for all the builds8287 when there are bridge jobs8288 returns the duration of the running build8289 when there is no running build8290 returns the duration for all the builds and bridge jobs8291MergeRequestContextCommit8292 associations8293 is expected to belong to merge_request required: false8294 is expected to have many diff_files class_name => MergeRequestContextCommitDiffFile8295 .delete_bulk8296 deletes context commits for given commit sha's and returns the commit8297 doesn't delete context commits when commit sha's are not passed8298BulkImports::Groups::Pipelines::GroupAttributesPipeline8299 #run8300 imports allowed group attributes8301 #transform8302 fetches only allowed attributes and symbolize keys8303 when there is no data to transform8304 is expected to eq nil8305 #after_run8306 calls extractor#remove_tmpdir8307 .relation8308 is expected to eq "self"8309Gitlab::Ci::Status::Manual8310 #text8311 is expected to eq "manual"8312 #label8313 is expected to eq "manual action"8314 #icon8315 is expected to eq "status_manual"8316 #favicon8317 is expected to eq "favicon_status_manual"8318 #group8319 is expected to eq "manual"8320Packages::Pypi::SimplePackageVersionsPresenter8321 #body8322 for project8323 behaves like pypi package presenter8324 avoids N+1 database queries8325 version: ">=2.7", expected_version: ">=2.7", with_package1: true8326 is expected to include "<a href=\"http://localhost/api/v4/projects/1090/packages/pypi/files/440e5e148a25331bbd7991575f7d5493...c0ebf6cc735a18ee5066ac1381bb590\" data-requires-python=\">=2.7\">sample-project-1.0.0.tar.gz</a>"8327 version: "\"><script>alert(1)</script>", expected_version: ""><script>alert(1)</script>", with_package1: true8328 is expected to include "<a href=\"http://localhost/api/v4/projects/1090/packages/pypi/files/440e5e148a25331bbd7991575f7d5493...requires-python=\""><script>alert(1)</script>\">sample-project-1.0.0.tar.gz</a>"8329 version: ">=2.7, !=3.0", expected_version: ">=2.7, !=3.0", with_package1: false8330 is expected to include "<a href=\"http://localhost/api/v4/projects/1090/packages/pypi/files/440e5e148a25331bbd7991575f7d5493...c735a18ee5066ac1381bb590\" data-requires-python=\">=2.7, !=3.0\">sample-project-2.0.0.tar.gz</a>"8331 for group8332 behaves like pypi package presenter8333 avoids N+1 database queries8334 version: ">=2.7", expected_version: ">=2.7", with_package1: true8335 is expected to include "<a href=\"http://localhost/api/v4/groups/3958/-/packages/pypi/files/440e5e148a25331bbd7991575f7d5493...c0ebf6cc735a18ee5066ac1381bb590\" data-requires-python=\">=2.7\">sample-project-1.0.0.tar.gz</a>"8336 version: "\"><script>alert(1)</script>", expected_version: ""><script>alert(1)</script>", with_package1: true8337 is expected to include "<a href=\"http://localhost/api/v4/groups/3958/-/packages/pypi/files/440e5e148a25331bbd7991575f7d5493...requires-python=\""><script>alert(1)</script>\">sample-project-1.0.0.tar.gz</a>"8338 version: ">=2.7, !=3.0", expected_version: ">=2.7, !=3.0", with_package1: false8339 is expected to include "<a href=\"http://localhost/api/v4/groups/3958/-/packages/pypi/files/440e5e148a25331bbd7991575f7d5493...c735a18ee5066ac1381bb590\" data-requires-python=\">=2.7, !=3.0\">sample-project-2.0.0.tar.gz</a>"8340 with package files pending destruction8341 is expected not to include "package_file_pending_destruction"8342CohortsService8343 #execute8344 returns a list of user cohorts8345Gitlab::Git::User8346 .from_gitaly8347 is expected to eq #<Gitlab::Git::User:0x00007f023e766028 @username="janedoe", @name="Jane Doé", @email="janedoé@example.com", @gl_id="user-123", @timezone="Asia/Shanghai">8348 .from_gitlab8349 when no commit_email has been set8350 is expected to eq #<Gitlab::Git::User:0x00007f023e48dc48 @username="user1493", @name="Sidney Jones2743", @email="alice@example.com", @gl_id="user-", @timezone="Asia/Shanghai">8351 when commit_email has been set8352 is expected to eq #<Gitlab::Git::User:0x00007f023e1b4fd0 @username="user1494", @name="Sidney Jones2744", @email="bob@example.com", @gl_id="user-", @timezone="Asia/Shanghai">8353 #==8354 is expected to eq #<Gitlab::Git::User:0x00007f0273a77638 @username="janedoe", @name="Jane Doé", @email="janedoé@example.com", @gl_id="user-123", @timezone="Asia/Shanghai">8355 is expected not to eq #<Gitlab::Git::User:0x00007f023dd27328 @username=nil, @name=nil, @email=nil, @gl_id=nil, @timezone="Asia/Shanghai">8356 is expected not to eq #<Gitlab::Git::User:0x00007f023da25b48 @username="janedoex", @name="Jane Doé", @email="janedoé@example.com", @gl_id="user-123", @timezone="Asia/Shanghai">8357 is expected not to eq #<Gitlab::Git::User:0x00007f023d7c1c08 @username="janedoe", @name="Jane Doéx", @email="janedoé@example.com", @gl_id="user-123", @timezone="Asia/Shanghai">8358 is expected not to eq #<Gitlab::Git::User:0x00007f023d55f3e8 @username="janedoe", @name="Jane Doé", @email="janedoé@example.comx", @gl_id="user-123", @timezone="Asia/Shanghai">8359 is expected not to eq #<Gitlab::Git::User:0x00007f0238e9cf50 @username="janedoe", @name="Jane Doé", @email="janedoé@example.com", @gl_id="user-123x", @timezone="Asia/Shanghai">8360 is expected not to eq #<Gitlab::Git::User:0x00007f023a1597d8 @username="janedoe", @name="Jane Doé", @email="janedoé@example.com", @gl_id="user-123", @timezone="Etc/UTC">8361 when add_timezone_to_web_operations is disabled8362 ignores timezone arg and sets Etc/UTC by default8363 #to_gitaly8364 creates a Gitaly::User with the correct data8365Gitlab::Database::Migrations::TestBackgroundRunner8366 without jobs to run8367 returns immediately8368 with jobs to run8369 finding pending background jobs8370 finds all the migrations8371 running migrations8372 runs the migration class correctly8373 runs the migration for a uniform amount of time8374 with multiple migrations to run8375 splits the time between migrations when all migrations use all their time8376 does not give leftover time to extra migrations8377Gitlab::ImportExport::WikiRepoSaver8378 bundle a wiki Git repo8379 bundles the repo successfully8380 when the repo is empty8381 bundles the repo successfully8382Emails::CreateService8383 #execute8384 creates an email with valid attributes8385 creates an email with additional attributes8386 has the right user association8387 sends a notification to the user8388 does not send a notification when the email is not persisted8389 does not send a notification email when the email is the primary, because we are creating the user8390Gitlab::Import::MergeRequestHelpers8391 .create_merge_request_without_hooks8392 when merge request does not exist8393 returns a new object8394 does load all existing objects8395 when merge request does exist8396 returns an existing object8397 when project is deleted8398 returns an existing object8399Resolvers::ErrorTracking::SentryErrorCollectionResolver8400 is expected to have nullable GraphQL type SentryErrorCollection8401 #resolve8402 returns an error collection object8403 provides the service url8404 provides the project8405Gitlab::GithubImport::RefreshImportJidWorker8406 .perform_in_the_future8407 schedules a job in the future8408 #perform8409 when the project does not exist8410 does nothing8411 when the job is running8412 refreshes the import JID and reschedules itself8413 when the job is no longer running8414 returns8415 #find_import_state8416 returns a ProjectImportState8417 returns nil for a import state for which the import process failed8418 returns nil for a non-existing find_import_state8419Gitlab::Ci::Build::Artifacts::Path8420 #valid?8421 when path contains a zero character8422 is not valid8423 when path is not utf8 string8424 is not valid8425 when path is valid8426 is valid8427 #directory?8428 when path ends with a directory indicator8429 is a directory8430 when path does not end with a directory indicator8431 is not a directory8432 #name8433 returns a base name8434 #nodes8435 returns number of path nodes8436 #to_s8437 when path is valid8438 returns a string representation of a path8439 when path is invalid8440 raises an error8441Gitlab::Audit::CiRunnerTokenAuthor8442 .initialize8443 with runner_authentication_token8444 returns CiRunnerTokenAuthor with expected attributes8445 with runner_registration_token8446 returns CiRunnerTokenAuthor with expected attributes8447 with runner token missing8448 raises ArgumentError8449 #full_path8450 with instance registration token8451 returns correct url8452 with group registration token8453 returns correct url8454 with project registration token8455 returns correct url8456BulkImports::Common::Rest::GetBadgesQuery8457 .to_h8458 when entity is group8459 when source id is present8460 returns correct query using source id and page info8461 when source id is missing8462 returns correct query using source full path8463 when entity is project8464 when source id is present8465 returns correct query using source id and page info8466 when source id is missing8467 returns correct query using source full path8468Namespaces::ProjectNamespace8469 relationships8470 is expected to have one project inverse_of => project_namespace8471 is expected to eq #<Project id:1100 namespace980/project1056>>8472 validations8473 is expected not to validate that :owner cannot be empty/falsy8474 when deleting project namespace8475 also deletes associated project8476Gitlab::Middleware::Speedscope8477 #call8478 when flamegraph is not requested8479 behaves like returns original response8480 returns original response8481 when flamegraph requested8482 when user is not allowed8483 behaves like returns original response8484 returns original response8485 when user is allowed8486 returns a flamegraph8487 when the stackprof_mode parameter is set and valid8488 runs StackProf in the mode specified in the stackprof_mode parameter8489 when the stackprof_mode parameter is not set8490 runs StackProf in wall mode8491 when the stackprof_mode parameter is invalid8492 runs StackProf in wall mode8493 when the stackprof_mode parameter is set to object mode8494 runs StackProf with an interval of 1008495 when the stackprof_mode parameter is not set to object mode8496 runs StackProf with an interval of 10_1008497SnippetInputActionCollection8498 is expected to delegate #empty? to the #actions object8499 is expected to delegate #any? to the #actions object8500 is expected to delegate #[] to the #actions object8501 #to_commit_actions8502 translates all actions to commit actions8503 #valid?8504 returns true8505 when any of the actions is invalid8506 returns false8507 when allowed_actions param is passed8508 builds SnippetInputAction with that param8509Gitlab::MergeRequests::Mergeability::ResultsStore8510 #read8511 calls #retrieve_check on the interface8512 when #retrieve_check returns nil8513 returns nil8514 #write8515 calls #save_check on the interface8516Ci::TestFailureHistoryWorker8517 is labeled as idempotent8518 performs multiple times sequentially without raising an exception8519 tracks test failures8520 #perform8521 when pipeline exists8522 executes test failure history service8523 when pipeline does not exist8524 does not execute test failure history service8525SystemHooksService8526 #execute_hooks_for8527 model_name: :group_member, builder_class: Gitlab::HookData::GroupMemberBuilder8528 builds the data with the relevant builder class and then calls #execute_hooks with the obtained data8529 model_name: :group, builder_class: Gitlab::HookData::GroupBuilder8530 builds the data with the relevant builder class and then calls #execute_hooks with the obtained data8531 model_name: :project_member, builder_class: Gitlab::HookData::ProjectMemberBuilder8532 builds the data with the relevant builder class and then calls #execute_hooks with the obtained data8533 model_name: :user, builder_class: Gitlab::HookData::UserBuilder8534 builds the data with the relevant builder class and then calls #execute_hooks with the obtained data8535 model_name: :project, builder_class: Gitlab::HookData::ProjectBuilder8536 builds the data with the relevant builder class and then calls #execute_hooks with the obtained data8537 model_name: :key, builder_class: Gitlab::HookData::KeyBuilder8538 builds the data with the relevant builder class and then calls #execute_hooks with the obtained data8539 model_name: :deploy_key, builder_class: Gitlab::HookData::KeyBuilder8540 builds the data with the relevant builder class and then calls #execute_hooks with the obtained data8541 #execute_hooks8542 executes system hooks with the given data8543 executes FileHook with the given data8544Gitlab::Ci::ProcessableObjectHierarchy8545 # order random8546 #base_and_descendants8547 includes the base and its descendants8548 when with_depth is true8549 includes depth in the results8550 #base_and_ancestors8551 includes the base and its ancestors8552 can find ancestors upto a certain level8553 hierarchy_order option8554 for :asc8555 orders by child to ancestor8556 for :desc8557 orders by ancestor to child8558Tooling::Danger::SidekiqQueues8559 #changed_queue_files8560 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"]8561 is expected to contain exactly "app/workers/all_queues.yml" and "ee/app/workers/all_queues.yml"8562 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"]8563 is expected to contain exactly "app/workers/all_queues.yml" and "ee/app/workers/all_queues.yml"8564 modified_files: ["app/workers/all_queues.yml", "foo"], changed_queue_files: ["app/workers/all_queues.yml"]8565 is expected to contain exactly "app/workers/all_queues.yml"8566 modified_files: ["ee/app/workers/all_queues.yml", "foo"], changed_queue_files: ["ee/app/workers/all_queues.yml"]8567 is expected to contain exactly "ee/app/workers/all_queues.yml"8568 modified_files: ["foo"], changed_queue_files: []8569 is expected to contain exactly8570 modified_files: [], changed_queue_files: []8571 is expected to contain exactly8572 #added_queue_names8573 returns queue names added by this change8574 #changed_queue_names8575 returns names for queues whose attributes were changed8576 ignores removed queues8577Gitlab::Database::Migrations::LockRetryMixin8578 Gitlab::Database::Migrations::LockRetryMixin::ActiveRecordMigrationProxyLockRetries8579 #enable_lock_retries?8580 delegates to #migration8581 #migration_class8582 retrieves actual migration class from #migration8583 #migration_connection8584 retrieves actual migration connection from #migration8585 Gitlab::Database::Migrations::LockRetryMixin::ActiveRecordMigratorLockRetries8586 with transactions disabled8587 calls super method8588 with transactions enabled, but lock retries disabled8589 calls super method8590 with transactions enabled and lock retries enabled8591 calls super method8592 .patch!8593 patches MigrationProxy8594 patches Migrator8595RuboCop::Cop::Performance::ActiveRecordSubtransactionMethods8596 # order random8597 when the method uses a subtransaction8598 method: :safe_ensure_unique8599 registers an offense8600 method: :safe_find_or_create_by8601 registers an offense8602 method: :safe_find_or_create_by!8603 registers an offense8604 method: :with_fast_read_statement_timeout8605 registers an offense8606 method: :create_or_find_by8607 registers an offense8608 method: :create_or_find_by!8609 registers an offense8610Packages::Conan::CreatePackageService8611 #execute8612 valid params8613 creates a new package8614 behaves like assigns the package creator8615 assigns the package creator8616 behaves like assigns build to package8617 with build info8618 assigns the pipeline to the package8619 behaves like assigns status to package8620 with status param8621 assigns the status to the package8622 invalid params8623 fails8624Gitlab::Ci::Parsers::Sbom::Cyclonedx8625 when report JSON is invalid8626 handles errors and adds them to the report8627 when report uses an unsupported spec version8628 reports unsupported version as an error8629 when report does not conform to the CycloneDX schema8630 reports all errors returned by the validator8631 when cyclonedx report has no components8632 skips component processing8633 when report has components8634 adds each component, ignoring unused attributes8635 when a component has an invalid purl8636 adds an error to the report8637 when report has metadata properties8638 passes them to the properties parser8639Groups::DeployTokens::DestroyService8640 behaves like a deploy token deletion service8641 #execute8642 destroys a token record and it's associated DeployToken8643 invalid token id8644 raises an error8645RuboCop::Cop::Migration::BackgroundMigrationRecord8646 # order random8647 in migration8648 adds an offense if inheriting from ActiveRecord::Base8649 adds an offense if create dynamic model from ActiveRecord::Base8650 adds an offense if inheriting from ::ActiveRecord::Base8651 outside of a migration8652 does not register any offenses8653pages storage check8654 when local store does not exist yet8655 is expected to be truthy8656 when pages is not enabled8657 is expected to be truthy8658 when pages is enabled8659 local_storage_enabled: false, object_storage_enabled: false, raises_exception: true8660 validates pages storage configuration8661 local_storage_enabled: false, object_storage_enabled: true, raises_exception: false8662 validates pages storage configuration8663 local_storage_enabled: true, object_storage_enabled: false, raises_exception: false8664 validates pages storage configuration8665 local_storage_enabled: true, object_storage_enabled: true, raises_exception: false8666 validates pages storage configuration8667 local_storage_enabled: 1, object_storage_enabled: 0, raises_exception: false8668 validates pages storage configuration8669 local_storage_enabled: nil, object_storage_enabled: nil, raises_exception: true8670 validates pages storage configuration8671RuboCop::Cop::Performance::ARExistsAndPresentBlank8672 # order random8673 when it is haml file8674 the same object uses exists? and present?8675 flags it as an offense8676 the same object uses exists? and blank?8677 flags it as an offense8678 the same object uses exists?, blank? and present?8679 flags it as an offense8680 behaves like different object uses exists? and present?/blank?8681 does not flag it as an offense8682 behaves like different object uses exists? and present?/blank?8683 does not flag it as an offense8684 behaves like Only using one present?/blank? without exists?8685 does not flag it as an offense8686 behaves like Only using one present?/blank? without exists?8687 does not flag it as an offense8688 when using many present?/empty? without exists?8689 does not flag it as an offense8690 when just using exists? without present?/blank?8691 does not flag it as an offense8692 when it is not haml file8693 does not flag it as an offense8694notify/changed_milestone_email.html.haml8695 milestone without start and due dates8696 renders without date range8697 milestone with start and due dates8698 renders with date range8699Releases::CreateEvidenceService8700 creates evidence8701 saves evidence summary8702 saves sha8703Gitlab::GithubImport::ObjectImporter8704 #import8705 imports the object8706 logs info if the import state is canceled8707 logs error when the import fails8708 without github_identifiers defined8709 logs error when representation does not have a github_id8710 #increment_object_counter?8711 returns true8712Integrations::IssueTrackerData8713 behaves like Integrations::BaseDataFields8714 associations8715 is expected to belong to integration required: false8716 #activated?8717 with integration8718 with value set to false8719 is expected to eq false8720 with value set to true8721 is expected to eq true8722 without integration8723 is expected to eq false8724 #to_database_hash8725 does not include certain attributes8726 encrypted attributes8727 is expected to contain exactly :issues_url, :new_issue_url, and :project_url8728AuthorizedProjectsWorker8729 behaves like refreshes user's project authorizations8730 #perform8731 refreshes user's authorized projects8732 when the user is not found8733 does nothing8734 behaves like an idempotent worker8735 is labeled as idempotent8736 performs multiple times sequentially without raising an exception8737 does not change authorizations when run twice8738Gitlab::Graphql::Pagination::OffsetActiveRecordRelationConnection8739 subclasses from GraphQL::Relay::RelationConnection8740 behaves like a connection with collection methods8741 responds to to_a8742 responds to size8743 responds to map8744 responds to include?8745 responds to empty?8746 behaves like a redactable connection8747 no redactor set8748 contains the unwanted item8749 does not redact more than once8750 redactor is set8751 does not contain the unwanted item8752 does not redact more than once8753Resolvers::Metrics::DashboardResolver8754 #resolve8755 for environment8756 use ActiveModel class to find matching dashboard8757 without parent object8758 returns nil8759Gitlab::Ci::Reports::CodequalityReports8760 is expected to eq {}8761 #add_degradation8762 when there is a degradation8763 adds degradation to codequality report8764 when a required property is missing in the degradation8765 sets location as an error8766 #set_error_message8767 when there is an error8768 sets errors8769 #degradations_count8770 when there are many degradations8771 returns the number of degradations8772 #all_degradations8773 when there are many degradations8774 returns all degradations8775 #sort_degradations!8776 sorts degradations based on severity8777 with non-existence and uppercase severities8778 sorts unknown last8779MergeRequests::Mergeability::CheckOpenStatusService8780 #execute8781 when the merge request is open8782 returns a check result with status success8783 when the merge request is not open8784 returns a check result with status failed8785 #skip?8786 returns false8787 #cacheable?8788 returns false8789Gitlab::PhabricatorImport::ImportTasksWorker8790 #perform8791 calls the correct importer8792AlertManagement::HttpIntegrationPolicy8793 rules8794 is expected to be disallowed :admin_operations8795 when maintainer8796 is expected to be allowed :admin_operations8797IpAddressValidator8798 ip_address: "invalid IP", validity: false, errors: {:ip_address=>["must be a valid IPv4 or IPv6 address"]}8799 is expected to eq false8800 is expected to eq {:ip_address=>["must be a valid IPv4 or IPv6 address"]}8801 ip_address: "192.168.17.43", validity: true, errors: {}8802 is expected to eq true8803 is expected to eq {}8804 ip_address: "2001:0db8:85a3::8a2e:0370:7334", validity: true, errors: {}8805 is expected to eq true8806 is expected to eq {}8807 ip_address: nil, validity: true, errors: {}8808 is expected to eq true8809 is expected to eq {}8810 ip_address: "", validity: true, errors: {}8811 is expected to eq true8812 is expected to eq {}8813Projects::AllMergeRequestsCountService8814 behaves like a counter caching service8815 #count8816 caches the count8817 #refresh_cache8818 refreshes the cache8819 #delete_cache8820 removes the cache8821 #uncached_count8822 does not cache the count8823 #count8824 returns the number of all merge requests8825VulnerabilityFindingHelpers8826 #requires_manual_resolution?8827 returns false if the finding does not require manual resolution8828 returns true when the finding requires manual resolution8829BytesizeValidator8830 # order random8831 content: "short", validity: true, errors: {}8832 is expected to eq true8833 is expected to eq {}8834 content: "very long", validity: false, errors: {:content=>["is too long (9 Bytes). The maximum size is 7 Bytes."]}8835 is expected to eq false8836 is expected to eq {:content=>["is too long (9 Bytes). The maximum size is 7 Bytes."]}8837 content: "short😁", validity: false, errors: {:content=>["is too long (9 Bytes). The maximum size is 7 Bytes."]}8838 is expected to eq false8839 is expected to eq {:content=>["is too long (9 Bytes). The maximum size is 7 Bytes."]}8840 content: "short⇏", validity: false, errors: {:content=>["is too long (8 Bytes). The maximum size is 7 Bytes."]}8841 is expected to eq false8842 is expected to eq {:content=>["is too long (8 Bytes). The maximum size is 7 Bytes."]}884300_deprecations8844 warning: "ActiveModel::Errors#keys is deprecated and will be removed in Rails 6.2"8845 is expected to raise ActiveSupport::DeprecationException8846 warning: "Rendering actions with '.' in the name is deprecated:"8847 is expected to raise ActiveSupport::DeprecationException8848 warning: "default_hash is deprecated and will be removed from Rails 6.2"8849 is expected to raise ActiveSupport::DeprecationException8850Plan8851 #default?8852 when 'default'8853 is expected to be truthy8854 when 'free'8855 is expected to be truthy8856 #default8857 when default plan exists8858 returns default plan8859 when default plan does not exist8860 creates default plan8861 creates plan with correct attributes8862 when updating plan limits8863 is expected to be persisted8864 is expected not to be persisted8865 successfully updates the limits8866Gitlab::GithubImport::Importer::PullRequests::ReviewRequestImporter8867 # order random8868 imports merge request reviewers that were found8869Gitlab::Middleware::MemoryReport8870 #call8871 when the Rails environment is not development8872 behaves like returns original response8873 returns original response8874 does not call the MemoryProfiler8875 when the Rails environment is development8876 when memory report is not requested8877 behaves like returns original response8878 returns original response8879 does not call the MemoryProfiler8880 when memory report is requested8881 returns a memory report8882 when something goes wrong with creating the report8883 logs the error8884 returns the error8885CalendarHelper8886 #calendar_url_options8887 when signed in8888 includes the current_user's feed_token8889 when signed out8890 does not have a feed_token8891 when feed token disabled8892 does not have a feed_token8893Resolvers::AlertManagement::AlertStatusCountsResolver8894 #resolve8895 is expected to be a kind of Gitlab::AlertManagement::AlertStatusCounts8896 is expected to eq #<Project id:1122 namespace1005/project1082>>8897Gitlab::Graphql::Loaders::BatchModelLoader8898 #find8899 finds a model by id8900 only queries once per model8901 does not force values unnecessarily8902Gitlab::Config::Entry::Simplifiable8903 .strategy8904 defines entry strategies8905 setting strategy by a condition8906 when first strategy should be used8907 attemps to load a first strategy8908 when second strategy should be used8909 attemps to load a second strategy8910 when neither one is a valid strategy8911 instantiates an unknown strategy8912 when a unknown strategy class is not defined8913 raises an error when being initialized8914BitbucketServer::Collection8915 #current_page8916 returns 18917 #prev_page8918 returns nil8919 #next_page8920 returns 28921profiles/show8922 when the profile page is opened8923 displays the correct elements8924Onboarding::PipelineCreatedWorker#perform8925 # order random8926 behaves like does not record an onboarding progress action8927 is expected not to receive new(*(any args)) 0 times8928 behaves like records an onboarding progress action8929 is expected to receive execute({:action=>:pipeline_created}) 1 time8930Ci::PipelineConfig8931 is expected to belong to pipeline required: false8932 is expected to validate that :pipeline cannot be empty/falsy8933 is expected to validate that :content cannot be empty/falsy8934Gitlab::Memory::Watchdog::Configuration8935 # order random8936 #sleep_time_seconds8937 when sleep_time_seconds is not set8938 defaults to SLEEP_TIME_SECONDS8939 #monitors8940 when monitors are configured to be used8941 when two different monitor class are configured8942 when monitors are configured inline8943 calls each monitor and returns correct results8944 when monitors are configured in a block8945 calls each monitor and returns correct results8946 when monitors are configured with monitor name8947 calls each monitor and returns correct results8948 #event_reporter8949 when event reporter is not set8950 defaults to EventReporter8951 #handler8952 when handler is not set8953 defaults to NullHandler8954 #initialize8955 initialize monitors8956RuboCop::Cop::Migration::RemoveIndex8957 # order random8958 when outside of migration8959 registers no offense8960 when in migration8961 registers an offense when remove_index is used8962RuboCop::Cop::DestroyAll8963 # order random8964 flags the use of destroy_all when passing arguments8965 does not flag the use of delete_all8966 flags the use of destroy_all with a send receiver8967 flags the use of destroy_all with a local variable receiver8968 flags the use of destroy_all with a constant receiver8969IssuableLink8970 .inverse_link_type8971 returns the inverse type of link8972 .issuable_type8973 when opposite relation already exists8974 raises NotImplementedError when performing validations8975Gitlab::Auth::BlockedUserTracker8976 #log_blocked_user_activity!8977 when user is not blocked8978 does not log blocked user activity8979 when user is not blocked8980 logs blocked user activity8981Gitlab::GlobalId::Deprecations8982 .deprecated?8983 returns a boolean to signal if model name has a deprecation8984 .deprecation_for8985 returns the deprecation for the model if it exists8986 .deprecation_by8987 returns the deprecation by the model if it exists8988 .apply_to_graphql_name8989 returns the corresponding graphql_name of the GID for the new model8990 returns the same value if there is no deprecation8991Gitlab::Auth::Otp::Strategies::FortiTokenCloud8992 access token is created successfully8993 otp verification is successful8994 returns success8995 otp verification is not successful8996 returns error8997 access token creation fails8998 returns error8999 SSL Verification9000 with `Gitlab::HTTP`9001 does not use a `verify` argument,thereby always performing SSL verification while making API calls9002Gitlab::ConfigChecker::ExternalDatabaseChecker9003 #check9004 with a single database9005 when database meets minimum supported version9006 example at ./spec/lib/gitlab/config_checker/external_database_checker_spec.rb:30 (PENDING: Skipping because multiple databases are set up)9007 when database does not meet minimum supported version9008 reports deprecated database notice (PENDING: Skipping because multiple databases are set up)9009 with a multiple database9010 when both databases meets minimum supported version9011 is expected to be empty9012 when the one of the databases does not meet minimum supported version9013 reports deprecated database notice if the main database is using an old version9014 reports deprecated database notice if the ci database is using an old version9015 when both databases do not meet minimum supported version9016 reports deprecated database notice9017Stepable9018 stops after the first non success status9019 when all methods return success9020 calls all methods in order9021 merges variables returned by all steps9022 can modify results of previous steps9023 with multiple stepable classes9024 does not leak steps9025Gitlab::Webpack::GraphqlKnownOperations9026 .load9027 when file loader returns9028 returns memoized value9029 when file loader errors9030 returns empty array9031Banzai::Filter::FootnoteFilter9032 when footnotes exist9033 properly adds the necessary ids and classes9034 when GITLAB_TEST_FOOTNOTE_ID is set9035 uses the test footnote ID instead of a random number9036 when detecting footnotes9037 valid: true, markdown: "1. one[^1]\n[^1]: AbC"9038 detects valid footnotes9039 valid: true, markdown: "1. one[^abc]\n[^abc]: AbC"9040 detects valid footnotes9041 valid: false, markdown: "1. [one](#fnref-abc)"9042 detects valid footnotes9043 valid: false, markdown: "1. one[^1]\n[^abc]: AbC"9044 detects valid footnotes9045Gitlab::Graphql::Loaders::BatchLfsOidLoader9046 #find9047 batch-resolves LFS blob IDs9048API::Entities::Nuget::PackageMetadataCatalogEntry9049 is expected to eq {:@id=>"http://sandbox.com/json/package", :authors=>"Authors", :dependencyGroups=>[], :iconUrl=>"http...tUrl=>"http://sandbox.com/project", :summary=>"Summary", :tags=>"tag1 tag2 tag3", :version=>"1.2.3"}9050Gitlab::Kubernetes::Kubeconfig::Entry::Context9051 #to_h9052 is expected to eq {:context=>{:cluster=>"cluster", :user=>"user"}, :name=>"name"}9053 with a namespace9054 is expected to eq {:context=>{:cluster=>"cluster", :namespace=>"namespace", :user=>"user"}, :name=>"name"}9055Gitlab::SidekiqMiddleware::WorkerContext::Server9056 #call9057 applies a class context9058 doesn't fail for unknown workers9059 feature category9060 takes the feature category from the worker9061 when the worker is not owned9062 takes the feature category from the surrounding context9063CronValidator9064 validates valid crontab9065 validates invalid crontab9066 cron field is not whitelisted9067 raises an error9068Gitlab::EmptySearchResults9069 #objects9070 returns an empty array9071 #formatted_count9072 returns a zero9073 #highlight_map9074 returns an empty hash9075 #aggregations9076 returns an empty array9077PrometheusAlertEntity9078 when user can read prometheus alerts9079 exposes prometheus_alert attributes9080Types::Ci::Config::NeedType9081 is expected to eq "CiConfigNeed"9082 exposes the expected fields9083Gitlab::Kubernetes::TlsSecret9084 #generate9085 is expected to eq #<Kubeclient::Resource type="kubernetes.io/tls", metadata={:name=>"example-name", :namespace=>"example-namespace"}, data={:"tls.crt"=>"ZXhhbXBsZS1jZXJ0", :"tls.key"=>"ZXhhbXBsZS1rZXk="}>9086Types::Ci::RunnerUpgradeStatusEnum9087 is expected to eq "CiRunnerUpgradeStatus"9088 exposes all upgrade status values except not_processed9089 exposes all upgrade status values except enum-only values9090AnalyticsMergeRequestSerializer9091 when there is a single object provided9092 contains important elements of the merge request9093Gitlab::Kubernetes::Role9094 #generate9095 is expected to eq #<Kubeclient::Resource metadata={:name=>"example-name", :namespace=>"example-namespace"}, rules=[{:ap...>["hello.world"], :resources=>["oil", "diamonds", "coffee"], :verbs=>["say", "do", "walk", "run"]}]>9096Ci::DailyBuildGroupReportResultSerializer9097 #to_json9098 returns an array of group results9099Gitlab::ApplicationRateLimiter::IncrementPerAction9100 #increment9101 increments per call9102 sets time to live (TTL) for the key9103 #read9104 returns 0 when there is no data9105 returns the correct value9106Gitlab::WordDiff::LineProcessor9107 #extract9108 when line is a diff hunk9109 returns DiffHunk segment9110 when line has a newline delimiter9111 returns Newline segment9112 when line has only space9113 returns nil9114 when line has content9115 returns Chunk segment9116Gitlab::Middleware::HandleIpSpoofAttackError9117 passes through the response from a valid upstream9118 translates an ActionDispatch::IpSpoofAttackError to a 400 response9119 passes through the exception raised by an invalid upstream9120Types::IssuableSeverityEnum9121 is expected to eq "IssuableSeverity"9122 exposes all the existing issuable severity values9123Gitlab::Email::Message::InProductMarketing::Create9124 public methods9125 series: 09126 returns value for series9127 series: 19128 returns value for series9129 series: 29130 returns value for series9131Gitlab::SidekiqMiddleware::ExtraDoneLogMetadata9132 #call9133 merges Application#logging_extras in to job9134 does not raise when the worker does not respond to #done_log_extra_metadata9135Gitlab::SidekiqDeathHandler9136 .handler9137 when the job class has worker attributes9138 uses the attributes from the worker9139 when the job class does not have worker attributes9140 uses blank attributes9141Gitlab::Metrics::Dashboard::Defaults9142 is expected to be const defined :DEFAULT_PANEL_TYPE9143Mailer retries9144 sets retries for mailers to 39145SentryErrorPresenter9146 #frequency9147 returns an array of frequency structs9148 converts the times into UTC time objects9149 returns the correct counts9150 #project_id9151 returns a global ID of the correct type9152Types::ErrorTracking::SentryErrorStackTraceEntryType9153 is expected to eq "SentryErrorStackTraceEntry"9154 exposes the expected fields9155Gitlab::Git::GitmodulesParser9156 parses a .gitmodules file correctly9157Types::JiraUserType9158 is expected to eq "JiraUser"9159 has the expected fields9160Gitlab::TcpChecker9161 #check9162 can connect to an open port9163 fails to connect to a closed port9164Gitlab::GrapeLogging::Loggers::PerfLogger9165 .parameters9166 when no performance data present9167 is expected not to include {:redis_calls => 1}9168 when performance data present9169 is expected to include {:redis_calls => 1}9170Types::Tree::TreeEntryType9171 is expected to eq "TreeEntry"9172 is expected to have graphql fields :id, :sha, :name, :type, :path, :flat_path, :web_url, and :web_path9173NamespaceBasicEntity9174 #as_json9175 includes required fields9176API::Validations::Validators::IntegerNoneAny9177 valid parameters9178 does not raise a validation error9179 invalid parameters9180 raises a validation error9181GoogleCloud::FetchGoogleIpListWorker9182 # order random9183 #perform9184 returns success9185#<Class:0x00007f026777d7e0>9186 has the expected fields9187PolicyActor9188 implements all the methods from user9189Bitbucket::Representation::User9190 #username9191 returns correct value9192Knapsack report was generated. Preview:9193{9194 "spec/models/user_spec.rb": 270.4395067610003,9195 "spec/lib/gitlab/auth_spec.rb": 93.5886017720004,9196 "spec/models/ci/runner_spec.rb": 32.632917268999336,9197 "spec/services/projects/create_service_spec.rb": 48.59567100699951,9198 "spec/services/system_notes/issuables_service_spec.rb": 34.06806887399944,9199 "spec/helpers/integrations_helper_spec.rb": 13.879058891000568,9200 "spec/views/search/_results.html.haml_spec.rb": 32.0682815780001,9201 "spec/lib/banzai/filter/references/milestone_reference_filter_spec.rb": 14.824969536000026,9202 "spec/services/repositories/changelog_service_spec.rb": 26.76740717299981,9203 "spec/lib/gitlab/import_export/importer_spec.rb": 27.847618400999636,9204 "spec/lib/gitlab/pagination/offset_pagination_spec.rb": 22.292827478000618,9205 "spec/models/packages/debian/file_metadatum_spec.rb": 7.054927500999838,9206 "spec/models/concerns/awardable_spec.rb": 18.84679950699956,9207 "spec/lib/gitlab/version_info_spec.rb": 6.058396721999998,9208 "spec/services/verify_pages_domain_service_spec.rb": 7.978031388999625,9209 "spec/presenters/ci/pipeline_presenter_spec.rb": 11.551619364000544,9210 "spec/metrics_server/metrics_server_spec.rb": 10.862485358000413,9211 "spec/models/commit_collection_spec.rb": 15.008389493999857,9212 "spec/lib/gitlab/cycle_analytics/permissions_spec.rb": 12.247620180000013,9213 "spec/services/suggestions/create_service_spec.rb": 11.633005374999811,9214 "spec/workers/packages/go/sync_packages_worker_spec.rb": 7.714694261000659,9215 "spec/helpers/diff_helper_spec.rb": 6.285960745000011,9216 "spec/helpers/auto_devops_helper_spec.rb": 8.380347710000024,9217 "spec/finders/alert_management/alerts_finder_spec.rb": 8.030965713000114,9218 "spec/lib/gitlab/search/abuse_detection_spec.rb": 4.325936532999549,9219 "spec/lib/api/entities/user_spec.rb": 9.67328167300002,9220 "spec/lib/gitlab/cache/ci/project_pipeline_status_spec.rb": 8.82562194899947,9221 "spec/lib/gitlab/database/rename_reserved_paths_migration/v1_spec.rb": 11.780004528999598,9222 "spec/models/ci/daily_build_group_report_result_spec.rb": 10.77301510899997,9223 "spec/lib/gitlab/database/migration_helpers/v2_spec.rb": 3.3551202019998527,9224 "spec/services/clusters/agents/refresh_authorization_service_spec.rb": 6.859544365000147,9225 "spec/lib/gitlab/encoding_helper_spec.rb": 2.2041985719997683,9226 "spec/graphql/resolvers/work_items_resolver_spec.rb": 4.705722186999992,9227 "spec/lib/gitlab/zentao/client_spec.rb": 7.3863374109996585,9228 "spec/services/projects/hashed_storage/rollback_attachments_service_spec.rb": 7.224251890999767,9229 "spec/lib/gitlab/ci/templates/AWS/deploy_ecs_gitlab_ci_yaml_spec.rb": 8.358304372999555,9230 "spec/lib/gitlab/import_export/snippet_repo_restorer_spec.rb": 6.799078742999882,9231 "spec/lib/gitlab/ci/pipeline/chain/ensure_environments_spec.rb": 7.431098916000337,9232 "spec/support_specs/helpers/graphql_helpers_spec.rb": 1.807526470999619,9233 "spec/policies/design_management/design_policy_spec.rb": 3.7450251249993016,9234 "spec/services/environments/auto_stop_service_spec.rb": 5.968373114000315,9235 "spec/lib/gitlab/diff/file_collection/compare_spec.rb": 5.802843274999759,9236 "spec/lib/gitlab/ci/config/entry/root_spec.rb": 1.4209354070007976,9237 "spec/serializers/diff_file_base_entity_spec.rb": 4.893690884000534,9238 "spec/models/ci/persistent_ref_spec.rb": 5.5792513609994785,9239 "spec/services/google_cloud/generate_pipeline_service_spec.rb": 5.718185233999975,9240 "spec/lib/gitlab/sidekiq_config/worker_router_spec.rb": 1.434189225999944,9241 "spec/lib/gitlab/ci/status/build/waiting_for_approval_spec.rb": 3.71457492799982,9242 "spec/models/hooks/web_hook_log_spec.rb": 3.384727478000059,9243 "spec/lib/gitlab/diff/suggestions_parser_spec.rb": 5.839432028999909,9244 "spec/services/packages/debian/process_package_file_service_spec.rb": 5.593734869999935,9245 "spec/finders/crm/organizations_finder_spec.rb": 3.341621262999979,9246 "spec/workers/delete_container_repository_worker_spec.rb": 3.17145984400031,9247 "spec/services/metrics/dashboard/pod_dashboard_service_spec.rb": 2.0643863989998863,9248 "spec/policies/protected_branch_policy_spec.rb": 4.514272419999543,9249 "spec/lib/gitlab/i18n/translation_entry_spec.rb": 1.257639028000085,9250 "spec/lib/gitlab/import_export/project/sample/relation_factory_spec.rb": 4.797044296999957,9251 "spec/uploaders/file_mover_spec.rb": 3.5557582980000007,9252 "spec/finders/packages/maven/package_finder_spec.rb": 4.994176311999581,9253 "spec/lib/gitlab/github_import/importer/single_endpoint_issue_events_importer_spec.rb": 1.9268334759999561,9254 "spec/models/users_statistics_spec.rb": 3.281771380000464,9255 "spec/services/todos/destroy/project_private_service_spec.rb": 5.212330096000187,9256 "spec/models/product_analytics_event_spec.rb": 3.6457732660001057,9257 "spec/finders/resource_state_event_finder_spec.rb": 3.3296021950000068,9258 "spec/uploaders/object_storage/cdn/google_cdn_spec.rb": 1.3519350759997906,9259 "spec/lib/kramdown/parser/atlassian_document_format_spec.rb": 1.1436548710007628,9260 "spec/lib/gitlab/gl_repository/identifier_spec.rb": 1.1610734479991152,9261 "spec/lib/gitlab/ci/project_config_spec.rb": 4.13816630600013,9262 "spec/lib/gitlab/metrics/system_spec.rb": 1.1243261440004062,9263 "spec/models/commit_signatures/x509_commit_signature_spec.rb": 2.177267484999902,9264 "spec/models/chat_name_spec.rb": 1.988336767999499,9265 "spec/lib/gitlab/service_desk_email_spec.rb": 0.8370072879997679,9266 "spec/views/projects/merge_requests/edit.html.haml_spec.rb": 4.63295869600006,9267 "spec/lib/gitlab/ci/config/entry/port_spec.rb": 0.9655653629997687,9268 "spec/finders/clusters/agents_finder_spec.rb": 4.1777742519998355,9269 "spec/lib/gitlab/ci/config/entry/artifacts_spec.rb": 0.952455493999878,9270 "spec/helpers/ci/status_helper_spec.rb": 0.9489439949993539,9271 "spec/lib/banzai/pipeline/description_pipeline_spec.rb": 1.2130708430004233,9272 "spec/graphql/resolvers/terraform/states_resolver_spec.rb": 1.5384718519999296,9273 "spec/helpers/notifications_helper_spec.rb": 1.655229758999667,9274 "spec/models/concerns/expirable_spec.rb": 1.8694132020000325,9275 "spec/services/milestones/close_service_spec.rb": 3.0573601670002972,9276 "spec/models/deployment_cluster_spec.rb": 4.545249366999997,9277 "spec/services/ci/create_pipeline_service/parameter_content_spec.rb": 2.31318556899987,9278 "spec/lib/banzai/filter/image_link_filter_spec.rb": 0.8951731209999707,9279 "spec/services/groups/deploy_tokens/create_service_spec.rb": 2.313999347999925,9280 "spec/tooling/danger/product_intelligence_spec.rb": 0.7510419089994684,9281 "spec/lib/gitlab/harbor/client_spec.rb": 1.3619935340002485,9282 "spec/lib/gitlab/encrypted_configuration_spec.rb": 1.6074352840005304,9283 "spec/graphql/mutations/release_asset_links/delete_spec.rb": 1.906318217000262,9284 "spec/lib/gitlab/background_migration_spec.rb": 0.6838023069994961,9285 "spec/services/design_management/generate_image_versions_service_spec.rb": 1.8668271730002743,9286 "spec/models/merge_request/approval_removal_settings_spec.rb": 1.8829189409998435,9287 "spec/workers/ci/external_pull_requests/create_pipeline_worker_spec.rb": 3.586520553999435,9288 "spec/services/projects/group_links/destroy_service_spec.rb": 2.7195164000004297,9289 "spec/models/packages/debian/publication_spec.rb": 1.0935898480001924,9290 "spec/models/concerns/loaded_in_group_list_spec.rb": 2.778446081000766,9291 "spec/tasks/gitlab/dependency_proxy/migrate_rake_spec.rb": 3.0192265830000906,9292 "spec/services/packages/maven/create_package_service_spec.rb": 2.4678716189991974,9293 "spec/lib/gitlab/otp_key_rotator_spec.rb": 2.7926587109996035,9294 "spec/services/issuable/process_assignees_spec.rb": 1.0178406360000736,9295 "spec/models/blob_viewer/changelog_spec.rb": 1.6755208360000324,9296 "spec/models/packages/go/module_version_spec.rb": 1.8358164559995203,9297 "spec/lib/gitlab/database/count/reltuples_count_strategy_spec.rb": 2.1924003929998435,9298 "spec/lib/gitlab/marker_range_spec.rb": 0.7202503130001787,9299 "spec/services/ci/pipelines/hook_service_spec.rb": 1.3588099239996154,9300 "spec/graphql/resolvers/users/groups_resolver_spec.rb": 1.4833091600003172,9301 "spec/workers/releases/manage_evidence_worker_spec.rb": 2.283859491999465,9302 "spec/workers/destroy_pages_deployments_worker_spec.rb": 2.4381876340003146,9303 "spec/lib/gitlab/ci/pipeline/duration_spec.rb": 1.5944092559993805,9304 "spec/models/merge_request_context_commit_spec.rb": 2.1708786659992256,9305 "spec/lib/bulk_imports/groups/pipelines/group_attributes_pipeline_spec.rb": 0.7427234689994293,9306 "spec/lib/gitlab/ci/status/manual_spec.rb": 0.49657019000005675,9307 "spec/presenters/packages/pypi/simple_package_versions_presenter_spec.rb": 1.116017624000051,9308 "spec/services/cohorts_service_spec.rb": 1.4583133730002373,9309 "spec/lib/gitlab/git/user_spec.rb": 0.6656348090000392,9310 "spec/lib/gitlab/database/migrations/test_background_runner_spec.rb": 1.0212357059999704,9311 "spec/lib/gitlab/import_export/wiki_repo_saver_spec.rb": 2.0114075250003225,9312 "spec/services/emails/create_service_spec.rb": 0.7607196469998598,9313 "spec/lib/gitlab/import/merge_request_helpers_spec.rb": 2.2669223240000065,9314 "spec/graphql/resolvers/error_tracking/sentry_error_collection_resolver_spec.rb": 0.8487418269996851,9315 "spec/workers/gitlab/github_import/refresh_import_jid_worker_spec.rb": 1.8378666059998068,9316 "spec/lib/gitlab/ci/build/artifacts/path_spec.rb": 0.535055844999988,9317 "spec/lib/gitlab/audit/ci_runner_token_author_spec.rb": 0.8320343079994927,9318 "spec/lib/bulk_imports/common/rest/get_badges_query_spec.rb": 0.9624081239999214,9319 "spec/models/namespaces/project_namespace_spec.rb": 1.1904237449998618,9320 "spec/lib/gitlab/middleware/speedscope_spec.rb": 1.1848594760003834,9321 "spec/models/snippet_input_action_collection_spec.rb": 0.7844637250000233,9322 "spec/lib/gitlab/merge_requests/mergeability/results_store_spec.rb": 0.3485764779998135,9323 "spec/workers/ci/test_failure_history_worker_spec.rb": 1.792859072000283,9324 "spec/services/system_hooks_service_spec.rb": 1.3253450290003457,9325 "spec/lib/gitlab/ci/processable_object_hierarchy_spec.rb": 1.3534273549994396,9326 "spec/tooling/danger/sidekiq_queues_spec.rb": 0.5698713009996936,9327 "spec/lib/gitlab/database/migrations/lock_retry_mixin_spec.rb": 0.610030566000205,9328 "spec/rubocop/cop/performance/active_record_subtransaction_methods_spec.rb": 0.8570337649998692,9329 "spec/services/packages/conan/create_package_service_spec.rb": 1.4965792679995502,9330 "spec/lib/gitlab/ci/parsers/sbom/cyclonedx_spec.rb": 0.4591916939998555,9331 "spec/services/groups/deploy_tokens/destroy_service_spec.rb": 0.6770720880003864,9332 "spec/rubocop/cop/migration/background_migration_record_spec.rb": 0.4690911329998926,9333 "spec/initializers/pages_storage_check_spec.rb": 0.8812456929999826,9334 "spec/rubocop/cop/performance/ar_exists_and_present_blank_spec.rb": 0.6541225599994505,9335 "spec/views/notify/changed_milestone_email.html.haml_spec.rb": 1.1028655749996688,9336 "spec/services/releases/create_evidence_service_spec.rb": 1.01195555600043,9337 "spec/workers/concerns/gitlab/github_import/object_importer_spec.rb": 0.8970978110000942,9338 "spec/models/integrations/issue_tracker_data_spec.rb": 0.5806248590006362,9339 "spec/workers/authorized_projects_worker_spec.rb": 1.408642998000687,9340 "spec/lib/gitlab/graphql/pagination/offset_active_record_relation_connection_spec.rb": 0.73461073100043,9341 "spec/graphql/resolvers/metrics/dashboard_resolver_spec.rb": 1.2333374290001302,9342 "spec/lib/gitlab/ci/reports/codequality_reports_spec.rb": 0.48490414099978807,9343 "spec/services/merge_requests/mergeability/check_open_status_service_spec.rb": 0.6057123959999444,9344 "spec/workers/gitlab/phabricator_import/import_tasks_worker_spec.rb": 0.6938370650004799,9345 "spec/policies/alert_management/http_integration_policy_spec.rb": 1.4842401200003223,9346 "spec/validators/ip_address_validator_spec.rb": 0.5330365250001705,9347 "spec/services/projects/all_merge_requests_count_service_spec.rb": 1.083249137999701,9348 "spec/models/concerns/vulnerability_finding_helpers_spec.rb": 0.4027370309995604,9349 "spec/validators/bytesize_validator_spec.rb": 0.6031840969999394,9350 "spec/initializers/00_deprecations_spec.rb": 0.5243985659999453,9351 "spec/models/plan_spec.rb": 0.6445771210001112,9352 "spec/lib/gitlab/github_import/importer/pull_requests/review_request_importer_spec.rb": 1.4038144189999002,9353 "spec/lib/gitlab/middleware/memory_report_spec.rb": 0.5005050489999121,9354 "spec/helpers/calendar_helper_spec.rb": 0.6851434759992117,9355 "spec/graphql/resolvers/alert_management/alert_status_counts_resolver_spec.rb": 0.5909343379998973,9356 "spec/lib/gitlab/graphql/loaders/batch_model_loader_spec.rb": 0.7210787620006158,9357 "spec/lib/gitlab/config/entry/simplifiable_spec.rb": 0.5435051440008465,9358 "spec/lib/bitbucket_server/collection_spec.rb": 0.5527111629999126,9359 "spec/views/profiles/show.html.haml_spec.rb": 0.7441346890000204,9360 "spec/workers/onboarding/pipeline_created_worker_spec.rb": 1.0236254459996417,9361 "spec/models/ci/pipeline_config_spec.rb": 0.6835687769998913,9362 "spec/lib/gitlab/memory/watchdog/configuration_spec.rb": 0.692780665999635,9363 "spec/rubocop/cop/migration/remove_index_spec.rb": 0.6886767270007113,9364 "spec/rubocop/cop/destroy_all_spec.rb": 0.447355276000053,9365 "spec/models/concerns/issuable_link_spec.rb": 0.9758557709992601,9366 "spec/lib/gitlab/auth/blocked_user_tracker_spec.rb": 0.5756521299999804,9367 "spec/lib/gitlab/global_id/deprecations_spec.rb": 0.545048283000142,9368 "spec/lib/gitlab/auth/otp/strategies/forti_token_cloud_spec.rb": 1.051583861999461,9369 "spec/lib/gitlab/config_checker/external_database_checker_spec.rb": 0.7714120459995684,9370 "spec/models/concerns/stepable_spec.rb": 0.5604954009995708,9371 "spec/lib/gitlab/webpack/graphql_known_operations_spec.rb": 0.45377578500028903,9372 "spec/lib/banzai/filter/footnote_filter_spec.rb": 0.6252502639999875,9373 "spec/lib/gitlab/graphql/loaders/batch_lfs_oid_loader_spec.rb": 0.862717904999954,9374 "spec/lib/api/entities/nuget/package_metadata_catalog_entry_spec.rb": 0.35801774700030364,9375 "spec/lib/gitlab/kubernetes/kubeconfig/entry/context_spec.rb": 0.749927179000224,9376 "spec/lib/gitlab/sidekiq_middleware/worker_context/server_spec.rb": 0.5556066219996865,9377 "spec/validators/cron_validator_spec.rb": 0.7579801470001257,9378 "spec/lib/gitlab/empty_search_results_spec.rb": 0.43101280800055974,9379 "spec/serializers/prometheus_alert_entity_spec.rb": 0.9574179330002153,9380 "spec/graphql/types/ci/config/need_type_spec.rb": 0.43840431700027693,9381 "spec/lib/gitlab/kubernetes/tls_secret_spec.rb": 0.3832418130004953,9382 "spec/graphql/types/ci/runner_upgrade_status_enum_spec.rb": 0.3613004959997852,9383 "spec/serializers/analytics_merge_request_serializer_spec.rb": 0.9916267600001447,9384 "spec/lib/gitlab/kubernetes/role_spec.rb": 0.36408139499963,9385 "spec/serializers/ci/daily_build_group_report_result_serializer_spec.rb": 0.7344327809996685,9386 "spec/lib/gitlab/application_rate_limiter/increment_per_action_spec.rb": 0.5804745489995184,9387 "spec/lib/gitlab/word_diff/line_processor_spec.rb": 0.5414924939996126,9388 "spec/lib/gitlab/middleware/handle_ip_spoof_attack_error_spec.rb": 0.5172742269996888,9389 "spec/graphql/types/issuable_severity_enum_spec.rb": 0.3659399160005705,9390 "spec/lib/gitlab/email/message/in_product_marketing/create_spec.rb": 0.3914717819998259,9391 "spec/lib/gitlab/sidekiq_middleware/extra_done_log_metadata_spec.rb": 0.40304755099987233,9392 "spec/lib/gitlab/sidekiq_death_handler_spec.rb": 0.5041120989999399,9393 "spec/lib/gitlab/metrics/dashboard/defaults_spec.rb": 0.3699406639998415,9394 "spec/initializers/mailer_retries_spec.rb": 0.49780344999999215,9395 "spec/presenters/sentry_error_presenter_spec.rb": 0.3798261629999615,9396 "spec/graphql/types/error_tracking/sentry_error_stack_trace_entry_type_spec.rb": 0.49974524000026577,9397 "spec/lib/gitlab/git/gitmodules_parser_spec.rb": 0.3123455019995163,9398 "spec/graphql/types/jira_user_type_spec.rb": 0.4782281919997331,9399 "spec/lib/gitlab/tcp_checker_spec.rb": 0.4733819829998538,9400 "spec/lib/gitlab/grape_logging/loggers/perf_logger_spec.rb": 0.39796682099949976,9401 "spec/graphql/types/tree/tree_entry_type_spec.rb": 0.42722283900002367,9402 "spec/serializers/namespace_basic_entity_spec.rb": 0.4207397789996321,9403 "spec/lib/api/validations/validators/integer_none_any_spec.rb": 0.30236341299951164,9404 "spec/workers/google_cloud/fetch_google_ip_list_worker_spec.rb": 0.30827794300057576,9405 "spec/graphql/types/countable_connection_type_spec.rb": 0.3669623149999097,9406 "spec/policies/concerns/policy_actor_spec.rb": 0.3935116320008092,9407 "spec/lib/bitbucket/representation/user_spec.rb": 0.73080317099993419408}9409Knapsack global time execution for tests: 18m 37s9410Pending: (Failures listed here are expected and do not affect your suite's status)9411 1) User with uploads behaves like model with uploads .destroy with not mounted uploads with local files deletes any FileUploader uploads which are not mounted9412 # No reason given9413 # ./spec/support/shared_examples/models/with_uploads_shared_examples.rb:239414 2) User with uploads behaves like model with uploads .destroy with not mounted uploads with local files deletes local files9415 # No reason given9416 # ./spec/support/shared_examples/models/with_uploads_shared_examples.rb:279417 3) User with uploads behaves like model with uploads .destroy with not mounted uploads with remote files deletes any FileUploader uploads which are not mounted9418 # No reason given9419 # ./spec/support/shared_examples/models/with_uploads_shared_examples.rb:379420 4) User with uploads behaves like model with uploads .destroy with not mounted uploads with remote files deletes remote files9421 # No reason given9422 # ./spec/support/shared_examples/models/with_uploads_shared_examples.rb:419423 5) Gitlab::GlRepository::Identifier project repository https://gitlab.com/gitlab-org/gitlab/-/issues/2191929424 # No reason given9425 Failure/Error: return super unless match_data = method_name.match(HELPER_METHOD_PATTERN)9426 `it_behaves_like` is not available from within an example (e.g. an `it` block) or from constructs that run in the scope of an example (e.g. `before`, `let`, etc). It is only available on an example group (e.g. a `describe` or `context` block).9427 # ./spec/support/helpers/next_found_instance_of.rb:8:in `method_missing'9428 # ./spec/lib/gitlab/gl_repository/identifier_spec.rb:19:in `block (3 levels) in <top (required)>'9429 # ./spec/spec_helper.rb:413:in `block (3 levels) in <top (required)>'9430 # ./spec/support/sidekiq_middleware.rb:18:in `with_sidekiq_server_middleware'9431 # ./spec/spec_helper.rb:405:in `block (2 levels) in <top (required)>'9432 # ./spec/spec_helper.rb:401:in `block (3 levels) in <top (required)>'9433 # ./lib/gitlab/application_context.rb:59:in `with_raw_context'9434 # ./spec/spec_helper.rb:401:in `block (2 levels) in <top (required)>'9435 # ./spec/spec_helper.rb:241:in `block (2 levels) in <top (required)>'9436 # ./spec/support/system_exit_detected.rb:7:in `block (2 levels) in <top (required)>'9437 # ./spec/support/flaky_tests.rb:27:in `block (2 levels) in <top (required)>'9438 # ./spec/support/database/prevent_cross_joins.rb:106:in `block (3 levels) in <top (required)>'9439 # ./spec/support/database/prevent_cross_joins.rb:60:in `with_cross_joins_prevented'9440 # ./spec/support/database/prevent_cross_joins.rb:106:in `block (2 levels) in <top (required)>'9441 6) Gitlab::Database::Count::ReltuplesCountStrategy#count when reltuples is up to date uses statistics to do the count9442 # around hook at ./spec/support/flaky_tests.rb:21 did not execute the example9443 # ./spec/lib/gitlab/database/count/reltuples_count_strategy_spec.rb:229444 7) Gitlab::ConfigChecker::ExternalDatabaseChecker#check with a single database when database meets minimum supported version 9445 # Skipping because multiple databases are set up9446 # ./spec/lib/gitlab/config_checker/external_database_checker_spec.rb:309447 8) Gitlab::ConfigChecker::ExternalDatabaseChecker#check with a single database when database does not meet minimum supported version reports deprecated database notice9448 # Skipping because multiple databases are set up9449 # ./spec/lib/gitlab/config_checker/external_database_checker_spec.rb:389450Finished in 18 minutes 41 seconds (files took 1 minute 9.85 seconds to load)94514150 examples, 0 failures, 8 pending9452Randomized with seed 509739453[TEST PROF INFO] Time spent in factories: 09:52.237 (51.24% of total time)9454RSpec exited with 0.9455No examples to retry, congrats!9457Not uploading cache ruby-gems-debian-bullseye-ruby-2.7-16 due to policy9458Not uploading cache gitaly-ruby-gems-debian-bullseye-ruby-2.7-16 due to policy9460Uploading artifacts...9461coverage/: found 5 matching files and directories 9462crystalball/: found 2 matching files and directories 9463WARNING: deprecations/: no matching files. Ensure that the artifact path is relative to the working directory 9464knapsack/: found 3 matching files and directories 9465WARNING: query_recorder/: no matching files. Ensure that the artifact path is relative to the working directory 9466rspec/: found 12 matching files and directories 9467WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory 9468log/*.log: found 19 matching files and directories 9469WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/3441843231/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com9470WARNING: Retrying... context=artifacts-uploader error=request redirected9471Uploading artifacts as "archive" to coordinator... 201 Created id=3441843231 responseStatus=201 Created token=gRWfDMvr9472Uploading artifacts...9473rspec/junit_rspec.xml: found 1 matching files and directories 9474WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/3441843231/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com9475WARNING: Retrying... context=artifacts-uploader error=request redirected9476Uploading artifacts as "junit" to coordinator... 201 Created id=3441843231 responseStatus=201 Created token=gRWfDMvr9478Job succeeded