rspec unit pg12 5/28
Passed Started
by
@stanhu

Stan Hu
1Running with gitlab-runner 15.6.0~beta.186.ga889181a (a889181a)2 on blue-3.private.runners-manager.gitlab.com/gitlab.com/gitlab-org 6io2xoDD3 feature flags: FF_USE_FASTZIP:true, FF_USE_IMPROVED_URL_MASKING:true6Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.18-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-103-yarn-1.22-graphicsmagick-1.3.36 ...7Starting service postgres:12 ...8Pulling docker image postgres:12 ...9Using docker image sha256:c5abf812eff57d99cd4ae9b4d688261207b59905c5d0ca50c5e57f75669dbf10 for postgres:12 with digest postgres@sha256:a66060c3beab11e6f8eac5581c28df727539653a3c11e860847b14149e678d3e ...10Starting service redis:6.0-alpine ...11Pulling docker image redis:6.0-alpine ...12Using docker image sha256:83c577984741ab5b2e78640e0524852998d539ea3961e6d56680f336371f5c83 for redis:6.0-alpine with digest redis@sha256:459e91c5fe54134da1601ef85a4d9bc40c953862737fdfbe8f3c2b2a3eb6b20b ...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-103-yarn-1.22-graphicsmagick-1.3.36 ...16Using docker image sha256:5c5404ecc69273636c3ef49645be715ef30ea99e51ad146a2efbeac2a1875f9c 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-103-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:b032fe79dc0bf3ebfaeb610c82eacc500fbd0ec6e01889444011cf5a72b4135d ...18Running on runner-6io2xodd-project-278964-concurrent-0 via runner-6io2xodd-private-1668125539-8e56391d...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: 134695, done. 25remote: Counting objects: 100% (134695/134695), done. 26remote: Compressing objects: 100% (87197/87197), done. 27remote: Total 134695 (delta 60835), reused 93449 (delta 42513), pack-reused 0 28Receiving objects: 100% (134695/134695), 116.52 MiB | 29.56 MiB/s, done.29Resolving deltas: 100% (60835/60835), done.31 * [new ref] refs/pipelines/691761438 -> refs/pipelines/69176143832 * [new branch] master -> origin/master33Checking out 0a62f4a6 as master...34Skipping Git submodules setup35$ git remote set-url origin "${CI_REPOSITORY_URL}"37Checking cache for ruby-gems-debian-bullseye-ruby-2.7-16...38cache.zip is up to date 39Successfully extracted cache40Checking cache for gitaly-ruby-gems-debian-bullseye-ruby-2.7-16...41Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/gitaly-ruby-gems-debian-bullseye-ruby-2.7-16 42Successfully extracted cache44Downloading artifacts for compile-test-assets (3307837569)...45Downloading artifacts from coordinator... ok id=3307837569 responseStatus=200 OK token=QpkAjzsC46Downloading artifacts for detect-tests (3307837577)...47Downloading artifacts from coordinator... ok id=3307837577 responseStatus=200 OK token=QpkAjzsC48Downloading artifacts for retrieve-tests-metadata (3307837579)...49Downloading artifacts from coordinator... ok id=3307837579 responseStatus=200 OK token=QpkAjzsC50Downloading artifacts for setup-test-env (3307837573)...51Downloading artifacts from coordinator... ok id=3307837573 responseStatus=200 OK token=QpkAjzsC53Using docker image sha256:5c5404ecc69273636c3ef49645be715ef30ea99e51ad146a2efbeac2a1875f9c 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-103-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:b032fe79dc0bf3ebfaeb610c82eacc500fbd0ec6e01889444011cf5a72b4135d ...54$ echo $FOSS_ONLY55$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb56$ export GOPATH=$CI_PROJECT_DIR/.go57$ mkdir -p $GOPATH58$ source scripts/utils.sh59$ source scripts/prepare_build.sh688Using decomposed database config (config/database.yml.decomposed-postgresql)689$ setup_db_user_only690CREATE ROLE691GRANT692==> 'setup_db_user_only' succeeded in 0 seconds.693$ bundle exec rake db:drop db:create db:schema:load db:migrate694Dropped database 'gitlabhq_test'695Dropped database 'gitlabhq_test_ci'696Dropped database 'gitlabhq_geo_test'697Created database 'gitlabhq_test'698Created database 'gitlabhq_test_ci'699Created database 'gitlabhq_geo_test'700==> 'bundle exec rake db:drop db:create db:schema:load db:migrate' succeeded in 40 seconds.701$ setup_db_praefect702SELECT pg_catalog.set_config('search_path', '', false);703CREATE DATABASE praefect_test ENCODING 'UTF8';704==> 'setup_db_praefect' succeeded in 0 seconds.705$ source ./scripts/rspec_helpers.sh706$ run_timed_command "gem install knapsack --no-document"707$ gem install knapsack --no-document708Successfully installed knapsack-4.0.07091 gem installed710==> 'gem install knapsack --no-document' succeeded in 1 seconds.711$ echo -e "\e[0Ksection_start:`date +%s`:gitaly-test-spawn[collapsed=true]\r\e[0KStarting Gitaly"825$ rspec_paralellized_job "--tag ~quarantine --tag ~level:migration"826SKIP_FLAKY_TESTS_AUTOMATICALLY: true827RETRY_FAILED_TESTS_IN_NEW_PROCESS: true828KNAPSACK_GENERATE_REPORT: true829FLAKY_RSPEC_GENERATE_REPORT: true830KNAPSACK_TEST_FILE_PATTERN: spec/{bin,channels,config,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.rb831KNAPSACK_LOG_LEVEL: debug832KNAPSACK_REPORT_PATH: knapsack/rspec_unit_pg12_5_28_report.json833FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json834FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg12_5_28_report.json835NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg12_5_28_report.json836SKIPPED_FLAKY_TESTS_REPORT_PATH: rspec/flaky/skipped_flaky_tests_rspec_unit_pg12_5_28_report.txt837RETRIED_TESTS_REPORT_PATH: rspec/flaky/retried_tests_rspec_unit_pg12_5_28_report.txt838CRYSTALBALL: 839Knapsack node specs:840spec/models/user_spec.rb841spec/lib/gitlab/merge_requests/commit_message_generator_spec.rb842spec/services/issues/close_service_spec.rb843spec/helpers/projects_helper_spec.rb844spec/services/auto_merge/base_service_spec.rb845spec/helpers/visibility_level_helper_spec.rb846spec/serializers/ci/job_entity_spec.rb847spec/presenters/project_presenter_spec.rb848spec/services/environments/stop_service_spec.rb849spec/models/namespace/package_setting_spec.rb850spec/services/merge_requests/cleanup_refs_service_spec.rb851spec/finders/merge_request_target_project_finder_spec.rb852spec/graphql/mutations/merge_requests/set_milestone_spec.rb853spec/services/groups/import_export/import_service_spec.rb854spec/services/work_items/update_service_spec.rb855spec/models/ci/processable_spec.rb856spec/models/ability_spec.rb857spec/lib/gitlab/path_regex_spec.rb858spec/services/packages/nuget/update_package_from_metadata_service_spec.rb859spec/lib/gitlab/ci/config/entry/reports_spec.rb860spec/models/packages/debian/file_metadatum_spec.rb861spec/lib/gitlab/background_migration/backfill_vulnerability_reads_cluster_agent_spec.rb862spec/lib/gitlab/import_export/group/legacy_tree_restorer_spec.rb863spec/services/preview_markdown_service_spec.rb864spec/lib/backup/files_spec.rb865spec/finders/members_finder_spec.rb866spec/services/clusters/integrations/prometheus_health_check_service_spec.rb867spec/models/user_preference_spec.rb868spec/policies/todo_policy_spec.rb869spec/finders/clusters/kubernetes_namespace_finder_spec.rb870spec/graphql/types/issue_type_spec.rb871spec/lib/gitlab/database/migrations/batched_background_migration_helpers_spec.rb872spec/lib/gitlab/metrics/requests_rack_middleware_spec.rb873spec/policies/metrics/dashboard/annotation_policy_spec.rb874spec/lib/gitlab/background_migration/encrypt_integration_properties_spec.rb875spec/lib/gitlab/background_migration/reset_too_many_tags_skipped_registry_imports_spec.rb876spec/lib/gitlab/git/cross_repo_comparer_spec.rb877spec/lib/gitlab/github_import/representation/issue_event_spec.rb878spec/lib/gitlab/gitaly_client/blob_service_spec.rb879spec/models/ci/job_token/project_scope_link_spec.rb880spec/lib/gitlab/i18n/po_linter_spec.rb881spec/lib/gitlab/import_export/command_line_util_spec.rb882spec/lib/gitlab/application_context_spec.rb883spec/lib/gitlab/import_export/project/import_task_spec.rb884spec/lib/gitlab/graphql/queries_spec.rb885spec/lib/gitlab/database/postgres_index_spec.rb886spec/models/analytics/cycle_analytics/merge_request_stage_event_spec.rb887spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb888spec/workers/database/ci_project_mirrors_consistency_check_worker_spec.rb889spec/services/users/update_service_spec.rb890spec/models/packages/debian/project_component_file_spec.rb891spec/models/dependency_proxy/blob_spec.rb892spec/policies/work_item_policy_spec.rb893spec/workers/merge_worker_spec.rb894spec/finders/crm/organizations_finder_spec.rb895spec/models/concerns/sensitive_serializable_hash_spec.rb896spec/workers/repository_check/single_repository_worker_spec.rb897spec/tasks/gitlab/external_diffs_rake_spec.rb898spec/workers/authorized_project_update/user_refresh_from_replica_worker_spec.rb899spec/models/concerns/bulk_insert_safe_spec.rb900spec/models/members/last_group_owner_assigner_spec.rb901spec/finders/sentry_issue_finder_spec.rb902spec/models/customer_relations/organization_spec.rb903spec/services/projects/group_links/destroy_service_spec.rb904spec/workers/gitlab/phabricator_import/base_worker_spec.rb905spec/lib/gitlab/database/load_balancing/sticking_spec.rb906spec/graphql/types/base_object_spec.rb907spec/models/integrations/ewm_spec.rb908spec/models/integrations/emails_on_push_spec.rb909spec/lib/sidebars/menu_spec.rb910spec/models/packages/debian/file_entry_spec.rb911spec/services/grafana/proxy_service_spec.rb912spec/lib/gitlab/background_migration/disable_legacy_open_source_license_for_projects_less_than_one_mb_spec.rb913spec/helpers/notify_helper_spec.rb914spec/lib/gitlab/ci/pipeline/chain/limit/rate_limit_spec.rb915spec/services/users/activity_service_spec.rb916spec/lib/banzai/filter/table_of_contents_filter_spec.rb917spec/services/packages/go/create_package_service_spec.rb918spec/lib/gitlab/sidekiq_middleware/size_limiter/compressor_spec.rb919spec/lib/json_web_token/hmac_token_spec.rb920spec/services/branches/delete_service_spec.rb921spec/lib/gitlab/database/query_analyzers/restrict_allowed_schemas_spec.rb922spec/presenters/ci/variable_presenter_spec.rb923spec/lib/bitbucket_server/representation/pull_request_spec.rb924spec/uploaders/gitlab_uploader_spec.rb925spec/workers/integrations/create_external_cross_reference_worker_spec.rb926spec/rubocop/cop/gitlab/avoid_feature_category_not_owned_spec.rb927spec/lib/gitlab/analytics/cycle_analytics/records_fetcher_spec.rb928spec/workers/stuck_export_jobs_worker_spec.rb929spec/services/merge_requests/execute_approval_hooks_service_spec.rb930spec/helpers/lazy_image_tag_helper_spec.rb931spec/services/boards/lists/destroy_service_spec.rb932spec/tasks/gitlab/update_templates_rake_spec.rb933spec/services/metrics/users_starred_dashboards/create_service_spec.rb934spec/models/u2f_registration_spec.rb935spec/views/layouts/devise_empty.html.haml_spec.rb936spec/services/projects/refresh_build_artifacts_size_statistics_service_spec.rb937spec/tasks/gitlab/uploads/check_rake_spec.rb938spec/rubocop/cop/migration/prevent_index_creation_spec.rb939spec/tooling/rspec_flaky/report_spec.rb940spec/lib/gitlab/template/gitlab_ci_yml_template_spec.rb941spec/lib/gitlab/database/schema_cache_with_renamed_table_spec.rb942spec/helpers/nav/new_dropdown_helper_spec.rb943spec/graphql/resolvers/admin/analytics/usage_trends/measurements_resolver_spec.rb944spec/workers/namespaces/schedule_aggregation_worker_spec.rb945spec/lib/gitlab/request_context_spec.rb946spec/lib/gitlab/git/diff_stats_collection_spec.rb947spec/lib/gitlab/ci/yaml_processor/result_spec.rb948spec/lib/bulk_imports/groups/transformers/member_attributes_transformer_spec.rb949spec/lib/gitlab/background_migration/batching_strategies/backfill_project_statistics_with_container_registry_size_batching_strategy_spec.rb950spec/serializers/review_app_setup_entity_spec.rb951spec/graphql/types/base_edge_spec.rb952spec/lib/gitlab/ci/config/yaml/tags/reference_spec.rb953spec/models/namespace/aggregation_schedule_spec.rb954spec/lib/gitlab/background_migration/backfill_namespace_details_spec.rb955spec/lib/gitlab/background_migration/populate_operation_visibility_permissions_from_operations_spec.rb956spec/services/resource_events/synthetic_milestone_notes_builder_service_spec.rb957spec/lib/gitlab/uuid_spec.rb958spec/workers/ci/test_failure_history_worker_spec.rb959spec/lib/gitlab/issuable/clone/attributes_rewriter_spec.rb960spec/models/namespace/detail_spec.rb961spec/lib/gitlab/web_ide/config/entry/terminal_spec.rb962spec/lib/gitlab/ci/config/entry/pull_policy_spec.rb963spec/views/projects/settings/integrations/edit.html.haml_spec.rb964spec/finders/issuables/crm_contact_filter_spec.rb965spec/graphql/mutations/alert_management/prometheus_integration/reset_token_spec.rb966spec/views/notify/approved_merge_request_email.html.haml_spec.rb967spec/lib/gitlab/ci/build/artifacts/path_spec.rb968spec/lib/gitlab/background_migration/update_jira_tracker_data_deployment_type_based_on_url_spec.rb969spec/services/boards/visits/create_service_spec.rb970spec/rubocop/cop/migration/add_limit_to_text_columns_spec.rb971spec/lib/gitlab/import_export/decompressed_archive_size_validator_spec.rb972spec/graphql/mutations/saved_replies/update_spec.rb973spec/services/protected_branches/create_service_spec.rb974spec/services/award_emojis/copy_service_spec.rb975spec/workers/incident_management/close_incident_worker_spec.rb976spec/services/packages/helm/extract_file_metadata_service_spec.rb977spec/serializers/project_serializer_spec.rb978spec/services/incident_management/pager_duty/process_webhook_service_spec.rb979spec/experiments/ios_specific_templates_experiment_spec.rb980spec/services/users/upsert_credit_card_validation_service_spec.rb981spec/lib/bulk_imports/groups/pipelines/project_entities_pipeline_spec.rb982spec/workers/cleanup_container_repository_worker_spec.rb983spec/services/work_items/widgets/milestone_service/create_service_spec.rb984spec/models/concerns/from_union_spec.rb985spec/lib/gitlab/database/reindexing/index_selection_spec.rb986spec/lib/gitlab/ci/config/entry/imageable_spec.rb987spec/uploaders/content_type_whitelist_spec.rb988spec/policies/ci/bridge_policy_spec.rb989spec/services/import/validate_remote_git_endpoint_service_spec.rb990spec/lib/gitlab/usage/metrics/key_path_processor_spec.rb991spec/lib/gitlab/ci/build/releaser_spec.rb992spec/graphql/types/admin/analytics/usage_trends/measurement_type_spec.rb993spec/support_specs/time_travel_spec.rb994spec/services/incident_management/issuable_escalation_statuses/create_service_spec.rb995spec/lib/gitlab/github_import/importer/attachments/merge_requests_importer_spec.rb996spec/lib/api/helpers/label_helpers_spec.rb997spec/models/preloaders/commit_status_preloader_spec.rb998spec/lib/gitlab/github_import/importer/issue_and_label_links_importer_spec.rb999spec/lib/gitlab/sidekiq_status/server_middleware_spec.rb1000spec/lib/bulk_imports/projects/pipelines/project_attributes_pipeline_spec.rb1001spec/models/members/member_role_spec.rb1002spec/graphql/mutations/environments/canary_ingress/update_spec.rb1003spec/graphql/types/admin/analytics/usage_trends/measurement_identifier_enum_spec.rb1004spec/views/projects/pipeline_schedules/_pipeline_schedule.html.haml_spec.rb1005spec/helpers/admin/background_migrations_helper_spec.rb1006spec/rubocop/cop/graphql/enum_names_spec.rb1007spec/graphql/types/packages/cleanup/policy_type_spec.rb1008spec/rubocop/cop/migration/remove_column_spec.rb1009spec/models/blob_viewer/gitlab_ci_yml_spec.rb1010spec/graphql/mutations/alert_management/http_integration/update_spec.rb1011spec/lib/gitlab/usage/metrics/instrumentations/cert_based_clusters_ff_metric_spec.rb1012spec/workers/web_hook_worker_spec.rb1013spec/lib/gitlab/kroki_spec.rb1014spec/tooling/lib/tooling/crystalball/coverage_lines_execution_detector_spec.rb1015spec/views/projects/imports/new.html.haml_spec.rb1016spec/graphql/types/group_member_type_spec.rb1017spec/workers/ci/delete_objects_worker_spec.rb1018spec/workers/authorized_keys_worker_spec.rb1019spec/services/projects/deploy_tokens/destroy_service_spec.rb1020spec/lib/banzai/pipeline/emoji_pipeline_spec.rb1021spec/workers/detect_repository_languages_worker_spec.rb1022spec/lib/gitlab/email/hook/disable_email_interceptor_spec.rb1023spec/lib/gitlab/usage/metrics/instrumentations/count_user_auth_metric_spec.rb1024spec/support_specs/graphql/field_selection_spec.rb1025spec/serializers/group_link/project_group_link_entity_spec.rb1026spec/graphql/types/container_repository_tag_type_spec.rb1027spec/lib/gitlab/query_limiting/middleware_spec.rb1028spec/lib/bitbucket_server/page_spec.rb1029spec/graphql/types/container_respository_tags_sort_enum_spec.rb1030spec/lib/gitlab/repository_archive_rate_limiter_spec.rb1031spec/models/concerns/uniquify_spec.rb1032spec/lib/api/entities/application_setting_spec.rb1033spec/graphql/types/event_type_spec.rb1034spec/validators/gitlab/zoom_url_validator_spec.rb1035spec/initializers/100_patch_omniauth_saml_spec.rb1036spec/rubocop/cop/migration/schema_addition_methods_no_post_spec.rb1037spec/graphql/types/issuable_severity_enum_spec.rb1038spec/graphql/types/commit_type_spec.rb1039spec/serializers/rollout_statuses/ingress_entity_spec.rb1040spec/initializers/00_deprecations_spec.rb1041spec/graphql/types/branch_protections/merge_access_level_type_spec.rb1042spec/lib/gitlab/metrics/dashboard/stages/track_panel_type_spec.rb1043spec/lib/api/entities/project_import_failed_relation_spec.rb1044spec/graphql/types/container_expiration_policy_cadence_enum_spec.rb1045spec/graphql/types/metadata/kas_type_spec.rb1046spec/lib/api/validations/validators/project_portable_spec.rb1047spec/models/concerns/vulnerability_finding_signature_helpers_spec.rb1048spec/lib/gitlab/merge_requests/mergeability/redis_interface_spec.rb1049spec/serializers/accessibility_error_entity_spec.rb1050spec/lib/gitlab/kubernetes/pod_cmd_spec.rb1051spec/services/packages/rpm/repository_metadata/build_primary_xml_service_spec.rb1052spec/lib/gitlab/ci/parsers/coverage/cobertura_spec.rb1053spec/rubocop/cop/rspec/modify_sidekiq_middleware_spec.rb1054spec/models/concerns/faster_cache_keys_spec.rb1055spec/workers/concerns/cluster_agent_queue_spec.rb1056spec/services/loose_foreign_keys/process_deleted_records_service_spec.rb1057Filter specs:1058Running specs:1059Running all node tests without filter1060spec/models/user_spec.rb1061spec/lib/gitlab/merge_requests/commit_message_generator_spec.rb1062spec/services/issues/close_service_spec.rb1063spec/helpers/projects_helper_spec.rb1064spec/services/auto_merge/base_service_spec.rb1065spec/helpers/visibility_level_helper_spec.rb1066spec/serializers/ci/job_entity_spec.rb1067spec/presenters/project_presenter_spec.rb1068spec/services/environments/stop_service_spec.rb1069spec/models/namespace/package_setting_spec.rb1070spec/services/merge_requests/cleanup_refs_service_spec.rb1071spec/finders/merge_request_target_project_finder_spec.rb1072spec/graphql/mutations/merge_requests/set_milestone_spec.rb1073spec/services/groups/import_export/import_service_spec.rb1074spec/services/work_items/update_service_spec.rb1075spec/models/ci/processable_spec.rb1076spec/models/ability_spec.rb1077spec/lib/gitlab/path_regex_spec.rb1078spec/services/packages/nuget/update_package_from_metadata_service_spec.rb1079spec/lib/gitlab/ci/config/entry/reports_spec.rb1080spec/models/packages/debian/file_metadatum_spec.rb1081spec/lib/gitlab/background_migration/backfill_vulnerability_reads_cluster_agent_spec.rb1082spec/lib/gitlab/import_export/group/legacy_tree_restorer_spec.rb1083spec/services/preview_markdown_service_spec.rb1084spec/lib/backup/files_spec.rb1085spec/finders/members_finder_spec.rb1086spec/services/clusters/integrations/prometheus_health_check_service_spec.rb1087spec/models/user_preference_spec.rb1088spec/policies/todo_policy_spec.rb1089spec/finders/clusters/kubernetes_namespace_finder_spec.rb1090spec/graphql/types/issue_type_spec.rb1091spec/lib/gitlab/database/migrations/batched_background_migration_helpers_spec.rb1092spec/lib/gitlab/metrics/requests_rack_middleware_spec.rb1093spec/policies/metrics/dashboard/annotation_policy_spec.rb1094spec/lib/gitlab/background_migration/encrypt_integration_properties_spec.rb1095spec/lib/gitlab/background_migration/reset_too_many_tags_skipped_registry_imports_spec.rb1096spec/lib/gitlab/git/cross_repo_comparer_spec.rb1097spec/lib/gitlab/github_import/representation/issue_event_spec.rb1098spec/lib/gitlab/gitaly_client/blob_service_spec.rb1099spec/models/ci/job_token/project_scope_link_spec.rb1100spec/lib/gitlab/i18n/po_linter_spec.rb1101spec/lib/gitlab/import_export/command_line_util_spec.rb1102spec/lib/gitlab/application_context_spec.rb1103spec/lib/gitlab/import_export/project/import_task_spec.rb1104spec/lib/gitlab/graphql/queries_spec.rb1105spec/lib/gitlab/database/postgres_index_spec.rb1106spec/models/analytics/cycle_analytics/merge_request_stage_event_spec.rb1107spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb1108spec/workers/database/ci_project_mirrors_consistency_check_worker_spec.rb1109spec/services/users/update_service_spec.rb1110spec/models/packages/debian/project_component_file_spec.rb1111spec/models/dependency_proxy/blob_spec.rb1112spec/policies/work_item_policy_spec.rb1113spec/workers/merge_worker_spec.rb1114spec/finders/crm/organizations_finder_spec.rb1115spec/models/concerns/sensitive_serializable_hash_spec.rb1116spec/workers/repository_check/single_repository_worker_spec.rb1117spec/tasks/gitlab/external_diffs_rake_spec.rb1118spec/workers/authorized_project_update/user_refresh_from_replica_worker_spec.rb1119spec/models/concerns/bulk_insert_safe_spec.rb1120spec/models/members/last_group_owner_assigner_spec.rb1121spec/finders/sentry_issue_finder_spec.rb1122spec/models/customer_relations/organization_spec.rb1123spec/services/projects/group_links/destroy_service_spec.rb1124spec/workers/gitlab/phabricator_import/base_worker_spec.rb1125spec/lib/gitlab/database/load_balancing/sticking_spec.rb1126spec/graphql/types/base_object_spec.rb1127spec/models/integrations/ewm_spec.rb1128spec/models/integrations/emails_on_push_spec.rb1129spec/lib/sidebars/menu_spec.rb1130spec/models/packages/debian/file_entry_spec.rb1131spec/services/grafana/proxy_service_spec.rb1132spec/lib/gitlab/background_migration/disable_legacy_open_source_license_for_projects_less_than_one_mb_spec.rb1133spec/helpers/notify_helper_spec.rb1134spec/lib/gitlab/ci/pipeline/chain/limit/rate_limit_spec.rb1135spec/services/users/activity_service_spec.rb1136spec/lib/banzai/filter/table_of_contents_filter_spec.rb1137spec/services/packages/go/create_package_service_spec.rb1138spec/lib/gitlab/sidekiq_middleware/size_limiter/compressor_spec.rb1139spec/lib/json_web_token/hmac_token_spec.rb1140spec/services/branches/delete_service_spec.rbKnapsack report generator started!1141Run options: exclude {:quarantine=>true, :level=>"migration"}1142Test environment set up in 4.612613552 seconds1143User1144 behaves like having unique enum values1145 has unique values in "user_type"1146 has unique values in "layout"1147 has unique values in "dashboard"1148 has unique values in "project_view"1149 has unique values in "role"1150 has unique values in "roadmap_layout"1151 has unique values in "group_view"1152 modules1153 is expected to includes the Gitlab::ConfigHelper module1154 is expected to includes the Referable module1155 is expected to includes the Sortable module1156 is expected to includes the TokenAuthenticatable module1157 is expected to includes the BlocksUnsafeSerialization module1158 is expected to includes the AsyncDeviseEmail module1159 constants1160 is expected to be a kind of Integer1161 is expected to be a kind of Integer1162 is expected to be a kind of Integer1163 delegations1164 is expected to delegate #namespace_path to the #namespace object as #path1165 is expected to delegate #notes_filter_for to the #user_preference object1166 is expected to delegate #set_notes_filter to the #user_preference object1167 is expected to delegate #first_day_of_week to the #user_preference object1168 is expected to delegate #first_day_of_week= to the #user_preference object passing arguments [:args]1169 is expected to delegate #timezone to the #user_preference object1170 is expected to delegate #timezone= to the #user_preference object passing arguments [:args]1171 is expected to delegate #time_display_relative to the #user_preference object1172 is expected to delegate #time_display_relative= to the #user_preference object passing arguments [:args]1173 is expected to delegate #time_format_in_24h to the #user_preference object1174 is expected to delegate #time_format_in_24h= to the #user_preference object passing arguments [:args]1175 is expected to delegate #show_whitespace_in_diffs to the #user_preference object1176 is expected to delegate #show_whitespace_in_diffs= to the #user_preference object passing arguments [:args]1177 is expected to delegate #view_diffs_file_by_file to the #user_preference object1178 is expected to delegate #view_diffs_file_by_file= to the #user_preference object passing arguments [:args]1179 is expected to delegate #tab_width to the #user_preference object1180 is expected to delegate #tab_width= to the #user_preference object passing arguments [:args]1181 is expected to delegate #sourcegraph_enabled to the #user_preference object1182 is expected to delegate #sourcegraph_enabled= to the #user_preference object passing arguments [:args]1183 is expected to delegate #gitpod_enabled to the #user_preference object1184 is expected to delegate #gitpod_enabled= to the #user_preference object passing arguments [:args]1185 is expected to delegate #setup_for_company to the #user_preference object1186 is expected to delegate #setup_for_company= to the #user_preference object passing arguments [:args]1187 is expected to delegate #render_whitespace_in_code to the #user_preference object1188 is expected to delegate #render_whitespace_in_code= to the #user_preference object passing arguments [:args]1189 is expected to delegate #markdown_surround_selection to the #user_preference object1190 is expected to delegate #markdown_surround_selection= to the #user_preference object passing arguments [:args]1191 is expected to delegate #markdown_automatic_lists to the #user_preference object1192 is expected to delegate #markdown_automatic_lists= to the #user_preference object passing arguments [:args]1193 is expected to delegate #diffs_deletion_color to the #user_preference object1194 is expected to delegate #diffs_deletion_color= to the #user_preference object passing arguments [:args]1195 is expected to delegate #diffs_addition_color to the #user_preference object1196 is expected to delegate #diffs_addition_color= to the #user_preference object passing arguments [:args]1197 is expected to delegate #use_legacy_web_ide to the #user_preference object1198 is expected to delegate #use_legacy_web_ide= to the #user_preference object passing arguments [:args]1199 is expected to delegate #job_title to the #user_detail object, allowing #user_detail to return nil1200 is expected to delegate #job_title= to the #user_detail object passing arguments [:args], allowing #user_detail to return nil1201 is expected to delegate #pronouns to the #user_detail object, allowing #user_detail to return nil1202 is expected to delegate #pronouns= to the #user_detail object passing arguments [:args], allowing #user_detail to return nil1203 is expected to delegate #pronunciation to the #user_detail object, allowing #user_detail to return nil1204 is expected to delegate #pronunciation= to the #user_detail object passing arguments [:args], allowing #user_detail to return nil1205 is expected to delegate #bio to the #user_detail object, allowing #user_detail to return nil1206 is expected to delegate #bio= to the #user_detail object passing arguments [:args], allowing #user_detail to return nil1207 is expected to delegate #registration_objective to the #user_detail object, allowing #user_detail to return nil1208 is expected to delegate #registration_objective= to the #user_detail object passing arguments [:args], allowing #user_detail to return nil1209 is expected to delegate #requires_credit_card_verification to the #user_detail object, allowing #user_detail to return nil1210 is expected to delegate #requires_credit_card_verification= to the #user_detail object passing arguments [:args], allowing #user_detail to return nil1211 associations1212 is expected to have one namespace1213 is expected to have one status1214 is expected to have one user_detail1215 is expected to have one atlassian_identity1216 is expected to have one user_highest_role1217 is expected to have one credit_card_validation1218 is expected to have one phone_number_validation1219 is expected to have one banned_user1220 is expected to have many snippets dependent => destroy1221 is expected to have many members1222 is expected to have many project_members1223 is expected to have many group_members1224 is expected to have many groups1225 is expected to have many keys dependent => destroy1226 is expected to have many expired_today_and_unnotified_keys1227 is expected to have many deploy_keys dependent => nullify1228 is expected to have many group_deploy_keys1229 is expected to have many events dependent => delete_all1230 is expected to have many issues dependent => destroy1231 is expected to have many notes dependent => destroy1232 is expected to have many merge_requests dependent => destroy1233 is expected to have many identities dependent => destroy1234 is expected to have many spam_logs dependent => destroy1235 is expected to have many todos1236 is expected to have many award_emoji dependent => destroy1237 is expected to have many builds1238 is expected to have many pipelines1239 is expected to have many chat_names dependent => destroy1240 is expected to have many saved_replies class_name => ::Users::SavedReply1241 is expected to have many uploads1242 is expected to have many reported_abuse_reports class_name => AbuseReport dependent => destroy1243 is expected to have many custom_attributes class_name => UserCustomAttribute1244 is expected to have many releases dependent => nullify1245 is expected to have many metrics_users_starred_dashboards inverse_of => user1246 is expected to have many reviews inverse_of => author1247 is expected to have many merge_request_assignees inverse_of => assignee1248 is expected to have many merge_request_reviewers inverse_of => reviewer1249 is expected to have many created_custom_emoji inverse_of => creator1250 is expected to have many in_product_marketing_emails1251 is expected to have many timelogs1252 is expected to have many callouts class_name => Users::Callout1253 is expected to have many group_callouts class_name => Users::GroupCallout1254 is expected to have many project_callouts class_name => Users::ProjectCallout1255 is expected to have many created_projects class_name => Project dependent => nullify1256 #user_detail1257 does not persist `user_detail` by default1258 creates `user_detail` when `bio` is given1259 delegates `bio` to `user_detail`1260 delegates `pronouns` to `user_detail`1261 delegates `pronunciation` to `user_detail`1262 creates `user_detail` when `bio` is first updated1263 #abuse_report1264 is expected to have one abuse_report1265 refers to the abuse report whose user_id is the current user1266 does not refer to the abuse report whose reporter_id is the current user1267 does not update the user_id of an abuse report when the user is updated1268 #group_members1269 does not include group memberships for which user is a requester1270 #project_members1271 does not include project memberships for which user is a requester1272 Devise emails1273 behaviour1274 sends emails asynchronously1275 emails sent on changing password1276 when password is updated1277 default behaviour1278 enqueues the `password changed` email1279 does not enqueue the `admin changed your password` email1280 `admin changed your password` email1281 is enqueued only when explicitly allowed1282 `password changed` email is not enqueued if it is explicitly allowed1283 is not enqueued if sending notifications on password updates is turned off as per Devise config1284 when password is not updated1285 does not enqueue the `admin changed your password` email even if explicitly allowed1286 validations1287 has a DB-level NOT NULL constraint on projects_limit1288 is expected to validate that :projects_limit cannot be empty/falsy1289 is expected to validate that :projects_limit looks like a number1290 is expected to allow :projects_limit to be ‹0›1291 is expected not to allow :projects_limit to be ‹-1›1292 is expected not to allow :projects_limit to be ‹2147483648›1293 password1294 length1295 is expected to validate that the length of :password is between 10 and 1301296 length validator1297 for a short password1298 does not run the default Devise password length validation1299 runs the custom password length validator1300 for a long password1301 does not run the default Devise password length validation1302 runs the custom password length validator1303 check_password_weakness1304 when feature flag is disabled1305 does not add an error when password is weak1306 when feature flag is enabled1307 checks for password weakness when password changes1308 adds an error when password is weak1309 is valid when password is not weak1310 is valid when weak password was already set1311 name1312 is expected to validate that :name cannot be empty/falsy1313 is expected to validate that the length of :name is at most 2551314 first name1315 is expected to validate that the length of :first_name is at most 1271316 last name1317 is expected to validate that the length of :last_name is at most 1271318 preferred_language1319 when its value is nil in the database1320 falls back to I18n.default_locale when empty in the database1321 falls back to english when I18n.default_locale is not an available language1322 username1323 validates presence1324 rejects denied names1325 allows child names1326 allows wildcard names1327 validates format1328 validates format on updated record1329 when username is changed1330 validates move_dir is allowed for the namespace1331 when the username is in use by another user1332 is invalid1333 behaves like an object with email-formatted attributes1334 specifically its :email attribute1335 with a value of 'info@example.com'1336 is valid1337 with a value of 'info+test@example.com'1338 is valid1339 with a value of 'o'reilly@example.com'1340 is valid1341 with a value of 'mailto:test@example.com'1342 is valid1343 with a value of 'lol!'+=?><#$%^&*()@gmail.com'1344 is valid1345 with a value of 'foobar'1346 is invalid1347 with a value of 'test@test@example.com'1348 is invalid1349 behaves like an object with email-formatted attributes1350 specifically its :public_email attribute1351 with a value of 'info@example.com'1352 is valid1353 with a value of 'info+test@example.com'1354 is valid1355 with a value of 'o'reilly@example.com'1356 is valid1357 with a value of 'mailto:test@example.com'1358 is valid1359 with a value of 'lol!'+=?><#$%^&*()@gmail.com'1360 is valid1361 with a value of 'foobar'1362 is invalid1363 with a value of 'test@test@example.com'1364 is invalid1365 specifically its :notification_email attribute1366 with a value of 'info@example.com'1367 is valid1368 with a value of 'info+test@example.com'1369 is valid1370 with a value of 'o'reilly@example.com'1371 is valid1372 with a value of 'mailto:test@example.com'1373 is valid1374 with a value of 'lol!'+=?><#$%^&*()@gmail.com'1375 is valid1376 with a value of 'foobar'1377 is invalid1378 with a value of 'test@test@example.com'1379 is invalid1380 #commit_email_or_default1381 defaults to the primary email1382 defaults to the primary email when the column in the database is null1383 returns the private commit email when commit_email has _private1384 #commit_email=1385 can be set to a confirmed email1386 can not be set to an unconfirmed email1387 can not be set to a non-existent email1388 can not be set to an invalid email, even if confirmed1389 email1390 when no signup domains allowed1391 accepts any email1392 bad regex1393 does not hang on evil input1394 when a signup domain is allowed and subdomains are allowed1395 accepts info@example.com1396 accepts info@test.example.com1397 rejects example@test.com1398 does not allow user to update email to a non-allowlisted domain1399 when a signup domain is allowed and subdomains are not allowed1400 accepts info@example.com1401 rejects info@test.example.com1402 rejects example@test.com1403 accepts example@test.com when added by another user1404 domain denylist1405 bad regex1406 does not hang on evil input1407 when a signup domain is denied1408 accepts info@test.com1409 rejects info@example.com1410 accepts info@example.com when added by another user1411 does not allow user to update email to a denied domain1412 when a signup domain is denied but a wildcard subdomain is allowed1413 gives priority to allowlist and allow info@test.example.com1414 with both lists containing a domain1415 accepts info@test.com1416 rejects info@example.com1417 email restrictions1418 when email restriction is disabled1419 does accept email address1420 when email restrictions is enabled1421 does not accept email address with + characters1422 does not accept email with a gitlab domain1423 adds an error message when email is not accepted1424 does not allow user to update email to a restricted domain1425 does accept a valid email address1426 when created_by_id is set1427 does accept the email address1428 when secondary email is same as primary1429 lets user change primary email without failing validations1430 when commit_email is changed to _private1431 passes user validations1432 scopes1433 blocked users1434 .blocked1435 returns only blocked users1436 .blocked_pending_approval1437 returns only pending approval users1438 .banned1439 returns only banned users1440 .with_two_factor1441 returns users with 2fa enabled via OTP1442 and U2F1443 behaves like returns the right users1444 returns users with 2fa enabled via hardware token1445 returns users with 2fa enabled via OTP and hardware token1446 works with ORDER BY1447 and WebAuthn1448 behaves like returns the right users1449 returns users with 2fa enabled via hardware token1450 returns users with 2fa enabled via OTP and hardware token1451 works with ORDER BY1452 .without_two_factor1453 excludes users with 2fa enabled via OTP1454 and u2f1455 excludes users with 2fa enabled via U2F1456 excludes users with 2fa enabled via OTP and U2F1457 and webauthn1458 excludes users with 2fa enabled via WebAuthn1459 excludes users with 2fa enabled via OTP and WebAuthn1460 .random_password1461 length1462 conforms to the current password length settings1463 .password_length1464 is expected to be a Range1465 minimum value1466 is determined by the current value of `minimum_password_length` attribute of application_setting1467 maximum value1468 is determined by the current value of `Devise.password_length.max`1469 .limit_to_todo_authors1470 when filtering by todo authors1471 only returns users that have authored todos1472 ignores users that do not have a todo in the matching state1473 when not filtering by todo authors1474 returns the input relation1475 when no user is provided1476 returns the input relation1477 .by_username1478 finds users regardless of the case passed1479 finds a single user regardless of the case passed1480 .with_expiring_and_not_notified_personal_access_tokens1481 in one day1482 doesn't include an user1483 in three days1484 only includes user21485 .with_personal_access_tokens_expired_today1486 returns users whose token has expired today1487 SSH key expiration scopes1488 .with_ssh_key_expiring_soon1489 returns users whose keys will expire soon1490 .active_without_ghosts1491 returns all active users but ghost users1492 .without_ghosts1493 returns users without ghosts users1494 .for_todos1495 returns users for the given todos1496 .order_recent_last_activity1497 sorts users by activity and id to make the ordes deterministic1498 .order_oldest_last_activity1499 sorts users by activity and id to make the ordes deterministic1500 .order_recent_sign_in1501 sorts users by current_sign_in_at in descending order1502 .order_oldest_sign_in1503 sorts users by current_sign_in_at in ascending order1504 strip attributes1505 name1506 strips whitespaces on validation1507 Respond to1508 is expected to respond to #admin?1509 is expected to respond to #name1510 is expected to respond to #external?1511 before save hook1512 #default_private_profile_to_false1513 converts nil to false1514 when saving an external user1515 sets other properties as well1516 #check_for_verified_email1517 allows a verified secondary email to be used as the primary without needing reconfirmation1518 after commit hook1519 when the primary email is updated1520 keeps old primary to secondary emails when secondary is a new email1521 when the first email was unconfirmed and the second email gets confirmed1522 updates user.email1523 confirms user.email1524 does not add unconfirmed email to secondary1525 has only one email association1526 when an existing email record is set as primary1527 when it is unconfirmed1528 keeps the user confirmed1529 keeps the original email1530 when the email gets confirmed1531 keeps the user confirmed1532 updates the email1533 when it is confirmed1534 keeps the user confirmed1535 updates the email1536 keeps the old email1537 when unconfirmed user deletes a confirmed additional email1538 does not affect the confirmed status1539 when changing email1540 if notification_email was nil1541 sets :unconfirmed_email1542 does not change notification_email or notification_email_or_default before email is confirmed1543 updates notification_email_or_default to the new email once confirmed1544 when notification_email is set to a secondary email1545 does not change notification_email to email before email is confirmed1546 does not change notification_email to email once confirmed1547 #update_invalid_gpg_signatures1548 does nothing when the name is updated1549 synchronizes the gpg keys when the email is updated1550 name getters1551 derives first name from full name, if not present1552 derives last name from full name, if not present1553 #highest_role1554 when user_highest_role does not exist1555 returns NO_ACCESS1556 when user_highest_role exists1557 stored highest access level is nil1558 returns Gitlab::Access::NO_ACCESS1559 stored highest access level present1560 with association :user_highest_role1561 returns the correct highest role1562 #credit_card_validated_at1563 when credit_card_validation does not exist1564 returns nil1565 when credit_card_validation exists1566 returns the credit card validated time1567 #update_tracked_fields!1568 writes trackable attributes1569 does not write trackable attributes when called a second time within the hour1570 writes trackable attributes for a different user1571 does not write if the DB is in read-only mode1572 #keys1573 with key and deploy key stored1574 returns stored key, but not deploy_key1575 #accessible_deploy_keys1576 user can only see deploy keys accessible to right projects1577 #deploy_keys1578 with key and deploy key stored1579 returns stored deploy key, but not normal key1580 #confirm1581 when the confirmation period has expired1582 does not confirm the user1583 does not add the confirmed primary email to emails1584 behaves like unconfirmed user1585 returns unconfirmed1586 when the confirmation period has not expired1587 confirms a user1588 adds the confirmed primary email to emails1589 behaves like unconfirmed user1590 returns unconfirmed1591 when the primary email is already included in user.emails1592 when the confirmation period of the email record has expired1593 does not confirm the email record1594 when the confirmation period of the email record has not expired1595 confirms the email record1596 saving primary email to the emails table1597 when calling skip_reconfirmation! while updating the primary email1598 adds the new email to emails1599 when the email is changed but not confirmed1600 does not add the new email to emails yet1601 adds the new email to emails upon confirmation1602 when the user is created as not confirmed1603 does not add the email to emails yet1604 adds the email to emails upon confirmation1605 when the user is created as confirmed1606 adds the email to emails1607 when skip_confirmation! is called1608 adds the email to emails1609 #force_confirm1610 when the confirmation period has expired1611 behaves like unconfirmed user1612 returns unconfirmed1613 behaves like confirms the user on force_confirm1614 confirms a user1615 behaves like adds the confirmed primary email to emails1616 adds the confirmed primary email to emails1617 behaves like confirms the email record if the primary email was already present in user.emails1618 when the primary email is already included in user.emails1619 when the confirmation period of the email record has expired1620 behaves like confirms the email record1621 confirms the email record1622 when the confirmation period of the email record has not expired1623 behaves like confirms the email record1624 confirms the email record1625 when the confirmation period has not expired1626 behaves like unconfirmed user1627 returns unconfirmed1628 behaves like confirms the user on force_confirm1629 confirms a user1630 behaves like adds the confirmed primary email to emails1631 adds the confirmed primary email to emails1632 behaves like confirms the email record if the primary email was already present in user.emails1633 when the primary email is already included in user.emails1634 when the confirmation period of the email record has expired1635 behaves like confirms the email record1636 confirms the email record1637 when the confirmation period of the email record has not expired1638 behaves like confirms the email record1639 confirms the email record1640 if the user is created with confirmed_at set to a time1641 adds the confirmed primary email to emails upon creation1642 #to_reference1643 returns a String reference to the object1644 #generate_password1645 does not generate password by default1646 ensure user preference1647 has user preference upon user initialization1648 ensure incoming email token1649 has incoming email token1650 uses SecureRandom to generate the incoming email token1651 #ensure_user_rights_and_limits1652 with external user1653 receives callback when external changes1654 ensures correct rights and limits for user1655 without external user1656 receives callback when external changes1657 ensures correct rights and limits for user1658 feed token1659 ensures a feed token on read1660 ensures no feed token when disabled1661 static object token1662 ensures a static object token on read1663 generates an encrypted version of the token1664 prefers an encoded version of the token1665 enabled_static_object_token1666 returns incoming email token when supported1667 returns `nil` when not supported1668 enabled_incoming_email_token1669 returns incoming email token when supported1670 returns `nil` when not supported1671 #recently_sent_password_reset?1672 is false when reset_password_sent_at is nil1673 is false when sent more than one minute ago1674 is true when sent less than one minute ago1675 #disable_two_factor!1676 clears all 2FA-related fields1677 #two_factor_otp_enabled?1678 when 2FA is enabled by an MFA Device1679 is expected to eq true1680 FortiAuthenticator1681 when enabled via GitLab settings1682 when feature is disabled for the user1683 is expected to eq false1684 when feature is enabled for the user1685 is expected to eq true1686 when disabled via GitLab settings1687 is expected to eq false1688 FortiTokenCloud1689 when enabled via GitLab settings1690 when feature is disabled for the user1691 is expected to eq false1692 when feature is enabled for the user1693 is expected to eq true1694 when disabled via GitLab settings1695 is expected to eq false1696 two_factor_u2f_enabled?1697 when webauthn feature flag is enabled1698 user has no U2F registration1699 is expected to eq false1700 user has existing U2F registration1701 returns false1702 when webauthn feature flag is disabled1703 user has no U2F registration1704 is expected to eq false1705 user has existing U2F registration1706 returns true1707 needs_new_otp_secret?1708 when two-factor is not enabled1709 returns true if otp_secret_expires_at is nil1710 returns true if the otp_secret_expires_at has passed1711 returns false if the otp_secret_expires_at has not passed1712 when two-factor is enabled1713 returns false even if ttl is expired1714 otp_secret_expired?1715 returns true if otp_secret_expires_at is nil1716 returns true if the otp_secret_expires_at has passed1717 returns false if the otp_secret_expires_at has not passed1718 update_otp_secret!1719 sets the otp_secret1720 updates the otp_secret_expires_at1721 projects1722 is expected to include #<Project id:17 user267/project19>>1723 is expected to include #<Project id:21 group6/project23>>1724 is expected to include #<Project id:25 group9/project27>>1725 is expected to include #<Project id:26 user276/project28>>1726 is expected not to include #<Project id:30 group12/project32>>1727 is expected not to include #<Project id:34 group15/project36>>1728 is expected to include #<Project id:35 user285/project37>>1729 is expected not to include #<Project id:39 group18/project41>>1730 is expected not to include #<Project id:43 group21/project45>>1731 groups1732 is expected to be truthy1733 is expected to eq [#<Group id:338 @group23>]1734 is expected to eq [#<Group id:340 @group24>]1735 is expected to contain exactly #<Namespaces::UserNamespace id: 343, name: "Sidney Jones459", path: "user297", owner_id: 277, created...runners_enabled: true, allow_descendants_override_disabled_shared_runners: false, traversal_ids: []> and #<Group id:342 @group25>1736 is expected to contain exactly #<Namespaces::UserNamespace id: 345, name: "Sidney Jones460", path: "user298", owner_id: 278, created...runners_enabled: true, allow_descendants_override_disabled_shared_runners: false, traversal_ids: []> and #<Group id:344 @group26>1737 with owned groups only1738 is expected to contain exactly #<Namespaces::UserNamespace id: 347, name: "Sidney Jones461", path: "user299", owner_id: 279, created...runners_enabled: true, allow_descendants_override_disabled_shared_runners: false, traversal_ids: []> and #<Group id:346 @group27>1739 with child groups1740 #forkable_namespaces1741 includes all the namespaces the user can fork into1742 #manageable_groups1743 behaves like manageable groups examples1744 includes all the namespaces the user can manage1745 does not include duplicates if a membership was added for the subgroup1746 when feature flag :linear_user_manageable_groups is disabled1747 behaves like manageable groups examples1748 includes all the namespaces the user can manage1749 does not include duplicates if a membership was added for the subgroup1750 #manageable_groups_with_routes1751 eager loads routes from manageable groups1752 group multiple owners1753 is expected to be truthy1754 namespaced1755 is expected to be falsey1756 is expected to eq [#<Namespaces::UserNamespace id: 374, name: "Sidney Jones471", path: "user309", owner_id: 289, create...unners_enabled: true, allow_descendants_override_disabled_shared_runners: false, traversal_ids: []>]1757 blocking user1758 blocks user1759 when user has running CI pipelines1760 drops all running pipelines and related jobs1761 does not drop running pipelines if the transaction rolls back1762 when user has active CI pipeline schedules1763 disables any pipeline schedules1764 deactivating a user1765 an active user1766 can be deactivated1767 when user deactivation emails are disabled1768 does not send deactivated user an email1769 when user deactivation emails are enabled1770 sends deactivated user an email1771 a user who is blocked1772 cannot be deactivated1773 blocking a user pending approval1774 an active user1775 can be blocked pending approval1776 behaves like a blocked user1777 starred_projects1778 when blocking a user1779 decrements star count of project1780 when activating a user1781 increments star count of project1782 .instance_access_request_approvers_to_be_notified1783 returns up to the ten most recently active instance admins1784 banning and unbanning a user1785 banning a user1786 bans and blocks the user1787 creates a BannedUser record1788 unbanning a user1789 unbans the user1790 deletes the BannedUser record1791 .filter_items1792 filters by active users by default1793 filters by admins1794 filters by blocked1795 filters by banned1796 filters by blocked pending approval1797 filters by deactivated1798 filters by two_factor_disabled1799 filters by two_factor_enabled1800 filters by wop1801 .without_projects1802 is expected not to include #<User id:321 @user335>1803 is expected to include #<User id:328 @user340>1804 is expected to include #<User id:335 @user345>1805 user creation1806 normal user1807 is expected to be falsey1808 is expected to be truthy1809 is expected to be truthy1810 is expected to be truthy1811 is expected to eq "John"1812 is expected to be falsey1813 with defaults1814 applies defaults to user1815 with default overrides1816 applies defaults to user1817 does not undo projects_limit setting if it matches old DB default of 101818 when Gitlab::CurrentSettings.user_default_external is true1819 creates external user by default1820 with default overrides1821 creates a non-external user1822 #require_ssh_key?1823 has correct require_ssh_key?1824 has correct require_ssh_key?1825 has correct require_ssh_key?1826 returns false when the user has 1 or more SSH keys1827 .find_for_database_authentication1828 strips whitespace from login1829 .find_by_any_email1830 finds user through private commit email1831 finds user through private commit email when user is unconfirmed1832 finds by primary email1833 finds by primary email when user is unconfirmed according to confirmed argument1834 finds by uppercased email1835 returns nil when nothing found1836 finds by secondary email1837 when primary email is confirmed1838 when secondary email is confirmed1839 finds user1840 when secondary email is unconfirmed1841 does not find user1842 when primary email is unconfirmed1843 when secondary email is confirmed1844 finds user according to confirmed argument1845 when secondary email is unconfirmed1846 does not find user1847 .by_any_email1848 returns an ActiveRecord::Relation1849 returns empty relation of users when nothing found1850 returns a relation of users for confirmed primary emails1851 returns a relation of users for unconfirmed primary emails according to confirmed argument1852 finds users through private commit emails1853 finds unconfirmed users through private commit emails1854 finds user through a private commit email in an array1855 finds by uppercased email1856 finds by secondary email1857 when primary email is confirmed1858 when secondary email is confirmed1859 finds user1860 when secondary email is unconfirmed1861 does not find user1862 when primary email is unconfirmed1863 when secondary email is confirmed1864 finds user according to confirmed argument1865 when secondary email is unconfirmed1866 does not find user1867 .search1868 returns no matches for an empty string1869 returns no matches for nil1870 returns no matches for an array1871 name user and email relative ordering1872 prioritizes exact matches1873 falls back to ordering by name1874 name matching1875 returns users with a matching name with exact match first1876 returns users with a partially matching name1877 returns users with a matching name regardless of the casing1878 returns users with a exact matching name shorter than 3 chars1879 returns users with a exact matching name shorter than 3 chars regardless of the casing1880 when use_minimum_char_limit is false1881 returns users with a partially matching name1882 email matching1883 returns users with a matching public email1884 does not return users with a partially matching public email1885 returns users with a matching public email regardless of the casing1886 does not return users with a matching private email1887 with private emails search1888 returns users with matching private primary email1889 returns users with matching private unconfirmed primary email1890 returns users with matching private confirmed secondary email1891 does not return users with matching private unconfirmed secondary email1892 username matching1893 returns users with a matching username1894 returns users with a matching username starting with a @1895 returns users with a partially matching username1896 returns users with a partially matching username starting with @1897 returns users with a matching username regardless of the casing1898 returns users with a exact matching username shorter than 3 chars1899 returns users with a exact matching username shorter than 3 chars regardless of the casing1900 when use_minimum_char_limit is false1901 returns users with a partially matching username1902 .user_search_minimum_char_limit1903 returns true1904 .find_by_ssh_key_id1905 only performs a single query1906 using an existing SSH key ID1907 returns the corresponding User1908 using an invalid SSH key ID1909 returns nil1910 .by_login1911 behaves like find user by login1912 when login is nil or empty1913 returns nil1914 when login is invalid1915 returns nil1916 when login is username1917 returns user1918 when login is email1919 returns user1920 .find_by_login1921 behaves like find user by login1922 when login is nil or empty1923 returns nil1924 when login is invalid1925 returns nil1926 when login is username1927 returns user1928 when login is email1929 returns user1930 .find_by_username1931 returns nil if not found1932 is case-insensitive1933 .find_by_username!1934 raises RecordNotFound1935 is case-insensitive1936 .find_by_full_path1937 with a route matching the given path1938 returns the user1939 is case-insensitive1940 with a redirect route matching the given path1941 without the follow_redirects option1942 returns nil1943 with the follow_redirects option set to true1944 returns the user1945 is case-insensitive1946 without a route or a redirect route matching the given path1947 without the follow_redirects option1948 returns nil1949 with the follow_redirects option set to true1950 returns nil1951 with a group route matching the given path1952 when the group namespace has an owner_id (legacy data)1953 returns nil1954 when the group namespace does not have an owner_id1955 returns nil1956 all_ssh_keys1957 is expected to have many keys dependent => destroy1958 has all ssh keys1959 #avatar_type1960 is true if avatar is image1961 is false if avatar is html page1962 #avatar_url1963 when avatar file is uploaded1964 shows correct avatar url1965 #clear_avatar_caches1966 clears the avatar cache when saving1967 #accept_pending_invitations!1968 accepts all the user members pending invitations and returns the accepted_members1969 #all_emails1970 returns all emails1971 when the primary email is confirmed1972 includes the primary email1973 when the primary email is unconfirmed1974 includes the primary email1975 when the primary email is temp email for oauth1976 does not include the primary email1977 when `include_private_email` is true1978 includes the private commit email1979 when `include_private_email` is false1980 does not include the private commit email1981 when the secondary email is confirmed1982 includes the secondary email1983 when the secondary email is unconfirmed1984 does not include the secondary email1985 #verified_emails1986 returns only confirmed emails1987 #public_verified_emails1988 returns only confirmed public emails1989 returns confirmed public emails plus main user email when user is not confirmed1990 #verified_email?1991 returns true when the email is verified/confirmed1992 returns true when user is found through private commit email1993 returns true for an outdated private commit email1994 returns false when the email is not verified/confirmed1995 crowd synchronized user1996 #crowd_user?1997 is true if provider is crowd1998 is false for other providers1999 is false if no extern_uid is provided2000 #requires_ldap_check?2001 is false when LDAP is disabled2002 when LDAP is enabled2003 is false for non-LDAP users2004 and when the user is an LDAP user2005 is true when the user has never had an LDAP check before2006 is true when the last LDAP check happened over 1 hour ago2007 ldap synchronized user2008 #ldap_user?2009 is true if provider name starts with ldap2010 is false for other providers2011 is false if no extern_uid is provided2012 #ldap_identity2013 returns ldap identity2014 #matches_identity?2015 finds the identity when the DN is formatted differently2016 #ldap_block2017 blocks user flaging the action caming from ldap2018 on a read-only instance2019 does not block user2020 #full_website_url2021 begins with http if website url omits it2022 begins with http if website url begins with http2023 begins with https if website url begins with https2024 #short_website_url2025 does not begin with http if website url omits it2026 does not begin with http if website url begins with http2027 does not begin with https if website url begins with https2028 #sanitize_attrs2029 encodes HTML entities in the Skype attribute2030 does not encode HTML entities in the name attribute2031 sanitizes attr from html tags2032 sanitizes attr from js scripts2033 sanitizes attr from iframe scripts2034 #starred?2035 determines if user starred a project2036 #toggle_star2037 toggles stars2038 #following?2039WARNING: Active Record does not support composite primary key.2040user_follow_users has composite primary key. Composite primary key is ignored.2041 check if following another user2042 #followed_by?2043 check if followed by another user2044 #follow2045 follow another user2046 follow itself is not possible2047 does not follow if max followee limit is reached2048 #unfollow2049 unfollow another user2050 unfollows when over followee limit2051 #notification_email_or_default2052 when the column in the database is null2053 defaults to the primary email2054 .find_by_private_commit_email2055 returns nil when email is nil2056 with email2057 returns user through private commit email2058 returns nil when email other than private_commit_email is used2059 #sort_by_attribute2060 sorts users in descending order by their creation time2061 sorts users in ascending order by their creation time2062 sorts users by id in descending order when nil is passed2063 sorts user by latest activity descending, nulls last ordered by ascending id2064 sorts user by latest activity ascending, nulls first ordered by descending id2065 when sort by recent_sign_in2066 sorts users by recent sign-in time with user that never signed in at the end2067 when sort by oldest_sign_in2068 sorts users by the oldest sign-in time with users that never signed in at the end2069 #last_active_at2070 for a user that has `last_activity_on` set2071 returns `last_activity_on` with current time zone2072 for a user that has `current_sign_in_at` set2073 returns `current_sign_in_at`2074 for a user that has both `current_sign_in_at` & ``last_activity_on`` set2075 returns the latest among `current_sign_in_at` & `last_activity_on`2076 for a user that does not have both `current_sign_in_at` & `last_activity_on` set2077 returns nil2078 #can_be_deactivated?2079 a user who is not active2080 behaves like not eligible for deactivation2081 returns false2082 a user who has activity within the specified minimum inactive days2083 behaves like not eligible for deactivation2084 returns false2085 a user who has signed in within the specified minimum inactive days2086 behaves like not eligible for deactivation2087 returns false2088 a user who has no activity within the specified minimum inactive days2089 behaves like eligible for deactivation2090 returns true2091 a user who has not signed in within the specified minimum inactive days2092 behaves like eligible for deactivation2093 returns true2094 a user who is internal2095 returns false2096 #contributed_projects2097 includes IDs for projects the user has pushed to2098 includes IDs for projects the user has had merge requests merged into2099 doesn't include IDs for unrelated projects2100 doesn't include projects aimed for deletion2101 #fork_of2102 returns a user's fork of a project2103 returns nil if the project does not have a fork network2104 #can_be_removed?2105 no owned groups2106 is expected to be truthy2107 has owned groups2108 is expected to be falsey2109 #solo_owned_groups2110 no owned groups2111 is expected to be empty2112 has owned groups2113 not solo owner2114 with another direct owner2115 is expected to be empty2116 with an inherited owner2117 is expected to be empty2118 solo owner2119 is expected to include #<Group id:645 @group58>2120 avoids N+1 queries2121 #can_remove_self?2122 returns true2123 #recent_push2124 returns the last push event for the user2125 returns the last push event for a project when one is given2126 #authorized_groups2127 is expected to contain exactly #<Group id:650 @group61> and #<Group id:652 @group63>2128 with shared memberships2129 is expected to include #<Group id:663 @group67>2130 is expected not to include #<Group id:673 @group73>2131 #membership_groups2132 is expected to contain exactly #<Group id:675 @group74> and #<Group id:676 @group74/group75>2133 #authorizations_for_projects2134 includes projects that belong to a user, but no other projects2135 includes projects a user has access to, but no other projects2136 with min_access_level2137 when developer access2138 includes projects a user has access to2139 when owner access2140 does not include projects with higher access level2141 #authorized_projects2142 includes user's personal projects2143 includes personal projects user has been given access to2144 includes projects of groups user has been added to2145 does not include projects of groups user has been removed from2146 includes projects shared with user's group2147 does not include destroyed projects user had access to2148 does not include projects of destroyed groups user had access to2149 with a minimum access level2150 includes projects for which the user is an owner2151 includes projects for which the user is a maintainer2152 #projects_where_can_admin_issues2153 includes projects for which the user access level is above or equal to reporter2154 does not include for which the user access level is below reporter2155 does not include archived projects2156 does not include projects for which issues are disabled2157 #authorized_project_mirrors2158 returns project mirrors where the user has access equal to or above the given level2159 #ci_owned_runners2160 behaves like #ci_owned_runners2161 without any projects nor groups2162 does not load any runner2163 returns false for owns_runner?2164 with runner in a personal project2165 behaves like project_owner2166 when the user is the owner of a project2167 loads the runner belonging to the project2168 returns true for owns_runner?2169 with group runner in a non owned group2170 behaves like group_member2171 when the user is a maintainer2172 does not load the runners of the group2173 returns false for owns_runner?2174 when the user is a developer2175 does not load any runner2176 returns false for owns_runner?2177 when the user is a reporter2178 does not load any runner2179 returns false for owns_runner?2180 when the user is a guest2181 does not load any runner2182 returns false for owns_runner?2183 with group runner in an owned group2184 behaves like group_owner2185 when the user is the owner of a one level group2186 loads the runners in the group2187 returns true for owns_runner?2188 with group runner in an owned group and group runner in a different owner subgroup2189 behaves like nested_groups_owner2190 when the user is the owner of a multi-level group2191 loads all the runners in the tree of groups2192 returns true for owns_runner?2193 with personal project runner in an an owned group and a group runner in that same group2194 behaves like nested_groups_owner2195 when the user is the owner of a multi-level group2196 loads all the runners in the tree of groups2197 returns true for owns_runner?2198 with personal project runner in an owned group and a group runner in a subgroup2199 behaves like nested_groups_owner2200 when the user is the owner of a multi-level group2201 loads all the runners in the tree of groups2202 returns true for owns_runner?2203 with personal project runner in an owned group in an owned namespace and a group runner in that group2204 behaves like nested_groups_owner2205 when the user is the owner of a multi-level group2206 loads all the runners in the tree of groups2207 returns true for owns_runner?2208 with personal project runner in an owned namespace, an owned group, a subgroup and a group runner in that subgroup2209 behaves like nested_groups_owner2210 when the user is the owner of a multi-level group2211 loads all the runners in the tree of groups2212 returns true for owns_runner?2213 with a project runner that belong to projects that belong to a not owned group2214 behaves like project_member2215 when the user is a maintainer2216 loads the runners of the project2217 returns true for owns_runner?2218 when the user is a developer2219 does not load any runner2220 returns false for owns_runner?2221 when the user is a reporter2222 does not load any runner2223 returns false for owns_runner?2224 when the user is a guest2225 does not load any runner2226 returns false for owns_runner?2227 with project runners that belong to projects that do not belong to any group2228 does not load any runner2229 with a group runner that belongs to a subgroup of a group owned by another user2230 behaves like group_member2231 when the user is a maintainer2232 does not load the runners of the group2233 returns false for owns_runner?2234 when the user is a developer2235 does not load any runner2236 returns false for owns_runner?2237 when the user is a reporter2238 does not load any runner2239 returns false for owns_runner?2240 when the user is a guest2241 does not load any runner2242 returns false for owns_runner?2243 when FF use_traversal_ids is disabled fallbacks to inefficient implementation2244 behaves like #ci_owned_runners2245 without any projects nor groups2246 does not load any runner2247 returns false for owns_runner?2248 with runner in a personal project2249 behaves like project_owner2250 when the user is the owner of a project2251 loads the runner belonging to the project2252 returns true for owns_runner?2253 with group runner in a non owned group2254 behaves like group_member2255 when the user is a maintainer2256 does not load the runners of the group2257 returns false for owns_runner?2258 when the user is a developer2259 does not load any runner2260 returns false for owns_runner?2261 when the user is a reporter2262 does not load any runner2263 returns false for owns_runner?2264 when the user is a guest2265 does not load any runner2266 returns false for owns_runner?2267 with group runner in an owned group2268 behaves like group_owner2269 when the user is the owner of a one level group2270 loads the runners in the group2271 returns true for owns_runner?2272 with group runner in an owned group and group runner in a different owner subgroup2273 behaves like nested_groups_owner2274 when the user is the owner of a multi-level group2275 loads all the runners in the tree of groups2276 returns true for owns_runner?2277 with personal project runner in an an owned group and a group runner in that same group2278 behaves like nested_groups_owner2279 when the user is the owner of a multi-level group2280 loads all the runners in the tree of groups2281 returns true for owns_runner?2282 with personal project runner in an owned group and a group runner in a subgroup2283 behaves like nested_groups_owner2284 when the user is the owner of a multi-level group2285 loads all the runners in the tree of groups2286 returns true for owns_runner?2287 with personal project runner in an owned group in an owned namespace and a group runner in that group2288 behaves like nested_groups_owner2289 when the user is the owner of a multi-level group2290 loads all the runners in the tree of groups2291 returns true for owns_runner?2292 with personal project runner in an owned namespace, an owned group, a subgroup and a group runner in that subgroup2293 behaves like nested_groups_owner2294 when the user is the owner of a multi-level group2295 loads all the runners in the tree of groups2296 returns true for owns_runner?2297 with a project runner that belong to projects that belong to a not owned group2298 behaves like project_member2299 when the user is a maintainer2300 loads the runners of the project2301 returns true for owns_runner?2302 when the user is a developer2303 does not load any runner2304 returns false for owns_runner?2305 when the user is a reporter2306 does not load any runner2307 returns false for owns_runner?2308 when the user is a guest2309 does not load any runner2310 returns false for owns_runner?2311 with project runners that belong to projects that do not belong to any group2312 does not load any runner2313 with a group runner that belongs to a subgroup of a group owned by another user2314 behaves like group_member2315 when the user is a maintainer2316 does not load the runners of the group2317 returns false for owns_runner?2318 when the user is a developer2319 does not load any runner2320 returns false for owns_runner?2321 when the user is a reporter2322 does not load any runner2323 returns false for owns_runner?2324 when the user is a guest2325 does not load any runner2326 returns false for owns_runner?2327 #projects_with_reporter_access_limited_to2328 returns the projects when using a single project ID2329 returns the projects when using an Array of project IDs2330 returns the projects when using an ActiveRecord relation2331 does not return projects you do not have reporter access to2332 #all_expanded_groups2333 user is not a member of any group2334 returns an empty array2335 user is member of all groups2336 returns all groups2337 user is member of the top group2338 returns all groups2339 user is member of the first child (internal node), branch 12340 returns the groups in the hierarchy2341 user is member of the first child (internal node), branch 22342 returns the groups in the hierarchy2343 user is member of the last child (leaf node)2344 returns the groups in the hierarchy2345 when the user is not saved2346 returns empty when there are no groups or ancestor groups for the user2347 #refresh_authorized_projects2348 refreshes the list of authorized projects2349 stores the correct access levels2350 #access_level=2351 does nothing for an invalid access level2352 assigns the 'admin' access level2353 doesn't clear existing access levels when an invalid access level is passed in2354 accepts string values in addition to symbols2355 #can_read_all_resources?2356 returns false for regular user2357 for admin user2358 when admin mode is disabled2359 returns false2360 when admin mode is enabled2361 returns true2362 #can_admin_all_resources?2363 returns false for regular user2364 for admin user2365 when admin mode is disabled2366 returns false2367 when admin mode is enabled2368 returns true2369 .ghost2370 creates a ghost user if one isn't already present2371 does not create a second ghost user if one is already present2372 when a regular user exists with the username 'ghost'2373 creates a ghost user with a non-conflicting username2374 when a regular user exists with the email 'ghost@example.com'2375 creates a ghost user with a non-conflicting email2376 when a domain allowlist is in place2377 creates a ghost user2378 #update_two_factor_requirement2379 with 2FA requirement on groups2380 requires 2FA2381 uses the shortest grace period2382 with 2FA requirement from expanded groups2383 requires 2FA2384 with 2FA requirement on nested child group2385 requires 2FA2386 with 2FA requirement from shared project's group2387 does not require 2FA2388 without 2FA requirement on groups2389 does not require 2FA2390 falls back to the default grace period2391 when the user is not saved2392 does not raise an ActiveRecord::StatementInvalid statement exception2393 #source_groups_of_two_factor_authentication_requirement2394 when user is direct member of group requiring 2FA2395 returns group requiring 2FA2396 when user is member of group which parent requires 2FA2397 returns group requiring 2FA2398 when user is member of group which child requires 2FA2399 returns group requiring 2FA2400 .active2401 only counts active and non internal users2402 preferred language2403 is English by default2404 #invalidate_issue_cache_counts2405 invalidates cache for issue counter2406 #invalidate_merge_request_cache_counts2407 invalidates cache for Merge Request counter2408 #invalidate_personal_projects_count2409 invalidates cache for personal projects counter2410 #allow_password_authentication_for_web?2411 returns false for ldap user2412 regular user2413 returns true when password authentication is enabled for the web interface2414 returns false when password authentication is disabled for the web interface2415 #allow_password_authentication_for_git?2416 returns false for ldap user2417 regular user2418 returns true when password authentication is enabled for Git2419 returns false when password authentication is disabled Git2420 #assigned_open_merge_requests_count2421 returns number of open merge requests from non-archived projects2422 #review_requested_open_merge_requests_count2423 returns number of open merge requests from non-archived projects2424 #assigned_open_issues_count2425 returns number of open issues from non-archived projects2426 #personal_projects_count2427 returns the number of personal projects using a single query2428 #projects_limit_left2429 returns the number of projects that can be created by the user2430 #ensure_namespace_correct2431 for a new user2432 creates the namespace2433 creates the namespace setting2434 for an existing user2435 when the user is updated2436 when the username or name is changed2437 changes the namespace (just to compare to when username is not changed)2438 updates the namespace path when the username was changed2439 updates the namespace name if the name was changed2440 updates nested routes for the namespace if the name was changed2441 when there is a validation error (namespace name taken) while updating namespace2442 causes the user save to fail2443 adds the namespace errors to the user2444 when the username is not changed2445 does not change the namespace2446 #ensure_user_detail_assigned2447 when no user detail field has been changed2448 does not assign user details before save2449 when a user detail field has been changed2450 assigns user details before save2451 #username_changed_hook2452 for a new user2453 does not trigger system hook2454 for an existing user2455 when the username is changed2456 triggers the rename system hook2457 when the username is not changed2458 does not trigger system hook2459 #will_save_change_to_login?2460 when the username is changed2461 is expected to equal true2462 when the email is changed2463 is expected to equal true2464 when both email and username are changed2465 is expected to equal true2466 when email and username aren't changed2467 is expected to be falsy2468 #sync_attribute?2469 oauth user2470 returns true if name can be synced2471 returns true if email can be synced2472 returns true if location can be synced2473 returns false if name can not be synced2474 returns false if email can not be synced2475 returns false if location can not be synced2476 returns true for all syncable attributes if all syncable attributes can be synced2477 returns false for all syncable attributes but email if no syncable attributes are declared2478 ldap user2479 returns true for email if ldap user2480 returns true for email and location if ldap user and location declared as syncable2481 #confirm_deletion_with_password?2482 password_automatically_set: true, ldap_user: true, password_authentication_disabled: true2483 returns false unless all inputs are true2484 password_automatically_set: true, ldap_user: true, password_authentication_disabled: false2485 returns false unless all inputs are true2486 password_automatically_set: true, ldap_user: false, password_authentication_disabled: true2487 returns false unless all inputs are true2488 password_automatically_set: true, ldap_user: false, password_authentication_disabled: false2489 returns false unless all inputs are true2490 password_automatically_set: false, ldap_user: true, password_authentication_disabled: true2491 returns false unless all inputs are true2492 password_automatically_set: false, ldap_user: true, password_authentication_disabled: false2493 returns false unless all inputs are true2494 password_automatically_set: false, ldap_user: false, password_authentication_disabled: true2495 returns false unless all inputs are true2496 password_automatically_set: false, ldap_user: false, password_authentication_disabled: false2497 returns false unless all inputs are true2498 #delete_async2499 blocks the user then schedules them for deletion if a hard delete is specified2500 schedules user for deletion without blocking them2501 #max_member_access_for_project_ids2502 with RequestStore enabled2503 returns correct roles for different projects2504 does not perform extra queries when asked for projects who have already been found2505 only requests the extra projects when uncached projects are passed2506 with RequestStore disabled2507 returns correct roles for different projects2508 #max_member_access_for_group_ids2509 with RequestStore enabled2510 returns correct roles for different groups2511 does not perform extra queries when asked for groups who have already been found2512 only requests the extra groups when uncached groups are passed2513 with RequestStore disabled2514 returns correct roles for different groups2515 changing a username2516 creates a redirect route2517 deletes the redirect when a user with the old username was created2518 #required_terms_not_accepted?2519 when terms are not enforced2520 is expected to be falsey2521 when terms are enforced2522 is not accepted by the user2523 is accepted by the user2524 auto accepts the term for project bots2525 #increment_failed_attempts!2526 logs failed sign-in attempts2527 does not log failed sign-in attempts when in a GitLab read-only instance2528 #requires_usage_stats_consent?2529 in single-user environment2530 requires user consent after one week2531 requires user consent after one week if there is another ghost user2532 does not require consent in the first week2533 does not require consent if usage stats were set by this user2534 in multi-user environment2535 does not require consent2536 with uploads2537 behaves like model with uploads2538 .destroy2539 with mounted uploader2540 deletes remote uploads2541 with not mounted uploads2542 with local files2543 deletes any FileUploader uploads which are not mounted (PENDING: No reason given)2544 deletes local files (PENDING: No reason given)2545 with remote files2546 deletes any FileUploader uploads which are not mounted (PENDING: No reason given)2547 deletes remote files (PENDING: No reason given)2548 .union_with_user2549 when no user ID is provided2550 returns the input relation2551 when a user ID is provided2552 includes the user object in the returned relation2553 does not re-apply any WHERE conditions on the outer query2554 .optionally_search2555 using nil as the argument2556 returns the current relation2557 using an empty String as the argument2558 returns the current relation2559 using a non-empty String2560 returns users matching the search query2561 .where_not_in2562 without an argument2563 returns the current relation2564 using a list of user IDs2565 excludes the users from the returned relation2566 .reorder_by_name2567 reorders the input relation2568 #notification_settings_for2569 when source is nil2570 returns a blank global notification settings object2571 when source is a Group2572 when group has no existing notification settings2573 when group has no ancestors2574 will be a default Global notification setting2575 when group has ancestors2576 when an ancestor has a level other than Global2577 has the same level set2578 has the same email set2579 when inherit is false2580 does not inherit settings2581 when an ancestor has a Global level but has an email set2582 has the same email set2583 #notification_settings_for_groups2584 when given an ActiveRecord relationship2585 uses #select to maintain lazy querying behavior2586 behaves like notification_settings_for_groups method2587 returns NotificationSetting objects for provided groups2588 when given an Array of Groups2589 behaves like notification_settings_for_groups method2590 returns NotificationSetting objects for provided groups2591 #notification_email_for2592 when group is nil2593 returns global notification email2594 when group has no notification email set2595 returns global notification email2596 when group has notification email set2597 returns group notification email2598 #valid_password?2599 user with disallowed password2600 is expected to eq false2601 using a wrong password2602 is expected to eq false2603 user with autogenerated_password2604 is expected to eq false2605 #generate_otp_backup_codes!2606 with FIPS mode2607 attempts to use #generate_otp_backup_codes_pbkdf2!2608 outside FIPS mode2609 does not attempt to use #generate_otp_backup_codes_pbkdf2!2610 #invalidate_otp_backup_code!2611 with FIPS mode2612 does not attempt to use #invalidate_otp_backup_code_pdkdf2!2613 with a PBKDF2-encrypted password2614 attempts to use #invalidate_otp_backup_code_pdkdf2!2615 outside FIPS mode2616 does not attempt to use #invalidate_otp_backup_code_pdkdf2!2617 #password_expired?2618 when password_expires_at is not set2619 returns false2620 when password_expires_at is in the past2621 returns true2622 when password_expires_at is in the future2623 returns false2624 #password_expired_if_applicable?2625 with a regular user2626 when password_expires_at is not set2627 returns false2628 when password_expires_at is in the past2629 returns true2630 when password_expires_at is in the future2631 returns false2632 when user is a bot2633 behaves like password expired not applicable2634 when password_expires_at is not set2635 returns false2636 when password_expires_at is in the past2637 returns false2638 when password_expires_at is in the future2639 returns false2640 when password_automatically_set is true2641 behaves like password expired not applicable2642 when password_expires_at is not set2643 returns false2644 when password_expires_at is in the past2645 returns false2646 when password_expires_at is in the future2647 returns false2648 when allow_password_authentication is false2649 behaves like password expired not applicable2650 when password_expires_at is not set2651 returns false2652 when password_expires_at is in the past2653 returns false2654 when password_expires_at is in the future2655 returns false2656 #can_log_in_with_non_expired_password?2657 when user can log in2658 returns true2659 when user with expired password2660 returns false2661 when password expiration is not applicable2662 when ldap user2663 returns true2664 when user cannot log in2665 when user is blocked2666 returns false2667 #read_only_attribute?2668 when synced attributes metadata is present2669 delegates to synced_attributes_metadata2670 when synced attributes metadata is not present2671 is false for any attribute2672 .active_without_ghosts2673 returns all active users including active bots but ghost users2674 #dismissed_callout?2675 when no callout dismissal record exists2676 returns false when no ignore_dismissal_earlier_than provided2677 when dismissed callout exists2678 returns true when no ignore_dismissal_earlier_than provided2679 returns true when ignore_dismissal_earlier_than is earlier than dismissed_at2680 returns false when ignore_dismissal_earlier_than is later than dismissed_at2681 #find_or_initialize_callout2682 when callout exists2683 returns existing callout2684 when callout does not exist2685 when feature name is valid2686 initializes a new callout2687 is valid2688 when feature name is not valid2689 initializes a new callout2690 is not valid2691 #dismissed_callout_for_group?2692 when no callout dismissal record exists2693 returns false when no ignore_dismissal_earlier_than provided2694 when dismissed callout exists2695 returns true when no ignore_dismissal_earlier_than provided2696 returns true when ignore_dismissal_earlier_than is earlier than dismissed_at2697 returns false when ignore_dismissal_earlier_than is later than dismissed_at2698 #dismissed_callout_for_project?2699 when no callout dismissal record exists2700 returns false when no ignore_dismissal_earlier_than provided2701 when dismissed callout exists2702 returns true when no ignore_dismissal_earlier_than provided2703 returns true when ignore_dismissal_earlier_than is earlier than dismissed_at2704 returns false when ignore_dismissal_earlier_than is later than dismissed_at2705 #find_or_initialize_group_callout2706 when callout exists2707 returns existing callout2708 when callout does not exist2709 when feature name is valid2710 initializes a new callout2711 is valid2712 when feature name is not valid2713 initializes a new callout2714 is not valid2715 #find_or_initialize_project_callout2716 when callout exists2717 returns existing callout2718 when callout does not exist2719 when feature name is valid2720 initializes a new callout2721 is valid2722 when feature name is not valid2723 initializes a new callout2724 is not valid2725 #hook_attrs2726 with a public email2727 includes id, name, username, avatar_url, and email2728 without a public email2729 does not include email if user's email is private2730 #webhook_email2731 when public email is present2732 returns public email2733 when public email is nil2734 returns [REDACTED]2735 user credit card validation2736 when user is initialized2737 is expected not to be present2738 when create user without credit card validation2739 is expected not to be present2740 when user credit card validation exists2741 is expected to be persisted2742 user detail2743 when user is initialized2744 is expected to be present2745 is expected not to be persisted2746 when user detail exists2747 is expected to be persisted2748 #current_highest_access_level2749 when no memberships exist2750 returns nil2751 when memberships exist2752 returns the highest access level for non requested memberships2753 when after_commit :update_highest_role2754 create user2755 schedules a job in the future2756 when user already exists2757 update user2758 attributes: {:state=>"blocked"}2759 when state was changed2760 when lease is obtained2761 takes the lease but does not release it2762 schedules a job in the future2763 when lease cannot be obtained2764 only schedules one job2765 attributes: {:user_type=>:ghost}2766 when state was changed2767 when lease is obtained2768 takes the lease but does not release it2769 schedules a job in the future2770 when lease cannot be obtained2771 only schedules one job2772 attributes: {:user_type=>:alert_bot}2773 when state was changed2774 when lease is obtained2775 takes the lease but does not release it2776 schedules a job in the future2777 when lease cannot be obtained2778 only schedules one job2779 attributes: {:user_type=>:support_bot}2780 when state was changed2781 when lease is obtained2782 takes the lease but does not release it2783 schedules a job in the future2784 when lease cannot be obtained2785 only schedules one job2786 attributes: {:user_type=>:security_bot}2787 when state was changed2788 when lease is obtained2789 takes the lease but does not release it2790 schedules a job in the future2791 when lease cannot be obtained2792 only schedules one job2793 attributes: {:user_type=>:automation_bot}2794 when state was changed2795 when lease is obtained2796 takes the lease but does not release it2797 schedules a job in the future2798 when lease cannot be obtained2799 only schedules one job2800 when state was not changed2801 does not obtain an exclusive lease2802 destroy user2803 does not obtain an exclusive lease2804 #active_for_authentication?2805 when user is blocked2806 is expected to equal false2807 does not check if LDAP is allowed2808 when user is a ghost user2809 is expected to equal false2810 when user is ldap_blocked2811 rechecks if LDAP is allowed when LDAP is enabled2812 does not check if LDAP is allowed when LDAP is not enabled2813 based on user type2814 user_type: "human", expected_result: true2815 is expected to equal true2816 user_type: "alert_bot", expected_result: false2817 is expected to equal false2818 user_type: "support_bot", expected_result: false2819 is expected to equal false2820 user_type: "security_bot", expected_result: false2821 is expected to equal false2822 user_type: "automation_bot", expected_result: false2823 is expected to equal false2824 #inactive_message2825 when user is blocked2826 is expected to eq :blocked2827 when user is an internal user2828 is expected to equal :forbidden2829 when user is locked2830 is expected to equal :locked2831 when user is blocked pending approval2832 is expected to equal :blocked_pending_approval2833 #password_required?2834 when user is an internal user2835 behaves like does not require password to be present2836 is expected not to validate that :password cannot be empty/falsy2837 is expected not to validate that :password_confirmation cannot be empty/falsy2838 when user is a project bot user2839 behaves like does not require password to be present2840 is expected not to validate that :password cannot be empty/falsy2841 is expected not to validate that :password_confirmation cannot be empty/falsy2842 can_trigger_notifications?2843 when user is not confirmed2844 returns false2845 when user is blocked2846 returns false2847 when user is a ghost2848 returns false2849 when user is confirmed and neither blocked or a ghost2850 returns true2851 bot users2852 behaves like bot users2853 creates the user if it does not exist2854 creates a route for the namespace of the created user2855 does not create a new user if it already exists2856 behaves like bot users2857 creates the user if it does not exist2858 creates a route for the namespace of the created user2859 does not create a new user if it already exists2860 behaves like bot users2861 creates the user if it does not exist2862 creates a route for the namespace of the created user2863 does not create a new user if it already exists2864 behaves like bot users2865 creates the user if it does not exist2866 creates a route for the namespace of the created user2867 does not create a new user if it already exists2868 behaves like bot users2869 creates the user if it does not exist2870 creates a route for the namespace of the created user2871 does not create a new user if it already exists2872 behaves like bot users2873 creates the user if it does not exist2874 creates a route for the namespace of the created user2875 does not create a new user if it already exists2876 behaves like bot user avatars2877 sets the custom avatar for the created bot2878 behaves like bot user avatars2879 sets the custom avatar for the created bot2880 behaves like bot user avatars2881 sets the custom avatar for the created bot2882 behaves like bot user avatars2883 sets the custom avatar for the created bot2884 when bot is the support_bot2885 is expected to be confirmed2886 #confirmation_required_on_sign_in?2887 when user is confirmed2888 is falsey2889 when user is not confirmed2890 is truthy when soft_email_confirmation feature is disabled2891 when soft_email_confirmation feature is enabled2892 is falsey when confirmation period is valid2893 is truthy when confirmation period is expired2894 when user has no confirmation email sent2895 is truthy2896 .dormant2897 returns dormant users2898 .with_no_activity2899 returns users with no activity2900 .by_provider_and_extern_uid2901 calls Identity model scope to ensure case-insensitive query2902 #unset_secondary_emails_matching_deleted_email!2903 when no secondary email matches the deleted email2904 does nothing2905 when a secondary email matches the deleted_email2906 un-sets the secondary email2907 #groups_with_developer_maintainer_project_access2908 is expected to contain exactly #<Group id:1519 @group326>2909 .get_ids_by_ids_or_usernames2910 returns the id of each record matching username2911 returns the id of each record matching user id2912 return the id for all records matching either user id or user name2913 .by_ids_or_usernames2914 returns matching records based on username2915 returns matching records based on id2916 returns matching records based on both username and id2917 .without_forbidden_states2918 does not return blocked or banned users2919 user_project2920 returns users project matched by username and public visibility2921 user_readme2922 returns readme from user project2923 returns nil if project is private2924 behaves like it has loose foreign keys2925 has at least one loose foreign key definition2926 has the deletion trigger present2927 records record deletions2928 cleans up record deletions2929 user age2930 returns age in days2931Gitlab::MergeRequests::CommitMessageGenerator2932 #merge_message2933 behaves like commit message with template2934 returns nil when template is not set in target project2935 when project has custom commit template2936 uses custom template2937 when project has commit template with only the title2938 evaluates only necessary variables2939 when project has commit template with closed issues2940 omits issues and new lines when no issues are mentioned in description2941 when MR closes issues2942 includes them and keeps new line characters2943 when project has commit template with description2944 uses template2945 when description is empty string2946 skips description placeholder and removes new line characters before it2947 when description is nil2948 skips description placeholder and removes new line characters before it2949 when description is blank string2950 skips description placeholder and removes new line characters before it2951 when custom commit template contains placeholder in the middle or beginning of the line2952 uses custom template2953 when description is empty string2954 does not remove new line characters before empty placeholder2955 when project has template with CRLF newlines2956 converts it to LF newlines2957 when description is empty string2958 skips description placeholder and removes new line characters before it2959 when project has merge commit template with first_commit2960 uses first commit2961 when branch has no unmerged commits2962 is an empty string2963 when project has merge commit template with first_multiline_commit2964 uses first multiline commit2965 when branch has no multiline commits2966 is mr title2967 when project has merge commit template with approvers2968 and mr has no approval2969 removes variable and blank line2970 when there is blank line after approved_by2971 removes blank line before it2972 when there is no blank line after approved_by2973 does not remove blank line before it2974 and mr has one approval2975 returns user name and email2976 and mr has multiple approvals2977 returns users names and emails2978 when project has merge commit template with url2979 and merge request has url2980 returns mr url2981 when project has merge commit template with merged_by2982 and current_user is passed2983 returns user name and email2984 when project has commit template with all_commits2985 returns all commit messages2986 with 2 commits2987 returns both messages2988 with over 100 commits2989 returns first 100 commits skipping merge commit2990 when branch has no unmerged commits2991 is an empty string2992 when branch has commit with message over 100kb2993 skips commit body2994 user2995 comes from metrics2996 returns user name and email2997 comes from merge_user2998 returns user name and email2999 when project has commit template with the same variable used twice3000 uses custom template3001 when project has commit template without any variable3002 uses custom template3003 when project has template with all variables3004 uses custom template3005 when project has merge commit template with co_authored_by3006 uses custom template3007 when author and merging user is one of the commit authors3008 skips his mail in coauthors3009 when author and merging user is the only author of commits3010 skips coauthors and empty lines before it3011 when project has merge commit template with co_authored_by3012 when author and merging user are one of the commit authors3013 skips merging user, but does not skip merge request author3014 #squash_message3015 behaves like commit message with template3016 returns nil when template is not set in target project3017 when project has custom commit template3018 uses custom template3019 when project has commit template with only the title3020 evaluates only necessary variables3021 when project has commit template with closed issues3022 omits issues and new lines when no issues are mentioned in description3023 when MR closes issues3024 includes them and keeps new line characters3025 when project has commit template with description3026 uses template3027 when description is empty string3028 skips description placeholder and removes new line characters before it3029 when description is nil3030 skips description placeholder and removes new line characters before it3031 when description is blank string3032 skips description placeholder and removes new line characters before it3033 when custom commit template contains placeholder in the middle or beginning of the line3034 uses custom template3035 when description is empty string3036 does not remove new line characters before empty placeholder3037 when project has template with CRLF newlines3038 converts it to LF newlines3039 when description is empty string3040 skips description placeholder and removes new line characters before it3041 when project has merge commit template with first_commit3042 uses first commit3043 when branch has no unmerged commits3044 is an empty string3045 when project has merge commit template with first_multiline_commit3046 uses first multiline commit3047 when branch has no multiline commits3048 is mr title3049 when project has merge commit template with approvers3050 and mr has no approval3051 removes variable and blank line3052 when there is blank line after approved_by3053 removes blank line before it3054 when there is no blank line after approved_by3055 does not remove blank line before it3056 and mr has one approval3057 returns user name and email3058 and mr has multiple approvals3059 returns users names and emails3060 when project has merge commit template with url3061 and merge request has url3062 returns mr url3063 when project has merge commit template with merged_by3064 and current_user is passed3065 returns user name and email3066 when project has commit template with all_commits3067 returns all commit messages3068 with 2 commits3069 returns both messages3070 with over 100 commits3071 returns first 100 commits skipping merge commit3072 when branch has no unmerged commits3073 is an empty string3074 when branch has commit with message over 100kb3075 skips commit body3076 user3077 comes from metrics3078 returns user name and email3079 comes from merge_user3080 returns user name and email3081 when project has commit template with the same variable used twice3082 uses custom template3083 when project has commit template without any variable3084 uses custom template3085 when project has template with all variables3086 uses custom template3087 when project has merge commit template with co_authored_by3088 uses custom template3089 when author and merging user is one of the commit authors3090 skips his mail in coauthors3091 when author and merging user is the only author of commits3092 skips coauthors and empty lines before it3093 when project has merge commit template with co_authored_by3094 when author and merging user are one of the commit authors3095 skips merge request author, but does not skip merging user3096Issues::CloseService3097 #execute3098 checks if the user is authorized to update the issue3099 does not close the issue when the user is not authorized to do so3100 closes the external issue even when the user is not authorized to do so3101 closes the issue when the user is authorized to do so3102 refreshes the number of open issues3103 invalidates counter cache for assignees3104 does not change escalation status3105 when skip_authorization is true3106 does close the issue even if user is not authorized3107 issue is incident type3108 creates a new escalation resolved escalation status3109 behaves like an incident management tracked event3110 .track_event3111 tracks the event using redis3112 when there is an escalation status3113 changes escalations status to resolved3114 adds a system note3115 adds a timeline event3116 when the escalation status did not change to resolved3117 does not create a system note3118 does not create a timeline event3119 #close_issue3120 with external issue3121 with an active external issue tracker supporting close_issue3122 closes the issue on the external issue tracker3123 with inactive external issue tracker supporting close_issue3124WARNING: An expectation of `:close_issue` was set on `nil`. To allow expectations on `nil` and suppress this message, set `RSpec::Mocks.configuration.allow_message_expectations_on_nil` to `true`. To disallow expectations on `nil`, set `RSpec::Mocks.configuration.allow_message_expectations_on_nil` to `false`. Called from /builds/gitlab-org/gitlab/spec/services/issues/close_service_spec.rb:171:in `block (5 levels) in <top (required)>'.3125 does not close the issue on the external issue tracker3126 with an active external issue tracker not supporting close_issue3127 does not close the issue on the external issue tracker3128 closed by a merge request3129 mentions closure via a merge request3130 behaves like records an onboarding progress action3131 is expected to receive execute({:action=>:issue_auto_closed}) 1 time3132 when user cannot read merge request3133 does not mention merge request3134 updating `metrics.first_mentioned_in_commit_at`3135 when `metrics.first_mentioned_in_commit_at` is not set3136 uses the first commit authored timestamp3137 when `metrics.first_mentioned_in_commit_at` is already set3138 does not update the metrics3139 when merge request has no commits3140 does not update the metrics3141 closed by a commit3142 mentions closure via a commit3143 when user cannot read the commit3144 does not mention the commit id3145 valid params3146 verifies the number of queries3147 closes the issue3148 records closed user3149 sends email to user2 about assign of new issue3150 creates resource state event about the issue being closed3151 marks todos as done3152 deletes milestone issue counters cache3153 when closing the issue fails3154 does not assign a closed_by value for the issue3155 when there is an associated Alert Management Alert3156 when alert can be resolved3157 resolves an alert and sends a system note3158 when alert cannot be resolved3159 writes a warning into the log3160 behaves like does not record an onboarding progress action3161 is expected not to receive new(*(any args)) 0 times3162 when issue is not confidential3163 executes issue hooks3164 when issue is confidential3165 executes confidential issue hooks3166 internal issues disabled3167 does not close the issue3168ProjectsHelper3169 #project_incident_management_setting3170 when incident_management_setting exists3171 return project_incident_management_setting3172 when incident_management_setting does not exist3173 builds incident_management_setting3174 #error_tracking_setting_project_json3175 error tracking setting does not exist3176 returns nil3177 error tracking setting exists3178 api_url present3179 returns error tracking json3180 api_url not present3181 returns nil3182 #project_status_css_class3183 returns appropriate class3184 can_change_visibility_level?3185 returns false if there are no appropriate permissions3186 returns true if there are permissions3187 #can_disable_emails?3188 returns true for the project owner3189 returns false for anyone else3190 returns false if group emails disabled3191 readme_cache_key3192 returns a valid cach key3193 returns a valid cache key if HEAD does not exist3194 #project_list_cache_key3195 includes the route3196 includes the project3197 includes the last activity date3198 includes the controller name3199 includes the controller action3200 includes the application settings3201 includes a version3202 includes whether or not the user can read cross project3203 includes the pipeline status when there is a status3204 includes the user locale3205 includes the user max member access3206 #load_pipeline_status3207 loads the pipeline status in batch3208 #show_no_ssh_key_message?3209 user has no keys3210 returns true3211 user has an ssh key3212 returns false3213 #show_no_password_message?3214 user has password set3215 returns false3216 user has hidden the message3217 returns false3218 user requires a password for Git3219 returns true3220 user requires a personal access token for Git3221 returns true3222 #no_password_message3223 password authentication is enabled for Git3224 returns message prompting user to set password or set up a PAT3225 password authentication is disabled for Git3226 returns message prompting user to set up a PAT3227 #link_to_project3228 returns an HTML link to the project3229 #link_to_member_avatar3230 returns image tag for member avatar3231 returns image tag with avatar class3232 #link_to_member3233 using the default options3234 returns an HTML link to the user3235 HTML escapes the name of the user3236 when user is nil3237 returns "(deleted)"3238 default_clone_protocol3239 when user is not logged in and gitlab protocol is HTTP3240 returns HTTP3241 when user is not logged in and gitlab protocol is HTTPS3242 returns HTTPS3243 #last_push_event3244 returns recent push on the current project3245 when there is no current_user3246 returns nil3247 #show_projects3248 returns true when there are projects3249 returns true when there are no projects but a name is given3250 returns true when there are no projects but personal is present3251 returns false when there are no projects and there is no name3252 #push_to_create_project_command3253 returns the command to push to create project over HTTP3254 returns the command to push to create project over SSH3255 #any_projects?3256 returns true when projects will be returned3257 returns false when no projects will be returned3258 returns true when using a non-empty Array3259 returns false when using an empty Array3260 only executes a single query when a LIMIT is applied3261 #git_user_name3262 parses quotes in name3263 #git_user_email3264 not logged-in3265 returns your@email.com3266 user logged in3267 user has no configured commit email3268 returns the primary email3269 user has a configured commit email3270 returns the commit email3271 show_xcode_link3272 when the repository is xcode compatible3273 returns false if the visitor is not using macos3274 returns true if the visitor is using macos3275 when the repository is not xcode compatible3276 returns false if the visitor is not using macos3277 returns false if the visitor is using macos3278 #explore_projects_tab?3279 returns true when on the "All" tab under "Explore projects"3280 returns true when on the "Trending" tab under "Explore projects"3281 returns true when on the "Starred" tab under "Explore projects"3282 returns false when on the "Your projects" tab3283 #show_merge_request_count3284 enabled flag3285 returns true if compact mode is disabled3286 returns false if compact mode is enabled3287 disabled flag3288 returns false if disabled flag is true3289 returns true if disabled flag is false3290 #show_issue_count?3291 enabled flag3292 returns true if compact mode is disabled3293 returns false if compact mode is enabled3294 disabled flag3295 returns false if disabled flag is true3296 returns true if disabled flag is false3297 #show_auto_devops_implicitly_enabled_banner?3298 global_setting: true, project_setting: nil, builds_visibility: :disabled, gitlab_ci_yml: true, user_access: :developer, result: false3299 is expected to eq false3300 global_setting: true, project_setting: nil, builds_visibility: :disabled, gitlab_ci_yml: true, user_access: :maintainer, result: false3301 is expected to eq false3302 global_setting: true, project_setting: nil, builds_visibility: :disabled, gitlab_ci_yml: true, user_access: :owner, result: false3303 is expected to eq false3304 global_setting: true, project_setting: nil, builds_visibility: :disabled, gitlab_ci_yml: false, user_access: :developer, result: false3305 is expected to eq false3306 global_setting: true, project_setting: nil, builds_visibility: :disabled, gitlab_ci_yml: false, user_access: :maintainer, result: false3307 is expected to eq false3308 global_setting: true, project_setting: nil, builds_visibility: :disabled, gitlab_ci_yml: false, user_access: :owner, result: false3309 is expected to eq false3310 global_setting: true, project_setting: nil, builds_visibility: :enabled, gitlab_ci_yml: true, user_access: :developer, result: false3311 is expected to eq false3312 global_setting: true, project_setting: nil, builds_visibility: :enabled, gitlab_ci_yml: true, user_access: :maintainer, result: false3313 is expected to eq false3314 global_setting: true, project_setting: nil, builds_visibility: :enabled, gitlab_ci_yml: true, user_access: :owner, result: false3315 is expected to eq false3316 global_setting: true, project_setting: nil, builds_visibility: :enabled, gitlab_ci_yml: false, user_access: :developer, result: false3317 is expected to eq false3318 global_setting: true, project_setting: nil, builds_visibility: :enabled, gitlab_ci_yml: false, user_access: :maintainer, result: true3319 is expected to eq true3320 global_setting: true, project_setting: nil, builds_visibility: :enabled, gitlab_ci_yml: false, user_access: :owner, result: true3321 is expected to eq true3322 global_setting: true, project_setting: true, builds_visibility: :disabled, gitlab_ci_yml: true, user_access: :developer, result: false3323 is expected to eq false3324 global_setting: true, project_setting: true, builds_visibility: :disabled, gitlab_ci_yml: true, user_access: :maintainer, result: false3325 is expected to eq false3326 global_setting: true, project_setting: true, builds_visibility: :disabled, gitlab_ci_yml: true, user_access: :owner, result: false3327 is expected to eq false3328 global_setting: true, project_setting: true, builds_visibility: :disabled, gitlab_ci_yml: false, user_access: :developer, result: false3329 is expected to eq false3330 global_setting: true, project_setting: true, builds_visibility: :disabled, gitlab_ci_yml: false, user_access: :maintainer, result: false3331 is expected to eq false3332 global_setting: true, project_setting: true, builds_visibility: :disabled, gitlab_ci_yml: false, user_access: :owner, result: false3333 is expected to eq false3334 global_setting: true, project_setting: true, builds_visibility: :enabled, gitlab_ci_yml: true, user_access: :developer, result: false3335 is expected to eq false3336 global_setting: true, project_setting: true, builds_visibility: :enabled, gitlab_ci_yml: true, user_access: :maintainer, result: false3337 is expected to eq false3338 global_setting: true, project_setting: true, builds_visibility: :enabled, gitlab_ci_yml: true, user_access: :owner, result: false3339 is expected to eq false3340 global_setting: true, project_setting: true, builds_visibility: :enabled, gitlab_ci_yml: false, user_access: :developer, result: false3341 is expected to eq false3342 global_setting: true, project_setting: true, builds_visibility: :enabled, gitlab_ci_yml: false, user_access: :maintainer, result: false3343 is expected to eq false3344 global_setting: true, project_setting: true, builds_visibility: :enabled, gitlab_ci_yml: false, user_access: :owner, result: false3345 is expected to eq false3346 global_setting: true, project_setting: false, builds_visibility: :disabled, gitlab_ci_yml: true, user_access: :developer, result: false3347 is expected to eq false3348 global_setting: true, project_setting: false, builds_visibility: :disabled, gitlab_ci_yml: true, user_access: :maintainer, result: false3349 is expected to eq false3350 global_setting: true, project_setting: false, builds_visibility: :disabled, gitlab_ci_yml: true, user_access: :owner, result: false3351 is expected to eq false3352 global_setting: true, project_setting: false, builds_visibility: :disabled, gitlab_ci_yml: false, user_access: :developer, result: false3353 is expected to eq false3354 global_setting: true, project_setting: false, builds_visibility: :disabled, gitlab_ci_yml: false, user_access: :maintainer, result: false3355 is expected to eq false3356 global_setting: true, project_setting: false, builds_visibility: :disabled, gitlab_ci_yml: false, user_access: :owner, result: false3357 is expected to eq false3358 global_setting: true, project_setting: false, builds_visibility: :enabled, gitlab_ci_yml: true, user_access: :developer, result: false3359 is expected to eq false3360 global_setting: true, project_setting: false, builds_visibility: :enabled, gitlab_ci_yml: true, user_access: :maintainer, result: false3361 is expected to eq false3362 global_setting: true, project_setting: false, builds_visibility: :enabled, gitlab_ci_yml: true, user_access: :owner, result: false3363 is expected to eq false3364 global_setting: true, project_setting: false, builds_visibility: :enabled, gitlab_ci_yml: false, user_access: :developer, result: false3365 is expected to eq false3366 global_setting: true, project_setting: false, builds_visibility: :enabled, gitlab_ci_yml: false, user_access: :maintainer, result: false3367 is expected to eq false3368 global_setting: true, project_setting: false, builds_visibility: :enabled, gitlab_ci_yml: false, user_access: :owner, result: false3369 is expected to eq false3370 #can_admin_project_member?3371 when user is project owner3372 returns true for owner of project3373 when user is not a project owner3374 user_project_role: :maintainer, can_admin: true3375 resolves if the user can import members3376 user_project_role: :developer, can_admin: false3377 resolves if the user can import members3378 user_project_role: :reporter, can_admin: false3379 resolves if the user can import members3380 user_project_role: :guest, can_admin: false3381 resolves if the user can import members3382 #metrics_external_dashboard_url3383 metrics_setting exists3384 returns external_dashboard_url3385 metrics_setting does not exist3386 returns nil3387 #grafana_integration_url3388 is expected to eq nil3389 grafana integration exists3390 is expected to eq "https://grafana.example.com"3391 #grafana_integration_token3392 is expected to eq nil3393 grafana integration exists3394 is expected to eq "************************************************"3395 #grafana_integration_enabled?3396 is expected to eq nil3397 grafana integration exists3398 is expected to eq true3399 #project_license_name(project)3400 gitaly is working appropriately3401 returns the license name3402 memoizes the value3403 gitaly is unreachable3404 Gitlab::Git::CommandError3405 behaves like returns nil and tracks exception3406 is expected to be nil3407 tracks the exception3408 memoizes the nil value3409 GRPC::Unavailable3410 behaves like returns nil and tracks exception3411 is expected to be nil3412 tracks the exception3413 memoizes the nil value3414 GRPC::DeadlineExceeded3415 behaves like returns nil and tracks exception3416 is expected to be nil3417 tracks the exception3418 memoizes the nil value3419 #show_terraform_banner?3420 the project does not contain terraform files3421 is expected to be falsey3422 the project contains terraform files3423 is expected to be truthy3424 the project already has a terraform state3425 is expected to be falsey3426 the :show_terraform_banner feature flag is disabled3427 is expected to be falsey3428 #project_title3429 enqueues the elements in the breadcrumb schema list3430 #project_permissions_panel_data3431 includes project_permissions_settings3432 includes membersPagePath3433 #project_classes3434 is expected to be a kind of String3435 PUC highlighting enabled3436 is expected to include "project-highlight-puc"3437 PUC highlighting disabled3438 is expected not to include "project-highlight-puc"3439 #delete_confirm_phrase3440 includes the project path with namespace3441 fork security helpers3442 #able_to_see_merge_requests?3443 can_read_merge_request: false, merge_requests_enabled: false, expected: false3444 returns the correct response3445 can_read_merge_request: true, merge_requests_enabled: false, expected: false3446 returns the correct response3447 can_read_merge_request: false, merge_requests_enabled: true, expected: false3448 returns the correct response3449 can_read_merge_request: true, merge_requests_enabled: true, expected: true3450 returns the correct response3451 #able_to_see_issues?3452 can_read_issues: false, issues_enabled: false, expected: false3453 returns the correct response3454 can_read_issues: true, issues_enabled: false, expected: false3455 returns the correct response3456 can_read_issues: false, issues_enabled: true, expected: false3457 returns the correct response3458 can_read_issues: true, issues_enabled: true, expected: true3459 returns the correct response3460 #fork_button_disabled_tooltip3461 has_user: false, can_fork_project: false, can_create_fork: false, expected: nil3462 returns tooltip text when user lacks privilege3463 has_user: true, can_fork_project: true, can_create_fork: true, expected: nil3464 returns tooltip text when user lacks privilege3465 has_user: true, can_fork_project: false, can_create_fork: true, expected: "You don't have permission to fork this project"3466 returns tooltip text when user lacks privilege3467 has_user: true, can_fork_project: true, can_create_fork: false, expected: "You have reached your project limit"3468 returns tooltip text when user lacks privilege3469 #import_from_bitbucket_message3470 behaves like configure import method modal3471 as a user3472 returns a link to contact an administrator3473 as an administrator3474 returns a link to configure bitbucket3475 #import_from_gitlab_message3476 behaves like configure import method modal3477 as a user3478 returns a link to contact an administrator3479 as an administrator3480 returns a link to configure bitbucket3481 #show_inactive_project_deletion_banner?3482 with no project3483 behaves like does not show the banner3484 is expected to equal false3485 with unsaved project3486 behaves like does not show the banner3487 is expected to equal false3488 with the setting disabled3489 behaves like does not show the banner3490 is expected to equal false3491 with the setting enabled3492 with an active project3493 behaves like does not show the banner3494 is expected to equal false3495 with an inactive project3496 shows the banner3497 #inactive_project_deletion_date3498 returns the deletion date3499 #can_admin_associated_clusters?3500 when project has a cluster3501 if user can admin cluster3502 is expected to be truthy3503 if user can not admin cluster3504 is expected to be falsey3505 when project has a group cluster3506 if user can admin cluster3507 is expected to be truthy3508 if user can not admin cluster3509 is expected to be falsey3510 when project doesn't have a cluster3511 if user can admin cluster3512 is expected to be falsey3513 if user can not admin cluster3514 is expected to be falsey3515 #show_clusters_alert?3516 is_gitlab_com: false, user_can_admin_cluster: false, expected: false3517 is expected to eq false3518 is_gitlab_com: false, user_can_admin_cluster: true, expected: false3519 is expected to eq false3520 is_gitlab_com: true, user_can_admin_cluster: false, expected: false3521 is expected to eq false3522 is_gitlab_com: true, user_can_admin_cluster: true, expected: true3523 is expected to eq true3524 #clusters_deprecation_alert_message3525 if user has an active licence3526 displays the correct messagee3527 if user doesn't have an active licence3528 displays the correct message3529 #project_coverage_chart_data_attributes3530 returns project data to render coverage chart3531 #localized_project_human_access3532 key: 0, localized_project_human_access: "No access"3533 with correct key3534 key: 5, localized_project_human_access: "Minimal Access"3535 with correct key3536 key: 10, localized_project_human_access: "Guest"3537 with correct key3538 key: 20, localized_project_human_access: "Reporter"3539 with correct key3540 key: 30, localized_project_human_access: "Developer"3541 with correct key3542 key: 40, localized_project_human_access: "Maintainer"3543 with correct key3544 key: 50, localized_project_human_access: "Owner"3545 with correct key3546AutoMerge::BaseService3547 #execute3548 sets properies to the merge request3549 yields block3550 returns activated strategy name3551 when merge parameters are given3552 sets merge parameters3553 when strategy is merge when pipeline succeeds3554 sets the auto merge strategy3555 returns activated strategy name3556 calls AutoMergeProcessWorker3557 when failed to save merge request3558 does not yield block3559 returns failed3560 tracks the exception3561 when exception happens in yield block3562 returns failed status3563 rollback the transaction3564 tracks the exception3565 #update3566 when merge params are specified3567 updates merge params3568 #cancel3569 behaves like Canceled or Dropped3570 removes properies from the merge request3571 yields block3572 returns success status3573 when merge params are set3574 removes merge parameters3575 when failed to save3576 does not yield block3577 when failed to save merge request3578 returns error status3579 when exception happens in yield block3580 returns error3581 rollback the transaction3582 tracks the exception3583 #abort3584 behaves like Canceled or Dropped3585 removes properies from the merge request3586 yields block3587 returns success status3588 when merge params are set3589 removes merge parameters3590 when failed to save3591 does not yield block3592 when failed to save3593 returns error status3594 when exception happens in yield block3595 returns error3596 rollback the transaction3597 tracks the exception3598VisibilityLevelHelper3599 visibility_icon_description3600 used with a Project3601 delegates projects to #project_visibility_icon_description3602 used with a ProjectPresenter3603 delegates projects to #project_visibility_icon_description3604 used with a Group3605 delegates groups to #group_visibility_icon_description3606 visibility_level_label3607 level_value: 0, level_name: "Private"3608 returns the name of the visibility level3609 level_value: 10, level_name: "Internal"3610 returns the name of the visibility level3611 level_value: 20, level_name: "Public"3612 returns the name of the visibility level3613 visibility_level_description3614 used with a Project3615 returns different project related descriptions depending on visibility level3616 used with a Group3617 returns different group related descriptions depending on visibility level3618 disallowed_visibility_level?3619 forks3620 disallows levels3621 non-forked project3622 disallows levels3623 group3624 disallows levels3625 sub-group3626 disallows levels3627 snippet3628 disallows levels3629 selected_visibility_level3630 requested_level: 20, max_allowed: 20, global_default_level: 20, restricted_levels: [], expected: 203631 provides correct visibility level for forked project3632 provides correct visibility level for project in group3633 requested_level: 20, max_allowed: 20, global_default_level: 20, restricted_levels: [20], expected: 103634 provides correct visibility level for forked project3635 provides correct visibility level for project in group3636 requested_level: 10, max_allowed: 20, global_default_level: 20, restricted_levels: [], expected: 103637 provides correct visibility level for forked project3638 provides correct visibility level for project in group3639 requested_level: 10, max_allowed: 0, global_default_level: 0, restricted_levels: [], expected: 03640 provides correct visibility level for forked project3641 provides correct visibility level for project in group3642 requested_level: 0, max_allowed: 20, global_default_level: 20, restricted_levels: [], expected: 03643 provides correct visibility level for forked project3644 provides correct visibility level for project in group3645 requested_level: 20, max_allowed: 0, global_default_level: 10, restricted_levels: [], expected: 03646 provides correct visibility level for forked project3647 provides correct visibility level for project in group3648 requested_level: 20, max_allowed: 10, global_default_level: 20, restricted_levels: [], expected: 103649 provides correct visibility level for forked project3650 provides correct visibility level for project in group3651 requested_level: 20, max_allowed: 0, global_default_level: 20, restricted_levels: [], expected: 03652 provides correct visibility level for forked project3653 provides correct visibility level for project in group3654 requested_level: 20, max_allowed: 10, global_default_level: 10, restricted_levels: [], expected: 103655 provides correct visibility level for forked project3656 provides correct visibility level for project in group3657 requested_level: 20, max_allowed: 20, global_default_level: 10, restricted_levels: [], expected: 203658 provides correct visibility level for forked project3659 provides correct visibility level for project in group3660 #available_visibility_levels3661 behaves like available visibility level3662 excludes disallowed visibility levels3663 restricted_visibility_levels: [], expected: [0, 10, 20]3664 is expected to eq [0, 10, 20]3665 restricted_visibility_levels: [0], expected: [10, 20]3666 is expected to eq [10, 20]3667 restricted_visibility_levels: [0, 10], expected: [20]3668 is expected to eq [20]3669 restricted_visibility_levels: [0, 20], expected: [10]3670 is expected to eq [10]3671 restricted_visibility_levels: [10], expected: [0, 20]3672 is expected to eq [0, 20]3673 restricted_visibility_levels: [10, 0], expected: [20]3674 is expected to eq [20]3675 restricted_visibility_levels: [10, 20], expected: [0]3676 is expected to eq [0]3677 restricted_visibility_levels: [20], expected: [0, 10]3678 is expected to eq [0, 10]3679 restricted_visibility_levels: [20, 0], expected: [10]3680 is expected to eq [10]3681 restricted_visibility_levels: [20, 10], expected: [0]3682 is expected to eq [0]3683 behaves like available visibility level3684 excludes disallowed visibility levels3685 restricted_visibility_levels: [], expected: [0, 10, 20]3686 is expected to eq [0, 10, 20]3687 restricted_visibility_levels: [0], expected: [10, 20]3688 is expected to eq [10, 20]3689 restricted_visibility_levels: [0, 10], expected: [20]3690 is expected to eq [20]3691 restricted_visibility_levels: [0, 20], expected: [10]3692 is expected to eq [10]3693 restricted_visibility_levels: [10], expected: [0, 20]3694 is expected to eq [0, 20]3695 restricted_visibility_levels: [10, 0], expected: [20]3696 is expected to eq [20]3697 restricted_visibility_levels: [10, 20], expected: [0]3698 is expected to eq [0]3699 restricted_visibility_levels: [20], expected: [0, 10]3700 is expected to eq [0, 10]3701 restricted_visibility_levels: [20, 0], expected: [10]3702 is expected to eq [10]3703 restricted_visibility_levels: [20, 10], expected: [0]3704 is expected to eq [0]3705 behaves like available visibility level3706 excludes disallowed visibility levels3707 restricted_visibility_levels: [], expected: [0, 10, 20]3708 is expected to eq [0, 10, 20]3709 restricted_visibility_levels: [0], expected: [10, 20]3710 is expected to eq [10, 20]3711 restricted_visibility_levels: [0, 10], expected: [20]3712 is expected to eq [20]3713 restricted_visibility_levels: [0, 20], expected: [10]3714 is expected to eq [10]3715 restricted_visibility_levels: [10], expected: [0, 20]3716 is expected to eq [0, 20]3717 restricted_visibility_levels: [10, 0], expected: [20]3718 is expected to eq [20]3719 restricted_visibility_levels: [10, 20], expected: [0]3720 is expected to eq [0]3721 restricted_visibility_levels: [20], expected: [0, 10]3722 is expected to eq [0, 10]3723 restricted_visibility_levels: [20, 0], expected: [10]3724 is expected to eq [10]3725 restricted_visibility_levels: [20, 10], expected: [0]3726 is expected to eq [0]3727 behaves like available visibility level3728 excludes disallowed visibility levels3729 restricted_visibility_levels: [], expected: [0, 10, 20]3730 is expected to eq [0, 10, 20]3731 restricted_visibility_levels: [0], expected: [10, 20]3732 is expected to eq [10, 20]3733 restricted_visibility_levels: [0, 10], expected: [20]3734 is expected to eq [20]3735 restricted_visibility_levels: [0, 20], expected: [10]3736 is expected to eq [10]3737 restricted_visibility_levels: [10], expected: [0, 20]3738 is expected to eq [0, 20]3739 restricted_visibility_levels: [10, 0], expected: [20]3740 is expected to eq [20]3741 restricted_visibility_levels: [10, 20], expected: [0]3742 is expected to eq [0]3743 restricted_visibility_levels: [20], expected: [0, 10]3744 is expected to eq [0, 10]3745 restricted_visibility_levels: [20, 0], expected: [10]3746 is expected to eq [10]3747 restricted_visibility_levels: [20, 10], expected: [0]3748 is expected to eq [0]3749 #snippets_selected_visibility_level3750 returns the selected visibility level3751 fallbacks using the lowest available visibility level when selected level isn't available3752 multiple_visibility_levels_restricted?3753 restricted_visibility_levels: [20], expected: false3754 is expected to eq false3755 restricted_visibility_levels: [20, 10], expected: true3756 is expected to eq true3757 restricted_visibility_levels: [20, 10, 0], expected: true3758 is expected to eq true3759 all_visibility_levels_restricted?3760 restricted_visibility_levels: [20], expected: false3761 is expected to eq false3762 restricted_visibility_levels: [20, 10], expected: false3763 is expected to eq false3764 restricted_visibility_levels: [0, 10, 20], expected: true3765 is expected to eq true3766 #visibility_level_options3767 returns the desired mapping3768Ci::JobEntity3769 contains started3770 contains complete to indicate if a pipeline is completed3771 contains paths to job page action3772 does not contain sensitive information3773 contains whether it is playable3774 contains timestamps3775 contains details3776 contains queued_at3777 contains queued_duration3778 when job is retryable3779 contains cancel path3780 when job is cancelable3781 contains cancel path3782 when job is a regular job3783 does not contain path to play action3784 is not a playable build3785 when job is a manual action3786 when user is allowed to trigger action3787 contains path to play action3788 is a playable action3789 when user is not allowed to trigger action3790 does not contain path to play action3791 is not a playable action3792 when job is scheduled3793 contains path to unschedule action3794 contains scheduled_at3795 when job is running3796 contains started_at3797 when job is generic commit status3798 contains paths to target action3799 does not contain paths to other action paths3800 contains timestamps3801 contains details3802 when job failed3803 contains details3804 states that it failed3805 indicates the failure reason on tooltip3806 includes a callout message with a verbose output3807 states that it is not recoverable3808 when job is allowed to fail3809 contains details3810 states that it failed3811 indicates the failure reason on tooltip3812 includes a callout message with a verbose output3813 states that it is not recoverable3814 when the job failed with a script failure3815 does not include callout message or recoverable keys3816 when job failed and is recoverable3817 states it is recoverable3818 when job passed3819 does not include callout message or recoverable keys3820 when job is a bridge3821 does not include build path3822 does not include cancel path3823ProjectPresenter3824 #license_short_name3825 when project.repository has a license_key3826 returns the nickname of the license if present3827 returns the name of the license if nickname is not present3828 when project.repository has no license_key but a license_blob3829 returns LICENSE3830 #default_view3831 user not signed in3832 when repository is empty3833 returns wiki if user has repository access and can read wiki, which exists3834 returns activity if user has repository access and can read wiki, which does not exist3835 returns issues if user does not have repository access, but can read issues3836 returns activity if user can read neither wiki nor issues3837 when repository is not empty3838 returns files and readme if user has repository access3839 returns wiki if user does not have repository access and can read wiki, which exists3840 returns activity if user does not have repository or wiki access3841 returns releases anchor3842 user signed in3843 when the user is allowed to see the code3844 returns the project view3845 with wikis enabled and the right policy for the user3846 returns wiki if the user has the right policy and the wiki exists3847 returns activity if the user does not have the right policy3848 with issues as a feature available3849 return issues3850 with no activity, no wikies and no issues3851 returns activity as default3852 #can_current_user_push_code?3853 empty repo3854 returns true if user can push_code3855 returns false if user cannot push_code3856 not empty repo3857 returns true if user can push to default branch3858 returns false if default branch is protected3859 if no current user3860 returns false3861 statistics anchors (empty repo)3862 #storage_anchor_data3863 returns storage data3864 #releases_anchor_data3865 does not return release count3866 #commits_anchor_data3867 returns commits data3868 #branches_anchor_data3869 returns branches data3870 #tags_anchor_data3871 returns tags data3872 statistics anchors3873 #storage_anchor_data3874 returns storage data without usage quotas link for non-admin users3875 returns storage data with usage quotas link for admin users3876 #releases_anchor_data3877 returns release count if user can read release3878 returns nil if user cannot read release3879 user not signed in3880 returns nil if user is signed out3881 #commits_anchor_data3882 returns commits data3883 #branches_anchor_data3884 returns branches data3885 #tags_anchor_data3886 returns tags data3887 #new_file_anchor_data3888 returns new file data if user can push3889 returns nil if user cannot push3890 when the project is empty3891 is empty for a developer3892 #readme_anchor_data3893 when user can push and README does not exists3894 returns anchor data3895 when README exists3896 returns anchor data3897 #changelog_anchor_data3898 when user can push and CHANGELOG does not exist3899 returns anchor data3900 when CHANGELOG exists3901 returns anchor data3902 #license_anchor_data3903 when user can push and LICENSE does not exist3904 returns anchor data3905 when LICENSE exists3906 returns anchor data3907 #contribution_guide_anchor_data3908 when user can push and CONTRIBUTING does not exist3909 returns anchor data3910 when CONTRIBUTING exists3911 returns anchor data3912 #autodevops_anchor_data3913 returns nil if builds feature is not available3914 when Auto Devops is enabled3915 returns anchor data3916 when user can admin pipeline and CI yml does not exist3917 returns anchor data3918 #kubernetes_cluster_anchor_data3919 when user can create Kubernetes cluster3920 returns link to cluster if only one exists3921 returns link to clusters page if more than one exists3922 returns link to create a cluster if no cluster exists3923 when user cannot create Kubernetes cluster3924 returns nil3925 #upload_anchor_data3926 when a user can push to the default branch3927 returns upload_anchor_data3928 when the user cannot push to default branch3929 returns nil3930 #statistics_buttons3931 orders the items correctly3932 #repo_statistics_buttons3933 empty repo3934 includes a button to configure integrations for maintainers3935 does not include a button if not a maintainer3936 for a guest user3937 orders the items correctly3938 for a developer3939 orders the items correctly3940 initialized repo3941 orders the items correctly3942 #can_setup_review_app?3943 when the ci/cd file is missing3944 is expected to be truthy3945 when the ci/cd file is not missing3946 and the user can create a cluster3947 and there is no cluster associated to this project3948 is expected to be truthy3949 and there is already a cluster associated to this project3950 is expected to be falsey3951 when a group cluster is instantiated3952 and the project belongs to this group3953 is expected to be falsey3954 and the project does not belong to this group3955 is expected to be truthy3956 and there is already an instance cluster3957 is false3958 and the user cannot create a cluster3959 is expected to be falsey3960Environments::StopService3961 #execute3962 with a deployment3963 plays the stop action3964 without stop action3965 stops the environment3966 force option3967 does not play the stop action when forced3968 when an environment has already been stopped3969 does not play the stop action3970 without a deployment3971 stops the environment3972 when the actor is a reporter3973 does not stop the environment3974 #execute_for_branch3975 when environment with review app exists3976 when user has permission to stop environment3977 when environment is associated with removed branch3978 stops environment3979 when environment is associated with different branch3980 does not stop environment3981 when specified branch does not exist3982 does not stop environment3983 when no branch not specified3984 does not stop environment3985 when environment is not stopped3986 does not stop environment3987 when user does not have permission to stop environment3988 when user has no access to manage deployments3989 does not stop environment3990 when branch for stop action is protected3991 does not stop environment3992 when there is no environment associated with review app3993 when user has permission to stop environments3994 does not stop environment3995 when environment does not exist3996 does not raise error3997 #execute_for_merge_request_pipeline3998 has active environment at first3999 when user is a developer4000 stops the active environment4001 and merge request has associated created_environments4002 stops the associated created_environments4003 does not affect environments that are not associated to the merge request4004 when pipeline is a branch pipeline for merge request4005 does not stop the active environment4006 with environment related jobs4007 does not stop environments that was not started by the merge request4008 when user is a reporter4009 does not stop the active environment4010 when pipeline is not associated with environments4011 does not raise exception4012 when pipeline is not a pipeline for merge request4013 does not stop the active environment4014Namespace::PackageSetting4015 relationships4016 is expected to belong to namespace required: false4017 validations4018 is expected to validate that :namespace cannot be empty/falsy4019 #maven_duplicates_allowed4020 is expected to allow :maven_duplicates_allowed to be ‹true›4021 is expected to allow :maven_duplicates_allowed to be ‹false›4022 is expected not to allow :maven_duplicates_allowed to be ‹nil›4023 is expected to allow :generic_duplicates_allowed to be ‹true›4024 is expected to allow :generic_duplicates_allowed to be ‹false›4025 is expected not to allow :generic_duplicates_allowed to be ‹nil›4026 regex values4027 is expected to allow :maven_duplicate_exception_regex to be ‹"SNAPSHOT"›4028 is expected to allow :maven_duplicate_exception_regex to be ‹".*"›4029 is expected to allow :maven_duplicate_exception_regex to be ‹"v.+"›4030 is expected to allow :maven_duplicate_exception_regex to be ‹"v10.1.*"›4031 is expected to allow :maven_duplicate_exception_regex to be ‹"(?:v.+|SNAPSHOT|TEMP)"›4032 is expected not to allow :maven_duplicate_exception_regex to be ‹"["›4033 is expected not to allow :maven_duplicate_exception_regex to be ‹"(?:v.+|SNAPSHOT|TEMP"›4034 is expected to allow :generic_duplicate_exception_regex to be ‹"SNAPSHOT"›4035 is expected to allow :generic_duplicate_exception_regex to be ‹".*"›4036 is expected to allow :generic_duplicate_exception_regex to be ‹"v.+"›4037 is expected to allow :generic_duplicate_exception_regex to be ‹"v10.1.*"›4038 is expected to allow :generic_duplicate_exception_regex to be ‹"(?:v.+|SNAPSHOT|TEMP)"›4039 is expected not to allow :generic_duplicate_exception_regex to be ‹"["›4040 is expected not to allow :generic_duplicate_exception_regex to be ‹"(?:v.+|SNAPSHOT|TEMP"›4041 #duplicates_allowed?4042 package types with package_settings4043 duplicates_allowed: true, duplicate_exception_regex: "", result: true4044 for maven_package4045 is expected to equal true4046 duplicates_allowed: false, duplicate_exception_regex: "", result: false4047 for maven_package4048 is expected to equal false4049 duplicates_allowed: false, duplicate_exception_regex: ".*", result: true4050 for maven_package4051 is expected to equal true4052 duplicates_allowed: false, duplicate_exception_regex: "fo.*", result: true4053 for maven_package4054 is expected to equal true4055 duplicates_allowed: false, duplicate_exception_regex: "be.*", result: true4056 for maven_package4057 is expected to equal true4058 duplicates_allowed: true, duplicate_exception_regex: "", result: true4059 for generic_package4060 is expected to equal true4061 duplicates_allowed: false, duplicate_exception_regex: "", result: false4062 for generic_package4063 is expected to equal false4064 duplicates_allowed: false, duplicate_exception_regex: ".*", result: true4065 for generic_package4066 is expected to equal true4067 duplicates_allowed: false, duplicate_exception_regex: "fo.*", result: true4068 for generic_package4069 is expected to equal true4070 duplicates_allowed: false, duplicate_exception_regex: "be.*", result: true4071 for generic_package4072 is expected to equal true4073 package types without package_settings4074 raises an error4075 raises an error4076 raises an error4077 raises an error4078 raises an error4079 raises an error4080 raises an error4081 package forwarding attributes4082 behaves like a cascading namespace setting boolean attribute4083 #maven_package_requests_forwarding4084 when there is no parent4085 and the value is not nil4086 returns the local value4087 and the value is nil4088 returns the application settings value4089 when parent does not lock the attribute4090 and value is not nil4091 returns local setting when present4092 returns the parent value when local value is nil4093 returns the correct dirty value4094 does not return the application setting value when parent value is false4095 and the value is nil4096 cascades to the application settings value4097 when multiple ancestors set a value4098 returns the closest ancestor value4099 when parent locks the attribute4100 returns the parent value4101 does not allow the local value to be saved4102 when the application settings locks the attribute4103 returns the application setting value4104 does not allow the local value to be saved4105 when parent locked the attribute then the application settings locks it4106 returns the application setting value4107 #maven_package_requests_forwarding?4108 aliases the method when the attribute is a boolean4109 #maven_package_requests_forwarding=4110 does not save the value locally when it matches the cascaded value4111 #maven_package_requests_forwarding_locked?4112 when attribute is locked by self4113 is not locked by default4114 is locked when including self4115 when parent does not lock the attribute4116 behaves like not locked4117 is not locked by an ancestor4118 is not locked by application setting4119 does not return a locked namespace4120 when parent locks the attribute4121 is locked by an ancestor4122 is not locked by application setting4123 returns a locked namespace settings object4124 when not locked by application settings4125 behaves like not locked4126 is not locked by an ancestor4127 is not locked by application setting4128 does not return a locked namespace4129 when locked by application settings4130 is not locked by an ancestor4131 is locked by application setting4132 does not return a locked namespace4133 #lock_maven_package_requests_forwarding=4134 when parent locks the attribute4135 does not allow the attribute to be saved4136 when parent does not lock the attribute4137 allows the lock to be set when the attribute is not nil4138 does not allow the lock to be saved when the attribute is nil4139 copies the cascaded value when locking the attribute if the local value is nil4140 when application settings locks the attribute4141 does not allow the attribute to be saved4142 when application_settings does not lock the attribute4143 allows the attribute to be saved4144 after update callback4145 clears descendant locks4146 behaves like a cascading namespace setting boolean attribute4147 #pypi_package_requests_forwarding4148 when there is no parent4149 and the value is not nil4150 returns the local value4151 and the value is nil4152 returns the application settings value4153 when parent does not lock the attribute4154 and value is not nil4155 returns local setting when present4156 returns the parent value when local value is nil4157 returns the correct dirty value4158 does not return the application setting value when parent value is false4159 and the value is nil4160 cascades to the application settings value4161 when multiple ancestors set a value4162 returns the closest ancestor value4163 when parent locks the attribute4164 returns the parent value4165 does not allow the local value to be saved4166 when the application settings locks the attribute4167 returns the application setting value4168 does not allow the local value to be saved4169 when parent locked the attribute then the application settings locks it4170 returns the application setting value4171 #pypi_package_requests_forwarding?4172 aliases the method when the attribute is a boolean4173 #pypi_package_requests_forwarding=4174 does not save the value locally when it matches the cascaded value4175 #pypi_package_requests_forwarding_locked?4176 when attribute is locked by self4177 is not locked by default4178 is locked when including self4179 when parent does not lock the attribute4180 behaves like not locked4181 is not locked by an ancestor4182 is not locked by application setting4183 does not return a locked namespace4184 when parent locks the attribute4185 is locked by an ancestor4186 is not locked by application setting4187 returns a locked namespace settings object4188 when not locked by application settings4189 behaves like not locked4190 is not locked by an ancestor4191 is not locked by application setting4192 does not return a locked namespace4193 when locked by application settings4194 is not locked by an ancestor4195 is locked by application setting4196 does not return a locked namespace4197 #lock_pypi_package_requests_forwarding=4198 when parent locks the attribute4199 does not allow the attribute to be saved4200 when parent does not lock the attribute4201 allows the lock to be set when the attribute is not nil4202 does not allow the lock to be saved when the attribute is nil4203 copies the cascaded value when locking the attribute if the local value is nil4204 when application settings locks the attribute4205 does not allow the attribute to be saved4206 when application_settings does not lock the attribute4207 allows the attribute to be saved4208 after update callback4209 clears descendant locks4210 behaves like a cascading namespace setting boolean attribute4211 #npm_package_requests_forwarding4212 when there is no parent4213 and the value is not nil4214 returns the local value4215 and the value is nil4216 returns the application settings value4217 when parent does not lock the attribute4218 and value is not nil4219 returns local setting when present4220 returns the parent value when local value is nil4221 returns the correct dirty value4222 does not return the application setting value when parent value is false4223 and the value is nil4224 cascades to the application settings value4225 when multiple ancestors set a value4226 returns the closest ancestor value4227 when parent locks the attribute4228 returns the parent value4229 does not allow the local value to be saved4230 when the application settings locks the attribute4231 returns the application setting value4232 does not allow the local value to be saved4233 when parent locked the attribute then the application settings locks it4234 returns the application setting value4235 #npm_package_requests_forwarding?4236 aliases the method when the attribute is a boolean4237 #npm_package_requests_forwarding=4238 does not save the value locally when it matches the cascaded value4239 #npm_package_requests_forwarding_locked?4240 when attribute is locked by self4241 is not locked by default4242 is locked when including self4243 when parent does not lock the attribute4244 behaves like not locked4245 is not locked by an ancestor4246 is not locked by application setting4247 does not return a locked namespace4248 when parent locks the attribute4249 is locked by an ancestor4250 is not locked by application setting4251 returns a locked namespace settings object4252 when not locked by application settings4253 behaves like not locked4254 is not locked by an ancestor4255 is not locked by application setting4256 does not return a locked namespace4257 when locked by application settings4258 is not locked by an ancestor4259 is locked by application setting4260 does not return a locked namespace4261 #lock_npm_package_requests_forwarding=4262 when parent locks the attribute4263 does not allow the attribute to be saved4264 when parent does not lock the attribute4265 allows the lock to be set when the attribute is not nil4266 does not allow the lock to be saved when the attribute is nil4267 copies the cascaded value when locking the attribute if the local value is nil4268 when application settings locks the attribute4269 does not allow the attribute to be saved4270 when application_settings does not lock the attribute4271 allows the attribute to be saved4272 after update callback4273 clears descendant locks4274MergeRequests::CleanupRefsService4275 .schedule4276 creates a merge request cleanup schedule4277 #execute4278 when merge request is closed4279 when closed 14 days ago4280 behaves like service that cleans up merge request refs4281 creates keep around ref and deletes merge request refs4282 when merge request has no head ref4283 does not fail4284 when merge request has merge ref4285 caches merge ref sha and deletes merge ref4286 when merge ref sha cannot be cached4287 behaves like service that does not clean up merge request refs4288 does not delete merge request refs4289 when keep around ref cannot be created4290 behaves like service that does not clean up merge request refs4291 does not delete merge request refs4292 when a git error is raised4293 Gitlab::Git::Repository::GitError4294 behaves like service that does not clean up merge request refs4295 does not delete merge request refs4296 Gitlab::Git::CommandError4297 behaves like service that does not clean up merge request refs4298 does not delete merge request refs4299 when cleanup schedule fails to update4300 creates keep around ref and deletes merge request refs4301 when merge request is not scheduled to be cleaned up yet4302 behaves like service that does not clean up merge request refs4303 does not delete merge request refs4304 when repository no longer exists4305 does not fail and still mark schedule as complete4306 when closed later than 14 days ago4307 behaves like service that does not clean up merge request refs4308 does not delete merge request refs4309 when merge request is merged4310 when merged 14 days ago4311 behaves like service that cleans up merge request refs4312 creates keep around ref and deletes merge request refs4313 when merge request has no head ref4314 does not fail4315 when merge request has merge ref4316 caches merge ref sha and deletes merge ref4317 when merge ref sha cannot be cached4318 behaves like service that does not clean up merge request refs4319 does not delete merge request refs4320 when keep around ref cannot be created4321 behaves like service that does not clean up merge request refs4322 does not delete merge request refs4323 when a git error is raised4324 Gitlab::Git::Repository::GitError4325 behaves like service that does not clean up merge request refs4326 does not delete merge request refs4327 Gitlab::Git::CommandError4328 behaves like service that does not clean up merge request refs4329 does not delete merge request refs4330 when cleanup schedule fails to update4331 creates keep around ref and deletes merge request refs4332 when merge request is not scheduled to be cleaned up yet4333 behaves like service that does not clean up merge request refs4334 does not delete merge request refs4335 when repository no longer exists4336 does not fail and still mark schedule as complete4337 when merged later than 14 days ago4338 behaves like service that does not clean up merge request refs4339 does not delete merge request refs4340 when merge request is not closed nor merged4341 behaves like service that does not clean up merge request refs4342 does not delete merge request refs4343MergeRequestTargetProjectFinder4344 public projects4345 behaves like finding related projects4346 finds sibling projects and base project4347 does not include projects that have merge requests turned off by default4348 includes projects that have merge requests turned off by default with a more-permissive project feature4349 does not contain archived projects4350 does not include routes by default4351 includes routes when requested4352 private projects4353 only finds the projects the user is a member of4354 when the user is a member of all projects4355 behaves like finding related projects4356 finds sibling projects and base project4357 does not include projects that have merge requests turned off by default4358 includes projects that have merge requests turned off by default with a more-permissive project feature4359 does not contain archived projects4360 does not include routes by default4361 includes routes when requested4362Mutations::MergeRequests::SetMilestone4363 is expected to require graphql authorizations :update_merge_request4364 #resolve4365 raises an error if the resource is not accessible to the user4366 behaves like permission level for merge request mutation is correctly verified4367 when the user is not a project member4368 behaves like when the user does not have access to the resource4369 raises an error4370 even if assigned to the merge request4371 does not modify merge request4372 even if reviewer of the merge request4373 raises an error4374 even if author of the merge request4375 raises an error4376 when the user is a project member4377 with guest role4378 behaves like when the user does not have access to the resource4379 raises an error4380 even if assigned to the merge request4381 does not modify merge request4382 even if reviewer of the merge request4383 raises an error4384 even if author of the merge request4385 raises an error4386 with reporter role4387 behaves like when the user does not have access to the resource4388 raises an error4389 even if assigned to the merge request4390 does not modify merge request4391 even if reviewer of the merge request4392 raises an error4393 even if author of the merge request4394 raises an error4395 when the user can update the merge request4396 returns the merge request with the milestone4397 returns errors merge request could not be updated4398 when passing milestone_id as nil4399 removes the milestone4400 does not do anything if the MR already does not have a milestone4401 when issue assignee is a guest4402 does not update the milestone4403 when passing milestone_id as nil4404 does not remove the milestone4405Groups::ImportExport::ImportService4406 #async_execute4407 when the job can be successfully scheduled4408 creates group import state4409 enqueues an import job4410 marks the group import as in progress4411 returns truthy4412 when the job cannot be scheduled4413 returns falsey4414 does not mark the group import as created4415 with group_import_ndjson feature flag disabled4416 with a json file4417/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 nil4418 uses LegacyTreeRestorer to import the file4419/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 nil4420 tracks the event4421 with a ndjson file4422/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 nil4423 fails to import4424 with group_import_ndjson feature flag enabled4425 when importing a ndjson export4426 when user has correct permissions4427/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 nil4428 imports group structure successfully4429/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 nil4430 tracks the event4431/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 nil4432 removes import file4433/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 nil4434 removes tmp files4435/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 nil4436 logs the import success4437 when user does not have correct permissions4438/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 nil4439 logs the error and raises an exception4440/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 nil4441 tracks the error4442 when there are errors with the import file4443/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 nil4444 logs the error and raises an exception4445 when there are errors with the sub-relations4446/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 nil4447 successfully imports the group4448/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 nil4449 logs the import success4450 when importing a json export4451 when user has correct permissions4452/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 nil4453 imports group structure successfully4454/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 nil4455 tracks the event4456/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 nil4457 removes import file4458/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 nil4459 removes tmp files4460/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 nil4461 logs the import success4462 when user does not have correct permissions4463/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 nil4464 logs the error and raises an exception4465/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 nil4466 tracks the error4467 when there are errors with the import file4468/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 nil4469 logs the error and raises an exception4470 when there are errors with the sub-relations4471/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 nil4472 successfully imports the group4473/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 nil4474 logs the import success4475WorkItems::UpdateService4476 #execute4477 when title is changed4478 triggers issuable_title_updated graphql subscription4479 behaves like issue_edit snowplow tracking4480 behaves like Snowplow event tracking4481 is not emitted if FF is disabled4482 is emitted4483 when title is not changed4484 does not trigger issuable_title_updated graphql subscription4485 does not emit Snowplow event4486 when dates are changed4487 tracks users updating work item dates4488 when decription is changed4489 triggers GraphQL description updated subscription4490 when decription is not changed4491 does not trigger GraphQL description updated subscription4492 when updating state_event4493 when state_event is close4494 closes the work item4495 when state_event is reopen4496 reopens the work item4497 behaves like work item widgetable service4498 executes callbacks for expected widgets4499 when updating widgets4500 when widget service is not present4501 ignores widget param4502 when the widget does not support update callback4503 ignores widget param4504 for the description widget4505 updates the description of the work item4506 with mentions4507 when description contains a user mention4508 behaves like creates the todo and sends email4509 creates a todo and sends email4510 when title contains a user mention4511 behaves like creates the todo and sends email4512 creates a todo and sends email4513 when work item validation fails4514 returns validation errors4515 does not execute after-update widgets4516 for start and due date widget4517 when due_date is updated4518 behaves like update service that triggers graphql dates updated subscription4519 triggers graphql subscription issueableDatesUpdated4520 when start_date is updated4521 behaves like update service that triggers graphql dates updated subscription4522 triggers graphql subscription issueableDatesUpdated4523 when no date param is updated4524 does not trigger date updated subscription4525 for the hierarchy widget4526 updates the children of the work item4527 when child type is invalid4528 returns error status4529 does not update work item attributes4530 when work item validation fails4531 returns validation errors4532 does not execute after-update widgets4533 for milestone widget4534 when milestone is updated4535 triggers 'issuableMilestoneUpdated'4536 when milestone remains unchanged4537 does not trigger 'issuableMilestoneUpdated'4538 label updates4539 when labels are changed4540 tracks users updating work item labels4541 behaves like broadcasting issuable labels updates4542 when label is added4543 triggers the GraphQL subscription4544 when label is removed4545 triggers the GraphQL subscription4546 when label is unchanged4547 does not trigger the GraphQL subscription4548 when labels are not changed4549 when labels param is not provided4550 behaves like work item update that does not track label updates4551 does not track users updating work item labels4552 when labels param is provided but labels remain unchanged4553 behaves like work item update that does not track label updates4554 does not track users updating work item labels4555 when labels param is provided invalid values4556 behaves like work item update that does not track label updates4557 does not track users updating work item labels4558Ci::Processable4559 delegations4560 is expected to delegate #merge_request? to the #pipeline object4561 is expected to delegate #merge_request_ref? to the #pipeline object4562 is expected to delegate #legacy_detached_merge_request_pipeline? to the #pipeline object4563 #clone4564 when the processable to be cloned is a bridge4565 behaves like clones the processable4566 creates a new processable that represents the old processable4567 clone accessors4568 clones the processable attributes4569 clones only the needs attributes4570 when the processable has protected: nil4571 clones the protected job attribute4572 reject accessors4573 does not clone rejected attributes4574 when the processable to be cloned is a build4575 has the correct number of known attributes4576 behaves like clones the processable4577 creates a new processable that represents the old processable4578 clone accessors4579 clones the processable attributes4580 clones only the needs attributes4581 when the processable has protected: nil4582 clones the protected job attribute4583 reject accessors4584 does not clone rejected attributes4585 when it has a deployment4586 persists the expanded environment name4587 when it has a dynamic environment4588 re-uses the previous persisted environment4589 when the processable has job variables4590 only clones the internal job variables4591 #retryable4592 when the processable is a build4593 when the processable is retryable4594 behaves like retryable processable4595 when processable is successful4596 is expected to be retryable4597 when processable is failed4598 is expected to be retryable4599 when processable is canceled4600 is expected to be retryable4601 when deployment is rejected4602 is expected not to be retryable4603 when build is waiting for deployment approval4604 is expected not to be retryable4605 when the processable is non-retryable4606 behaves like non-retryable processable4607 when processable is skipped4608 is expected not to be retryable4609 when processable is degenerated4610 is expected not to be retryable4611 when a canceled processable has been retried already4612 is expected not to be retryable4613 when processable is running4614 is expected not to be retryable4615 #aggregated_needs_names4616 with created status4617 with needs4618 returns all processables4619 returns all needs4620 without needs4621 returns all processables4622 returns empty needs4623 validate presence of scheduling_type4624 importing: false, should_validate: true4625 on create4626 validates presence4627 on update4628 is expected not to validate that :scheduling_type cannot be empty/falsy4629 importing: true, should_validate: false4630 on create4631 validates presence4632 on update4633 is expected not to validate that :scheduling_type cannot be empty/falsy4634 .populate_scheduling_type!4635 populates scheduling_type of processables4636 does not affect processables from other pipelines4637 #needs_attributes4638 with needs4639 returns all needs attributes4640 without needs4641 is expected to be empty4642 state transition with resource group4643 when build status is created4644 is waiting for resource when build is enqueued4645 when build is waiting for resource4646 is enqueued when build requests resource4647 releases a resource when build finished4648 re-checks the resource group even if the processable does not retain a resource4649 when build has prerequisites4650 is preparing when build is enqueued4651 when there are no available resources4652 stays as waiting for resource when build requests resource4653Ability4654 using a nil subject4655 has no permissions4656 .users_that_can_read_project4657 using a public project4658 returns all the users4659 using an internal project4660 returns users that are administrators4661 returns internal users while skipping external users4662 returns external users if they are the project owner4663 returns external users if they are project members4664 returns an empty Array if all users are external users without access4665 using a private project4666 returns users that are administrators when admin mode is enabled4667 does not return users that are administrators when admin mode is disabled4668 returns external users if they are the project owner4669 returns external users if they are project members4670 returns an empty Array if all users are internal users without access4671 returns an empty Array if all users are external users without access4672 .users_that_can_read_personal_snippet4673 private snippet is readable only by its author4674 public snippet is readable by all users4675 .users_that_can_read_internal_note4676 for groups4677 behaves like filtering users that can read internal note4678 returns users that can read internal notes4679 for projects4680 behaves like filtering users that can read internal note4681 returns users that can read internal notes4682 .merge_requests_readable_by_user4683 with an admin when admin mode is enabled4684 returns all merge requests4685 with an admin when admin mode is disabled4686 returns merge_requests that are publicly visible4687 without a user4688 returns merge_requests that are publicly visible4689 with a user4690 returns projects visible to the user4691 when a user cannot read cross project and a filter is passed4692 returns only MRs of the specified project without checking access on others4693 .issues_readable_by_user4694 with an admin when admin mode is enabled4695 returns all given issues4696 with an admin when admin mode is disabled4697 returns the issues readable by the admin4698 returns no issues when not given access4699 with a regular user4700 returns the issues readable by the user4701 returns an empty Array when no issues are readable4702 without a regular user4703 returns issues that are publicly visible4704 when the user cannot read cross project4705 excludes issues from other projects whithout checking separatly when passing a scope4706 .feature_flags_readable_by_user4707 without a user4708 returns no feature flags4709 with a user4710 returns feature flags visible to the user4711 when a user cannot read cross project and a filter is passed4712 returns only feature flags of the specified project without checking access on others4713 .project_disabled_features_rules4714 wiki named abilities4715 disables wiki abilities if the project has no wiki4716 forgetting4717 allows us to discard specific values from the DeclarativePolicy cache4718 when bypassing the session4719 allows us to have re-entrant evaluation of admin-only permissions4720Gitlab::PathRegex4721 TOP_LEVEL_ROUTES4722 includes all the top level namespaces4723 does not allow expansion4724 GROUP_ROUTES4725 don't contain a second wildcard4726 does not allow expansion4727 PROJECT_WILDCARD_ROUTES4728 includes all paths that can be used after a namespace/project path4729 does not allow expansion4730 .root_namespace_route_regex4731 rejects top level routes4732 accepts project wildcard routes4733 accepts group routes4734 is not case sensitive4735 does not allow extra slashes4736 .full_namespace_path_regex4737 is not case sensitive4738 does not allow extra slashes4739 at the top level4740 when the final level4741 rejects top level routes4742 accepts project wildcard routes4743 accepts group routes4744 when more levels follow4745 rejects top level routes4746 accepts project wildcard routes4747 accepts group routes4748 at the second level4749 when the final level4750 accepts top level routes4751 rejects project wildcard routes4752 rejects group routes4753 when more levels follow4754 accepts top level routes4755 rejects project wildcard routes4756 rejects group routes4757 .project_route_regex4758 accepts top level routes4759 rejects project wildcard routes4760 accepts group routes4761 is not case sensitive4762 does not allow extra slashes4763 .full_project_path_regex4764 accepts top level routes4765 rejects project wildcard routes4766 accepts group routes4767 is not case sensitive4768 does not allow extra slashes4769 .namespace_format_regex4770 is expected to match "gitlab-ce"4771 is expected to match "gitlab_git"4772 is expected to match "_underscore.js"4773 is expected to match "100px.com"4774 is expected to match "gitlab.org"4775 is expected not to match "?gitlab"4776 is expected not to match "git lab"4777 is expected not to match "gitlab.git"4778 is expected not to match "gitlab.org."4779 is expected not to match "gitlab.org/"4780 is expected not to match "/gitlab.org"4781 is expected not to match "gitlab git"4782 is expected not to match "gitlab?"4783 is expected to match "gitlab.org-"4784 is expected to match "gitlab.org_"4785 .project_path_format_regex4786 is expected to match "gitlab-ce"4787 is expected to match "gitlab_git"4788 is expected to match "_underscore.js"4789 is expected to match "100px.com"4790 is expected not to match "?gitlab"4791 is expected not to match "git lab"4792 is expected not to match "gitlab.git"4793 is expected not to match "gitlab?"4794 is expected not to match "gitlab git"4795 is expected to match "gitlab.org"4796 is expected to match "gitlab.org-"4797 is expected to match "gitlab.org_"4798 is expected to match "gitlab.org."4799 is expected not to match "gitlab.org/"4800 is expected not to match "/gitlab.org"4801 repository routes4802 .repository_route_regex4803 matches the expected paths4804 .repository_git_route_regex4805 matches the expected paths4806 .repository_git_lfs_route_regex4807 matches the expected paths4808 .repository_wiki_git_route_regex4809 matches the expected paths4810 is expected not to match "snippets/1.wiki.git"4811 .full_snippets_repository_path_regex4812 matches the expected paths4813 is expected not to match "root/snippets/1"4814 is expected not to match "gitlab-org/gitlab-test/snippets/foo"4815 .container_image_regex4816 is expected to match "gitlab-foss"4817 is expected to match "gitlab_foss"4818 is expected to match "gitlab-org/gitlab-foss"4819 is expected to match "a/b/c/d/e"4820 is expected to match "100px.com/100px.ruby"4821 does not match beyond 4 slashes4822 does not match other non-word characters4823 .container_image_blob_sha_regex4824 is expected to match "sha256:asdf1234567890ASDF"4825 is expected to match "foo:123"4826 is expected to match "a12bc3f590szp"4827 is expected not to match ""4828 does not match malicious characters4829 .dependency_proxy_route_regex4830 is expected to match "/v2/group1/dependency_proxy/containers/alpine/manifests/latest"4831 is expected to match "/v2/group1/dependency_proxy/containers/alpine/blobs/sha256:14119a10abf4669e8cdbdff324a9f9605d99697215a0d21c360fe8dfa8471bab"4832 is expected not to match ""4833 is expected not to match "/v3/group1/dependency_proxy/containers/alpine/manifests/latest"4834 is expected not to match "/v2/group1/dependency_proxy/container/alpine/manifests/latest"4835 is expected not to match "/v2/group1/dependency_prox/containers/alpine/manifests/latest"4836 is expected not to match "/v2/group1/dependency_proxy/containers/alpine/manifest/latest"4837 is expected not to match "/v2/group1/dependency_proxy/containers/alpine/manifest/la%2Ftest"4838 is expected not to match "/v2/group1/dependency_proxy/containers/alpine/manifest/latest/../one"4839 is expected not to match "/v3/group1/dependency_proxy/containers/alpine/blobs/sha256:14119a10abf4669e8cdbdff324a9f9605d99697215a0d21c360fe8dfa8471bab"4840 is expected not to match "/v2/group1/dependency_proxy/container/alpine/blobs/sha256:14119a10abf4669e8cdbdff324a9f9605d99697215a0d21c360fe8dfa8471bab"4841 is expected not to match "/v2/group1/dependency_prox/containers/alpine/blobs/sha256:14119a10abf4669e8cdbdff324a9f9605d99697215a0d21c360fe8dfa8471bab"4842 is expected not to match "/v2/group1/dependency_proxy/containers/alpine/blob/sha256:14119a10abf4669e8cdbdff324a9f9605d99697215a0d21c360fe8dfa8471bab"4843 is expected not to match "/v2/group1/dependency_proxy/containers/alpine/blob/sha256:F14119a10abf4669e8cdbdff324a9f9605d99697215a0d21c360fe8dfa8471bab/../latest"4844 is expected not to match "/v2/group1/dependency_proxy/containers/alpine/blob/sha256:F14119a10abf4669e8cdbdff324a9f9605d99697215a0d21c360fe8dfa8471bab/latest"4845Packages::Nuget::UpdatePackageFromMetadataService4846 #execute4847 with no existing package4848 updates package and package file4849 behaves like taking the lease4850 takes the lease4851 behaves like not updating the package if the lease is taken4852 without obtaining the exclusive lease4853 does not update the package4854 with existing package4855 link existing package and updates package file4856 behaves like taking the lease4857 takes the lease4858 behaves like not updating the package if the lease is taken4859 without obtaining the exclusive lease4860 does not update the package4861 marked as pending_destruction4862 reuses the processing package4863 with a nuspec file with metadata4864 creates tags4865 creates nuget metadatum4866 with existing package and tags4867 creates tags and deletes those not in metadata4868 with too long url4869 behaves like raising an4870 raises an Packages::Nuget::UpdatePackageFromMetadataService::InvalidMetadataError4871 with nuspec file with dependencies4872 updates package and package file4873 with package file not containing a nuspec file4874 behaves like raising an4875 raises an Packages::Nuget::MetadataExtractionService::ExtractionError4876 with a symbol package4877 with no existing package4878 behaves like raising an4879 raises an Packages::Nuget::UpdatePackageFromMetadataService::InvalidMetadataError4880 with existing package4881 link existing package and updates package file4882 behaves like taking the lease4883 takes the lease4884 behaves like not updating the package if the lease is taken4885 without obtaining the exclusive lease4886 does not update the package4887 with an invalid package name4888 behaves like raising an4889 raises an Packages::Nuget::UpdatePackageFromMetadataService::InvalidMetadataError4890 behaves like raising an4891 raises an Packages::Nuget::UpdatePackageFromMetadataService::InvalidMetadataError4892 behaves like raising an4893 raises an Packages::Nuget::UpdatePackageFromMetadataService::InvalidMetadataError4894 behaves like raising an4895 raises an Packages::Nuget::UpdatePackageFromMetadataService::InvalidMetadataError4896 with an invalid package version4897 behaves like raising an4898 raises an Packages::Nuget::UpdatePackageFromMetadataService::InvalidMetadataError4899 behaves like raising an4900 raises an Packages::Nuget::UpdatePackageFromMetadataService::InvalidMetadataError4901 behaves like raising an4902 raises an Packages::Nuget::UpdatePackageFromMetadataService::InvalidMetadataError4903 behaves like raising an4904 raises an Packages::Nuget::UpdatePackageFromMetadataService::InvalidMetadataError4905 behaves like raising an4906 raises an Packages::Nuget::UpdatePackageFromMetadataService::InvalidMetadataError4907 behaves like raising an4908 raises an Packages::Nuget::UpdatePackageFromMetadataService::InvalidMetadataError4909Gitlab::Ci::Config::Entry::Reports4910 validates ALLOWED_KEYS4911 expects ALLOWED_KEYS to be an artifact file_type or coverage_report4912 validation4913 when entry config value is correct4914 keyword: :junit, file: "junit.xml"4915 when value is an array4916 behaves like a valid entry4917 #value4918 returns artifacts configuration4919 #valid?4920 is valid4921 when value is not array4922 behaves like a valid entry4923 #value4924 returns artifacts configuration4925 #valid?4926 is valid4927 keyword: :codequality, file: "gl-code-quality-report.json"4928 when value is an array4929 behaves like a valid entry4930 #value4931 returns artifacts configuration4932 #valid?4933 is valid4934 when value is not array4935 behaves like a valid entry4936 #value4937 returns artifacts configuration4938 #valid?4939 is valid4940 keyword: :sast, file: "gl-sast-report.json"4941 when value is an array4942 behaves like a valid entry4943 #value4944 returns artifacts configuration4945 #valid?4946 is valid4947 when value is not array4948 behaves like a valid entry4949 #value4950 returns artifacts configuration4951 #valid?4952 is valid4953 keyword: :secret_detection, file: "gl-secret-detection-report.json"4954 when value is an array4955 behaves like a valid entry4956 #value4957 returns artifacts configuration4958 #valid?4959 is valid4960 when value is not array4961 behaves like a valid entry4962 #value4963 returns artifacts configuration4964 #valid?4965 is valid4966 keyword: :dependency_scanning, file: "gl-dependency-scanning-report.json"4967 when value is an array4968 behaves like a valid entry4969 #value4970 returns artifacts configuration4971 #valid?4972 is valid4973 when value is not array4974 behaves like a valid entry4975 #value4976 returns artifacts configuration4977 #valid?4978 is valid4979 keyword: :container_scanning, file: "gl-container-scanning-report.json"4980 when value is an array4981 behaves like a valid entry4982 #value4983 returns artifacts configuration4984 #valid?4985 is valid4986 when value is not array4987 behaves like a valid entry4988 #value4989 returns artifacts configuration4990 #valid?4991 is valid4992 keyword: :cluster_image_scanning, file: "gl-cluster-image-scanning-report.json"4993 when value is an array4994 behaves like a valid entry4995 #value4996 returns artifacts configuration4997 #valid?4998 is valid4999 when value is not array5000 behaves like a valid entry5001 #value5002 returns artifacts configuration5003 #valid?5004 is valid5005 keyword: :dast, file: "gl-dast-report.json"5006 when value is an array5007 behaves like a valid entry5008 #value5009 returns artifacts configuration5010 #valid?5011 is valid5012 when value is not array5013 behaves like a valid entry5014 #value5015 returns artifacts configuration5016 #valid?5017 is valid5018 keyword: :license_scanning, file: "gl-license-scanning-report.json"5019 when value is an array5020 behaves like a valid entry5021 #value5022 returns artifacts configuration5023 #valid?5024 is valid5025 when value is not array5026 behaves like a valid entry5027 #value5028 returns artifacts configuration5029 #valid?5030 is valid5031 keyword: :performance, file: "performance.json"5032 when value is an array5033 behaves like a valid entry5034 #value5035 returns artifacts configuration5036 #valid?5037 is valid5038 when value is not array5039 behaves like a valid entry5040 #value5041 returns artifacts configuration5042 #valid?5043 is valid5044 keyword: :browser_performance, file: "browser-performance.json"5045 when value is an array5046 behaves like a valid entry5047 #value5048 returns artifacts configuration5049 #valid?5050 is valid5051 when value is not array5052 behaves like a valid entry5053 #value5054 returns artifacts configuration5055 #valid?5056 is valid5057 keyword: :browser_performance, file: "performance.json"5058 when value is an array5059 behaves like a valid entry5060 #value5061 returns artifacts configuration5062 #valid?5063 is valid5064 when value is not array5065 behaves like a valid entry5066 #value5067 returns artifacts configuration5068 #valid?5069 is valid5070 keyword: :load_performance, file: "load-performance.json"5071 when value is an array5072 behaves like a valid entry5073 #value5074 returns artifacts configuration5075 #valid?5076 is valid5077 when value is not array5078 behaves like a valid entry5079 #value5080 returns artifacts configuration5081 #valid?5082 is valid5083 keyword: :lsif, file: "lsif.json"5084 when value is an array5085 behaves like a valid entry5086 #value5087 returns artifacts configuration5088 #valid?5089 is valid5090 when value is not array5091 behaves like a valid entry5092 #value5093 returns artifacts configuration5094 #valid?5095 is valid5096 keyword: :dotenv, file: "build.dotenv"5097 when value is an array5098 behaves like a valid entry5099 #value5100 returns artifacts configuration5101 #valid?5102 is valid5103 when value is not array5104 behaves like a valid entry5105 #value5106 returns artifacts configuration5107 #valid?5108 is valid5109 keyword: :terraform, file: "tfplan.json"5110 when value is an array5111 behaves like a valid entry5112 #value5113 returns artifacts configuration5114 #valid?5115 is valid5116 when value is not array5117 behaves like a valid entry5118 #value5119 returns artifacts configuration5120 #valid?5121 is valid5122 keyword: :accessibility, file: "gl-accessibility.json"5123 when value is an array5124 behaves like a valid entry5125 #value5126 returns artifacts configuration5127 #valid?5128 is valid5129 when value is not array5130 behaves like a valid entry5131 #value5132 returns artifacts configuration5133 #valid?5134 is valid5135 keyword: :cyclonedx, file: "gl-sbom.cdx.zip"5136 when value is an array5137 behaves like a valid entry5138 #value5139 returns artifacts configuration5140 #valid?5141 is valid5142 when value is not array5143 behaves like a valid entry5144 #value5145 returns artifacts configuration5146 #valid?5147 is valid5148 when coverage_report is specified5149 is valid5150 returns artifacts configuration5151 and another report is specified5152 is valid5153 returns artifacts configuration5154 when entry value is not correct5155 #errors5156 when there is an unknown key present5157 reports error5158Packages::Debian::FileMetadatum5159 factory: :debian_package_file, trait: :unknown, has_component: false, has_architecture: false, has_fields: false5160 behaves like Test Debian file metadatum5161 relationships5162 is expected to belong to package_file required: false5163 validations5164 #package_file5165 is expected to validate that :package_file cannot be empty/falsy5166 #file_type5167 is expected to validate that :file_type cannot be empty/falsy5168 #component5169 has_component=false5170 #architecture5171 has_architecture=false5172 #fields5173 is expected to validate that :fields is empty/falsy5174 #debian_package_type5175 validates package of type debian5176 factory: :debian_package_file, trait: :source, has_component: true, has_architecture: false, has_fields: false5177 behaves like Test Debian file metadatum5178 relationships5179 is expected to belong to package_file required: false5180 validations5181 #package_file5182 is expected to validate that :package_file cannot be empty/falsy5183 #file_type5184 is expected to validate that :file_type cannot be empty/falsy5185 #component5186 has_component=true5187 #architecture5188 has_architecture=false5189 #fields5190 is expected to validate that :fields is empty/falsy5191 #debian_package_type5192 validates package of type debian5193 factory: :debian_package_file, trait: :dsc, has_component: true, has_architecture: false, has_fields: true5194 behaves like Test Debian file metadatum5195 relationships5196 is expected to belong to package_file required: false5197 validations5198 #package_file5199 is expected to validate that :package_file cannot be empty/falsy5200 #file_type5201 is expected to validate that :file_type cannot be empty/falsy5202 #component5203 has_component=true5204 #architecture5205 has_architecture=false5206 #fields5207 is expected to validate that :fields cannot be empty/falsy5208 is expected to allow :fields to be ‹{a: "b"}›5209 is expected not to allow :fields to be ‹{a: {:b=>"c"}}›5210 #debian_package_type5211 validates package of type debian5212 factory: :debian_package_file, trait: :deb, has_component: true, has_architecture: true, has_fields: true5213 behaves like Test Debian file metadatum5214 relationships5215 is expected to belong to package_file required: false5216 validations5217 #package_file5218 is expected to validate that :package_file cannot be empty/falsy5219 #file_type5220 is expected to validate that :file_type cannot be empty/falsy5221 #component5222 has_component=true5223 #architecture5224 has_architecture=true5225 #fields5226 is expected to validate that :fields cannot be empty/falsy5227 is expected to allow :fields to be ‹{a: "b"}›5228 is expected not to allow :fields to be ‹{a: {:b=>"c"}}›5229 #debian_package_type5230 validates package of type debian5231 factory: :debian_package_file, trait: :udeb, has_component: true, has_architecture: true, has_fields: true5232 behaves like Test Debian file metadatum5233 relationships5234 is expected to belong to package_file required: false5235 validations5236 #package_file5237 is expected to validate that :package_file cannot be empty/falsy5238 #file_type5239 is expected to validate that :file_type cannot be empty/falsy5240 #component5241 has_component=true5242 #architecture5243 has_architecture=true5244 #fields5245 is expected to validate that :fields cannot be empty/falsy5246 is expected to allow :fields to be ‹{a: "b"}›5247 is expected not to allow :fields to be ‹{a: {:b=>"c"}}›5248 #debian_package_type5249 validates package of type debian5250 factory: :debian_package_file, trait: :buildinfo, has_component: true, has_architecture: false, has_fields: true5251 behaves like Test Debian file metadatum5252 relationships5253 is expected to belong to package_file required: false5254 validations5255 #package_file5256 is expected to validate that :package_file cannot be empty/falsy5257 #file_type5258 is expected to validate that :file_type cannot be empty/falsy5259 #component5260 has_component=true5261 #architecture5262 has_architecture=false5263 #fields5264 is expected to validate that :fields cannot be empty/falsy5265 is expected to allow :fields to be ‹{a: "b"}›5266 is expected not to allow :fields to be ‹{a: {:b=>"c"}}›5267 #debian_package_type5268 validates package of type debian5269 factory: :debian_package_file, trait: :changes, has_component: false, has_architecture: false, has_fields: true5270 behaves like Test Debian file metadatum5271 relationships5272 is expected to belong to package_file required: false5273 validations5274 #package_file5275 is expected to validate that :package_file cannot be empty/falsy5276 #file_type5277 is expected to validate that :file_type cannot be empty/falsy5278 #component5279 has_component=false5280 #architecture5281 has_architecture=false5282 #fields5283 is expected to validate that :fields cannot be empty/falsy5284 is expected to allow :fields to be ‹{a: "b"}›5285 is expected not to allow :fields to be ‹{a: {:b=>"c"}}›5286 #debian_package_type5287 validates package of type debian5288Gitlab::ImportExport::Group::LegacyTreeRestorer5289 restore group tree5290 JSON5291 restores models based on JSON5292 has the group description5293 has group labels5294 has badges5295 has milestones5296 has group children5297 has group members5298 issue boards5299 has issue boards5300 has board label lists5301 excluded attributes5302 does not allow override of excluded attributes5303 does not allow override of excluded attributes5304 does not allow override of excluded attributes5305 does not allow override of excluded attributes5306 does not allow override of excluded attributes5307 does not allow override of excluded attributes5308 does not allow override of excluded attributes5309 does not allow override of excluded attributes5310 group.json file access check5311 does not read a symlink5312 group visibility levels5313 when visibility level is public5314 imports all subgroups as public5315 when visibility level is private5316 imports all subgroups as private5317 when visibility level is internal5318 imports all subgroups as internal5319PreviewMarkdownService5320 user references5321 returns users referenced in text5322 suggestions5323 when preview markdown param is present5324 returns suggestions referenced in text5325 when user is not authorized5326 returns no suggestions5327 when preview markdown param is not present5328 returns suggestions referenced in text5329 new note with quick actions5330 removes quick actions from text5331 explains quick actions effect5332 merge request description5333 removes quick actions from text5334 explains quick actions effect5335 commit description5336 removes quick actions from text5337 explains quick actions effect5338 note with multiple quick actions5339 renders quick actions on multiple lines5340Backup::Files5341 #restore5342 folders with permission5343 moves all necessary files5344 raises no errors5345 calls tar command with unlink5346 raises an error on failure5347 folders without permissions5348 shows error message5349 folders that are a mountpoint5350 shows error message5351 #dump5352 raises no errors5353 excludes tmp dirs from archive5354 raises an error on failure5355 with STRATEGY=copy5356 excludes tmp dirs from rsync5357 retries if rsync fails due to vanishing files5358 raises an error and outputs an error message if rsync failed5359 #exclude_dirs5360 prepends a leading dot slash to tar excludes5361 prepends a leading slash and app_files_dir basename to rsync excludes5362 #run_pipeline!5363 executes an Open3.pipeline for cmd_list5364 returns an empty output on success pipeline5365 returns the stderr for failed pipeline5366 returns the success status list on success pipeline5367 returns the failed status in status list for failed commands in pipeline5368 #pipeline_succeeded?5369 returns true if both tar and gzip succeeeded5370 returns false if gzip failed5371 if gzip succeeded and tar failed non-critically5372 returns true5373 if gzip succeeded and tar failed in other cases5374 returns false5375 #tar_ignore_non_success?5376 if `tar` command exits with 1 exitstatus5377Ignoring tar exit status 1 'Some files differ': any_output5378 returns true5379 outputs a warning5380 if `tar` command exits with 2 exitstatus with non-critical warning5381Ignoring non-success exit status 2 due to output of non-critical warning(s): any_output5382 returns true5383 outputs a warning5384 if `tar` command exits with any other unlisted error5385 returns false5386 #noncritical_warning?5387 returns true if given text matches noncritical warnings list5388 returns false otherwize5389MembersFinder#execute5390 returns members for project and parent groups5391 returns owners and maintainers5392 returns active users and excludes invited users5393 does not return members of parent group with minimal access5394 includes only non-invite members if user do not have amdin permissions on project5395 includes invited members if user have admin permissions on project5396 includes nested group members if asked5397 returns only members of project if asked5398 returns only inherited members of project if asked5399 returns only inherited members of a personal project5400 returns the members.access_level when the user is invited5401 returns the highest access_level for the user5402 returns searched members if requested5403 returns members sorted by id_desc5404 when :invited_groups is passed5405 behaves like with invited_groups param5406 includes all the invited_groups members including members inherited from ancestor groups5407 includes all the invited_groups members5408 excludes group_members not visible to the user5409 when the user is a member of invited group and ancestor groups5410 returns the highest access_level for the user limited by project_group_link.group_access5411Clusters::Integrations::PrometheusHealthCheckService#execute5412 when cluster is not project_type5413 is expected to raise RuntimeError with "Invalid cluster type. Only project types are allowed."5414 when cluster is project_type5415 when prometheus not enabled5416 is expected to eq nil5417 does not send alert5418 when prometheus enabled5419 when newly unhealthy5420 sends an alert5421 stores the correct health of prometheus5422 when newly healthy5423 does not send alert5424 stores the correct health of prometheus5425 when continuously unhealthy5426 does not send alert5427 stores the correct health of prometheus5428 when continuously healthy5429 does not send alert5430 stores the correct health of prometheus5431 when first health check and healthy5432 does not send alert5433 stores the correct health of prometheus5434 when first health check and not healthy5435 sends an alert5436 stores the correct health of prometheus5437UserPreference5438 validations5439 diffs_deletion_color and diffs_addition_color5440 color: "#000000"5441 is expected to allow :diffs_deletion_color to be ‹"#000000"›5442 is expected to allow :diffs_addition_color to be ‹"#000000"›5443 color: "#123456"5444 is expected to allow :diffs_deletion_color to be ‹"#123456"›5445 is expected to allow :diffs_addition_color to be ‹"#123456"›5446 color: "#abcdef"5447 is expected to allow :diffs_deletion_color to be ‹"#abcdef"›5448 is expected to allow :diffs_addition_color to be ‹"#abcdef"›5449 color: "#AbCdEf"5450 is expected to allow :diffs_deletion_color to be ‹"#AbCdEf"›5451 is expected to allow :diffs_addition_color to be ‹"#AbCdEf"›5452 color: "#ffffff"5453 is expected to allow :diffs_deletion_color to be ‹"#ffffff"›5454 is expected to allow :diffs_addition_color to be ‹"#ffffff"›5455 color: "#fFfFfF"5456 is expected to allow :diffs_deletion_color to be ‹"#fFfFfF"›5457 is expected to allow :diffs_addition_color to be ‹"#fFfFfF"›5458 color: "#000"5459 is expected to allow :diffs_deletion_color to be ‹"#000"›5460 is expected to allow :diffs_addition_color to be ‹"#000"›5461 color: "#123"5462 is expected to allow :diffs_deletion_color to be ‹"#123"›5463 is expected to allow :diffs_addition_color to be ‹"#123"›5464 color: "#abc"5465 is expected to allow :diffs_deletion_color to be ‹"#abc"›5466 is expected to allow :diffs_addition_color to be ‹"#abc"›5467 color: "#AbC"5468 is expected to allow :diffs_deletion_color to be ‹"#AbC"›5469 is expected to allow :diffs_addition_color to be ‹"#AbC"›5470 color: "#fff"5471 is expected to allow :diffs_deletion_color to be ‹"#fff"›5472 is expected to allow :diffs_addition_color to be ‹"#fff"›5473 color: "#fFf"5474 is expected to allow :diffs_deletion_color to be ‹"#fFf"›5475 is expected to allow :diffs_addition_color to be ‹"#fFf"›5476 color: ""5477 is expected to allow :diffs_deletion_color to be ‹""›5478 is expected to allow :diffs_addition_color to be ‹""›5479 color: "#1"5480 is expected not to allow :diffs_deletion_color to be ‹"#1"›5481 is expected not to allow :diffs_addition_color to be ‹"#1"›5482 color: "#12"5483 is expected not to allow :diffs_deletion_color to be ‹"#12"›5484 is expected not to allow :diffs_addition_color to be ‹"#12"›5485 color: "#1234"5486 is expected not to allow :diffs_deletion_color to be ‹"#1234"›5487 is expected not to allow :diffs_addition_color to be ‹"#1234"›5488 color: "#12345"5489 is expected not to allow :diffs_deletion_color to be ‹"#12345"›5490 is expected not to allow :diffs_addition_color to be ‹"#12345"›5491 color: "#1234567"5492 is expected not to allow :diffs_deletion_color to be ‹"#1234567"›5493 is expected not to allow :diffs_addition_color to be ‹"#1234567"›5494 color: "123456"5495 is expected not to allow :diffs_deletion_color to be ‹"123456"›5496 is expected not to allow :diffs_addition_color to be ‹"123456"›5497 color: "#12345x"5498 is expected not to allow :diffs_deletion_color to be ‹"#12345x"›5499 is expected not to allow :diffs_addition_color to be ‹"#12345x"›5500 use_legacy_web_ide5501 is expected to allow :use_legacy_web_ide to be ‹true›5502 is expected to allow :use_legacy_web_ide to be ‹false›5503 is expected not to allow :use_legacy_web_ide to be ‹nil›5504 is expected not to allow :use_legacy_web_ide to be ‹""›5505 notes filters global keys5506 contains expected values5507 #set_notes_filter5508 when filter is set to all notes5509 behaves like setting system notes5510 returns updated discussion filter5511 updates discussion filter for issuable class5512 when filter is set to only comments5513 behaves like setting system notes5514 returns updated discussion filter5515 updates discussion filter for issuable class5516 when filter is set to only activity5517 behaves like setting system notes5518 returns updated discussion filter5519 updates discussion filter for issuable class5520 when notes_filter parameter is invalid5521 returns the current notes filter5522 sort_by preferences5523 merge_requests_sort attribute5524 behaves like a sort_by preference5525 allows nil sort fields5526 issues_sort attribute5527 behaves like a sort_by preference5528 allows nil sort fields5529 #tab_width5530 is set to 8 by default5531 is expected to validate that :tab_width looks like an integer greater than or equal to 1 and less than or equal to 125532TodoPolicy5533 own_todo5534 user: user1, todo: todo1, allowed: true5535 behaves like grants the expected permissions5536 is expected to be allowed :read_todo5537 user: user2, todo: todo2, allowed: true5538 behaves like grants the expected permissions5539 is expected to be allowed :read_todo5540 user: user1, todo: todo2, allowed: false5541 behaves like grants the expected permissions5542 is expected to be disallowed :read_todo5543 user: user1, todo: todo3, allowed: false5544 behaves like grants the expected permissions5545 is expected to be disallowed :read_todo5546 user: user2, todo: todo1, allowed: false5547 behaves like grants the expected permissions5548 is expected to be disallowed :read_todo5549 user: user2, todo: todo4, allowed: false5550 behaves like grants the expected permissions5551 is expected to be disallowed :read_todo5552 user: user3, todo: todo1, allowed: false5553 behaves like grants the expected permissions5554 is expected to be disallowed :read_todo5555 user: user3, todo: todo2, allowed: false5556 behaves like grants the expected permissions5557 is expected to be disallowed :read_todo5558 user: user3, todo: todo3, allowed: false5559 behaves like grants the expected permissions5560 is expected to be disallowed :read_todo5561 user: user3, todo: todo4, allowed: false5562 behaves like grants the expected permissions5563 is expected to be disallowed :read_todo5564 user: user2, todo: todo3, allowed: false5565 behaves like grants the expected permissions5566 is expected to be disallowed :read_todo5567 read_note5568 user: reporter, todo: no_note_todo1, allowed: true5569 behaves like grants the expected permissions5570 is expected to be allowed :read_todo5571 behaves like grants the expected permissions5572 is expected to be allowed :update_todo5573 user: reporter, todo: note_todo1, allowed: true5574 behaves like grants the expected permissions5575 is expected to be allowed :read_todo5576 behaves like grants the expected permissions5577 is expected to be allowed :update_todo5578 user: reporter, todo: internal_note_todo1, allowed: true5579 behaves like grants the expected permissions5580 is expected to be allowed :read_todo5581 behaves like grants the expected permissions5582 is expected to be allowed :update_todo5583 user: guest, todo: no_note_todo2, allowed: true5584 behaves like grants the expected permissions5585 is expected to be allowed :read_todo5586 behaves like grants the expected permissions5587 is expected to be allowed :update_todo5588 user: guest, todo: note_todo2, allowed: true5589 behaves like grants the expected permissions5590 is expected to be allowed :read_todo5591 behaves like grants the expected permissions5592 is expected to be allowed :update_todo5593 user: guest, todo: internal_note_todo2, allowed: false5594 behaves like grants the expected permissions5595 is expected to be disallowed :read_todo5596 behaves like grants the expected permissions5597 is expected to be disallowed :update_todo5598 user: non_member, todo: no_note_todo3, allowed: false5599 behaves like grants the expected permissions5600 is expected to be disallowed :read_todo5601 behaves like grants the expected permissions5602 is expected to be disallowed :update_todo5603 user: non_member, todo: note_todo3, allowed: false5604 behaves like grants the expected permissions5605 is expected to be disallowed :read_todo5606 behaves like grants the expected permissions5607 is expected to be disallowed :update_todo5608 user: non_member, todo: internal_note_todo3, allowed: false5609 behaves like grants the expected permissions5610 is expected to be disallowed :read_todo5611 behaves like grants the expected permissions5612 is expected to be disallowed :update_todo5613Clusters::KubernetesNamespaceFinder5614 #execute5615 cluster supports separate namespaces per environment5616 no persisted namespace is present5617 is expected to be nil5618 a namespace with an environment is present5619 environment matches5620 is expected to eq #<Clusters::KubernetesNamespace id: 1, cluster_id: 72, project_id: 779, cluster_project_id: nil, crea...t_name: "project835-779-production-service-account", environment_id: 35, service_account_token: nil>5621 project cluster5622 is expected to eq #<Clusters::KubernetesNamespace id: 2, cluster_id: 74, project_id: 780, cluster_project_id: 21, creat...t_name: "project836-780-production-service-account", environment_id: 36, service_account_token: nil>5623 service account token is blank5624 is expected to be nil5625 allow_blank_token is true5626 is expected to eq #<Clusters::KubernetesNamespace id: 4, cluster_id: 78, project_id: 782, cluster_project_id: nil, crea...t_name: "project838-782-production-service-account", environment_id: 38, service_account_token: nil>5627 environment does not match5628 is expected to be nil5629 cluster does not support separate namespaces per environment5630 no persisted namespace is present5631 is expected to be nil5632 a legacy namespace with no environment is present5633 is expected to eq #<Clusters::KubernetesNamespace id: 6, cluster_id: 84, project_id: 785, cluster_project_id: nil, crea...ice_account_name: "project841-785-service-account", environment_id: nil, service_account_token: nil>5634 project cluster5635 is expected to eq #<Clusters::KubernetesNamespace id: 7, cluster_id: 86, project_id: 786, cluster_project_id: 22, creat...ice_account_name: "project842-786-service-account", environment_id: nil, service_account_token: nil>5636 service account token is blank5637 is expected to be nil5638 allow_blank_token is true5639 is expected to eq #<Clusters::KubernetesNamespace id: 9, cluster_id: 90, project_id: 788, cluster_project_id: nil, crea...ice_account_name: "project844-788-service-account", environment_id: nil, service_account_token: nil>5640Types::IssueType5641 is expected to expose permissions using Types::PermissionTypes::Issue5642 is expected to eq "Issue"5643 is expected to require graphql authorizations :read_issue5644 is expected to include Types::Notes::NoteableInterface5645 is expected to include Types::CurrentUserTodos5646 has specific fields5647 pagination and count5648 when user does not have the permission5649 does not return an error5650 returns no data5651 count5652 returns total count5653 total count does not change between pages5654 pagination5655 returns new ids during pagination5656 issue notes5657 query issue notes5658 when user signed in5659 behaves like does not include private notes5660 does not return private notes5661 when user member of the project5662 behaves like includes private notes5663 returns all notes5664 when user is anonymous5665 behaves like does not include private notes5666 does not return private notes5667 hidden5668 when `ban_user_feature_flag` is enabled5669 when issue is hidden5670 returns `true`5671 when issue is visible5672 returns `false`5673 when `ban_user_feature_flag` is disabled5674 returns `nil`5675 escalation_status5676 is expected to be nil5677 for an incident5678 is expected to be nil5679 with an escalation status record5680 is expected to eq "TRIGGERED"5681Gitlab::Database::Migrations::BatchedBackgroundMigrationHelpers5682 #queue_batched_background_migration5683 creates the database record for the migration5684 when such migration already exists5685 does not create duplicate migration5686 when the job interval is lower than the minimum5687 sets the job interval to the minimum value5688 when additional arguments are passed to the method5689 when the job class provides job_arguments_count5690 when defined job arguments for the job class does not match provided arguments5691 raises an error5692 when defined job arguments for the job class match provided arguments5693 saves the arguments on the database record5694 when the job class does not provide job_arguments_count5695 does not raise an error5696 when the max_value is not given5697 when records exist in the database5698 creates the record with the current max value5699 creates the record with an active status5700 when the database is empty5701 sets the max value to the min value5702 creates the record with a finished status5703 when gitlab_schema is not given5704 fetches gitlab_schema from the migration context5705 #finalize_batched_background_migration5706 finalizes the migration5707 when the migration does not exist5708 raises an exception5709 when within transaction5710 does raise an exception5711 when running migration in reconfigured ActiveRecord::Base context5712 behaves like reconfigures connection stack5713 when restrict_gitlab_migration is set to gitlab_ci5714 finalizes the migration5715 when restrict_gitlab_migration is set to gitlab_main5716 does not find any migrations5717 when no restrict is set5718 does not find any migrations5719 when within transaction5720 does raise an exception5721 #delete_batched_background_migration5722 when migration exists5723 deletes it5724 when migration does not exist5725 does nothing5726 #gitlab_schema_from_context5727 when allowed_gitlab_schemas is not available5728 defaults to :gitlab_main5729 when allowed_gitlab_schemas is available5730 uses schema from allowed_gitlab_schema5731 #ensure_batched_background_migration_is_finished5732 raises an error when migration exists and is not marked as finished5733 does not raise error when migration exists and is marked as finished5734 logs a warning when migration does not exist5735 finalizes the migration5736 when the flag finalize is false5737 does not finalize the migration5738Gitlab::Metrics::RequestsRackMiddleware5739 #call5740 @app.call succeeds with 2005741 tracks request count and duration5742 request is a health check endpoint5743 when path is /-/liveness5744 increments health endpoint counter rather than overall counter and does not record duration5745 when path is /-/liveness/5746 increments health endpoint counter rather than overall counter and does not record duration5747 when path is /-/%6D%65%74%72%69%63%735748 increments health endpoint counter rather than overall counter and does not record duration5749 request is not a health check endpoint5750 when path is /-/ordinary-requests5751 increments regular counters and tracks duration5752 when path is /-/5753 increments regular counters and tracks duration5754 when path is /-/health/subpath5755 increments regular counters and tracks duration5756 @app.call returns an error code5757 tracks count but not duration or apdex5758 @app.call throws exception5759 tracks the correct metrics5760 application context5761 when a context is present5762 adds the feature category to the labels for required metrics5763 does not record a feature category for health check endpoints5764 when application raises an exception when the feature category context is present5765 adds the feature category to the labels for http_requests_total5766 when the context is not available5767 sets the required labels to unknown5768 SLI satisfactory5769 request_urgency_name: :high, duration: 0.1, success: true5770 Grape API handler having expected duration setup5771 captures SLI metrics5772 Rails controller having expected duration setup5773 captures SLI metrics5774 request_urgency_name: :high, duration: 0.25, success: false5775 Grape API handler having expected duration setup5776 captures SLI metrics5777 Rails controller having expected duration setup5778 captures SLI metrics5779 request_urgency_name: :high, duration: 0.3, success: false5780 Grape API handler having expected duration setup5781 captures SLI metrics5782 Rails controller having expected duration setup5783 captures SLI metrics5784 request_urgency_name: :medium, duration: 0.3, success: true5785 Grape API handler having expected duration setup5786 captures SLI metrics5787 Rails controller having expected duration setup5788 captures SLI metrics5789 request_urgency_name: :medium, duration: 0.5, success: false5790 Grape API handler having expected duration setup5791 captures SLI metrics5792 Rails controller having expected duration setup5793 captures SLI metrics5794 request_urgency_name: :medium, duration: 0.6, success: false5795 Grape API handler having expected duration setup5796 captures SLI metrics5797 Rails controller having expected duration setup5798 captures SLI metrics5799 request_urgency_name: :default, duration: 0.6, success: true5800 Grape API handler having expected duration setup5801 captures SLI metrics5802 Rails controller having expected duration setup5803 captures SLI metrics5804 request_urgency_name: :default, duration: 1.0, success: false5805 Grape API handler having expected duration setup5806 captures SLI metrics5807 Rails controller having expected duration setup5808 captures SLI metrics5809 request_urgency_name: :default, duration: 1.2, success: false5810 Grape API handler having expected duration setup5811 captures SLI metrics5812 Rails controller having expected duration setup5813 captures SLI metrics5814 request_urgency_name: :low, duration: 4.5, success: true5815 Grape API handler having expected duration setup5816 captures SLI metrics5817 Rails controller having expected duration setup5818 captures SLI metrics5819 request_urgency_name: :low, duration: 5.0, success: false5820 Grape API handler having expected duration setup5821 captures SLI metrics5822 Rails controller having expected duration setup5823 captures SLI metrics5824 request_urgency_name: :low, duration: 6, success: false5825 Grape API handler having expected duration setup5826 captures SLI metrics5827 Rails controller having expected duration setup5828 captures SLI metrics5829 Grape API without expected duration5830 falls back request's expectation to default (1 second)5831 Rails controller without expected duration5832 falls back request's expectation to default (1 second)5833 An unknown request5834 falls back request's expectation to default (1 second)5835 .initialize_metrics5836 sets labels for http_requests_total5837 sets labels for http_request_duration_seconds5838 has every label in config/feature_categories.yml5839Metrics::Dashboard::AnnotationPolicy5840 rules5841 environments annotation5842 behaves like metrics dashboard annotation policy5843 when guest5844 is expected to be disallowed :read_metrics_dashboard_annotation5845 is expected to be disallowed :create_metrics_dashboard_annotation5846 is expected to be disallowed :update_metrics_dashboard_annotation5847 is expected to be disallowed :delete_metrics_dashboard_annotation5848 when reporter5849 is expected to be allowed :read_metrics_dashboard_annotation5850 is expected to be disallowed :create_metrics_dashboard_annotation5851 is expected to be disallowed :update_metrics_dashboard_annotation5852 is expected to be disallowed :delete_metrics_dashboard_annotation5853 when developer5854 is expected to be allowed :read_metrics_dashboard_annotation5855 is expected to be allowed :create_metrics_dashboard_annotation5856 is expected to be allowed :update_metrics_dashboard_annotation5857 is expected to be allowed :delete_metrics_dashboard_annotation5858 when maintainer5859 is expected to be allowed :read_metrics_dashboard_annotation5860 is expected to be allowed :create_metrics_dashboard_annotation5861 is expected to be allowed :update_metrics_dashboard_annotation5862 is expected to be allowed :delete_metrics_dashboard_annotation5863 cluster annotation5864 behaves like metrics dashboard annotation policy5865 when guest5866 is expected to be disallowed :read_metrics_dashboard_annotation5867 is expected to be disallowed :create_metrics_dashboard_annotation5868 is expected to be disallowed :update_metrics_dashboard_annotation5869 is expected to be disallowed :delete_metrics_dashboard_annotation5870 when reporter5871 is expected to be allowed :read_metrics_dashboard_annotation5872 is expected to be disallowed :create_metrics_dashboard_annotation5873 is expected to be disallowed :update_metrics_dashboard_annotation5874 is expected to be disallowed :delete_metrics_dashboard_annotation5875 when developer5876 is expected to be allowed :read_metrics_dashboard_annotation5877 is expected to be allowed :create_metrics_dashboard_annotation5878 is expected to be allowed :update_metrics_dashboard_annotation5879 is expected to be allowed :delete_metrics_dashboard_annotation5880 when maintainer5881 is expected to be allowed :read_metrics_dashboard_annotation5882 is expected to be allowed :create_metrics_dashboard_annotation5883 is expected to be allowed :update_metrics_dashboard_annotation5884 is expected to be allowed :delete_metrics_dashboard_annotation5885Gitlab::Git::CrossRepoComparer5886 #compare5887 within a single repository5888 a non-straight comparison5889 compares without fetching from another repo5890 a straight comparison5891 compares without fetching from another repo5892 across two repositories5893 target ref exists in source repo5894 compares without fetching from another repo5895 target ref does not exist in source repo5896 compares in the source repo by fetching from the target to a temporary ref5897 source ref does not exist in source repo5898 returns an empty comparison5899 target ref does not exist in target repo5900 returns nil5901Gitlab::GithubImport::Representation::IssueEvent5902 .from_api_response5903 behaves like an IssueEvent5904 returns an instance of IssueEvent5905 the returned IssueEvent5906 includes the issue event id5907 includes the issue event "event"5908 includes the issue event commit_id5909 includes the issue event source5910 includes the issue data5911 includes the created timestamp5912 when actor data present5913 includes the actor details5914 when actor data is empty5915 does not return such info5916 when label data is present5917 includes the label_title5918 when label data is empty5919 does not return such info5920 when rename field is present5921 includes the old_title and new_title fields5922 when rename field is empty5923 does not return such info5924 when milestone data is present5925 includes the milestone_title5926 when milestone data is empty5927 does not return such info5928 when assignee data is present5929 includes assignee details5930 when assignee data is empty5931 does not return such info5932 when requested_reviewer and review_requester data is present5933 includes requested_reviewer and review_requester details5934 when requested_reviewer and review_requester data is empty5935 does not return such info5936 #issuable_id5937 returns issuable_id5938 #issuable_type5939 when event related to issue5940 is expected to eq "Issue"5941 when event related to pull request5942 is expected to eq "MergeRequest"5943 #github_identifiers5944 returns a hash with needed identifiers5945 .from_json_hash5946 behaves like an IssueEvent5947 returns an instance of IssueEvent5948 the returned IssueEvent5949 includes the issue event id5950 includes the issue event "event"5951 includes the issue event commit_id5952 includes the issue event source5953 includes the issue data5954 includes the created timestamp5955 when actor data present5956 includes the actor details5957 when actor data is empty5958 does not return such info5959 when label data is present5960 includes the label_title5961 when label data is empty5962 does not return such info5963 when rename field is present5964 includes the old_title and new_title fields5965 when rename field is empty5966 does not return such info5967 when milestone data is present5968 includes the milestone_title5969 when milestone data is empty5970 does not return such info5971 when assignee data is present5972 includes assignee details5973 when assignee data is empty5974 does not return such info5975 when requested_reviewer and review_requester data is present5976 includes requested_reviewer and review_requester details5977 when requested_reviewer and review_requester data is empty5978 does not return such info5979 #issuable_id5980 returns issuable_id5981 #issuable_type5982 when event related to issue5983 is expected to eq "Issue"5984 when event related to pull request5985 is expected to eq "MergeRequest"5986 #github_identifiers5987 returns a hash with needed identifiers5988Gitlab::GitalyClient::BlobService5989 #get_new_lfs_pointers5990 sends a get_new_lfs_pointers message5991 with not_in = :all5992 sends the correct message5993 with hook environment5994 sends a list_all_lfs_pointers message5995 #get_all_lfs_pointers5996 sends a get_all_lfs_pointers message5997 #list_blobs5998 with a single revision5999 sends a list_blobs message6000 with multiple revisions6001 sends a list_blobs message6002 with multiple revisions and limits6003 sends a list_blobs message6004 with paths6005 sends a list_blobs message6006 with split contents6007 sends a list_blobs message6008Ci::JobToken::ProjectScopeLink6009 is expected to belong to source_project required: false6010 is expected to belong to target_project required: false6011 is expected to belong to added_by required: false6012 behaves like cleanup by a loose foreign key6013 cleans up (delete or nullify) the model6014 unique index6015 raises an error6016 validations6017 must have a source project6018 must have a target project6019 must have a target project different than source project6020 .from_project6021 returns only the links having the given source project6022 .to_project6023 returns only the links having the given target project6024 .for_source_and_target6025 when link is found6026 is expected to eq #<Ci::JobToken::ProjectScopeLink id: 8, source_project_id: 822, target_project_id: 831, added_by_id: 2376, created_at: "2022-11-11 01:14:10.154225629 +0000", direction: "outbound">6027 when link is not found6028 is expected to be nil6029 enums6030 is expected to define :direction as an enum backed by an integer with values ‹{outbound: 0, inbound: 1}›6031 loose foreign key on ci_job_token_project_scope_links.source_project_id6032 behaves like cleanup by a loose foreign key6033 cleans up (delete or nullify) the model6034 loose foreign key on ci_job_token_project_scope_links.target_project_id6035 behaves like cleanup by a loose foreign key6036 cleans up (delete or nullify) the model6037Gitlab::I18n::PoLinter6038 #errors6039 only calls validation once6040 #validate_po6041 for a fuzzy message6042 has an error6043 for a translations with newlines6044 has an error for a normal string6045 has an error when a translation is defined over multiple lines6046 raises an error when a plural translation is defined over multiple lines6047 raises an error when the plural id is defined over multiple lines6048 with an invalid po6049 returns the error6050 does not validate entries6051 with missing metadata6052 returns the an error6053 with a valid po6054 parses the file6055 validates the entries6056 has no errors6057 with missing plurals6058 has errors6059 with multiple plurals6060 has errors6061 with unescaped chars6062 contains an error6063 when an entry contains html6064 presents an error for each component containing angle brackets6065 #parse_po6066 with a valid po6067 fills in the entries6068 does not have errors6069 with an invalid po6070 contains an error6071 sets the entries to an empty array6072 #validate_entries6073 keeps track of errors for entries6074 #validate_entry6075 validates the flags, variable usage, newlines, and unescaped chars6076 #validate_number_of_plurals6077 validates when there are an incorrect number of translations6078 #validate_variables6079 validates both singular and plural in a pluralized string when the entry has a singular6080 only validates plural when there is no separate singular6081 validates the message variables6082 validates variable usage in message ids6083 #validate_variables_in_message6084 detects when a variables are used incorrectly6085 does not allow combining 1 `%d` unnamed variable with named variables6086 #validate_translation6087 succeeds with valid variables6088 adds an error message when translating fails6089 adds an error message when translating fails when translating with context6090 adds an error when trying to translate with incorrect variables when using unnamed variables6091 adds an error when trying to translate with named variables when unnamed variables are expected6092 tests translation for all given forms6093 #numbers_covering_all_plurals6094 can correctly find all required numbers to translate to Polish6095 #fill_in_variables6096 builds an array for %d translations6097 builds an array for %s translations6098 builds a hash for named variables6099Gitlab::ImportExport::CommandLineUtil6100 has the right mask for project.json6101 has the right mask for uploads6102 #download_or_copy_upload6103 when the upload is local6104 copies the file6105 when the upload is remote6106 downloads the file6107 #download6108 a non-localhost uri6109 with ok status code6110 gets the contents6111 streams the contents via Gitlab::HTTP6112 does not get the content over the size_limit6113 gets the content within the size_limit6114 with a redirect status code MOVED_PERMANENTLY6115 logs the redirect6116 with a redirect status code FOUND6117 logs the redirect6118 with a redirect status code SEE_OTHER6119 logs the redirect6120 with a redirect status code TEMPORARY_REDIRECT6121 logs the redirect6122 with an invalid status code ACCEPTED6123 throws an error6124 with an invalid status code UNAUTHORIZED6125 throws an error6126 with an invalid status code BAD_REQUEST6127 throws an error6128 a localhost uri6129 throws a blocked url error6130 for object_storage uri6131 gets the content6132 #gzip6133 compresses specified file6134 when exception occurs6135 raises an exception6136 #gunzip6137 decompresses specified file6138 when exception occurs6139 raises an exception6140 #tar_cf6141 archives a folder without compression6142 when something goes wrong6143 raises an error6144 #untar_xf6145 extracts archive without decompression6146 when something goes wrong6147 raises an error6148 returns false and includes error status6149Gitlab::ApplicationContext6150 .with_context6151 yields the block6152 passes the expected context on to labkit6153 raises an error when passing invalid options6154 .with_raw_context6155 yields the block6156 passes the attributes unaltered on to labkit6157 .push6158 passes the expected context on to labkit6159 raises an error when passing invalid options6160 .current_context_include?6161 returns true if the key was present in the context6162 returns false if the key was not present in the current context6163 .current_context_attribute6164 returns the raw attribute value6165 returns the attribute value with meta prefix6166 returns nil if the key was not present in the current context6167 #to_lazy_hash6168 does not call the attributes until needed6169 correctly loads the expected values when they are wrapped in a block6170 correctly loads the expected values when passed directly6171 falls back to a projects namespace when a project is passed but no namespace6172 contains known keys6173 setting the client6174 provided_options: [:remote_ip], client: :remote_ip6175 sets the client_id to the expected value6176 provided_options: [:remote_ip, :runner], client: :runner6177 sets the client_id to the expected value6178 provided_options: [:remote_ip, :runner, :user], client: :runner6179 sets the client_id to the expected value6180 provided_options: [:remote_ip, :user], client: :user6181 sets the client_id to the expected value6182 when using a runner project6183 sets project path from runner project6184 when the runner serves multiple projects6185 does not set project path6186 when using an instance runner6187 does not sets project path6188 when using job context6189 sets expected values6190 #use6191 yields control6192 passes the expected context on to labkit6193 does not cause queries6194Gitlab::ImportExport::Project::ImportTask6195 when project import is valid6196/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 nil6197 performs project import successfully6198 behaves like rake task with disabled object_storage6199/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 nil6200 disables direct & background upload only for service call6201 when project import is invalid6202/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 nil6203 performs project import successfully6204Gitlab::Graphql::Queries6205 Gitlab::Graphql::Queries::Fragments6206 has the right home6207 has the right EE home6208 caches query definitions6209 .all6210 is the combination of finding queries in CE and EE6211 .find6212 find a single specific file6213 ignores files that do not exist6214 ignores fragments6215 ignores typedefs6216 ignores customer.query.graphql6217 ignores customer.mutation.graphql6218 finds all query definitions under a root directory6219 Gitlab::Graphql::Queries::Definition6220 a simple query6221 has a complexity6222 behaves like a valid GraphQL query for the blog schema6223 is valid6224 a query with an import6225 behaves like a valid GraphQL query for the blog schema6226 is valid6227 a query with duplicate imports6228 behaves like a valid GraphQL query for the blog schema6229 is valid6230 a query importing from ee_else_ce6231 can resolve the ee fields6232 behaves like a valid GraphQL query for the blog schema6233 is valid6234 a query refering to parent directories6235 behaves like a valid GraphQL query for the blog schema6236 is valid6237 a query refering to parent directories, incorrectly6238 behaves like an invalid GraphQL query for the blog schema6239 is invalid6240 a query with a broken import6241 behaves like an invalid GraphQL query for the blog schema6242 is invalid6243 a query which imports a file with a broken import6244 behaves like an invalid GraphQL query for the blog schema6245 is invalid6246 a query containing a client directive6247 is tagged as a client query6248 behaves like a valid GraphQL query for the blog schema6249 is valid6250 a mixed client query, valid6251 is not tagged as a client query6252 behaves like a valid GraphQL query for the blog schema6253 is valid6254 a mixed client query, with skipped argument6255 behaves like a valid GraphQL query for the blog schema6256 is valid6257 a mixed client query, with unused fragment6258 behaves like a valid GraphQL query for the blog schema6259 is valid6260 a client query, with unused fragment6261 is tagged as a client query6262 behaves like a valid GraphQL query for the blog schema6263 is valid6264 a mixed client query, invalid6265 behaves like an invalid GraphQL query for the blog schema6266 is invalid6267 a query containing a connection directive6268 behaves like a valid GraphQL query for the blog schema6269 is valid6270 a query which mentions an incorrect field6271 behaves like an invalid GraphQL query for the blog schema6272 is invalid6273 a query which has a missing argument6274 behaves like an invalid GraphQL query for the blog schema6275 is invalid6276 a query which has a bad argument6277 behaves like an invalid GraphQL query for the blog schema6278 is invalid6279 a query which has a syntax error6280 behaves like an invalid GraphQL query for the blog schema6281 is invalid6282 a query which has an unused import6283 behaves like an invalid GraphQL query for the blog schema6284 is invalid6285Gitlab::Database::PostgresIndex6286 is expected to be a kind of Gitlab::Database::SharedModel(abstract)6287 behaves like a postgres model6288 .by_identifier6289 finds the Gitlab::Database::PostgresIndex6290 raises an error if not found6291 raises ArgumentError if given a non-fully qualified identifier6292 #to_s6293 returns the name6294 #schema6295 returns the schema6296 #name6297 returns the name6298 .reindexing_support6299 only non partitioned indexes6300 only indexes that dont serve an exclusion constraint6301 only non-expression indexes6302 only btree and gist indexes6303 with leftover indexes6304 excludes temporary indexes from reindexing6305 .reindexing_leftovers6306 retrieves leftover indexes matching the /_ccnew[0-9]*$/ pattern6307 .not_match6308 excludes indexes matching the given regex6309 matches indexes without this prefix regex6310 #bloat_size6311 returns the bloat size from the estimate6312 without a bloat estimate available6313 returns 06314 #relative_bloat_level6315 calculates the relative bloat level6316 #reset6317 calls #reload6318 resets the bloat estimation6319 #unique?6320 returns true for a unique index6321 returns false for a regular, non-unique index6322 returns true for a primary key index6323 #valid_index?6324 returns true if the index is invalid6325 returns false if the index is marked as invalid6326 #definition6327 returns the index definition6328Analytics::CycleAnalytics::MergeRequestStageEvent6329 is expected to validate that :stage_event_hash_id cannot be empty/falsy6330 is expected to validate that :merge_request_id cannot be empty/falsy6331 is expected to validate that :group_id cannot be empty/falsy6332 is expected to validate that :project_id cannot be empty/falsy6333 is expected to validate that :start_event_timestamp cannot be empty/falsy6334 has state enum6335 behaves like StageEventModel6336 .upsert_data6337 inserts the data6338 does not produce duplicate rows6339 inserts the data correctly6340 scopes6341 filters by stage_event_hash_id6342 filters by project_id6343 filters by group_id6344 filters by author_id6345 filters by assignee6346 filters by milestone_id6347 start_event_timestamp filtering6348 when range is given6349 when specifying upper bound6350 when specifying the lower bound6351 end_event_timestamp filtering6352 when range is given6353 when specifying upper bound6354 when specifying the lower bound6355 #total_time6356 calcualtes total time from the start_event_timestamp and end_event_timestamp columns6357 when total time is calculated in SQL as an extra column6358 returns the SQL calculated time6359Gitlab::SidekiqConfig::WorkerMatcher6360 #match?6361 with valid input6362 query: "worker_name=WorkerA", expected_metadatas: ["WorkerA"]6363 is expected to contain exactly "WorkerA"6364 query: "worker_name=WorkerA2", expected_metadatas: ["WorkerA2"]6365 is expected to contain exactly "WorkerA2"6366 query: "worker_name=WorkerB|worker_name=WorkerD", expected_metadatas: ["WorkerB"]6367 is expected to contain exactly "WorkerB"6368 query: "worker_name!=WorkerA", expected_metadatas: ["WorkerA2", "WorkerB", "WorkerC"]6369 is expected to contain exactly "WorkerA2", "WorkerB", and "WorkerC"6370 query: "feature_category=category_a", expected_metadatas: ["WorkerA", "WorkerA2"]6371 is expected to contain exactly "WorkerA" and "WorkerA2"6372 query: "feature_category=category_a,category_c", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerC"]6373 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerC"6374 query: "feature_category=category_a|feature_category=category_c", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerC"]6375 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerC"6376 query: "feature_category!=category_a", expected_metadatas: ["WorkerB", "WorkerC"]6377 is expected to contain exactly "WorkerB" and "WorkerC"6378 query: "has_external_dependencies=true", expected_metadatas: ["WorkerB"]6379 is expected to contain exactly "WorkerB"6380 query: "has_external_dependencies=false", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerC"]6381 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerC"6382 query: "has_external_dependencies=true,false", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]6383 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"6384 query: "has_external_dependencies=true|has_external_dependencies=false", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]6385 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"6386 query: "has_external_dependencies!=true", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerC"]6387 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerC"6388 query: "urgency=high", expected_metadatas: ["WorkerA2", "WorkerB"]6389 is expected to contain exactly "WorkerA2" and "WorkerB"6390 query: "urgency=low", expected_metadatas: ["WorkerA"]6391 is expected to contain exactly "WorkerA"6392 query: "urgency=high,low,throttled", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]6393 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"6394 query: "urgency=low|urgency=throttled", expected_metadatas: ["WorkerA", "WorkerC"]6395 is expected to contain exactly "WorkerA" and "WorkerC"6396 query: "urgency!=high", expected_metadatas: ["WorkerA", "WorkerC"]6397 is expected to contain exactly "WorkerA" and "WorkerC"6398 query: "name=a", expected_metadatas: ["WorkerA"]6399 is expected to contain exactly "WorkerA"6400 query: "name=a,b", expected_metadatas: ["WorkerA", "WorkerB"]6401 is expected to contain exactly "WorkerA" and "WorkerB"6402 query: "name=a,a:2|name=b", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB"]6403 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerB"6404 query: "name!=a,a:2", expected_metadatas: ["WorkerB", "WorkerC"]6405 is expected to contain exactly "WorkerB" and "WorkerC"6406 query: "resource_boundary=memory", expected_metadatas: ["WorkerB", "WorkerC"]6407 is expected to contain exactly "WorkerB" and "WorkerC"6408 query: "resource_boundary=memory,cpu", expected_metadatas: ["WorkerA", "WorkerB", "WorkerC"]6409 is expected to contain exactly "WorkerA", "WorkerB", and "WorkerC"6410 query: "resource_boundary=memory|resource_boundary=cpu", expected_metadatas: ["WorkerA", "WorkerB", "WorkerC"]6411 is expected to contain exactly "WorkerA", "WorkerB", and "WorkerC"6412 query: "resource_boundary!=memory,cpu", expected_metadatas: ["WorkerA2"]6413 is expected to contain exactly "WorkerA2"6414 query: "tags=no_disk_io", expected_metadatas: ["WorkerA", "WorkerB"]6415 is expected to contain exactly "WorkerA" and "WorkerB"6416 query: "tags=no_disk_io,git_access", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB"]6417 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerB"6418 query: "tags=no_disk_io|tags=git_access", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB"]6419 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerB"6420 query: "tags=no_disk_io&tags=git_access", expected_metadatas: ["WorkerA"]6421 is expected to contain exactly "WorkerA"6422 query: "tags!=no_disk_io", expected_metadatas: ["WorkerA2", "WorkerC"]6423 is expected to contain exactly "WorkerA2" and "WorkerC"6424 query: "tags!=no_disk_io,git_access", expected_metadatas: ["WorkerC"]6425 is expected to contain exactly "WorkerC"6426 query: "tags=unknown_tag", expected_metadatas: []6427 is expected to contain exactly6428 query: "tags!=no_disk_io", expected_metadatas: ["WorkerA2", "WorkerC"]6429 is expected to contain exactly "WorkerA2" and "WorkerC"6430 query: "tags!=no_disk_io,git_access", expected_metadatas: ["WorkerC"]6431 is expected to contain exactly "WorkerC"6432 query: "tags!=unknown_tag", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]6433 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"6434 query: "feature_category=category_a&urgency=high", expected_metadatas: ["WorkerA2"]6435 is expected to contain exactly "WorkerA2"6436 query: "feature_category=category_a&urgency=high|feature_category=category_c", expected_metadatas: ["WorkerA2", "WorkerC"]6437 is expected to contain exactly "WorkerA2" and "WorkerC"6438 query: "*", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]6439 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"6440 with invalid input6441 query: "feature_category=\"category_a\"", error: Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm6442 is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm6443 query: "feature_category=", error: Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm6444 is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm6445 query: "feature_category~category_a", error: Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm6446 is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm6447 query: "invalid_term=a", error: Gitlab::SidekiqConfig::WorkerMatcher::UnknownPredicate6448 is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::UnknownPredicate6449Database::CiProjectMirrorsConsistencyCheckWorker6450 #perform6451 executes the consistency check on projects6452 logs should contain the detailed mismatches6453 reports the differences to the logs6454 calls the consistency_fix_service to fix the inconsistencies6455Users::UpdateService6456 #execute6457 updates time preferences6458 returns an error result when record cannot be updated6459 includes namespace error messages6460 updates the status if status params were given6461 does not delete the status if no status param was passed6462 includes status error messages6463 updates user detail with provided attributes6464 updating canonical email6465 if email was changed6466 calls canonicalize_email6467 when check_password is true6468 returns error if no password confirmation was passed6469 returns error if wrong password confirmation was passed6470 does not require password if it was automatically set6471 does not require a password if the attribute changed does not require it6472 when check_password is left to false6473 does not require a password check6474 if email was NOT changed6475 skips update canonicalize email service call6476 #execute!6477 updates the name6478 raises an error when record cannot be updated6479 fires system hooks when a new user is saved6480Packages::Debian::ProjectComponentFile6481 behaves like Debian Component File6482 relationships6483 with stubbed uploader6484 is expected to belong to component class_name => Packages::Debian::ProjectComponent required: false inverse_of => files6485 with packages file_type6486 is expected to belong to architecture class_name => Packages::Debian::ProjectArchitecture required: false inverse_of => files6487 with :sources file_type6488 is expected to belong to architecture class_name => Packages::Debian::ProjectArchitecture inverse_of => files optional: true6489 validations6490 #component6491 is expected to validate that :component cannot be empty/falsy6492 #architecture6493 with packages file_type6494 is expected to validate that :architecture cannot be empty/falsy6495 with :sources file_type6496 is expected to validate that :architecture is empty/falsy6497 #file_type6498 is expected to validate that :file_type cannot be empty/falsy6499 is expected to allow :file_type to be ‹:packages›6500 #compression_type6501 is expected not to validate that :compression_type cannot be empty/falsy6502 is expected to allow :compression_type to be ‹nil›6503 is expected to allow :compression_type to be ‹:gz›6504 #file6505 the uploader api6506 is expected to respond to #store_dir6507 is expected to respond to #cache_dir6508 is expected to respond to #work_dir6509 #file_store6510 is expected to validate that :file_store cannot be empty/falsy6511 #file_md56512 is expected to validate that :file_md5 cannot be empty/falsy6513 #file_sha2566514 is expected to validate that :file_sha256 cannot be empty/falsy6515 scopes6516 .with_container6517 is expected to contain exactly #<Packages::Debian::ProjectComponentFile id: 7, created_at: "2022-11-11 01:15:01.241555720 +0000", up..., file: "Packages", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6518 .with_codename_or_suite6519 is expected to contain exactly #<Packages::Debian::ProjectComponentFile id: 7, created_at: "2022-11-11 01:15:01.241555720 +0000", up..., file: "Packages", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6520 .with_component_name6521 is expected to contain exactly #<Packages::Debian::ProjectComponentFile id: 3, created_at: "2022-11-11 01:15:01.215739852 +0000", up..., file: "Packages", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6522 .with_file_type6523 is expected to contain exactly #<Packages::Debian::ProjectComponentFile id: 8, created_at: "2022-11-11 01:15:01.249803000 +0000", up...1, file: "Sources", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6524 .with_architecture6525 is expected to contain exactly #<Packages::Debian::ProjectComponentFile id: 2, created_at: "2022-11-11 01:15:01.208785472 +0000", up..., file: "Packages", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6526 .with_architecture_name6527 is expected to contain exactly #<Packages::Debian::ProjectComponentFile id: 2, created_at: "2022-11-11 01:15:01.208785472 +0000", up..., file: "Packages", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6528 .with_compression_type6529 is expected to contain exactly #<Packages::Debian::ProjectComponentFile id: 4, created_at: "2022-11-11 01:15:01.222682331 +0000", up..., file: "Packages", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6530 .with_file_sha2566531 is expected to contain exactly #<Packages::Debian::ProjectComponentFile id: 6, created_at: "2022-11-11 01:15:01.235448671 +0000", up...ion_type: nil, file_store: 1, file: "Packages", file_md5: "12345abcde", file_sha256: "other_sha256">6532 .updated_before6533 is expected to contain exactly #<Packages::Debian::ProjectComponentFile id: 10, created_at: "2022-11-11 01:15:02.276477131 +0000", u..., file: "Packages", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad"> and #<Packages::Debian::ProjectComponentFile id: 11, created_at: "2022-11-11 01:15:02.285392941 +0000", u..., file: "Packages", file_md5: "12345abcde", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6534 callbacks6535 updates metadata columns6536 #relative_path6537 with a Packages file_type6538 is expected to eq "project-component-1/binary-project-arch-1/Packages"6539 with a Source file_type6540 is expected to eq "project-component-1/source/Sources"6541 with a DI Packages file_type6542 is expected to eq "project-component-1/debian-installer/binary-project-arch-1/Packages"6543 with an xz compression_type6544 is expected to eq "project-component-1/binary-project-arch-1/Packages.xz"6545DependencyProxy::Blob6546 behaves like ttl_expirable6547 behaves like having unique enum values6548 has unique values in "status"6549 default values6550 is expected to within one second of 2022-11-11 01:15:02 UTC6551 is expected to within one second of 2022-11-10 01:15:02 UTC6552 validations6553 is expected to validate that :status cannot be empty/falsy6554 .read_before6555 returns items with created at older than the supplied number of days6556 .active6557 returns only active items6558 #read!6559 updates read_at6560 behaves like destructible6561 .next_pending_destruction6562 returns the oldest item pending destruction based on updated_at6563 returns the oldest item pending destruction based on created_at6564 behaves like updates namespace statistics6565 when creating6566 schedules a statistic refresh6567 when updating6568 when the statistic attribute has not changed6569 does not schedule a statistic refresh6570 when the statistic attribute has changed6571 schedules a statistic refresh6572 when deleting6573 schedules a statistic refresh6574 relationships6575 is expected to belong to group required: false6576 validations6577 is expected to validate that :group cannot be empty/falsy6578 is expected to validate that :file cannot be empty/falsy6579 is expected to validate that :file_name cannot be empty/falsy6580 .total_size6581 returns 0 if no files6582 returns a correct sum of all files sizes6583 .find_or_build6584 builds new instance if not found6585 finds an existing blob6586 file is being stored6587 when existing object has local store6588 behaves like mounted file in local store6589 is stored locally6590 when direct upload is enabled6591 behaves like mounted file in object store6592 is stored remotely6593WorkItemPolicy6594 read_work_item6595 when project is public6596 when user is not a member of the project6597 is expected to be allowed :read_work_item6598 when user is a member of the project6599 is expected to be allowed :read_work_item6600 when work_item is confidential6601 is expected not to be allowed :read_work_item6602 when project is private6603 when user is not a member of the project6604 is expected to be disallowed :read_work_item6605 when user is a member of the project6606 is expected to be allowed :read_work_item6607 admin_work_item6608 when user is reporter6609 is expected to be allowed :admin_work_item6610 when user is guest6611 is expected to be disallowed :admin_work_item6612 when guest authored the work item6613 is expected to be disallowed :admin_work_item6614 update_work_item6615 when user is reporter6616 is expected to be allowed :update_work_item6617 when user is guest6618 is expected to be disallowed :update_work_item6619 when guest authored the work item6620 is expected to be allowed :update_work_item6621 delete_work_item6622 when user is a member of the project6623 when the user is not the author of the work item6624 is expected to be disallowed :delete_work_item6625 when guest authored the work item6626 is expected to be allowed :delete_work_item6627 when user is member of the project's group6628 when the user is not the author of the work item6629 is expected to be disallowed :delete_work_item6630 when user authored the work item6631 is expected to be allowed :delete_work_item6632 when user is not a member of the project6633 when the user authored the work item6634 is expected to be disallowed :delete_work_item6635 when the user is not the author of the work item6636 is expected to be disallowed :delete_work_item6637 admin_parent_link6638 when user is reporter6639 is expected to be allowed :admin_parent_link6640 when user is guest6641 is expected to be disallowed :admin_parent_link6642 when guest authored the work item6643 is expected to be disallowed :admin_parent_link6644 when guest is assigned to the work item6645 is expected to be disallowed :admin_parent_link6646 set_work_item_metadata6647 when user is reporter6648 is expected to be allowed :set_work_item_metadata6649 when user is guest6650 is expected to be disallowed :set_work_item_metadata6651 when the work item is not persisted yet6652 is expected to be allowed :set_work_item_metadata6653MergeWorker6654 remove source branch6655 clears cache of source repo after removing source branch6656 behaves like an idempotent worker6657 is labeled as idempotent6658 performs multiple times sequentially without raising an exception6659 the merge request is still shown as merged6660Crm::OrganizationsFinder6661 #execute6662 when customer relations feature is enabled for the group6663 when user does not have permissions to see organizations in the group6664 returns an empty array6665 when user is member of the root group6666 when feature flag is enabled6667 returns all group organizations6668 when user is member of the sub group6669 returns an empty array6670 when customer relations feature is disabled for the group6671 returns an empty array6672 with search informations6673 when search term is empty6674 returns all group organizations alphabetically ordered6675 when search term is not empty6676 searches for name6677 searches for description6678 searches for name and description6679 when searching for organizations state6680 returns only inactive organizations6681 returns only active organizations6682 when searching for organizations ids6683 returns the expected organizations6684 when sorting6685 returns the organiztions sorted by name in ascending order6686 returns the organizations sorted by description in descending order6687 returns the contacts sorted by default_rate in ascending order6688 .counts_by_state6689 returns correct counts6690SensitiveSerializableHash6691 .prevent_from_serialization6692 does not include the field in serializable_hash6693 does not change parent class attributes_exempt_from_serializable_hash6694 unsafe_serialization_hash option6695 includes the field in serializable_hash6696 #serializable_hash6697 for a web hook6698 behaves like attr_encrypted attribute6699 WebHook#token6700 has a encrypted_attributes field6701 does not include the attribute in serializable_hash6702 unsafe_serialization_hash option6703 includes the field in serializable_hash6704 behaves like attr_encrypted attribute6705 WebHook#url6706 has a encrypted_attributes field6707 does not include the attribute in serializable_hash6708 unsafe_serialization_hash option6709 includes the field in serializable_hash6710 behaves like attr_encrypted attribute6711 WebHook#url_variables6712 has a encrypted_attributes field6713 does not include the attribute in serializable_hash6714 unsafe_serialization_hash option6715 includes the field in serializable_hash6716 behaves like attr_encrypted attribute6717 Ci::InstanceVariable#value6718 has a encrypted_attributes field6719 does not include the attribute in serializable_hash6720 unsafe_serialization_hash option6721 includes the field in serializable_hash6722 behaves like add_authentication_token_field attribute6723 does not include token_expires_at in serializable_hash6724 Ci::Runner#token6725 has a add_authentication_token_field field6726 does not include the attribute in serializable_hash6727 unsafe_serialization_hash option6728 includes the field in serializable_hash6729 behaves like add_authentication_token_field attribute6730 ApplicationSetting#health_check_access_token6731 has a add_authentication_token_field field6732 does not include the attribute in serializable_hash6733 unsafe_serialization_hash option6734 includes the field in serializable_hash6735 behaves like add_authentication_token_field attribute6736 PersonalAccessToken#token6737 has a add_authentication_token_field field6738 does not include the attribute in serializable_hash6739 unsafe_serialization_hash option6740 includes the field in serializable_hash6741RepositoryCheck::SingleRepositoryWorker6742 skips when the project has no push events6743 fails when the project has push events and a broken repository6744 succeeds when the project repo is valid6745 fails if the wiki repository is broken6746 skips wikis when disabled6747 creates missing wikis6748 does not create a wiki if the main repo does not exist at all6749gitlab:external_diffs rake tasks6750 force_object_storage task6751 forces externally stored merge request diffs to object storage6752 limits batches according to BATCH_SIZE, START_ID, and END_ID6753AuthorizedProjectUpdate::UserRefreshFromReplicaWorker6754 is labeled as low urgency6755 behaves like an idempotent worker6756 is labeled as idempotent6757 performs multiple times sequentially without raising an exception6758 #perform6759 checks if a project_authorization refresh is needed for the user6760 when there are project authorization records due for either removal or addition for a specific user6761 enqueues a new project authorization update job for the user6762 when there are no additions or removals to be made to project authorizations for a specific user6763 does not enqueue a new project authorization update job for the user6764 with load balancing enabled6765 reads from the replica database6766BulkInsertSafe6767-- create_table(:_test_bulk_insert_parent_items, {:force=>true})6768 -> 0.0214s6769-- create_table(:_test_bulk_insert_items, {:force=>true})6770 -> 0.0841s6771-- create_table(:_test_bulk_insert_items_with_composite_pk, {:id=>false, :force=>true})6772 -> 0.0022s6773-- execute("ALTER TABLE _test_bulk_insert_items_with_composite_pk ADD PRIMARY KEY (id,name);")6774 -> 0.0014s6775 BulkInsertItem6776 behaves like a BulkInsertSafe model6777 when calling class methods directly6778 raises an error when method is not bulk-insert safe6779 does not raise an error when method is bulk-insert safe6780 .bulk_insert!6781 when all items are valid6782 inserts them all6783 returns an empty array6784 when some items are invalid6785 does not insert any of them and raises an error6786 inserts them anyway when bypassing validations6787 when inheriting class methods6788 raises an error when method is not bulk-insert safe6789 does not raise an error when method is bulk-insert safe6790 primary keys6791 raises error if primary keys are set prior to insertion6792 .bulk_insert!6793 inserts items in the given number of batches6794 inserts items with belongs_to association6795 items can be properly fetched from database6796 rolls back the transaction when any item is invalid6797 does nothing and returns an empty array when items are empty6798 with returns option set6799 when is set to :ids6800 is expected to contain exactly (a kind of Integer)6801 when is set to nil6802 is expected to eq []6803 when is set to a list of attributes6804 is expected to contain exactly [(a kind of Integer), "2fd4e1c67a2d28fced849ee1bb76e7391b93eb12"]6805 when duplicate items are to be inserted6806 .bulk_insert!6807 when skip_duplicates is set to false6808 raises an exception6809 when skip_duplicates is set to true6810 does not update existing object6811 .bulk_upsert!6812 updates existing object6813 when the `created_at` attribute is provided6814 does not change the existing `created_at` value6815 when a model with composite primary key is inserted6816WARNING: Active Record does not support composite primary key.6817_test_bulk_insert_items_with_composite_pk has composite primary key. Composite primary key is ignored.6818 successfully inserts an item6819-- drop_table(:_test_bulk_insert_items, {:force=>true})6820 -> 0.0974s6821-- drop_table(:_test_bulk_insert_parent_items, {:force=>true})6822 -> 0.0024s6823-- drop_table(:_test_bulk_insert_items_with_composite_pk, {:force=>true})6824 -> 0.0019s6825LastGroupOwnerAssigner6826 #execute6827 avoids extra database queries utilizing memoization6828 when there are unblocked owners6829 with one unblocked owner6830 is expected to change `GroupMember#last_owner` from nil to true and change `GroupMember#last_blocked_owner` from nil to false6831 with multiple unblocked owners6832 is expected to change `GroupMember#last_owner` from nil to false and change `GroupMember#last_blocked_owner` from nil to false6833 has many members passed6834 when there are blocked owners6835 with one blocked owner6836 is expected to change `GroupMember#last_owner` from nil to false and change `GroupMember#last_blocked_owner` from nil to true6837 with multiple unblocked owners6838 is expected to change `GroupMember#last_owner` from nil to false and change `GroupMember#last_blocked_owner` from nil to false6839 with multiple blocked owners6840 is expected to change `GroupMember#last_owner` from nil to false and change `GroupMember#last_blocked_owner` from nil to false6841 when there are bot members6842 with a bot owner6843 is expected to change `GroupMember#last_owner` from nil to true and change `GroupMember#last_blocked_owner` from nil to false6844SentryIssueFinder6845 #execute6846 when the user is not part of the project6847 is expected to be nil6848 when the user is a project developer6849 is expected to eq #<SentryIssue id: 2, issue_id: 106, sentry_issue_identifier: 10000002>6850 when identifier is incorrect6851 is expected to be nil6852 when accessing another projects identifier6853 is expected to be nil6854CustomerRelations::Organization6855 associations6856 is expected to belong to group required: false6857 validations6858 is expected to validate that :group cannot be empty/falsy6859 is expected to validate that :name cannot be empty/falsy6860 is expected to validate that :name is case-insensitively unique within the scope of :group_id6861 is expected to validate that the length of :name is at most 2556862 is expected to validate that the length of :description is at most 10246863 #root_group6864 when root group6865 is expected to be valid6866 when subgroup6867 is expected to be invalid6868 #name6869 strips name6870 #find_by_name6871 strips name6872 #self.move_to_root_group6873 moves organizations with unique names and deletes the rest6874 updates contact.organization_id for dupes and leaves the rest untouched6875 .search6876 when search term is empty6877 returns all group organizations6878 when search term is not empty6879 when searching for name6880 is expected to contain exactly #<CustomerRelations::Organization id: 30, group_id: 3853, created_at: "2022-11-11 01:15:48.467400211 ...15:48.467400211 +0000", state: "active", default_rate: nil, name: "ABC_st", description: [FILTERED]>6881 when searching for description6882 is expected to contain exactly #<CustomerRelations::Organization id: 29, group_id: 3853, created_at: "2022-11-11 01:15:48.462382442 ...:15:48.462382442 +0000", state: "inactive", default_rate: nil, name: "DEF", description: [FILTERED]>6883 when searching for name and description6884 is expected to contain exactly #<CustomerRelations::Organization id: 29, group_id: 3853, created_at: "2022-11-11 01:15:48.462382442 ...:15:48.462382442 +0000", state: "inactive", default_rate: nil, name: "DEF", description: [FILTERED]> and #<CustomerRelations::Organization id: 30, group_id: 3853, created_at: "2022-11-11 01:15:48.467400211 ...15:48.467400211 +0000", state: "active", default_rate: nil, name: "ABC_st", description: [FILTERED]>6885 .search_by_state6886 when searching for organizations state6887 returns only inactive organizations6888 returns only active organizations6889 .counts_by_state6890 returns correct organization counts6891 returns 0 with no results6892 sorting6893 .sort_by_name6894 sorts them by name in ascendent order6895 .sort_by_field6896 sorts them by description in descending order6897Projects::GroupLinks::DestroyService#execute6898 removes group from project6899 returns false if group_link is blank6900 project authorizations refresh6901 calls AuthorizedProjectUpdate::ProjectRecalculateWorker to update project authorizations6902 calls AuthorizedProjectUpdate::UserRefreshFromReplicaWorker with a delay to update project authorizations6903 updates project authorizations of users who had access to the project via the group share6904 todos cleanup6905 when project is private6906 triggers todos cleanup6907 when project is public or internal6908 when project is public6909 behaves like removes confidential todos6910 does not trigger todos cleanup6911 when project is internal6912 behaves like removes confidential todos6913 does not trigger todos cleanup6914Gitlab::PhabricatorImport::BaseWorker6915 .schedule6916 schedules the job6917 counts the scheduled job6918 #perform6919 does not break for a non-existing project6920 does not do anything when the import is not in progress6921 calls import for the project6922 marks the project as imported if there was only one job running6923 does not mark the job as finished when there are more scheduled jobs6924 decrements the job counter6925Gitlab::Database::LoadBalancing::Sticking6926 #stick_or_unstick_request6927 sticks or unsticks a single object and updates the Rack environment6928 sticks or unsticks multiple objects and updates the Rack environment6929 #stick_if_necessary6930 does not stick if no write was performed6931 sticks to the primary if a write was performed6932 #all_caught_up?6933 when no write location could be found6934 returns true6935 when all secondaries have caught up6936 returns true, and unsticks6937 notifies with the proper event payload6938 when the secondaries have not yet caught up6939 returns false6940 notifies with the proper event payload6941 #unstick_or_continue_sticking6942 simply returns if no write location could be found6943 unsticks if all secondaries have caught up6944 continues using the primary if the secondaries have not yet caught up6945 #stick6946 behaves like sticking6947 sticks an entity to the primary6948 does not update the write location when no replicas are used6949 #bulk_stick6950 behaves like sticking6951 sticks an entity to the primary6952 does not update the write location when no replicas are used6953 #mark_primary_write_location6954 updates the write location with the load balancer6955 does nothing when no replicas are used6956 #unstick6957 removes the sticking data from Redis6958 #last_write_location_for6959 returns the last WAL write location for a user6960 #redis_key_for6961 returns a String6962 #select_caught_up_replicas6963 with no write location6964 returns false and does not try to find caught up hosts6965 with write location6966 returns true, selects hosts, and unsticks if any secondary has caught up6967Types::BaseObject6968 scoping items6969 paginates arrays correctly6970 filters connections correctly6971 filters polymorphic connections6972 filters interface connections6973 redacts polymorphic objects6974 paginates before scoping6975 a lazy list6976 behaves like array member redaction6977 redacts the unauthorized array member6978 a list of lazy items6979 behaves like array member redaction6980 redacts the unauthorized array member6981 an array connection of items6982 behaves like array member redaction6983 redacts the unauthorized array member6984 an array connection of items, selecting edges6985 behaves like array member redaction6986 redacts the unauthorized array member6987 .authorize6988 keeps track of the specified value6989 can not redefine the authorize value6990Integrations::Ewm6991 Validations6992 when integration is active6993 is expected to validate that :project_url cannot be empty/falsy6994 is expected to validate that :issues_url cannot be empty/falsy6995 is expected to validate that :new_issue_url cannot be empty/falsy6996 behaves like issue tracker integration URL attribute6997 is expected to allow :project_url to be ‹"https://example.com"›6998 is expected not to allow :project_url to be ‹"example.com"›6999 is expected not to allow :project_url to be ‹"ftp://example.com"›7000 is expected not to allow :project_url to be ‹"herp-and-derp"›7001 behaves like issue tracker integration URL attribute7002 is expected to allow :issues_url to be ‹"https://example.com"›7003 is expected not to allow :issues_url to be ‹"example.com"›7004 is expected not to allow :issues_url to be ‹"ftp://example.com"›7005 is expected not to allow :issues_url to be ‹"herp-and-derp"›7006 behaves like issue tracker integration URL attribute7007 is expected to allow :new_issue_url to be ‹"https://example.com"›7008 is expected not to allow :new_issue_url to be ‹"example.com"›7009 is expected not to allow :new_issue_url to be ‹"ftp://example.com"›7010 is expected not to allow :new_issue_url to be ‹"herp-and-derp"›7011 when integration is inactive7012 is expected not to validate that :project_url cannot be empty/falsy7013 is expected not to validate that :issues_url cannot be empty/falsy7014 is expected not to validate that :new_issue_url cannot be empty/falsy7015 ReferencePatternValidation7016 extracts bug7017 extracts task7018 extracts work item7019 extracts workitem7020 extracts defect7021 extracts rtcwi7022Integrations::EmailsOnPush7023 Validations7024 when integration is active7025 is expected to validate that :recipients cannot be empty/falsy7026 when integration is inactive7027 is expected not to validate that :recipients cannot be empty/falsy7028 validates number of recipients7029 valid number of recipients7030 does not count duplicates and invalid emails7031 invalid number of recipients7032 is expected not to be valid7033 adds an error message7034 when integration is not active7035 is expected to be valid7036 .new7037 when properties is missing branches_to_be_notified7038 sets the default value to all7039 when branches_to_be_notified is already set7040 does not overwrite it with the default value7041 .valid_recipients7042 removes invalid email addresses and removes duplicates by keeping the original capitalization7043 #execute7044 when emails are disabled on the project7045 does not send emails7046 when emails are enabled on the project7047 pushing to a random branch and notification configured for all branches7048 sends email7049 pushing to the default branch and notification configured for all branches7050 sends email7051 pushing to a protected branch and notification configured for all branches7052 sends email7053 pushing to a random branch and notification configured for default branch only7054 does not send email7055 pushing to the default branch and notification configured for default branch only7056 sends email7057 pushing to a protected branch and notification configured for default branch only7058 does not send email7059 pushing to a random branch and notification configured for protected branches only7060 does not send email7061 pushing to the default branch and notification configured for protected branches only7062 does not send email7063 pushing to a protected branch and notification configured for protected branches only7064 sends email7065 pushing to a random branch and notification configured for default and protected branches only7066 does not send email7067 pushing to the default branch and notification configured for default and protected branches only7068 sends email7069 pushing to a protected branch and notification configured for default and protected branches only7070 sends email7071Sidebars::Menu7072 #all_active_routes7073 gathers all active routes of items and the current menu7074 #render?7075 when the menus has no items7076 returns false7077 when menu has a partial7078 returns true7079 when the menu has items7080 returns true7081 when menu items are NilMenuItem7082 returns false7083 #has_items?7084 returns true when there are regular menu items7085 returns true when there are nil menu items7086 #has_renderable_items?7087 returns true when there are regular menu items7088 returns false when there are nil menu items7089 returns true when there are both regular and nil menu items7090 #renderable_items7091 returns only regular menu items7092 #insert_element_before7093 adds element before the specific element class7094 does not add nil elements7095 when reference element does not exist7096 adds the element to the top of the list7097 #insert_element_after7098 adds element after the specific element class7099 does not add nil elements7100 when reference element does not exist7101 adds the element to the end of the list7102 #remove_element7103 removes specific element7104 does not remove nil elements7105 #container_html_options7106 when menu can be rendered7107 when menu has renderable items7108 contains the special class7109 when menu already has other classes7110 appends special class7111 when menu does not have renderable items7112 does not contain the special class7113 when menu cannot be rendered7114 does not contain special class7115 #link7116 returns first visible menu item link7117 returns nil if there are no visible menu items7118Packages::Debian::FileEntry7119 validations7120 is expected to be valid7121 with FIPS mode7122 raises an error7123 #filename7124 is expected to validate that :filename cannot be empty/falsy7125 is expected not to allow :filename to be ‹"Hé"›7126 #size7127 is expected to validate that :size cannot be empty/falsy7128 #md5sum7129 is expected to validate that :md5sum cannot be empty/falsy7130 is expected not to allow :md5sum to be ‹"12345678901234567890123456789012"›, producing a custom validation error on failure7131 #section7132 is expected to validate that :section cannot be empty/falsy7133 #priority7134 is expected to validate that :priority cannot be empty/falsy7135 #sha1sum7136 is expected to validate that :sha1sum cannot be empty/falsy7137 is expected not to allow :sha1sum to be ‹"1234567890123456789012345678901234567890"›, producing a custom validation error on failure7138 #sha256sum7139 is expected to validate that :sha256sum cannot be empty/falsy7140 is expected not to allow :sha256sum to be ‹"1234567890123456789012345678901234567890123456789012345678901234"›, producing a custom validation error on failure7141 #package_file7142 is expected to validate that :package_file cannot be empty/falsy7143 #component7144 without section7145 is expected to eq "main"7146 with empty section7147 is expected to eq "main"7148 with ruby section7149 is expected to eq "main"7150 with contrib/ruby section7151 is expected to eq "contrib"7152Grafana::ProxyService7153 .from_cache7154 behaves like initializes an instance7155 initializes an instance of ProxyService class7156 #initialize7157 behaves like initializes an instance7158 initializes an instance of ProxyService class7159 #execute7160 with unsupported proxy path7161 proxy_path: "/api/vl/query_range"7162 returns API not supported error7163 proxy_path: "api/vl/query_range/"7164 returns API not supported error7165 proxy_path: "api/vl/labels"7166 returns API not supported error7167 proxy_path: "api/v2/query_range"7168 returns API not supported error7169 proxy_path: "../../../org/users"7170 returns API not supported error7171 with unsupported datasource_id7172 datasource_id: ""7173 returns API not supported error7174 datasource_id: "-1"7175 returns API not supported error7176 datasource_id: "1str"7177 returns API not supported error7178 datasource_id: "str1"7179 returns API not supported error7180 datasource_id: "../../1"7181 returns API not supported error7182 datasource_id: "1/../.."7183 returns API not supported error7184 datasource_id: "1\n1"7185 returns API not supported error7186 when grafana integration is not configured7187 returns API not supported error7188 with caching7189 when value not present in cache7190 returns nil7191 when value present in cache7192 returns cached value7193 call prometheus api7194 connection to grafana datasource succeeds7195 returns the http status code and body from prometheus7196 connection to grafana datasource fails7197 returns error7198NotifyHelper7199 merge_request_reference_link7200 returns link to merge request with the text reference7201 issue_reference_link7202 returns link to issue with the text reference7203 #invited_to_description7204 truncates long descriptions7205 source: #<Project id: namespace1/project1>>, description: /Projects are/7206 is expected to match /Projects are/7207 source: #<Group id: @group1>, description: /Groups assemble/7208 is expected to match /Groups assemble/7209 source: #<Project id: namespace2/project2>>, description: "_description_"7210 is expected to match "_description_"7211 source: #<Group id: @group2>, description: "_description_"7212 is expected to match "_description_"7213 #merge_request_hash_param7214 returns MR approved description7215Gitlab::Ci::Pipeline::Chain::Limit::RateLimit7216 when the limit is exceeded7217 does not persist the pipeline7218 breaks the chain7219 creates a log entry7220 with child pipelines7221 does not break the chain7222 does not invalidate the pipeline7223 does not log anything7224 when saving incompleted pipelines7225 does not persist the pipeline7226 breaks the chain7227 when ci_enforce_throttle_pipelines_creation is disabled7228 does not break the chain7229 does not invalidate the pipeline7230 creates a log entry7231 when ci_enforce_throttle_pipelines_creation_override is enabled7232 does not break the chain7233 does not invalidate the pipeline7234 creates a log entry7235 when the limit is not exceeded7236 does not break the chain7237 does not invalidate the pipeline7238 does not log anything7239Users::ActivityService7240 #execute7241 when last activity is nil7242 updates last_activity_on for the user7243 when last activity is in the past7244 updates last_activity_on for the user7245 tries to obtain ExclusiveLease7246 tracks RedisHLL event7247 when a bad object is passed7248 does not record activity7249 when last activity is today7250 does not update last_activity_on7251 does not try to obtain ExclusiveLease7252 when in GitLab read-only instance7253 does not update last_activity_on7254 when a lease could not be obtained7255 does not update last_activity_on7256 with DB Load Balancing7257 when last activity is in the past7258 database load balancing is configured7259 does not stick to primary7260 database load balancing is not configured7261 updates user without error7262Banzai::Filter::TableOfContentsFilter7263 does nothing when :no_header_anchors is truthy7264 does nothing with empty headers7265 processes h1 elements7266 processes h2 elements7267 processes h3 elements7268 processes h4 elements7269 processes h5 elements7270 processes h6 elements7271 anchor tag7272 has an `anchor` class7273 has a namespaced id7274 links to the non-namespaced id7275 generated IDs7276 translates spaces to dashes7277 squeezes multiple spaces and dashes7278 removes punctuation7279 removes any leading or trailing spaces7280 removes a product suffix7281 appends a unique number to duplicates7282 prepends a prefix to digits-only ids7283 supports Unicode7284 limits header href length with 255 characters7285 result7286 is contained within a `ul` element7287 contains an `li` element for each header7288 table of contents nesting7289 keeps list levels regarding header levels7290 header text contains escaped content7291 outputs escaped content7292Packages::Go::CreatePackageService7293 #execute7294 with no existing package7295 creates a new package7296 behaves like creates a package7297 returns a valid package with 2 file(s)7298 behaves like creates a package file7299 returns a package with a mod file7300 with FIPS mode7301 does not generate file_md57302 behaves like creates a package file7303 returns a package with a zip file7304 with FIPS mode7305 does not generate file_md57306 with an existing package7307 does not create a package or files7308 behaves like creates a package7309 returns a valid package with 2 file(s)7310 behaves like creates a package file7311 returns a package with a mod file7312 with FIPS mode7313 does not generate file_md57314 behaves like creates a package file7315 returns a package with a zip file7316 with FIPS mode7317 does not generate file_md57318Gitlab::SidekiqMiddleware::SizeLimiter::Compressor7319 .compressed?7320 job: {}, result: false7321 returns whether the job payload is compressed7322 job: {"class"=>"ARandomWorker", "queue"=>"a_worker", "retry"=>true, "jid"=>"d774900367dc8b2962b2479c", "created_at"=>1234567890, "enqueued_at"=>1234567890, "args"=>[123, "hello", ["world"]]}, result: false7323 returns whether the job payload is compressed7324 job: {"class"=>"ARandomWorker", "queue"=>"a_worker", "retry"=>true, "jid"=>"d774900367dc8b2962b2479c", "created_at"=>1234567890, "enqueued_at"=>1234567890, "args"=>["eJzLSM3JyQcABiwCFQ=="], "compressed"=>true}, result: true7325 returns whether the job payload is compressed7326 .compress7327 args: nil7328 injects compressed data7329 can decompress the payload7330 args: []7331 injects compressed data7332 can decompress the payload7333 args: ["hello"]7334 injects compressed data7335 can decompress the payload7336 args: [{"job_class"=>"SomeWorker", "job_id"=>"b4a577edbccf1d805744efa9", "provider_job_id"=>nil, "queue_name"=>"default", "arguments"=>["some", ["argument"]], "executions"=>0, "locale"=>"en", "attempt_number"=>1}, nil, "hello", 12345678901234567890, ["nice"]]7337 injects compressed data7338 can decompress the payload7339 args: ["2021-05-13_09:59:37.57483 \e[35mrails-background-jobs : \e[0m{\"severity\":\"ERROR\",\"time\":\"2021-05-13T09:59:37.574Z\"", "bonne journée - ขอให้มีความสุขในวันนี้ - một ngày mới tốt lành - 좋은 하루 되세요 - ごきげんよう", "🤝 - 🦊"]7340 injects compressed data7341 can decompress the payload7342 .decompress7343 job payload is not compressed7344 preserves the payload after decompression7345 job payload is compressed with a default level7346 decompresses and clean up the job payload7347 job payload is compressed with a different level7348 decompresses and clean up the job payload7349 job payload argument list is malformed7350 tracks the conflicting exception7351 job payload is not a valid base64 string7352 raises an exception7353 job payload compression does not contain a valid Gzip header7354 raises an exception7355 job payload compression does not contain a valid Gzip body7356 raises an exception7357JSONWebToken::HMACToken7358 .decode7359 with an invalid token7360 that is junk7361 raises exception saying 'Not enough or too many segments'7362 that has been fiddled with7363 raises exception saying 'Invalid segment encoding'7364 that was generated using a different secret7365 raises exception saying 'Signature verification raised7366 that is expired7367 raises exception saying 'Signature has expired'7368 with a valid token7369 that has expired7370 with the default leeway7371 behaves like a valid, non-expired token7372 is an Array with two elements7373 contains the following keys in the first Array element Hash - jti, iat, nbf, exp7374 contains the following keys in the second Array element Hash - typ and alg7375 with a leeway of 0 seconds7376 raises exception saying 'Signature has expired'7377 that has not expired7378 behaves like a valid, non-expired token7379 is an Array with two elements7380 contains the following keys in the first Array element Hash - jti, iat, nbf, exp7381 contains the following keys in the second Array element Hash - typ and alg7382 #encoded7383 without data7384 behaves like a valid, non-expired token7385 is an Array with two elements7386 contains the following keys in the first Array element Hash - jti, iat, nbf, exp7387 contains the following keys in the second Array element Hash - typ and alg7388 with data7389 contains the 'data' key in the first Array element Hash7390 can re-read back the data7391 behaves like a valid, non-expired token7392 is an Array with two elements7393 contains the following keys in the first Array element Hash - jti, iat, nbf, exp7394 contains the following keys in the second Array element Hash - typ and alg7395Branches::DeleteService7396 #execute7397 when user has access to push to repository7398 behaves like a deleted branch7399 removes the branch7400 calls the RefDeleteUnlockArtifactsWorker7401 when Gitlab::Git::CommandError is raised7402 handles and returns error7403 when user does not have access to push to repository7404 does not remove branch7405Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas7406 properly analyzes queries7407 for SELECT on projects for allowed_gitlab_schema=no_schema7408 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DMLNotAllowedError7409 for SELECT on projects for allowed_gitlab_schema=gitlab_main7410 is expected not to raise Exception7411 for SELECT on projects for allowed_gitlab_schema=gitlab_ci7412 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DMLAccessDeniedError7413 for INSERT for allowed_gitlab_schema=no_schema7414 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DMLNotAllowedError7415 for INSERT for allowed_gitlab_schema=gitlab_main7416 is expected not to raise Exception7417 for INSERT for allowed_gitlab_schema=gitlab_ci7418 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DMLAccessDeniedError7419 for CREATE INDEX for allowed_gitlab_schema=no_schema7420 is expected not to raise Exception7421 for CREATE INDEX for allowed_gitlab_schema=gitlab_main7422 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DDLNotAllowedError7423 for CREATE INDEX for allowed_gitlab_schema=gitlab_ci7424 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DDLNotAllowedError7425 for CREATE SCHEMA for allowed_gitlab_schema=no_schema7426 is expected not to raise Exception7427 for CREATE SCHEMA for allowed_gitlab_schema=gitlab_main7428 is expected not to raise Exception7429 for CREATE SCHEMA for allowed_gitlab_schema=gitlab_ci7430 is expected not to raise Exception7431 for CREATE FUNCTION for allowed_gitlab_schema=no_schema7432 is expected not to raise Exception7433 for CREATE FUNCTION for allowed_gitlab_schema=gitlab_main7434 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DDLNotAllowedError7435 for CREATE FUNCTION for allowed_gitlab_schema=gitlab_ci7436 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DDLNotAllowedError7437 for CREATE TRIGGER for allowed_gitlab_schema=no_schema7438 is expected not to raise Exception7439 for CREATE TRIGGER for allowed_gitlab_schema=gitlab_main7440 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DDLNotAllowedError7441 for CREATE TRIGGER for allowed_gitlab_schema=gitlab_ci7442 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DDLNotAllowedError7443 .require_ddl_mode!7444 when not configured does not raise exception7445 when no schemas are configured does not raise exception (DDL mode)7446 with schemas configured does raise exception (DML mode)7447 .require_dml_mode!7448 when not configured does not raise exception7449 when no schemas are configured does raise exception (DDL mode)7450 with schemas configured does raise exception (DML mode)7451Ci::VariablePresenter7452 inherits from Gitlab::View::Presenter::Delegated7453 #initialize7454 takes a variable and optional params7455 exposes variable7456 forwards missing methods to variable7457 #placeholder7458 is expected to eq "PROJECT_VARIABLE"7459 #form_path7460 is expected to eq "/namespace887/project974/-/settings/ci_cd"7461 #edit_path7462 is expected to eq "/namespace888/project975/-/variables"7463 #delete_path7464 is expected to eq "/namespace889/project976/-/variables"7465BitbucketServer::Representation::PullRequest7466 #author7467 is expected to eq "root"7468 #author_email7469 is expected to eq "joe.montana@49ers.com"7470 #author_username7471 returns username7472 when username is absent7473 returns slug7474 when slug and username are absent7475 returns displayName7476 #description7477 is expected to eq "Test"7478 #iid7479 is expected to eq 77480 #state7481 is expected to eq "merged"7482 declined pull requests7483 returns closed7484 open pull requests7485 returns open7486 #merged?7487 is expected to be truthy7488 #created_at7489 is expected to eq 15306006357490 #updated_at7491 is expected to eq 15306006487492 #title7493 is expected to eq "Added a new line"7494 #source_branch_name7495 is expected to eq "refs/heads/root/CODE_OF_CONDUCTmd-1530600625006"7496 #source_branch_sha7497 is expected to eq "074e2b4dddc5b99df1bf9d4a3f66cfc15481fdc8"7498 #target_branch_name7499 is expected to eq "refs/heads/master"7500 #target_branch_sha7501 is expected to eq "839fa9a2d434eb697815b8fcafaecc51accfdbbc"7502GitlabUploader7503 #file_storage?7504 when file storage is used7505 is expected to be file storage7506 when is remote storage7507 is expected not to be file storage7508 #file_cache_storage?7509 when file storage is used7510 is expected to be file cache storage7511 when is remote storage7512 is expected not to be file cache storage7513 #move_to_cache7514 is true7515 #move_to_store7516 is true7517 #cache!7518 moves the file from the working directory to the cache directory7519 #replace_file_without_saving!7520 allows file to be replaced without triggering any callbacks7521 #open7522 when trace is stored in File storage7523 when file exists7524 returns io stream7525 when passing block it yields7526 when file does not exist7527 returns nil7528 when passing block it does not yield7529 when trace is stored in Object storage7530 when file exists7531 returns http io stream7532 when passing block it yields7533 when file does not exist7534 returns nil7535 when passing block it does not yield7536 #url_or_file_path7537 returns url when in remote storage7538 returns url when in remote storage7539 .version7540 is expected to raise RuntimeError with message matching /not supported/7541Integrations::CreateExternalCrossReferenceWorker7542 has the `until_executed` deduplicate strategy7543 behaves like an idempotent worker7544 is labeled as idempotent7545 performs multiple times sequentially without raising an exception7546 can run multiple times with the same arguments7547 mentionable_type: "Commit", mentionable_id: lazy { commit.id }7548 creates a cross reference7549 mentionable_type: "Issue", mentionable_id: lazy { issue.id }7550 creates a cross reference7551 mentionable_type: "MergeRequest", mentionable_id: lazy { merge_request.id }7552 creates a cross reference7553 mentionable_type: "Note", mentionable_id: lazy { note.id }7554 creates a cross reference7555 mentionable_type: "Snippet", mentionable_id: lazy { snippet.id }7556 creates a cross reference7557 error handling7558 project_id does not exist7559 behaves like does not create a cross reference7560 does not create a cross reference7561 author_id does not exist7562 behaves like does not create a cross reference7563 does not create a cross reference7564 mentionable_id does not exist7565 behaves like does not create a cross reference7566 does not create a cross reference7567 mentionable_type is not a Mentionable7568 behaves like does not create a cross reference7569 does not create a cross reference7570 mentionable_type is not a defined constant7571 behaves like does not create a cross reference7572 does not create a cross reference7573 mentionable is a Commit and mentionable_id does not exist7574 behaves like does not create a cross reference7575 does not create a cross reference7576RuboCop::Cop::Gitlab::AvoidFeatureCategoryNotOwned7577 # order random7578 for grape endpoints7579 flags when passed as a hash for a Grape endpoint as keyword args7580 flags when passed as a hash for a Grape endpoint in a hash7581 behaves like defining feature category on a class7582 flags a method call on a class7583 flags a method call on a class with an array passed7584 flags a method call on a class with an array passed7585 in controllers7586 behaves like defining feature category on a class7587 flags a method call on a class7588 flags a method call on a class with an array passed7589 flags a method call on a class with an array passed7590 in workers7591 behaves like defining feature category on a class7592 flags a method call on a class7593 flags a method call on a class with an array passed7594 flags a method call on a class with an array passed7595Gitlab::Analytics::CycleAnalytics::RecordsFetcher7596 #serialized_records7597 for issue based stage7598 returns all records7599 passes a hash with all expected attributes to the serializer7600 when records are loaded by guest7601 filters out confidential issues7602 for merge request based stage7603 returns all records7604 passes a hash with all expected attributes to the serializer7605 pagination7606 limits the results7607 loads the record for the next page7608StuckExportJobsWorker7609 with started export status7610 behaves like project export job detection7611 when the job has completed7612 when the export status was already updated7613 does not mark the export as failed7614 when the export status was not updated7615 marks the project as failed7616 when the job is not in queue and db record in queued state7617 marks the project as failed7618 when the job is running in Sidekiq7619 does not mark the project export as failed7620MergeRequests::ExecuteApprovalHooksService7621 #execute7622 sends a notification when approving7623 with remaining approvals7624 fires an approval webhook7625LazyImageTagHelper7626 #image_tag7627 when only source passed7628 returns a lazy image tag by default7629 when lazy mode is disabled7630 returns a normal image tag7631 when Dark Mode is enabled7632 when auto dark enabled7633 adds an auto dark mode class from gitlab-ui7634 when auto dark disabled7635 does nothing7636 when dark variant is present7637 uses dark variant as a source7638 when Dark Mode is disabled7639 when auto dark enabled7640 does not add a dark mode class from gitlab-ui7641 when auto dark disabled7642 does nothing7643 when dark variant is present7644 uses original image as a source7645 when auto_dark and dark_variant are both passed7646 does not add a dark mode class from gitlab-ui7647Boards::Lists::DestroyService7648 #execute7649 when board parent is a project7650 behaves like lists destroy service7651 does not remove list from board when list type is closed7652 when list type is label7653 removes list from board7654 decrements position of higher lists7655 when board parent is a group7656 behaves like lists destroy service7657 does not remove list from board when list type is closed7658 when list type is label7659 removes list from board7660 decrements position of higher lists7661gitlab:update_project_templates rake task7662 updates valid project templates7663Metrics::UsersStarredDashboards::CreateService7664 .execute7665 with anonymous user7666 behaves like prevented starred dashboard creation7667 returns error response7668 with reporter user7669 incorrect dashboard_path7670 behaves like prevented starred dashboard creation7671 returns error response7672 with valid dashboard path7673 creates starred dashboard and returns success response7674 Metrics::UsersStarredDashboard has validation errors7675 returns error response7676U2fRegistration7677 .authenticate7678 when registration is found7679 returns true7680 when registration not found7681 returns nil7682 when args passed in are invalid7683 returns false7684 callbacks7685 after create7686 logs error7687 behaves like creates webauthn registration7688 creates webauthn registration7689 when the u2f_registration has a blank name7690 behaves like creates webauthn registration7691 creates webauthn registration7692 when the u2f_registration has the name as `nil`7693 behaves like creates webauthn registration7694 creates webauthn registration7695 after update7696 when counter is updated7697 updates the webauthn registration counter to be the same value7698 when sign count of registration is not updated7699 does not update the counter7700layouts/devise_empty7701 behaves like a layout which reflects the application theme setting7702 as a themed layout7703 when no theme is explicitly selected7704 renders with the default theme7705 when user is authenticated & has selected a specific theme7706 chosen_theme: #<struct Gitlab::Themes::Theme id=1, name="Indigo", css_class="ui-indigo", css_filename="theme_indigo", primary_color="#292961">7707 renders with the Indigo theme7708 chosen_theme: #<struct Gitlab::Themes::Theme id=6, name="Light Indigo", css_class="ui-light-indigo", css_filename="theme_light_indigo", primary_color="#4b4ba3">7709 renders with the Light Indigo theme7710 chosen_theme: #<struct Gitlab::Themes::Theme id=4, name="Blue", css_class="ui-blue", css_filename="theme_blue", primary_color="#1a3652">7711 renders with the Blue theme7712 chosen_theme: #<struct Gitlab::Themes::Theme id=7, name="Light Blue", css_class="ui-light-blue", css_filename="theme_light_blue", primary_color="#2261a1">7713 renders with the Light Blue theme7714 chosen_theme: #<struct Gitlab::Themes::Theme id=5, name="Green", css_class="ui-green", css_filename="theme_green", primary_color="#0d4524">7715 renders with the Green theme7716 chosen_theme: #<struct Gitlab::Themes::Theme id=8, name="Light Green", css_class="ui-light-green", css_filename="theme_light_green", primary_color="#156b39">7717 renders with the Light Green theme7718 chosen_theme: #<struct Gitlab::Themes::Theme id=9, name="Red", css_class="ui-red", css_filename="theme_red", primary_color="#691a16">7719 renders with the Red theme7720 chosen_theme: #<struct Gitlab::Themes::Theme id=10, name="Light Red", css_class="ui-light-red", css_filename="theme_light_red", primary_color="#a62e21">7721 renders with the Light Red theme7722 chosen_theme: #<struct Gitlab::Themes::Theme id=2, name="Gray", css_class="ui-gray", css_filename="theme_gray", primary_color="#303030">7723 renders with the Gray theme7724 chosen_theme: #<struct Gitlab::Themes::Theme id=3, name="Light Gray", css_class="ui-light-gray", css_filename="theme_light_gray", primary_color="#666">7725 renders with the Light Gray theme7726 chosen_theme: #<struct Gitlab::Themes::Theme id=11, name="Dark Mode (alpha)", css_class="gl-dark", css_filename=nil, primary_color="#303030">7727 renders with the Dark Mode (alpha) theme7728Projects::RefreshBuildArtifactsSizeStatisticsService7729 #execute7730 resets the build artifacts size stats7731 increments the counter attribute by the total size of the current batch of artifacts7732 updates the last_job_artifact_id to the ID of the last artifact from the batch7733 updates the last_job_artifact_id to the ID of the last artifact from the project7734 requeues the refresh job7735 when an error happens after the recalculation has started7736 keeps the last_job_artifact_id unchanged7737 keeps the last_job_artifact_id_on_refresh_start unchanged7738 keeps the state of the refresh record at running7739 when there are no more artifacts to recalculate for the next refresh job7740 deletes the refresh record7741gitlab:uploads rake tasks7742 check7743 outputs the integrity check for each batch7744 errors out about missing files on the file system7745 errors out about invalid checksum7746RuboCop::Cop::Migration::PreventIndexCreation7747 # order random7748 when in migration7749 when adding an index to a forbidden table7750 when table_name is a symbol7751 registers an offense when add_index is used7752 registers an offense when add_concurrent_index is used7753 when table_name is a string7754 registers an offense when add_index is used7755 registers an offense when add_concurrent_index is used7756 when table_name is a constant7757 registers an offense when add_concurrent_index is used7758 when adding an index to a regular table7759 does not register an offense7760 when using a constant7761 does not register an offense7762 when outside of migration7763 does not register an offense7764RspecFlaky::Report7765 delegates to #flaky_examples using SimpleDelegator7766 .load7767 loads the report file7768 .load_json7769 loads the report file7770 #initialize7771 accepts a RspecFlaky::FlakyExamplesCollection7772 does not accept anything else7773 #write7774 when RspecFlaky::Config.generate_report? is false7775 does not write any report file7776 when RspecFlaky::Config.generate_report? is true7777 delegates the writes to RspecFlaky::Report7778 #prune_outdated7779 returns a new collection without the examples older than 30 days by default7780 accepts a given number of days7781Gitlab::Template::GitlabCiYmlTemplate7782 .all7783 combines the globals and rest7784 does not include Browser-Performance template in FOSS7785 #content7786 loads the full file7787 behaves like file template shared examples7788 .all7789 strips the .gitlab-ci.yml suffix7790 ensures that the template name is used exactly once7791 .by_category7792 returns sorted results7793 .find7794 returns nil if the file does not exist7795 returns the corresponding object of a valid file7796 #<=>7797 sorts lexicographically7798Gitlab::Database::SchemaCacheWithRenamedTable7799 when table is not renamed yet7800 uses the original table to look up metadata7801 when table is renamed7802 uses the renamed table to look up metadata7803 has primary key7804 has the same column definitions7805 has the same indexes7806 has the same column_hash7807 when the table behind a model is actually a view7808 can persist records7809 can find records7810Nav::NewDropdownHelper7811 #new_dropdown_view_model7812 has title7813 when current_user is nil (anonymous)7814 is nil7815 when group and project are nil7816 has no menu sections7817 when can create project7818 has project menu item7819 when can create group7820 has group menu item7821 when can create snippet7822 has new snippet menu item7823 with persisted group7824 has no menu sections7825 when can create projects in group7826 has new project menu item7827 when can create subgroup7828 has new subgroup menu item7829 when can invite members7830 behaves like invite member link shared example7831 shows invite member link with emoji7832 with persisted project7833 has no menu sections7834 with show_new_issue_link?7835 shows new issue menu item7836 with merge project7837 shows merge project7838 when can create snippet7839 shows new snippet7840 when invite members experiment7841 behaves like invite member link shared example7842 shows invite member link with emoji7843Resolvers::Admin::Analytics::UsageTrends::MeasurementsResolver7844 #resolve7845 when requesting project count measurements7846 as an admin user7847 returns the records, latest first7848 as a non-admin user7849 generates a ResourceNotAvailable error7850 as an unauthenticated user7851 generates a ResourceNotAvailable error7852 when filtering by recorded_after and recorded_before7853 is expected to contain exactly #<Analytics::UsageTrends::Measurement id: 1, count: 1000, recorded_at: "2022-11-09 01:17:09.142550369 +0000", identifier: "projects">7854 when "incorrect" values are passed7855 is expected to be empty7856 when requesting pipeline counts by pipeline status7857 filter for pipelines_succeeded7858 is expected to eq [#<Analytics::UsageTrends::Measurement id: 3, count: 1000, recorded_at: "2022-11-09 01:17:09.339699018 +0000", identifier: "pipelines_succeeded">]7859 filter for pipelines_skipped7860 is expected to eq [#<Analytics::UsageTrends::Measurement id: 4, count: 1000, recorded_at: "2022-11-09 01:17:09.346727657 +0000", identifier: "pipelines_skipped">]7861 filter for pipelines_failed7862 is expected to be empty7863 filter for pipelines_canceled7864 is expected to be empty7865Namespaces::ScheduleAggregationWorker#perform7866 when group is the root ancestor7867 when aggregation schedule exists7868 does not create a new one7869 when aggregation schedule does not exist7870 creates one7871 when group is not the root ancestor7872 creates an aggregation schedule for the root7873 when namespace does not exist7874 logs the error7875 behaves like an idempotent worker7876 is labeled as idempotent7877 performs multiple times sequentially without raising an exception7878 creates a single aggregation schedule7879Gitlab::RequestContext7880 is expected to have attributes {:client_ip => nil, :request_start_time => nil, :start_thread_cpu_time => nil}7881 #request_deadline7882 sets the time to 57 seconds in the future7883 returns nil if there is no start time7884 #ensure_request_deadline_not_exceeded!7885 does not raise an error when there was no deadline7886 does not raise an error if the deadline is in the future7887 raises an error when the deadline is in the past7888Gitlab::Git::DiffStatsCollection7889 #find_by_path7890 returns stats by path when found7891 returns nil when stats is not found by path7892 #paths7893 returns only modified paths7894 #real_size7895 returns the number of modified files7896 returns capped number when it is bigger than max_files7897Gitlab::Ci::YamlProcessor::Result7898 #config_metadata7899 returns expanded yaml config7900 returns includes7901 #yaml_variables_for7902 returns calculated variables with root and job variables7903 when an absent job is sent7904 is expected to eq []7905 #stage_for7906 is expected to eq "test"7907 when an absent job is sent7908 is expected to be nil7909BulkImports::Groups::Transformers::MemberAttributesTransformer7910 returns nil when receives no data7911 returns nil when no user is found7912 when the user is not confirmed7913 returns nil even when the primary email match7914 returns nil even when a secondary email match7915 when the user is confirmed7916 finds the user by the primary email7917 finds the user by the secondary email7918 format access level7919 ignores record if no access level is given7920 ignores record if is not a valid access level7921 source user id caching7922 when user gid is present7923 caches source user id7924 when user gid is missing7925 does not use caching7926ReviewAppSetupEntity7927 #as_json7928 contains can_setup_review_app7929 when the user can setup a review app7930 contains relevant fields7931 exposes the relevant review snippet7932 exposes whether the project has associated clusters7933 when the user cannot setup a review app7934 does not expose certain fields7935Types::BaseEdge7936 supports field authorization on edge fields7937Gitlab::Ci::Config::Yaml::Tags::Reference7938 .tag7939 implements the tag method7940 #resolve7941 with circular references7942 raises CircularReferenceError7943 with nested circular references7944 raises CircularReferenceError7945 with missing references7946 raises MissingReferenceError7947 with invalid references7948 yaml: "a: !reference", error_message: "!reference [] is not valid"7949 raises an error7950 yaml: "a: !reference str", error_message: "!reference \"str\" is not valid"7951 raises an error7952 yaml: "a: !reference 1", error_message: "!reference \"1\" is not valid"7953 raises an error7954 yaml: "a: !reference [1]", error_message: "!reference [1] is not valid"7955 raises an error7956 yaml: "a: !reference { b: c }", error_message: "!reference {\"b\"=>\"c\"} is not valid"7957 raises an error7958 when the references are valid but do not match the config7959 raises a MissingReferenceError7960 with arrays7961 is expected to match (a hash including {:f => {:g => [[1, 2], 5, [3, 4]]}})7962 with hashes7963 when referencing an entire hash7964 is expected to match (a hash including {:e => {:f => {:c => "c", :d => "d"}}})7965 when referencing only a hash value7966 is expected to match (a hash including {:i => {:g => "c", :h => "h"}})7967 when referencing a value before its definition7968 is expected to match (a hash including {:a => {:b => {:e => 1, :f => "f"}}})7969Namespace::AggregationSchedule7970 is expected to belong to namespace required: false7971 #default_lease_timeout7972 is expected to eq 18007973 when remove_namespace_aggregator_delay FF is disabled7974 is expected to eq 36007975 #schedule_root_storage_statistics7976 when we can't obtain the lease7977 does not schedule the workers7978 when we can obtain the lease7979 schedules a root storage statistics after create7980 does not release the lease7981 only executes the workers once7982ResourceEvents::SyntheticMilestoneNotesBuilderService7983 #execute7984 builds milestone notes for resource milestone events7985 behaves like filters by paginated notes7986 only returns given notes7987 when paginated notes is empty7988 does not return any notes7989Gitlab::UUID7990 .v57991 in development7992 is expected to eq "5b593e54-90f5-504b-8805-5394a4d14b94"7993 in test7994 is expected to eq "5b593e54-90f5-504b-8805-5394a4d14b94"7995 in staging7996 is expected to eq "dd190b37-7754-5c7c-80a0-85621a5823ad"7997 in production7998 is expected to eq "4961388b-9d8e-5da0-a499-3ef5da58daf0"7999 v5?8000 test_string: "not even a uuid", is_uuid_v5: false8001 is expected to equal false8002 test_string: "this-seems-like-a-uuid", is_uuid_v5: false8003 is expected to equal false8004 test_string: "thislook-more-5lik-eava-liduuidbutno", is_uuid_v5: false8005 is expected to equal false8006 test_string: "9f470438-db0f-37b7-9ca9-1d47104c339a", is_uuid_v5: false8007 is expected to equal false8008 test_string: "9f470438-db0f-47b7-9ca9-1d47104c339a", is_uuid_v5: false8009 is expected to equal false8010 test_string: "9f470438-db0f-57b7-9ca9-1d47104c339a", is_uuid_v5: true8011 is expected to equal true8012Ci::TestFailureHistoryWorker8013 is labeled as idempotent8014 performs multiple times sequentially without raising an exception8015 tracks test failures8016 #perform8017 when pipeline exists8018 executes test failure history service8019 when pipeline does not exist8020 does not execute test failure history service8021Gitlab::Issuable::Clone::AttributesRewriter8022 with missing target parent8023 raises an ArgumentError8024 setting labels8025 sets labels present in the new project and group labels8026 does not set any labels when not used on the original issue8027 setting milestones8028 sets milestone to nil when old issue milestone is not in the new project8029 copies the milestone when old issue milestone title is in the new project8030 copies the milestone when old issue milestone is a group milestone8031 when include_milestone is false8032 does not return any milestone8033 when target parent is a group8034 setting labels8035 keeps group labels and merges project labels where possible8036Namespace::Detail8037 associations8038 is expected to belong to namespace required: false8039 validations8040 is expected to validate that :namespace cannot be empty/falsy8041 when namespace description changes8042 changes namespace details description8043 when project description changes8044 changes project namespace details description8045 when group description changes8046 changes group namespace details description8047Gitlab::WebIde::Config::Entry::Terminal8048 .nodes8049 when filtering all the entry/node names8050 is expected to contain exactly :before_script, :script, :image, :services, and :variables8051 validations8052 when entry config value is correct8053 #valid?8054 is valid8055 when the same port is not duplicated8056 #valid?8057 is valid8058 when unknown port keys detected8059 is not valid8060 when entry value is not correct8061 incorrect config value type8062 #errors8063 reports error about a config type8064 when config is empty8065 #valid8066 is valid8067 when unknown keys detected8068 #valid8069 is not valid8070 when the same port is duplicated8071 #valid?8072 is invalid8073 #relevant?8074 is a relevant entry8075 when composed8076 #value8077 when entry is correct8078 returns correct value8079Gitlab::Ci::Config::Entry::PullPolicy8080 #value8081 when config value is nil8082 is expected to be nil8083 when retry value is an empty array8084 is expected to eq nil8085 when retry value is string8086 is expected to eq ["always"]8087 when retry value is array8088 is expected to eq ["always", "if-not-present"]8089 validation8090 when retry value is nil8091 is expected to eq false8092 when retry value is an empty array8093 is expected to eq false8094 when retry value is a hash8095 is expected to eq false8096 when retry value is string8097 is expected to eq true8098 when it is an invalid policy8099 is expected to eq false8100 when it is an empty string8101 is expected to eq false8102 when retry value is array8103 is expected to eq true8104 when config contains an invalid policy8105 is expected to eq false8106projects/settings/integrations/edit8107 is expected not to have text "Recent events"8108 integration using WebHooks8109 is expected to have text "Recent events"8110Issuables::CrmContactFilter8111 when a contact has issues8112 returns all contact1 issues8113 returns all contact2 issues8114 when a contact has no issues8115 returns no issues8116Mutations::AlertManagement::PrometheusIntegration::ResetToken8117 is expected to require graphql authorizations :admin_project8118 #resolve8119 user has sufficient access to project8120 when ::Projects::Operations::UpdateService responds with success8121 returns the integration with no errors8122 when ::Projects::Operations::UpdateService responds with an error8123 returns errors8124 when resource is not accessible to the user8125 raises an error if the resource is not accessible to the user8126notify/approved_merge_request_email.html.haml8127 # order random8128 contains approval information8129Gitlab::Ci::Build::Artifacts::Path8130 #valid?8131 when path contains a zero character8132 is not valid8133 when path is not utf8 string8134 is not valid8135 when path is valid8136 is valid8137 #directory?8138 when path ends with a directory indicator8139 is a directory8140 when path does not end with a directory indicator8141 is not a directory8142 #name8143 returns a base name8144 #nodes8145 returns number of path nodes8146 #to_s8147 when path is valid8148 returns a string representation of a path8149 when path is invalid8150 raises an error8151Boards::Visits::CreateService8152 #execute8153 when a project board8154 behaves like boards recent visit create service8155 returns nil when there is no user8156 returns nil when database is read only8157 records the visit8158 when a group board8159 behaves like boards recent visit create service8160 returns nil when there is no user8161 returns nil when database is read only8162 records the visit8163RuboCop::Cop::Migration::AddLimitToTextColumns8164 # order random8165 when in migration8166 when text columns are defined without a limit8167 registers an offense8168 when text columns are defined with a limit8169 registers no offense8170 for migrations before 2021_09_10_00_00_008171 when limit: attribute is used (which is not supported yet for this version): registers an offense8172 when text array columns are defined without a limit8173 registers no offense8174 when the limit is defined for a same name attribute but different table8175 registers an offense8176 when text columns are used for encryption8177 registers no offenses8178 on down8179 registers no offense8180 when outside of migration8181 registers no offense8182Gitlab::ImportExport::DecompressedArchiveSizeValidator8183 #valid?8184 when file does not exceed allowed decompressed size8185 returns true8186 when waiter thread no longer exists8187 does not raise exception8188 when file exceeds allowed decompressed size8189 logs error message returns false8190 when exception occurs during decompression8191 when timeout occurs8192 logs raised exception and terminates validator process group8193 when exception occurs8194 logs raised exception and terminates validator process group8195 archive path validation8196 when archive path is traversed8197 returns false8198 when archive path is not a string8199 returns false8200 which archive path is a symlink8201 returns false8202 when archive path is not a file8203 returns false8204Mutations::SavedReplies::Update8205 #resolve8206 when feature is disabled8207 raises Gitlab::Graphql::Errors::ResourceNotAvailable8208 when feature is enabled for current user8209 when service fails to update a new saved reply8210 is expected to be nil8211 is expected to contain exactly "Content can't be blank", "Name can't be blank", and "Name can contain only lowercase letters, digits, '_' and '-'. Must start with a letter, and cannot end with '-' or '_'"8212 when service successfully updates the saved reply8213 is expected to eq "save_reply_name"8214 is expected to eq "Save Reply Content"8215 is expected to be empty8216ProtectedBranches::CreateService8217 #execute8218 creates a new protected branch8219 refreshes the cache8220 when protecting a branch with a name that contains HTML tags8221 creates a new protected branch8222 when user does not have permission8223 creates a new protected branch if we skip authorization step8224 raises Gitlab::Access:AccessDeniedError8225 when a policy restricts rule creation8226 prevents creation of the protected branch rule8227AwardEmojis::CopyService8228 #initialize8229 validates that we cannot copy AwardEmoji to the same Awardable8230 #execute8231 copies AwardEmojis8232 returns success8233IncidentManagement::CloseIncidentWorker8234 #perform8235 calls the close issue service8236 when the incident does not exist8237 behaves like does not call the close issue service8238 is expected not to change `ResourceStateEvent.count`8239 when issue type is not incident8240 behaves like does not call the close issue service8241 is expected not to change `ResourceStateEvent.count`8242 when incident is not open8243 behaves like does not call the close issue service8244 is expected not to change `ResourceStateEvent.count`8245 when incident fails to close8246 is expected not to change `ResourceStateEvent.count`8247Packages::Helm::ExtractFileMetadataService8248 with a valid file8249 is expected to eq {"apiVersion"=>"v2", "description"=>"File, Block, and Object Storage Services for your Cloud-Native E...ok-logo.svg", "name"=>"rook-ceph", "sources"=>["https://github.com/rook/rook"], "version"=>"v1.5.8"}8250 without Chart.yaml8251 is expected to raise Packages::Helm::ExtractFileMetadataService::ExtractionError with "Chart.yaml not found within a directory"8252 with Chart.yaml at root8253 is expected to raise Packages::Helm::ExtractFileMetadataService::ExtractionError with "Chart.yaml not found within a directory"8254 with an invalid YAML8255 is expected to raise Packages::Helm::ExtractFileMetadataService::ExtractionError with "Error while parsing Chart.yaml: (<unknown>): did not find expected node content while parsing a flow node at line 2 column 1"8256ProjectSerializer8257 when serializer option is :import8258 represents with ProjectImportEntity8259 when serializer option is omitted8260 represents with ProjectEntity8261IncidentManagement::PagerDuty::ProcessWebhookService8262 #execute8263 when PagerDuty webhook setting is active8264 when token is valid8265 when webhook payload has acceptable size8266 responds with Accepted8267 processes issues8268 when webhook payload is too big8269 responds with Bad Request8270 behaves like does not process incidents8271 does not process incidents8272 when webhook payload is blank8273 responds with Accepted8274 behaves like does not process incidents8275 does not process incidents8276 when token is invalid8277 responds with Unauthorized8278 behaves like does not process incidents8279 does not process incidents8280 when both tokens are nil8281 responds with Unauthorized8282 behaves like does not process incidents8283 does not process incidents8284 when PagerDuty webhook setting is not active8285 responds with Forbidden8286 behaves like does not process incidents8287 does not process incidents8288IosSpecificTemplatesExperiment8289 is expected to equal true8290 skipping the experiment8291 no actor8292 is expected to be falsey8293 actor cannot create pipelines8294 is expected to be falsey8295 targeting a non iOS platform8296 is expected to be falsey8297 project has a ci.yaml file8298 is expected to be falsey8299 project has pipelines8300 is expected to be falsey8301Users::UpsertCreditCardValidationService8302 #execute8303 successfully set credit card validation record for the user8304 when user does not have credit card validation record8305 creates the credit card validation and returns a success8306 sets the requires_credit_card_verification attribute on the user to false8307 when user has credit card validation record8308 updates the credit card validation and returns a success8309 when user id does not exist8310 behaves like returns an error without tracking the exception8311 is expected to eq :error8312 when missing credit_card_validated_at8313 behaves like returns an error, tracking the exception8314 is expected to eq :error8315 when missing user id8316 behaves like returns an error, tracking the exception8317 is expected to eq :error8318 when unexpected exception happen8319 tracks the exception and returns an error8320BulkImports::Groups::Pipelines::ProjectEntitiesPipeline8321 #run8322 creates project entity8323 pipeline parts8324 is expected to includes the BulkImports::Pipeline module8325 is expected to includes the BulkImports::Pipeline::Runner module8326 has extractors8327 has transformers8328CleanupContainerRepositoryWorker8329 #perform8330 bulk delete api8331 executes the destroy service8332 does not raise error when user could not be found8333 does not raise error when repository could not be found8334WorkItems::Widgets::MilestoneService::CreateService8335 # order random8336 #before_create_callback8337 behaves like setting work item's milestone8338 when 'milestone' param does not exist8339 does not set the work item's milestone8340 when 'milestone' is not in the work item's project's hierarchy8341 does not set the work item's milestone8342 when assigning a group milestone8343 sets the work item's milestone8344 when assigning a project milestone8345 sets the work item's milestone8346FromUnion8347 behaves like from set operator8348 #from_union8349 selects from the results of the UNION8350 returns empty set when passing empty array8351 supports the use of a custom alias for the sub query8352 supports keeping duplicate rows8353Gitlab::Database::Reindexing::IndexSelection8354 orders by highest relative bloat first8355 excludes indexes with a relative bloat level below 20%8356 excludes indexes smaller than 1 GB ondisk size8357 includes indexes larger than 100 GB ondisk size8358 with time frozen8359 does not return indexes with reindex action in the last 10 days8360Gitlab::Ci::Config::Entry::Imageable8361 when entry value is correct8362 #valid?8363 is valid8364 when entry value is not correct8365 #errors8366 saves errors8367 #valid?8368 is not valid8369 when unexpected key is specified8370 #errors8371 saves errors8372 #valid?8373 is not valid8374ContentTypeWhitelist8375 upload whitelisted file content type8376 behaves like accepted carrierwave upload8377 will accept upload8378 will cache uploaded file8379 behaves like upload with content type8380 will not change upload file content type8381 upload non-whitelisted file content type8382 behaves like denied carrierwave upload8383 will deny upload8384 upload misnamed non-whitelisted file content type8385 behaves like denied carrierwave upload8386 will deny upload8387Ci::BridgePolicy8388 #play_job8389 when user can update the downstream branch8390 allows8391 when user can not update the downstream branch8392 does not allow8393Import::ValidateRemoteGitEndpointService8394 #execute8395 correctly handles URLs with fragment8396 passes basic auth when credentials are provided8397 when uri is using git:// protocol8398 returns success8399 when receiving HTTP response8400 returns success when HTTP response is valid and contains correct payload8401 reports error when status code is not 2008402 reports error when invalid URL is provided8403 reports error when required header is missing8404 reports error when body is in invalid format8405 reports error when exception is raised8406Gitlab::Usage::Metrics::KeyPathProcessor8407 #unflatten_default_path8408 key_path: "uuid", value: nil, expected_hash: {:uuid=>nil}8409 is expected to eq {:uuid=>nil}8410 key_path: "uuid", value: "1111", expected_hash: {:uuid=>"1111"}8411 is expected to eq {:uuid=>"1111"}8412 key_path: "counts.issues", value: nil, expected_hash: {:counts=>{:issues=>nil}}8413 is expected to eq {:counts=>{:issues=>nil}}8414 key_path: "counts.issues", value: 100, expected_hash: {:counts=>{:issues=>100}}8415 is expected to eq {:counts=>{:issues=>100}}8416 key_path: "usage_activity_by_stage.verify.ci_builds", value: 100, expected_hash: {:usage_activity_by_stage=>{:verify=>{:ci_builds=>100}}}8417 is expected to eq {:usage_activity_by_stage=>{:verify=>{:ci_builds=>100}}}8418Gitlab::Ci::Build::Releaser8419 #script8420 all nodes8421 generates the script8422 individual nodes8423 node_name: :name, node_value: "Release $CI_COMMIT_SHA", result: "release-cli create --name \"Release $CI_COMMIT_SHA\""8424 generates the script8425 node_name: :description, node_value: "Release-cli $EXTRA_DESCRIPTION", result: "release-cli create --description \"Release-cli $EXTRA_DESCRIPTION\""8426 generates the script8427 node_name: :tag_name, node_value: "release-$CI_COMMIT_SHA", result: "release-cli create --tag-name \"release-$CI_COMMIT_SHA\""8428 generates the script8429 node_name: :tag_message, node_value: "Annotated tag message", result: "release-cli create --tag-message \"Annotated tag message\""8430 generates the script8431 node_name: :ref, node_value: "$CI_COMMIT_SHA", result: "release-cli create --ref \"$CI_COMMIT_SHA\""8432 generates the script8433 node_name: :milestones, node_value: ["m1", "m2", "m3"], result: "release-cli create --milestone \"m1\" --milestone \"m2\" --milestone \"m3\""8434 generates the script8435 node_name: :released_at, node_value: "2020-07-15T08:00:00Z", result: "release-cli create --released-at \"2020-07-15T08:00:00Z\""8436 generates the script8437 node_name: :assets, node_value: {:links=>[{:name=>"asset1", :url=>"https://example.com/assets/1", :link_type=>"other", :filepath=>"/pretty/asset/1"}]}, result: "release-cli create --assets-link \"{\\\"name\\\":\\\"asset1\\\",\\\"url\\\":\\\"https://example.com/assets/1\\\",\\\"link_type\\\":\\\"other\\\",\\\"filepath\\\":\\\"/pretty/asset/1\\\"}\""8438 generates the script8439Types::Admin::Analytics::UsageTrends::MeasurementType8440 is expected to have graphql field :recorded_at8441 is expected to have graphql field :identifier8442 is expected to have graphql field :count8443 authorization8444 when the user is not admin8445 returns an error8446 does not return usageTrendsMeasurements data8447 when user is an admin8448 returns usageTrendsMeasurements data8449time travel8450 :freeze_time8451 freezes time around a spec example8452 :time_travel_to8453 time-travels to the specified date8454 time-travels to the specified date & time8455IncidentManagement::IssuableEscalationStatuses::CreateService8456 creates an escalation status for the incident with no policy set8457 existing escalation status8458 exits without changing anything8459Gitlab::GithubImport::Importer::Attachments::MergeRequestsImporter8460 # order random8461 #id_for_already_imported_cache8462 is expected to eq 11038463 #sidekiq_worker_class8464 is expected to eq Gitlab::GithubImport::Attachments::ImportMergeRequestWorker8465 #collection_method8466 is expected to eq :merge_request_attachments8467 #sequential_import8468 imports each project merge request attachments8469 when merge request is already processed8470 doesn't import this merge request attachments8471 #object_type8472 is expected to eq :merge_request_attachment8473API::Helpers::LabelHelpers8474 create_service_params8475 when a project is given8476 returns the expected params8477 when a group is given8478 returns the expected params8479 when something else is given8480 raises a type error8481Preloaders::CommitStatusPreloader8482 #execute8483 prevents N+1 for specified relations8484Gitlab::GithubImport::Importer::IssueAndLabelLinksImporter8485 #execute8486 imports an issue and its labels8487Gitlab::SidekiqStatus::ServerMiddleware8488 #call8489 stops tracking of a job upon completion8490BulkImports::Projects::Pipelines::ProjectAttributesPipeline8491 #run8492 imports project attributes8493 when project is archived8494 sets project as archived8495 #transform8496 removes prohibited attributes from hash8497 #load8498 assigns attributes, drops visibility and reconciles shared runner setting8499 #after_run8500 calls extractor#remove_tmpdir8501 .relation8502 is expected to eq "self"8503MemberRole8504 associations8505 is expected to belong to namespace required: false8506 is expected to have many members8507 validation8508 is expected to validate that :namespace cannot be empty/falsy8509 is expected to validate that :base_access_level cannot be empty/falsy8510 for namespace8511 when namespace is a subgroup8512 is invalid8513 when namespace is a root group8514 is valid8515 when namespace is not present8516 is invalid with a different error message8517Mutations::Environments::CanaryIngress::Update8518 #resolve8519 when service execution succeeded8520 returns no errors8521 with certificate_based_clusters disabled8522 returns notice about feature removal8523 when service encounters a problem8524 returns an error8525 when user is reporter who does not have permission to access the environment8526 raises an error8527Types::Admin::Analytics::UsageTrends::MeasurementIdentifierEnum8528 is expected to eq "MeasurementIdentifier"8529 exposes all the existing identifier values8530projects/pipeline_schedules/_pipeline_schedule8531 taking ownership of schedule8532 when non-owner is signed in8533 non-owner can take ownership of pipeline8534 when owner is signed in8535 owner cannot take ownership of pipeline8536Admin::BackgroundMigrationsHelper8537 #batched_migration_status_badge_variant8538 status_name: :active, variant: :info8539 is expected to eq :info8540 status_name: :paused, variant: :warning8541 is expected to eq :warning8542 status_name: :failed, variant: :danger8543 is expected to eq :danger8544 status_name: :finished, variant: :success8545 is expected to eq :success8546 #batched_migration_progress8547 returns completion percentage8548 when migration is finished8549 returns 100 percent8550 when total_tuple_count is nil8551 returns nil8552 when there are no completed rows8553 returns 0 percent8554 when completed rows are greater than total count8555 returns 99 percent8556RuboCop::Cop::Graphql::EnumNames8557 # order random8558 graphql_name8559 adds an offense when `graphql_name` is not set8560 adds no offense when `declarative_enum` is used8561 adds an offense when `graphql_name` includes `enum`8562 class name8563 adds an offense when class name does not end with `Enum`8564Types::Packages::Cleanup::PolicyType8565 is expected to eq "PackagesCleanupPolicy"8566 is expected to eq "A packages cleanup policy designed to keep only packages and packages assets that matter most"8567 is expected to require graphql authorizations :admin_package8568 keep_n_duplicated_package_files8569 is expected to have non-null GraphQL type PackagesCleanupKeepDuplicatedPackageFilesEnum8570 next_run_at8571 is expected to have nullable GraphQL type Time8572RuboCop::Cop::Migration::RemoveColumn8573 # order random8574 when in a regular migration8575 registers an offense when remove_column is used in the change method8576 registers an offense when remove_column is used in the up method8577 registers no offense when remove_column is used in the down method8578 when in a post-deployment migration8579 registers no offense8580 when outside of a migration8581 registers no offense8582BlobViewer::GitlabCiYml8583 #validation_message8584 calls prepare! on the viewer8585 when the configuration is valid8586 returns nil8587 when the configuration is invalid8588 returns the error message8589Mutations::AlertManagement::HttpIntegration::Update8590 is expected to require graphql authorizations :admin_operations8591 #resolve8592 user has sufficient access to project8593 when HttpIntegrations::UpdateService responds with success8594 returns the integration with no errors8595 when HttpIntegrations::UpdateService responds with an error8596 returns errors8597 when resource is not accessible to the user8598 raises an error if the resource is not accessible to the user8599Gitlab::Usage::Metrics::Instrumentations::CertBasedClustersFfMetric8600 with FF enabled8601 behaves like a correct instrumented metric value8602 has correct value8603 with FF disabled8604 behaves like a correct instrumented metric value8605 has correct value8606WebHookWorker8607 #perform8608 delegates to WebHookService8609 does not error when the WebHook record cannot be found8610 retrieves recursion detection data and reinstates it8611 behaves like worker with data consistency8612 .get_data_consistency_feature_flag_enabled?8613 returns true8614 .get_data_consistency8615 returns correct data consistency8616Gitlab::Kroki8617 .formats8618 enabled_formats: "", expected_formats: ["bytefield", "c4plantuml", "ditaa", "erd", "graphviz", "nomnoml", "pikchr", "plantuml", "structurizr", "svgbob", "umlet", "vega", "vegalite", "wavedrom"]8619 returns the expected formats8620 enabled_formats: "blockdiag", expected_formats: ["bytefield", "c4plantuml", "ditaa", "erd", "graphviz", "nomnoml", "pikchr", "plantuml", "structurizr", "svgbob", "umlet", "vega", "vegalite", "wavedrom", "actdiag", "blockdiag", "nwdiag", "packetdiag", "rackdiag", "seqdiag"]8621 returns the expected formats8622 enabled_formats: "bpmn", expected_formats: ["bytefield", "c4plantuml", "ditaa", "erd", "graphviz", "nomnoml", "pikchr", "plantuml", "structurizr", "svgbob", "umlet", "vega", "vegalite", "wavedrom", "bpmn"]8623 returns the expected formats8624 enabled_formats: "excalidraw", expected_formats: ["bytefield", "c4plantuml", "ditaa", "erd", "graphviz", "nomnoml", "pikchr", "plantuml", "structurizr", "svgbob", "umlet", "vega", "vegalite", "wavedrom", "excalidraw"]8625 returns the expected formats8626Tooling::Crystalball::CoverageLinesExecutionDetector8627 #detect8628 is expected to eq ["file.rb"]8629 with no changes8630 is expected to eq []8631 with previously uncovered file8632 is expected to eq ["file.rb"]8633 with path outside of root8634 is expected to eq []8635 with path in excluded prefix8636 is expected to eq []8637projects/imports/new.html.haml8638 when import fails8639 escapes HTML in import errors8640Types::GroupMemberType8641 is expected to expose permissions using Types::PermissionTypes::Group8642 is expected to eq "GroupMember"8643 is expected to require graphql authorizations :read_group8644 has the expected fields8645Ci::DeleteObjectsWorker8646 is expected to be truthy8647 is expected to respond to #max_running_jobs8648 is expected to respond to #remaining_work_count8649 is expected to respond to #perform_work8650 #perform8651 executes a service8652AuthorizedKeysWorker8653 #perform8654 authorized_keys is enabled8655 #add_key8656 delegates to Gitlab::AuthorizedKeys8657 #remove_key8658 delegates to Gitlab::AuthorizedKeys8659 all other commands8660 raises an error8661 authorized_keys is disabled8662 does nothing8663Projects::DeployTokens::DestroyService8664 behaves like a deploy token deletion service8665 #execute8666 destroys a token record and it's associated DeployToken8667 invalid token id8668 raises an error8669Banzai::Pipeline::EmojiPipeline8670 replaces emoji8671 filters out HTML tags8672DetectRepositoryLanguagesWorker8673 #perform8674 calls de DetectRepositoryLanguages service8675 when invalid ids are used8676 does not raise when the project could not be found8677Gitlab::Email::Hook::DisableEmailInterceptor8678 does not send emails8679Gitlab::Usage::Metrics::Instrumentations::CountUserAuthMetric8680 # order random8681 with 28d time frame8682 behaves like a correct instrumented metric value8683 has correct value8684 with all time frame8685 behaves like a correct instrumented metric value8686 has correct value8687Graphql::FieldSelection8688 can report on the paths that are selected8689 can serialize a field selection nicely8690GroupLink::ProjectGroupLinkEntity8691 matches json schema8692 when current user has `admin_project_member` permissions8693 exposes `can_update` and `can_remove` as `true`8694Types::ContainerRepositoryTagType8695 is expected to eq "ContainerRepositoryTag"8696 is expected to eq "A tag from a container repository"8697 is expected to require graphql authorizations :read_container_image8698 is expected to have graphql fields :name, :path, :location, :digest, :revision, :short_revision, :total_size, :created_at, and :can_delete8699Gitlab::QueryLimiting::Middleware8700 #call8701 runs the application with query limiting in place8702 #action_name8703 using a Rails request8704 returns the name of the controller and action8705 includes the content type if this is not text/html8706 using a Grape API request8707 returns the name of the request method and endpoint path8708 returns nil if the route can not be retrieved8709BitbucketServer::Page8710 #items8711 returns collection of needed objects8712 #attrs8713 returns attributes8714 #next?8715 returns true8716 returns false8717 #next8718 returns next attribute8719Types::ContainerRepositoryTagsSortEnum8720 is expected to eq "ContainerRepositoryTagSort"8721 exposes all the existing issue sort values8722Gitlab::RepositoryArchiveRateLimiter8723 #check_archive_rate_limit!8724 when archive_rate_limit feature flag is disabled8725 does not check rate limit8726 when archive_rate_limit feature flag is enabled8727 when current user exists8728 checks for project_repositories_archive rate limiting with default threshold8729 when current user does not exist8730 checks for project_repositories_archive rate limiting with threshold 1008731Uniquify8732 #string8733 returns the given string if it does not exist8734 returns the given string with a counter attached if the string exists8735 increments the counter for each candidate string that also exists8736 allows to pass an initial value for the counter8737 allows passing in a base function that defines the location of the counter8738API::Entities::ApplicationSetting8739 housekeeping_bitmaps_enabled usage is deprecated and always enabled8740 when housekeeping_bitmaps_enabled db column is false8741 returns true8742 when housekeeping_bitmaps_enabled db column is true8743 returns true8744Types::EventType8745 is expected to eq "Event"8746 is expected to require graphql authorizations :read_event8747 is expected to have graphql fields :id, :author, :action, :created_at, and :updated_at8748Gitlab::ZoomUrlValidator8749 validations8750 when zoom link starts with https8751 passes validation8752 when zoom link does not start with https8753 fails validation8754 when zoom link does not start with a scheme8755 fails validation8756OmniAuth::Strategies::SAML8757 POST /users/auth/saml8758 redirects to the provider login page8759 stores request ID during request phase8760RuboCop::Cop::Migration::SchemaAdditionMethodsNoPost8761 # order random8762 does not allow 'create_table' to be called8763 does not allow 'add_column' to be called8764Types::IssuableSeverityEnum8765 is expected to eq "IssuableSeverity"8766 exposes all the existing issuable severity values8767Types::CommitType8768 is expected to eq "Commit"8769 is expected to require graphql authorizations :download_code8770 is expected to include Types::TodoableInterface8771 contains attributes related to commit8772RolloutStatuses::IngressEntity8773 exposes canary weight877400_deprecations8775 warning: "ActiveModel::Errors#keys is deprecated and will be removed in Rails 6.2"8776 is expected to raise ActiveSupport::DeprecationException8777 warning: "Rendering actions with '.' in the name is deprecated:"8778 is expected to raise ActiveSupport::DeprecationException8779 warning: "default_hash is deprecated and will be removed from Rails 6.2"8780 is expected to raise ActiveSupport::DeprecationException8781Types::BranchProtections::MergeAccessLevelType8782 # order random8783 is expected to have graphql fields :access_level and :access_level_description8784 is expected to require graphql authorizations :read_protected_branch8785Gitlab::Metrics::Dashboard::Stages::TrackPanelType8786 #transform!8787 creates tracking event8788API::Entities::ProjectImportFailedRelation8789 #as_json8790 includes basic fields8791Types::ContainerExpirationPolicyCadenceEnum8792 behaves like exposing container expiration policy option8793 exposes all options8794 uses all possible options from model8795Types::Metadata::KasType8796 is expected to eq "Kas"8797 is expected to require graphql authorizations :read_instance_metadata8798API::Validations::Validators::ProjectPortable8799 valid portable8800 does not raise a validation error8801 empty params8802 raises a validation error8803 not portable8804 raises a validation error8805VulnerabilityFindingSignatureHelpers8806 #priority8807 returns numeric values of the priority string8808 #self.priority8809 returns the numeric value of the provided string8810Gitlab::MergeRequests::Mergeability::RedisInterface8811 #save_check8812 saves the hash8813 #retrieve_check8814 returns the hash8815AccessibilityErrorEntity8816 #as_json8817 when accessibility contains an error8818 contains correct accessibility error details8819Gitlab::Kubernetes::PodCmd8820 .retry_command8821 constructs string properly8822Packages::Rpm::RepositoryMetadata::BuildPrimaryXmlService8823 # order random8824 #execute8825 adds node with required_text_only_attributes8826Gitlab::Ci::Parsers::Coverage::Cobertura8827 uses Sax parser8828RuboCop::Cop::RSpec::ModifySidekiqMiddleware8829 # order random8830 registers an offense and corrects8831FasterCacheKeys8832 #cache_key8833 returns a String8834ClusterAgentQueue8835 is expected to eq "cluster_agent:example"8836 is expected to eq :kubernetes_management8837LooseForeignKeys::ProcessDeletedRecordsService8838 # order random8839-- create_table(:_test_loose_fk_parent_table_1)8840 -> 0.0030s8841-- create_table(:_test_loose_fk_parent_table_2)8842 -> 0.0022s8843-- create_table(:_test_loose_fk_child_table_1_1)8844 -> 0.0022s8845-- create_table(:_test_loose_fk_child_table_1_2)8846 -> 0.0022s8847-- create_table(:_test_loose_fk_child_table_2_1)8848 -> 0.0022s8849-- execute("CREATE TRIGGER _test_loose_fk_parent_table_1_loose_fk_trigger\nAFTER DELETE ON _test_loose_fk_parent_table_1 REFERENCING OLD TABLE AS old_table\nFOR EACH STATEMENT\nEXECUTE FUNCTION insert_into_loose_foreign_keys_deleted_records();\n")8850 -> 0.0144s8851-- execute("CREATE TRIGGER _test_loose_fk_parent_table_2_loose_fk_trigger\nAFTER DELETE ON _test_loose_fk_parent_table_2 REFERENCING OLD TABLE AS old_table\nFOR EACH STATEMENT\nEXECUTE FUNCTION insert_into_loose_foreign_keys_deleted_records();\n")8852 -> 0.0013s8853 #execute8854 cleans up all rows8855 returns stats for records cleaned up8856 records the Apdex as success: true8857 records the error rate as error: false8858 when the amount of records to clean up exceeds BATCH_SIZE8859 cleans up everything over multiple batches8860 when the amount of records to clean up exceeds the total MAX_DELETES8861 cleans up MAX_DELETES and leaves the rest for the next run8862 records the Apdex as success: false8863 when cleanup raises an error8864 records the error rate as error: true and does not increment apdex8865-- drop_table(:_test_loose_fk_parent_table_1)8866 -> 0.0021s8867-- drop_table(:_test_loose_fk_parent_table_2)8868 -> 0.0017s8869-- drop_table(:_test_loose_fk_child_table_1_1)8870 -> 0.0015s8871-- drop_table(:_test_loose_fk_child_table_1_2)8872 -> 0.0015s8873-- drop_table(:_test_loose_fk_child_table_2_1)8874 -> 0.0040s8875Knapsack report was generated. Preview:8876{8877 "spec/models/user_spec.rb": 330.63660924199985,8878 "spec/lib/gitlab/merge_requests/commit_message_generator_spec.rb": 102.49460814700024,8879 "spec/services/issues/close_service_spec.rb": 87.28730030499992,8880 "spec/helpers/projects_helper_spec.rb": 25.119927051000104,8881 "spec/services/auto_merge/base_service_spec.rb": 57.19995109299998,8882 "spec/helpers/visibility_level_helper_spec.rb": 43.94828738499973,8883 "spec/serializers/ci/job_entity_spec.rb": 34.45526671400012,8884 "spec/presenters/project_presenter_spec.rb": 28.633750543000133,8885 "spec/services/environments/stop_service_spec.rb": 30.690189326999644,8886 "spec/models/namespace/package_setting_spec.rb": 17.510265109999636,8887 "spec/services/merge_requests/cleanup_refs_service_spec.rb": 32.82426598200027,8888 "spec/finders/merge_request_target_project_finder_spec.rb": 24.6232646630001,8889 "spec/graphql/mutations/merge_requests/set_milestone_spec.rb": 20.731324050999774,8890 "spec/services/groups/import_export/import_service_spec.rb": 23.876387839000017,8891 "spec/services/work_items/update_service_spec.rb": 20.127457829999912,8892 "spec/models/ci/processable_spec.rb": 13.487761817999854,8893 "spec/models/ability_spec.rb": 17.53504219100023,8894 "spec/lib/gitlab/path_regex_spec.rb": 4.206426070999896,8895 "spec/services/packages/nuget/update_package_from_metadata_service_spec.rb": 14.508196913999654,8896 "spec/lib/gitlab/ci/config/entry/reports_spec.rb": 2.7870386019999387,8897 "spec/models/packages/debian/file_metadatum_spec.rb": 6.200529246999849,8898 "spec/lib/gitlab/import_export/group/legacy_tree_restorer_spec.rb": 13.415075396000248,8899 "spec/services/preview_markdown_service_spec.rb": 14.224490690000039,8900 "spec/lib/backup/files_spec.rb": 14.08710008700018,8901 "spec/finders/members_finder_spec.rb": 13.353656870000123,8902 "spec/services/clusters/integrations/prometheus_health_check_service_spec.rb": 10.9769598150001,8903 "spec/models/user_preference_spec.rb": 3.851091631000145,8904 "spec/policies/todo_policy_spec.rb": 10.411370447000081,8905 "spec/finders/clusters/kubernetes_namespace_finder_spec.rb": 10.157510990999981,8906 "spec/graphql/types/issue_type_spec.rb": 7.672806792999836,8907 "spec/lib/gitlab/database/migrations/batched_background_migration_helpers_spec.rb": 6.424670465000418,8908 "spec/lib/gitlab/metrics/requests_rack_middleware_spec.rb": 6.193717157999799,8909 "spec/policies/metrics/dashboard/annotation_policy_spec.rb": 6.275515753000036,8910 "spec/lib/gitlab/git/cross_repo_comparer_spec.rb": 10.14220848199966,8911 "spec/lib/gitlab/github_import/representation/issue_event_spec.rb": 2.9072938439999234,8912 "spec/lib/gitlab/gitaly_client/blob_service_spec.rb": 8.40854482099985,8913 "spec/models/ci/job_token/project_scope_link_spec.rb": 11.766308798999944,8914 "spec/lib/gitlab/i18n/po_linter_spec.rb": 3.034840327999973,8915 "spec/lib/gitlab/import_export/command_line_util_spec.rb": 4.7620694290003485,8916 "spec/lib/gitlab/application_context_spec.rb": 3.989897622999706,8917 "spec/lib/gitlab/import_export/project/import_task_spec.rb": 7.977513645000272,8918 "spec/lib/gitlab/graphql/queries_spec.rb": 2.5029566570001407,8919 "spec/lib/gitlab/database/postgres_index_spec.rb": 4.10152413600008,8920 "spec/models/analytics/cycle_analytics/merge_request_stage_event_spec.rb": 2.9472318519997316,8921 "spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb": 2.1351219880002645,8922 "spec/workers/database/ci_project_mirrors_consistency_check_worker_spec.rb": 9.190585566999744,8923 "spec/services/users/update_service_spec.rb": 3.5818161360002705,8924 "spec/models/packages/debian/project_component_file_spec.rb": 2.6212775409999267,8925 "spec/models/dependency_proxy/blob_spec.rb": 3.017310967999947,8926 "spec/policies/work_item_policy_spec.rb": 3.2095392669998546,8927 "spec/workers/merge_worker_spec.rb": 7.028916979999849,8928 "spec/finders/crm/organizations_finder_spec.rb": 3.7455481859997235,8929 "spec/models/concerns/sensitive_serializable_hash_spec.rb": 1.539093562999824,8930 "spec/workers/repository_check/single_repository_worker_spec.rb": 6.906976577000023,8931 "spec/tasks/gitlab/external_diffs_rake_spec.rb": 6.865391680000357,8932 "spec/workers/authorized_project_update/user_refresh_from_replica_worker_spec.rb": 1.139116544999979,8933 "spec/models/concerns/bulk_insert_safe_spec.rb": 2.0106063859998358,8934 "spec/models/members/last_group_owner_assigner_spec.rb": 3.1596587399999407,8935 "spec/finders/sentry_issue_finder_spec.rb": 5.242426650999732,8936 "spec/models/customer_relations/organization_spec.rb": 2.6451882700002898,8937 "spec/services/projects/group_links/destroy_service_spec.rb": 3.6695600200000627,8938 "spec/workers/gitlab/phabricator_import/base_worker_spec.rb": 3.19157555899983,8939 "spec/lib/gitlab/database/load_balancing/sticking_spec.rb": 1.0440121599999657,8940 "spec/graphql/types/base_object_spec.rb": 1.6784411140001794,8941 "spec/models/integrations/ewm_spec.rb": 1.781289447999825,8942 "spec/models/integrations/emails_on_push_spec.rb": 2.307761629000197,8943 "spec/lib/sidebars/menu_spec.rb": 0.9721202349996929,8944 "spec/models/packages/debian/file_entry_spec.rb": 1.4570412269999906,8945 "spec/services/grafana/proxy_service_spec.rb": 1.1331892650000555,8946 "spec/helpers/notify_helper_spec.rb": 2.7485991140001715,8947 "spec/lib/gitlab/ci/pipeline/chain/limit/rate_limit_spec.rb": 1.7179913820000365,8948 "spec/services/users/activity_service_spec.rb": 2.025182253999901,8949 "spec/lib/banzai/filter/table_of_contents_filter_spec.rb": 1.147480645000087,8950 "spec/services/packages/go/create_package_service_spec.rb": 2.22300332299983,8951 "spec/lib/gitlab/sidekiq_middleware/size_limiter/compressor_spec.rb": 0.8372327929996572,8952 "spec/lib/json_web_token/hmac_token_spec.rb": 1.213458011000057,8953 "spec/services/branches/delete_service_spec.rb": 4.650497825000002,8954 "spec/lib/gitlab/database/query_analyzers/restrict_allowed_schemas_spec.rb": 0.8783013800002664,8955 "spec/presenters/ci/variable_presenter_spec.rb": 3.1789860089998,8956 "spec/lib/bitbucket_server/representation/pull_request_spec.rb": 1.387565710999752,8957 "spec/uploaders/gitlab_uploader_spec.rb": 0.9518291260001206,8958 "spec/workers/integrations/create_external_cross_reference_worker_spec.rb": 2.4767929489999005,8959 "spec/rubocop/cop/gitlab/avoid_feature_category_not_owned_spec.rb": 0.6873547909999616,8960 "spec/lib/gitlab/analytics/cycle_analytics/records_fetcher_spec.rb": 4.162210842999684,8961 "spec/workers/stuck_export_jobs_worker_spec.rb": 1.7900888889998896,8962 "spec/services/merge_requests/execute_approval_hooks_service_spec.rb": 3.050460015999761,8963 "spec/helpers/lazy_image_tag_helper_spec.rb": 1.1485761450003338,8964 "spec/services/boards/lists/destroy_service_spec.rb": 3.920362707000095,8965 "spec/tasks/gitlab/update_templates_rake_spec.rb": 5.530583895000291,8966 "spec/services/metrics/users_starred_dashboards/create_service_spec.rb": 2.4139051329998438,8967 "spec/models/u2f_registration_spec.rb": 0.7674844660000417,8968 "spec/views/layouts/devise_empty.html.haml_spec.rb": 1.8659435139998095,8969 "spec/services/projects/refresh_build_artifacts_size_statistics_service_spec.rb": 3.0121875380000347,8970 "spec/tasks/gitlab/uploads/check_rake_spec.rb": 3.945883516000322,8971 "spec/rubocop/cop/migration/prevent_index_creation_spec.rb": 0.4824241119999897,8972 "spec/tooling/rspec_flaky/report_spec.rb": 0.6609306219997961,8973 "spec/lib/gitlab/template/gitlab_ci_yml_template_spec.rb": 0.7021523399998841,8974 "spec/lib/gitlab/database/schema_cache_with_renamed_table_spec.rb": 1.5037498350002352,8975 "spec/helpers/nav/new_dropdown_helper_spec.rb": 1.1723747930000172,8976 "spec/graphql/resolvers/admin/analytics/usage_trends/measurements_resolver_spec.rb": 0.9449921169998561,8977 "spec/workers/namespaces/schedule_aggregation_worker_spec.rb": 1.5804844490003234,8978 "spec/lib/gitlab/request_context_spec.rb": 0.453257775000111,8979 "spec/lib/gitlab/git/diff_stats_collection_spec.rb": 0.5431341200001043,8980 "spec/lib/gitlab/ci/yaml_processor/result_spec.rb": 1.8496603949997734,8981 "spec/lib/bulk_imports/groups/transformers/member_attributes_transformer_spec.rb": 1.1702455839999857,8982 "spec/serializers/review_app_setup_entity_spec.rb": 2.6082013420000294,8983 "spec/graphql/types/base_edge_spec.rb": 2.584536502999981,8984 "spec/lib/gitlab/ci/config/yaml/tags/reference_spec.rb": 1.1997407519997978,8985 "spec/models/namespace/aggregation_schedule_spec.rb": 0.9841935140002533,8986 "spec/services/resource_events/synthetic_milestone_notes_builder_service_spec.rb": 3.6876855099999375,8987 "spec/lib/gitlab/uuid_spec.rb": 0.5739675080003508,8988 "spec/workers/ci/test_failure_history_worker_spec.rb": 2.1112912090002283,8989 "spec/lib/gitlab/issuable/clone/attributes_rewriter_spec.rb": 2.2616103410000505,8990 "spec/models/namespace/detail_spec.rb": 1.130324334999841,8991 "spec/lib/gitlab/web_ide/config/entry/terminal_spec.rb": 1.3208520049997787,8992 "spec/lib/gitlab/ci/config/entry/pull_policy_spec.rb": 0.7741319060000933,8993 "spec/views/projects/settings/integrations/edit.html.haml_spec.rb": 1.3832797210002354,8994 "spec/finders/issuables/crm_contact_filter_spec.rb": 1.0025960030002352,8995 "spec/graphql/mutations/alert_management/prometheus_integration/reset_token_spec.rb": 1.1559099839996634,8996 "spec/views/notify/approved_merge_request_email.html.haml_spec.rb": 2.2726250109999455,8997 "spec/lib/gitlab/ci/build/artifacts/path_spec.rb": 0.6227777540002535,8998 "spec/services/boards/visits/create_service_spec.rb": 0.9078708879997066,8999 "spec/rubocop/cop/migration/add_limit_to_text_columns_spec.rb": 0.49984525200034113,9000 "spec/lib/gitlab/import_export/decompressed_archive_size_validator_spec.rb": 0.8664590000003045,9001 "spec/graphql/mutations/saved_replies/update_spec.rb": 0.8976250089999667,9002 "spec/services/protected_branches/create_service_spec.rb": 1.7882895790003204,9003 "spec/services/award_emojis/copy_service_spec.rb": 1.9288861899999574,9004 "spec/workers/incident_management/close_incident_worker_spec.rb": 1.5688876200001687,9005 "spec/services/packages/helm/extract_file_metadata_service_spec.rb": 1.0326526819999344,9006 "spec/serializers/project_serializer_spec.rb": 0.7899999340002068,9007 "spec/services/incident_management/pager_duty/process_webhook_service_spec.rb": 1.0815912090001802,9008 "spec/experiments/ios_specific_templates_experiment_spec.rb": 2.3024835790001816,9009 "spec/services/users/upsert_credit_card_validation_service_spec.rb": 0.8657352810000702,9010 "spec/lib/bulk_imports/groups/pipelines/project_entities_pipeline_spec.rb": 0.8313714420000906,9011 "spec/workers/cleanup_container_repository_worker_spec.rb": 1.5059508039998946,9012 "spec/services/work_items/widgets/milestone_service/create_service_spec.rb": 1.7561421899999914,9013 "spec/models/concerns/from_union_spec.rb": 0.7187569090001489,9014 "spec/lib/gitlab/database/reindexing/index_selection_spec.rb": 1.6951990140000817,9015 "spec/lib/gitlab/ci/config/entry/imageable_spec.rb": 0.7033186700000442,9016 "spec/uploaders/content_type_whitelist_spec.rb": 1.0152335120001226,9017 "spec/policies/ci/bridge_policy_spec.rb": 2.21411651399967,9018 "spec/services/import/validate_remote_git_endpoint_service_spec.rb": 1.0190562620000492,9019 "spec/lib/gitlab/usage/metrics/key_path_processor_spec.rb": 0.5183564300000398,9020 "spec/lib/gitlab/ci/build/releaser_spec.rb": 0.3793729879998864,9021 "spec/graphql/types/admin/analytics/usage_trends/measurement_type_spec.rb": 0.87524742100004,9022 "spec/support_specs/time_travel_spec.rb": 0.4358318849999705,9023 "spec/services/incident_management/issuable_escalation_statuses/create_service_spec.rb": 0.9440146259998983,9024 "spec/lib/gitlab/github_import/importer/attachments/merge_requests_importer_spec.rb": 0.9691935250002643,9025 "spec/lib/api/helpers/label_helpers_spec.rb": 0.8125741640001252,9026 "spec/models/preloaders/commit_status_preloader_spec.rb": 0.9692206039999292,9027 "spec/lib/gitlab/github_import/importer/issue_and_label_links_importer_spec.rb": 0.3142524030004097,9028 "spec/lib/gitlab/sidekiq_status/server_middleware_spec.rb": 0.8773095100000319,9029 "spec/lib/bulk_imports/projects/pipelines/project_attributes_pipeline_spec.rb": 0.8459022520000872,9030 "spec/models/members/member_role_spec.rb": 0.861606859999938,9031 "spec/graphql/mutations/environments/canary_ingress/update_spec.rb": 0.9910926540001128,9032 "spec/graphql/types/admin/analytics/usage_trends/measurement_identifier_enum_spec.rb": 0.2700272950000908,9033 "spec/views/projects/pipeline_schedules/_pipeline_schedule.html.haml_spec.rb": 1.5912351990000388,9034 "spec/helpers/admin/background_migrations_helper_spec.rb": 0.8056362039997111,9035 "spec/rubocop/cop/graphql/enum_names_spec.rb": 0.37660405800033914,9036 "spec/graphql/types/packages/cleanup/policy_type_spec.rb": 0.3460436400000617,9037 "spec/rubocop/cop/migration/remove_column_spec.rb": 0.38909156700037784,9038 "spec/models/blob_viewer/gitlab_ci_yml_spec.rb": 1.229699418999644,9039 "spec/graphql/mutations/alert_management/http_integration/update_spec.rb": 0.9107588570000189,9040 "spec/lib/gitlab/usage/metrics/instrumentations/cert_based_clusters_ff_metric_spec.rb": 0.5697327169996242,9041 "spec/workers/web_hook_worker_spec.rb": 0.9424509169998601,9042 "spec/lib/gitlab/kroki_spec.rb": 0.9196537469997565,9043 "spec/tooling/lib/tooling/crystalball/coverage_lines_execution_detector_spec.rb": 0.36844220900002256,9044 "spec/views/projects/imports/new.html.haml_spec.rb": 1.0220625120000477,9045 "spec/graphql/types/group_member_type_spec.rb": 0.3986330969996743,9046 "spec/workers/ci/delete_objects_worker_spec.rb": 0.5066233009997632,9047 "spec/workers/authorized_keys_worker_spec.rb": 0.6437425539998003,9048 "spec/services/projects/deploy_tokens/destroy_service_spec.rb": 1.0239396609999858,9049 "spec/lib/banzai/pipeline/emoji_pipeline_spec.rb": 0.3355664999999135,9050 "spec/workers/detect_repository_languages_worker_spec.rb": 0.963962335999895,9051 "spec/lib/gitlab/email/hook/disable_email_interceptor_spec.rb": 0.7178490080000302,9052 "spec/lib/gitlab/usage/metrics/instrumentations/count_user_auth_metric_spec.rb": 1.2616823989997101,9053 "spec/support_specs/graphql/field_selection_spec.rb": 0.48652328199978,9054 "spec/serializers/group_link/project_group_link_entity_spec.rb": 1.3028332359999695,9055 "spec/graphql/types/container_repository_tag_type_spec.rb": 0.3658704790000229,9056 "spec/lib/gitlab/query_limiting/middleware_spec.rb": 0.5586343180002586,9057 "spec/lib/bitbucket_server/page_spec.rb": 0.3426706400000512,9058 "spec/graphql/types/container_respository_tags_sort_enum_spec.rb": 0.43188654499999757,9059 "spec/lib/gitlab/repository_archive_rate_limiter_spec.rb": 0.30363212299971565,9060 "spec/models/concerns/uniquify_spec.rb": 0.42786567499979355,9061 "spec/lib/api/entities/application_setting_spec.rb": 0.8279181529997004,9062 "spec/graphql/types/event_type_spec.rb": 0.314771071999985,9063 "spec/validators/gitlab/zoom_url_validator_spec.rb": 0.480496342999686,9064 "spec/initializers/100_patch_omniauth_saml_spec.rb": 0.6651379619997897,9065 "spec/rubocop/cop/migration/schema_addition_methods_no_post_spec.rb": 0.5237018399998306,9066 "spec/graphql/types/issuable_severity_enum_spec.rb": 0.46332870400010506,9067 "spec/graphql/types/commit_type_spec.rb": 0.40598742700012735,9068 "spec/serializers/rollout_statuses/ingress_entity_spec.rb": 0.23444410599995535,9069 "spec/initializers/00_deprecations_spec.rb": 0.3606924489999983,9070 "spec/graphql/types/branch_protections/merge_access_level_type_spec.rb": 0.39928103700003703,9071 "spec/lib/gitlab/metrics/dashboard/stages/track_panel_type_spec.rb": 0.27214921399991,9072 "spec/lib/api/entities/project_import_failed_relation_spec.rb": 0.4974293319996832,9073 "spec/graphql/types/container_expiration_policy_cadence_enum_spec.rb": 0.2648395849996632,9074 "spec/graphql/types/metadata/kas_type_spec.rb": 0.8073885640001208,9075 "spec/lib/api/validations/validators/project_portable_spec.rb": 0.6511666830001559,9076 "spec/models/concerns/vulnerability_finding_signature_helpers_spec.rb": 0.2812965839998469,9077 "spec/lib/gitlab/merge_requests/mergeability/redis_interface_spec.rb": 0.7200675680001041,9078 "spec/serializers/accessibility_error_entity_spec.rb": 0.3864220889995522,9079 "spec/lib/gitlab/kubernetes/pod_cmd_spec.rb": 0.3179424510003628,9080 "spec/services/packages/rpm/repository_metadata/build_primary_xml_service_spec.rb": 0.490267331999803,9081 "spec/lib/gitlab/ci/parsers/coverage/cobertura_spec.rb": 0.30188232299997253,9082 "spec/rubocop/cop/rspec/modify_sidekiq_middleware_spec.rb": 0.3386318510001729,9083 "spec/models/concerns/faster_cache_keys_spec.rb": 0.2523871160001363,9084 "spec/workers/concerns/cluster_agent_queue_spec.rb": 0.36097342000039134,9085 "spec/services/loose_foreign_keys/process_deleted_records_service_spec.rb": 2.2525384219998169086}9087Knapsack global time execution for tests: 22m 42s9088Pending: (Failures listed here are expected and do not affect your suite's status)9089 1) User with uploads behaves like model with uploads .destroy with not mounted uploads with local files deletes any FileUploader uploads which are not mounted9090 # No reason given9091 # ./spec/support/shared_examples/models/with_uploads_shared_examples.rb:239092 2) User with uploads behaves like model with uploads .destroy with not mounted uploads with local files deletes local files9093 # No reason given9094 # ./spec/support/shared_examples/models/with_uploads_shared_examples.rb:279095 3) User with uploads behaves like model with uploads .destroy with not mounted uploads with remote files deletes any FileUploader uploads which are not mounted9096 # No reason given9097 # ./spec/support/shared_examples/models/with_uploads_shared_examples.rb:379098 4) User with uploads behaves like model with uploads .destroy with not mounted uploads with remote files deletes remote files9099 # No reason given9100 # ./spec/support/shared_examples/models/with_uploads_shared_examples.rb:419101Finished in 22 minutes 50 seconds (files took 50.49 seconds to load)91023936 examples, 0 failures, 4 pending9103Randomized with seed 82089104[TEST PROF INFO] Time spent in factories: 13:51.464 (60.33% of total time)9105RSpec exited with 0.9106No examples to retry, congrats!9108Not uploading cache ruby-gems-debian-bullseye-ruby-2.7-16 due to policy9109Not uploading cache gitaly-ruby-gems-debian-bullseye-ruby-2.7-16 due to policy9111Uploading artifacts...9112coverage/: found 5 matching files and directories 9113crystalball/: found 2 matching files and directories 9114WARNING: deprecations/: no matching files. Ensure that the artifact path is relative to the working directory 9115knapsack/: found 3 matching files and directories 9116rspec/: found 9 matching files and directories 9117WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory 9118log/*.log: found 19 matching files and directories 9119WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/3307837705/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com9120WARNING: Retrying... context=artifacts-uploader error=request redirected9121Uploading artifacts as "archive" to coordinator... 201 Created id=3307837705 responseStatus=201 Created token=QpkAjzsC9122Uploading artifacts...9123rspec/junit_rspec.xml: found 1 matching files and directories 9124WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/3307837705/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com9125WARNING: Retrying... context=artifacts-uploader error=request redirected9126Uploading artifacts as "junit" to coordinator... 201 Created id=3307837705 responseStatus=201 Created token=QpkAjzsC9128Job succeeded