rspec unit pg12 19/28
Passed Started
by
@mrincon

Miguel Rincon
1Running with gitlab-runner 15.6.0~beta.186.ga889181a (a889181a)2 on green-4.shared-gitlab-org.runners-manager.gitlab.com/default x5QiHUKw3 feature flags: FF_USE_FASTZIP:true6Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.18-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-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:0619094e4045d67b34b9b4de10d4c433d03cd032c95145d259a97b3081562936 ...10Starting service redis:6.0-alpine ...11Pulling docker image redis:6.0-alpine ...12Using docker image sha256:b5a61c880115e6a29b90b90aef1973eb232e48d3547092deb27f519e1ae98f11 for redis:6.0-alpine with digest redis@sha256:10c7dc799ef793b4c76fb5ef074fd1186121151b90a799b01393e137220bb61e ...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-x5qihukw-project-278964-concurrent-0 via runner-x5qihukw-shared-gitlab-org-1668428361-8b47fd73...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: 134386, done. 25remote: Counting objects: 100% (134386/134386), done. 26remote: Compressing objects: 100% (87585/87585), done.27remote: Total 134386 (delta 60655), reused 92571 (delta 41765), pack-reused 0 28Receiving objects: 100% (134386/134386), 116.33 MiB | 32.29 MiB/s, done.29Resolving deltas: 100% (60655/60655), done.31 * [new ref] refs/pipelines/693894100 -> refs/pipelines/69389410032Checking out 5648e5c9 as refs/merge-requests/102535/merge...33Skipping Git submodules setup34$ git remote set-url origin "${CI_REPOSITORY_URL}"36Checking cache for ruby-gems-debian-bullseye-ruby-2.7-16...37cache.zip is up to date 38Successfully extracted cache39Checking cache for gitaly-ruby-gems-debian-bullseye-ruby-2.7-16...40cache.zip is up to date 41Successfully extracted cache43Downloading artifacts for compile-test-assets (3318206277)...44Downloading artifacts from coordinator... ok id=3318206277 responseStatus=200 OK token=okNJ6t_x45Downloading artifacts for detect-tests (3318206299)...46Downloading artifacts from coordinator... ok id=3318206299 responseStatus=200 OK token=okNJ6t_x47Downloading artifacts for retrieve-tests-metadata (3318206306)...48Downloading artifacts from coordinator... ok id=3318206306 responseStatus=200 OK token=okNJ6t_x49Downloading artifacts for setup-test-env (3318206286)...50Downloading artifacts from coordinator... ok id=3318206286 responseStatus=200 OK token=okNJ6t_x52Using 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 ...53$ echo $FOSS_ONLY54$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb55$ export GOPATH=$CI_PROJECT_DIR/.go56$ mkdir -p $GOPATH57$ source scripts/utils.sh58$ source scripts/prepare_build.sh690Using decomposed database config (config/database.yml.decomposed-postgresql)691$ setup_db_user_only692CREATE ROLE693GRANT694==> 'setup_db_user_only' succeeded in 0 seconds.695$ bundle exec rake db:drop db:create db:schema:load db:migrate696Dropped database 'gitlabhq_test'697Dropped database 'gitlabhq_test_ci'698Dropped database 'gitlabhq_geo_test'699Created database 'gitlabhq_test'700Created database 'gitlabhq_test_ci'701Created database 'gitlabhq_geo_test'702==> 'bundle exec rake db:drop db:create db:schema:load db:migrate' succeeded in 35 seconds.703$ setup_db_praefect704SELECT pg_catalog.set_config('search_path', '', false);705CREATE DATABASE praefect_test ENCODING 'UTF8';706==> 'setup_db_praefect' succeeded in 0 seconds.707$ source ./scripts/rspec_helpers.sh708$ run_timed_command "gem install knapsack --no-document"709$ gem install knapsack --no-document710Successfully installed knapsack-4.0.07111 gem installed712==> 'gem install knapsack --no-document' succeeded in 1 seconds.713$ echo -e "\e[0Ksection_start:`date +%s`:gitaly-test-spawn[collapsed=true]\r\e[0KStarting Gitaly"827$ rspec_paralellized_job "--tag ~quarantine --tag ~level:migration"828SKIP_FLAKY_TESTS_AUTOMATICALLY: true829RETRY_FAILED_TESTS_IN_NEW_PROCESS: true830KNAPSACK_GENERATE_REPORT: true831FLAKY_RSPEC_GENERATE_REPORT: true832KNAPSACK_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.rb833KNAPSACK_LOG_LEVEL: debug834KNAPSACK_REPORT_PATH: knapsack/rspec_unit_pg12_19_28_report.json835FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json836FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg12_19_28_report.json837NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg12_19_28_report.json838SKIPPED_FLAKY_TESTS_REPORT_PATH: rspec/flaky/skipped_flaky_tests_rspec_unit_pg12_19_28_report.txt839RETRIED_TESTS_REPORT_PATH: rspec/flaky/retried_tests_rspec_unit_pg12_19_28_report.txt840CRYSTALBALL: 841Knapsack node specs:842spec/lib/gitlab/git_access_spec.rb843spec/lib/gitlab/middleware/go_spec.rb844spec/models/member_spec.rb845spec/services/ci/create_pipeline_service/rules_spec.rb846spec/services/projects/import_service_spec.rb847spec/services/releases/create_service_spec.rb848spec/services/application_settings/update_service_spec.rb849spec/lib/gitlab/ci/parsers/security/validators/schema_validator_spec.rb850spec/lib/object_storage/direct_upload_spec.rb851spec/services/verify_pages_domain_service_spec.rb852spec/lib/gitlab/background_migration/update_users_where_two_factor_auth_required_from_group_spec.rb853spec/lib/gitlab/email/handler/create_merge_request_handler_spec.rb854spec/lib/gitlab/ci/build/rules/rule/clause/exists_spec.rb855spec/helpers/namespaces_helper_spec.rb856spec/models/merge_request_diff_file_spec.rb857spec/helpers/groups_helper_spec.rb858spec/lib/gitlab/background_migration/delete_orphaned_deployments_spec.rb859spec/lib/gitlab/url_sanitizer_spec.rb860spec/models/blob_spec.rb861spec/services/groups/create_service_spec.rb862spec/graphql/resolvers/timelog_resolver_spec.rb863spec/services/system_notes/time_tracking_service_spec.rb864spec/lib/gitlab/error_tracking/error_repository/open_api_strategy_spec.rb865spec/helpers/users_helper_spec.rb866spec/services/work_items/task_list_reference_removal_service_spec.rb867spec/services/projects/hashed_storage/migrate_repository_service_spec.rb868spec/workers/pages/invalidate_domain_cache_worker_spec.rb869spec/graphql/resolvers/todos_resolver_spec.rb870spec/lib/gitlab/database/load_balancing/host_spec.rb871spec/services/projects/after_rename_service_spec.rb872spec/services/system_notes/design_management_service_spec.rb873spec/services/issues/set_crm_contacts_service_spec.rb874spec/lib/gitlab/database/migrations/test_batched_background_runner_spec.rb875spec/lib/gitlab/ci/ansi2html_spec.rb876spec/models/integrations/chat_message/pipeline_message_spec.rb877spec/lib/banzai/filter/sanitization_filter_spec.rb878spec/helpers/packages_helper_spec.rb879spec/services/ci/archive_trace_service_spec.rb880spec/views/notify/pipeline_success_email.text.erb_spec.rb881spec/serializers/commit_entity_spec.rb882spec/lib/gitlab/background_migration/destroy_invalid_project_members_spec.rb883spec/services/ci/stuck_builds/drop_scheduled_service_spec.rb884spec/lib/gitlab/ci/pipeline/chain/validate/abilities_spec.rb885spec/workers/packages/nuget/extraction_worker_spec.rb886spec/models/board_group_recent_visit_spec.rb887spec/models/protectable_dropdown_spec.rb888spec/lib/gitlab/visibility_level_spec.rb889spec/lib/gitlab/background_migration/rename_task_system_note_to_checklist_item_spec.rb890spec/lib/gitlab/background_migration/add_primary_email_to_emails_if_user_confirmed_spec.rb891spec/models/metrics/dashboard/annotation_spec.rb892spec/lib/gitlab/checks/snippet_check_spec.rb893spec/services/error_tracking/issue_update_service_spec.rb894spec/finders/security/security_jobs_finder_spec.rb895spec/rubocop/cop/rspec/have_gitlab_http_status_spec.rb896spec/services/incident_management/incidents/create_service_spec.rb897spec/services/ci/expire_pipeline_cache_service_spec.rb898spec/rubocop/cop/static_translation_definition_spec.rb899spec/lib/gitlab/middleware/handle_malformed_strings_spec.rb900spec/models/customer_relations/organization_spec.rb901spec/services/users/refresh_authorized_projects_service_spec.rb902spec/lib/gitlab/auth/unique_ips_limiter_spec.rb903spec/services/merge_requests/mergeability/run_checks_service_spec.rb904spec/graphql/resolvers/crm/contacts_resolver_spec.rb905spec/serializers/ci/dag_pipeline_entity_spec.rb906spec/lib/gitlab/omniauth_initializer_spec.rb907spec/lib/gitlab/ci/config/external/file/remote_spec.rb908spec/lib/gitlab/diff/file_collection/compare_spec.rb909spec/models/pages/lookup_path_spec.rb910spec/presenters/projects/import_export/project_export_presenter_spec.rb911spec/lib/gitlab/metrics/samplers/ruby_sampler_spec.rb912spec/services/system_notes/commit_service_spec.rb913spec/services/users/activity_service_spec.rb914spec/lib/gitlab/kubernetes/rollout_status_spec.rb915spec/graphql/resolvers/project_packages_resolver_spec.rb916spec/lib/gitlab/ci/templates/Jobs/sast_iac_gitlab_ci_yaml_spec.rb917spec/finders/clusters_finder_spec.rb918spec/lib/api/helpers/packages_manager_clients_helpers_spec.rb919spec/models/users_statistics_spec.rb920spec/lib/gitlab/database/partitioning_spec.rb921spec/helpers/snippets_helper_spec.rb922spec/workers/environments/auto_delete_cron_worker_spec.rb923spec/presenters/event_presenter_spec.rb924spec/workers/bulk_import_worker_spec.rb925spec/views/layouts/simple_registration.html.haml_spec.rb926spec/lib/gitlab/github_import/importer/diff_note_importer_spec.rb927spec/workers/clusters/applications/activate_integration_worker_spec.rb928spec/lib/gitlab/github_import/importer/events/changed_label_spec.rb929spec/services/clusters/agents/delete_expired_events_service_spec.rb930spec/models/metrics/users_starred_dashboard_spec.rb931spec/lib/gitlab/diff/file_collection/merge_request_diff_base_spec.rb932spec/lib/gitlab/auth/o_auth/auth_hash_spec.rb933spec/models/packages/build_info_spec.rb934spec/models/concerns/featurable_spec.rb935spec/rubocop/cop/gitlab/feature_available_usage_spec.rb936spec/models/packages/debian/group_component_spec.rb937spec/services/groups/group_links/destroy_service_spec.rb938spec/lib/gitlab/endpoint_attributes_spec.rb939spec/validators/system_hook_url_validator_spec.rb940spec/views/layouts/_flash.html.haml_spec.rb941spec/services/projects/refresh_build_artifacts_size_statistics_service_spec.rb942spec/lib/gitlab/ci/reports/sbom/component_spec.rb943spec/services/notes/resolve_service_spec.rb944spec/services/ci/job_artifacts/delete_service_spec.rb945spec/sidekiq_cluster/sidekiq_cluster_spec.rb946spec/graphql/resolvers/user_discussions_count_resolver_spec.rb947spec/helpers/dev_ops_report_helper_spec.rb948spec/workers/stuck_export_jobs_worker_spec.rb949spec/graphql/resolvers/merge_request_pipelines_resolver_spec.rb950spec/serializers/feature_flag_serializer_spec.rb951spec/models/concerns/token_authenticatable_strategies/encryption_helper_spec.rb952spec/lib/gitlab/job_waiter_spec.rb953spec/workers/clusters/applications/deactivate_integration_worker_spec.rb954spec/initializers/1_acts_as_taggable_spec.rb955spec/support_specs/database/without_check_constraint_spec.rb956spec/serializers/import/manifest_provider_repo_entity_spec.rb957spec/lib/declarative_enum_spec.rb958spec/workers/project_destroy_worker_spec.rb959spec/models/concerns/expirable_spec.rb960spec/lib/gitlab/cycle_analytics/summary/value_spec.rb961spec/workers/jira_connect/sync_feature_flags_worker_spec.rb962spec/lib/gitlab/ci/pipeline/chain/sequence_spec.rb963spec/lib/gitlab/kubernetes/kubectl_cmd_spec.rb964spec/graphql/mutations/terraform/state/lock_spec.rb965spec/models/clusters/agents/group_authorization_spec.rb966spec/workers/pages_domain_ssl_renewal_cron_worker_spec.rb967spec/lib/gitlab/graphql/markdown_field_spec.rb968spec/graphql/resolvers/crm/contact_state_counts_resolver_spec.rb969spec/graphql/resolvers/incident_management/timeline_event_tags_resolver_spec.rb970spec/lib/gitlab/setup_helper/praefect_spec.rb971spec/lib/gitlab/ci/reports/security/locations/sast_spec.rb972spec/lib/gitlab/audit/ci_runner_token_author_spec.rb973spec/lib/gitlab/import/import_failure_service_spec.rb974spec/models/list_user_preference_spec.rb975spec/views/projects/issues/_service_desk_info_content.html.haml_spec.rb976spec/presenters/service_hook_presenter_spec.rb977spec/lib/gitlab/ci/matching/build_matcher_spec.rb978spec/graphql/resolvers/recent_boards_resolver_spec.rb979spec/models/concerns/safe_url_spec.rb980spec/lib/gitlab/database/async_indexes/index_creator_spec.rb981spec/lib/gitlab/reference_counter_spec.rb982spec/graphql/mutations/custom_emoji/create_spec.rb983spec/finders/prometheus_metrics_finder_spec.rb984spec/workers/issues/close_worker_spec.rb985spec/lib/gitlab/pagination/keyset/in_operator_optimization/strategies/order_values_loader_strategy_spec.rb986spec/rubocop/cop/performance/ar_count_each_spec.rb987spec/lib/banzai/pipeline_spec.rb988spec/lib/gitlab/github_import/attachments_downloader_spec.rb989spec/lib/bulk_imports/common/pipelines/labels_pipeline_spec.rb990spec/workers/ci/create_cross_project_pipeline_worker_spec.rb991spec/lib/bulk_imports/groups/pipelines/project_entities_pipeline_spec.rb992spec/lib/gitlab/rugged_instrumentation_spec.rb993spec/graphql/types/merge_requests/assignee_type_spec.rb994spec/lib/gitlab/legacy_github_import/comment_formatter_spec.rb995spec/workers/incident_management/pager_duty/process_incident_worker_spec.rb996spec/workers/service_desk_email_receiver_worker_spec.rb997spec/models/blob_viewer/markup_spec.rb998spec/services/keys/last_used_service_spec.rb999spec/workers/group_export_worker_spec.rb1000spec/workers/ci/stuck_builds/drop_scheduled_worker_spec.rb1001spec/lib/banzai/pipeline/broadcast_message_pipeline_spec.rb1002spec/serializers/user_serializer_spec.rb1003spec/lib/gitlab/lets_encrypt/order_spec.rb1004spec/rubocop/cop/file_decompression_spec.rb1005spec/lib/gitlab/internal_post_receive/response_spec.rb1006spec/lib/gitlab/prometheus/adapter_spec.rb1007spec/services/alert_management/http_integrations/create_service_spec.rb1008spec/workers/build_queue_worker_spec.rb1009spec/workers/gitlab/github_import/stage/import_lfs_objects_worker_spec.rb1010spec/graphql/types/permission_types/user_spec.rb1011spec/graphql/mutations/saved_replies/update_spec.rb1012spec/models/integrations/chat_message/base_message_spec.rb1013spec/lib/quality/seeders/issues_spec.rb1014spec/lib/system_check/orphans/namespace_check_spec.rb1015spec/lib/gitlab/auth/atlassian/user_spec.rb1016spec/models/concerns/x509_serial_number_attribute_spec.rb1017spec/serializers/build_artifact_entity_spec.rb1018spec/workers/ci/daily_build_group_report_results_worker_spec.rb1019spec/lib/gitlab/database/query_analyzers/query_recorder_spec.rb1020spec/lib/gitlab/ci/status/failed_spec.rb1021spec/graphql/types/container_repository_sort_enum_spec.rb1022spec/models/integrations/issue_tracker_data_spec.rb1023spec/lib/api/entities/deploy_keys_project_spec.rb1024spec/graphql/types/custom_emoji_type_spec.rb1025spec/initializers/validate_database_config_spec.rb1026spec/models/project_export_job_spec.rb1027spec/lib/gitlab/database/background_migration/health_status/indicators/write_ahead_log_spec.rb1028spec/lib/gitlab/ci/reports/security/finding_signature_spec.rb1029spec/graphql/types/commit_signatures/x509_signature_type_spec.rb1030spec/helpers/web_ide_button_helper_spec.rb1031spec/lib/gitlab/git/conflict/resolver_spec.rb1032spec/services/users/in_product_marketing_email_records_spec.rb1033spec/lib/gitlab/uploads_transfer_spec.rb1034spec/models/chat_team_spec.rb1035spec/lib/gitlab/sidekiq_logging/deduplication_logger_spec.rb1036spec/serializers/diff_line_entity_spec.rb1037spec/lib/api/entities/bulk_imports/export_status_spec.rb1038spec/lib/api/entities/nuget/package_metadata_catalog_entry_spec.rb1039spec/lib/gitlab/metrics/dashboard/validator/client_spec.rb1040spec/lib/gitlab/git/patches/collection_spec.rb1041spec/graphql/types/notes/noteable_interface_spec.rb1042spec/lib/gitlab/middleware/rack_multipart_tempfile_factory_spec.rb1043spec/graphql/types/saved_reply_type_spec.rb1044spec/lib/gitlab/database_importers/common_metrics/prometheus_metric_spec.rb1045spec/graphql/types/ci/recent_failures_type_spec.rb1046spec/models/acts_as_taggable_on/tagging_spec.rb1047spec/lib/gitlab/ci/reports/terraform_reports_spec.rb1048spec/views/errors/omniauth_error.html.haml_spec.rb1049spec/lib/gitlab/memory/watchdog/monitor/rss_memory_limit_spec.rb1050spec/graphql/types/detployment_tag_type_spec.rb1051spec/workers/ci_platform_metrics_update_cron_worker_spec.rb1052spec/graphql/types/ci/runner_platform_type_spec.rb1053spec/rubocop/cop/migration/remove_index_spec.rb1054spec/graphql/types/packages/package_dependency_link_type_spec.rb1055spec/models/concerns/database_reflection_spec.rb1056spec/workers/partition_creation_worker_spec.rb1057spec/lib/gitlab/kubernetes/generic_secret_spec.rb1058spec/services/ci/change_variables_service_spec.rb1059spec/services/gravatar_service_spec.rb1060Filter specs:1061Running specs:1062Running all node tests without filter1063spec/lib/gitlab/git_access_spec.rb1064spec/lib/gitlab/middleware/go_spec.rb1065spec/models/member_spec.rb1066spec/services/ci/create_pipeline_service/rules_spec.rb1067spec/services/projects/import_service_spec.rb1068spec/services/releases/create_service_spec.rb1069spec/services/application_settings/update_service_spec.rb1070spec/lib/gitlab/ci/parsers/security/validators/schema_validator_spec.rb1071spec/lib/object_storage/direct_upload_spec.rb1072spec/services/verify_pages_domain_service_spec.rb1073spec/lib/gitlab/background_migration/update_users_where_two_factor_auth_required_from_group_spec.rb1074spec/lib/gitlab/email/handler/create_merge_request_handler_spec.rb1075spec/lib/gitlab/ci/build/rules/rule/clause/exists_spec.rb1076spec/helpers/namespaces_helper_spec.rb1077spec/models/merge_request_diff_file_spec.rb1078spec/helpers/groups_helper_spec.rb1079spec/lib/gitlab/background_migration/delete_orphaned_deployments_spec.rb1080spec/lib/gitlab/url_sanitizer_spec.rb1081spec/models/blob_spec.rb1082spec/services/groups/create_service_spec.rb1083spec/graphql/resolvers/timelog_resolver_spec.rb1084spec/services/system_notes/time_tracking_service_spec.rb1085spec/lib/gitlab/error_tracking/error_repository/open_api_strategy_spec.rb1086spec/helpers/users_helper_spec.rb1087spec/services/work_items/task_list_reference_removal_service_spec.rb1088spec/services/projects/hashed_storage/migrate_repository_service_spec.rb1089spec/workers/pages/invalidate_domain_cache_worker_spec.rb1090spec/graphql/resolvers/todos_resolver_spec.rb1091spec/lib/gitlab/database/load_balancing/host_spec.rb1092spec/services/projects/after_rename_service_spec.rb1093spec/services/system_notes/design_management_service_spec.rb1094spec/services/issues/set_crm_contacts_service_spec.rb1095spec/lib/gitlab/database/migrations/test_batched_background_runner_spec.rb1096spec/lib/gitlab/ci/ansi2html_spec.rb1097spec/models/integrations/chat_message/pipeline_message_spec.rb1098spec/lib/banzai/filter/sanitization_filter_spec.rb1099spec/helpers/packages_helper_spec.rb1100spec/services/ci/archive_trace_service_spec.rb1101spec/views/notify/pipeline_success_email.text.erb_spec.rb1102spec/serializers/commit_entity_spec.rb1103spec/lib/gitlab/background_migration/destroy_invalid_project_members_spec.rb1104spec/services/ci/stuck_builds/drop_scheduled_service_spec.rb1105spec/lib/gitlab/ci/pipeline/chain/validate/abilities_spec.rb1106spec/workers/packages/nuget/extraction_worker_spec.rb1107spec/models/board_group_recent_visit_spec.rb1108spec/models/protectable_dropdown_spec.rb1109spec/lib/gitlab/visibility_level_spec.rb1110spec/lib/gitlab/background_migration/rename_task_system_note_to_checklist_item_spec.rb1111spec/lib/gitlab/background_migration/add_primary_email_to_emails_if_user_confirmed_spec.rb1112spec/models/metrics/dashboard/annotation_spec.rb1113spec/lib/gitlab/checks/snippet_check_spec.rb1114spec/services/error_tracking/issue_update_service_spec.rb1115spec/finders/security/security_jobs_finder_spec.rb1116spec/rubocop/cop/rspec/have_gitlab_http_status_spec.rb1117spec/services/incident_management/incidents/create_service_spec.rb1118spec/services/ci/expire_pipeline_cache_service_spec.rb1119spec/rubocop/cop/static_translation_definition_spec.rb1120spec/lib/gitlab/middleware/handle_malformed_strings_spec.rb1121spec/models/customer_relations/organization_spec.rb1122spec/services/users/refresh_authorized_projects_service_spec.rb1123spec/lib/gitlab/auth/unique_ips_limiter_spec.rb1124spec/services/merge_requests/mergeability/run_checks_service_spec.rb1125spec/graphql/resolvers/crm/contacts_resolver_spec.rb1126spec/serializers/ci/dag_pipeline_entity_spec.rb1127spec/lib/gitlab/omniauth_initializer_spec.rb1128spec/lib/gitlab/ci/config/external/file/remote_spec.rb1129spec/lib/gitlab/diff/file_collection/compare_spec.rb1130spec/models/pages/lookup_path_spec.rb1131spec/presenters/projects/import_export/project_export_presenter_spec.rb1132spec/lib/gitlab/metrics/samplers/ruby_sampler_spec.rb1133spec/services/system_notes/commit_service_spec.rb1134spec/services/users/activity_service_spec.rb1135spec/lib/gitlab/kubernetes/rollout_status_spec.rb1136spec/graphql/resolvers/project_packages_resolver_spec.rb1137spec/lib/gitlab/ci/templates/Jobs/sast_iac_gitlab_ci_yaml_spec.rb1138spec/finders/clusters_finder_spec.rb1139spec/lib/api/helpers/packages_manager_clients_helpers_spec.rb1140spec/models/users_statistics_spec.rb1141spec/lib/gitlab/database/partitioning_spec.rb1142spec/helpers/snippets_helper_spec.rb1143spec/workers/environments/auto_delete_cron_worker_spec.rb1144spec/presenters/event_presenter_spec.rb1145spec/workers/bulk_import_worker_spec.rb1146spec/views/layouts/simple_registration.html.haml_spec.rb1147spec/lib/gitlab/github_import/importer/diff_note_importer_spec.rb1148spec/workers/clusters/applications/activate_integration_worker_spec.rb1149spec/lib/gitlab/github_import/importer/events/changed_label_spec.rbKnapsack report generator started!1150Run options: exclude {:quarantine=>true, :level=>"migration"}1151Test environment set up in 0.852637448 seconds1152Gitlab::GitAccess1153 #check with single protocols allowed1154 ssh disabled1155 blocks ssh git push and pull1156 http disabled1157 blocks http push and pull1158 when request is made from CI1159 doesn't block http pull1160 when legacy CI credentials are used1161 doesn't block http pull1162 #check_project_accessibility!1163 when the project exists1164 when actor exists1165 when actor is a DeployKey1166 when the DeployKey has access to the project1167 allows push and pull access1168 when the Deploykey does not have access to the project1169 blocks push and pull with "not found"1170 when actor is a User1171 when the User can read the project1172 allows push and pull access1173 when the User cannot read the project1174 blocks push and pull with "not found"1175 when actor is :ci1176 disallows pull access1177 does not block pushes with "not found"1178 when actor is DeployToken1179 when DeployToken is active and belongs to project1180 allows pull access1181 blocks the push1182 when DeployToken does not belong to project1183 blocks pull access1184 blocks the push1185 when actor is nil1186 when guests can read the project1187 allows pull access1188 does not block pushes with "not found"1189 when guests cannot read the project1190 blocks pulls with "not found"1191 blocks pushes with "not found"1192 when the project does not exist1193 blocks push and pull with "not found"1194 behaves like #check with a key that is not valid1195 key is expired1196 does not allow expired keys1197 key is too small1198 does not allow keys which are too small1199 key type is not allowed1200 does not allow keys which are too small1201 behaves like #check with a key that is not valid1202 key is expired1203 does not allow expired keys1204 key is too small1205 does not allow keys which are too small1206 key type is not allowed1207 does not allow keys which are too small1208 #add_project_moved_message!1209 when a redirect was not followed to find the project1210 allows push and pull access1211 with a redirect and ssh protocol1212 behaves like check_project_moved1213 enqueues a redirected message for pushing1214 allows push and pull access1215 with a redirect and http protocol1216 behaves like check_project_moved1217 enqueues a redirected message for pushing1218 allows push and pull access1219 #check_authentication_abilities!1220 when download1221 raises unauthorized with download error1222 when authentication abilities include download code1223 does not raise any errors1224 when authentication abilities include build download code1225 does not raise any errors1226 when upload1227 raises unauthorized with push error1228 when authentication abilities include push code1229 does not raise any errors1230 #check_command_disabled!1231 over http1232 when the git-upload-pack command is disabled in config1233 when calling git-upload-pack1234 is expected to raise Gitlab::GitAccess::ForbiddenError with "Pulling over HTTP is not allowed."1235 when calling git-receive-pack1236 is expected not to raise Exception1237 when the git-receive-pack command is disabled in config1238 when calling git-receive-pack1239 is expected to raise Gitlab::GitAccess::ForbiddenError with "Pushing over HTTP is not allowed."1240 when calling git-upload-pack1241 is expected not to raise Exception1242 #check_db_accessibility!1243 when in a read-only GitLab instance1244 is expected to raise Gitlab::GitAccess::ForbiddenError with "You can't push code to a read-only GitLab instance."1245 #check_download_access!1246 allows maintainers to pull1247 disallows guests to pull1248 disallows blocked users to pull1249 disallows users that are blocked pending approval to pull1250 disallows deactivated users to pull1251 disallows users with expired password to pull1252 with an ldap user1253 allows ldap users with expired password to pull1254 when the project repository does not exist1255 returns not found1256 without access to project1257 pull code1258 is expected to raise Gitlab::GitAccess::NotFoundError with "The project you were looking for could not be found or you don't have permission to view it."1259 when project is public1260 when repository is enabled1261 give access to download code1262 when repository is disabled1263 does not give access to download code1264 deploy key permissions1265 pull code1266 when project is public1267 when deploy key exists in the project1268 when the repository is public1269 is expected not to raise Exception1270 when the repository is private1271 is expected not to raise Exception1272 when the repository is disabled1273 is expected to raise Exception with "You are not allowed to download code from this project."1274 when deploy key does not exist in the project1275 when the repository is public1276 is expected not to raise Exception1277 when the repository is private1278 is expected to raise Exception with "You are not allowed to download code from this project."1279 when the repository is disabled1280 is expected to raise Exception with "You are not allowed to download code from this project."1281 when project is internal1282 when deploy key exists in the project1283 when the repository is public1284 is expected not to raise Exception1285 when the repository is private1286 is expected not to raise Exception1287 when the repository is disabled1288 is expected to raise Exception with "You are not allowed to download code from this project."1289 when deploy key does not exist in the project1290 when the repository is public1291 is expected to raise Exception with "The project you were looking for could not be found or you don't have permission to view it."1292 when the repository is private1293 is expected to raise Exception with "The project you were looking for could not be found or you don't have permission to view it."1294 when the repository is disabled1295 is expected to raise Exception with "The project you were looking for could not be found or you don't have permission to view it."1296 when project is private1297 when deploy key exists in the project1298 when the repository is private1299 is expected not to raise Exception1300 when the repository is disabled1301 is expected to raise Exception with "You are not allowed to download code from this project."1302 when deploy key does not exist in the project1303 when the repository is private1304 is expected to raise Exception with "The project you were looking for could not be found or you don't have permission to view it."1305 when the repository is disabled1306 is expected to raise Exception with "The project you were looking for could not be found or you don't have permission to view it."1307 deploy token permissions1308 pull code1309 when project is authorized1310 is expected not to raise Exception1311 when unauthorized1312 from public project1313 is expected not to raise Exception1314 from internal project1315 is expected to raise Gitlab::GitAccess::NotFoundError with "The project you were looking for could not be found or you don't have permission to view it."1316 from private project1317 is expected to raise Gitlab::GitAccess::NotFoundError with "The project you were looking for could not be found or you don't have permission to view it."1318 build authentication_abilities permissions1319 owner1320 pull code1321 is expected not to raise Exception1322 reporter user1323 pull code1324 is expected not to raise Exception1325 admin user1326 when admin mode enabled1327 when member of the project1328 pull code1329 is expected not to raise Exception1330 when is not member of the project1331 pull code1332 is expected to raise Gitlab::GitAccess::ForbiddenError with "You are not allowed to download code from this project."1333 when admin mode disabled1334 when member of the project1335 pull code1336 is expected not to raise Exception1337 when is not member of the project1338 pull code1339 is expected to raise Gitlab::GitAccess::NotFoundError with "The project you were looking for could not be found or you don't have permission to view it."1340 generic CI (build without a user)1341 is expected to raise Gitlab::GitAccess::NotFoundError1342 check LFS integrity1343 when LFS is not enabled1344 does not run LFSIntegrity check1345 when LFS is enabled1346 checks LFS integrity only for first change1347 #check_push_access!1349 has the correct permissions for admin_with_admin_modes1350 has the correct permissions for admin_without_admin_modes (PENDING: All admins are allowed to perform actions https://gitlab.com/gitlab-org/gitlab/-/issues/296509)1351 has the correct permissions for maintainers1352 has the correct permissions for developers1353 has the correct permissions for reporters1354 has the correct permissions for guests1355 when developers are allowed to push into the exact protected branch1356 has the correct permissions for admin_with_admin_modes1357 has the correct permissions for admin_without_admin_modes (PENDING: All admins are allowed to perform actions https://gitlab.com/gitlab-org/gitlab/-/issues/296509)1358 has the correct permissions for maintainers1359 has the correct permissions for developers1360 has the correct permissions for reporters1361 has the correct permissions for guests1362 developers are allowed to merge into the exact protected branch1363 when a merge request exists for the given source/target branch1364 when the merge request is in progress1365 has the correct permissions for admin_with_admin_modes1366 has the correct permissions for admin_without_admin_modes (PENDING: All admins are allowed to perform actions https://gitlab.com/gitlab-org/gitlab/-/issues/296509)1367 has the correct permissions for maintainers1368 has the correct permissions for developers1369 has the correct permissions for reporters1370 has the correct permissions for guests1371 when the merge request is not in progress1372 has the correct permissions for admin_with_admin_modes1373 has the correct permissions for admin_without_admin_modes (PENDING: All admins are allowed to perform actions https://gitlab.com/gitlab-org/gitlab/-/issues/296509)1374 has the correct permissions for maintainers1375 has the correct permissions for developers1376 has the correct permissions for reporters1377 has the correct permissions for guests1378 when a merge request does not exist for the given source/target branch1379 has the correct permissions for admin_with_admin_modes1380 has the correct permissions for admin_without_admin_modes (PENDING: All admins are allowed to perform actions https://gitlab.com/gitlab-org/gitlab/-/issues/296509)1381 has the correct permissions for maintainers1382 has the correct permissions for developers1383 has the correct permissions for reporters1384 has the correct permissions for guests1385 when developers are allowed to push and merge into the exact protected branch1386 has the correct permissions for admin_with_admin_modes1387 has the correct permissions for admin_without_admin_modes (PENDING: All admins are allowed to perform actions https://gitlab.com/gitlab-org/gitlab/-/issues/296509)1388 has the correct permissions for maintainers1389 has the correct permissions for developers1390 has the correct permissions for reporters1391 has the correct permissions for guests1392 when no one is allowed to push to the feature protected branch1393 has the correct permissions for admin_with_admin_modes1394 has the correct permissions for admin_without_admin_modes (PENDING: All admins are allowed to perform actions https://gitlab.com/gitlab-org/gitlab/-/issues/296509)1395 has the correct permissions for maintainers1396 has the correct permissions for developers1397 has the correct permissions for reporters1398 has the correct permissions for guests1400 has the correct permissions for admin_with_admin_modes1401 has the correct permissions for admin_without_admin_modes (PENDING: All admins are allowed to perform actions https://gitlab.com/gitlab-org/gitlab/-/issues/296509)1402 has the correct permissions for maintainers1403 has the correct permissions for developers1404 has the correct permissions for reporters1405 has the correct permissions for guests1406 when developers are allowed to push into the wildcard protected branch1407 has the correct permissions for admin_with_admin_modes1408 has the correct permissions for admin_without_admin_modes (PENDING: All admins are allowed to perform actions https://gitlab.com/gitlab-org/gitlab/-/issues/296509)1409 has the correct permissions for maintainers1410 has the correct permissions for developers1411 has the correct permissions for reporters1412 has the correct permissions for guests1413 developers are allowed to merge into the wildcard protected branch1414 when a merge request exists for the given source/target branch1415 when the merge request is in progress1416 has the correct permissions for admin_with_admin_modes1417 has the correct permissions for admin_without_admin_modes (PENDING: All admins are allowed to perform actions https://gitlab.com/gitlab-org/gitlab/-/issues/296509)1418 has the correct permissions for maintainers1419 has the correct permissions for developers1420 has the correct permissions for reporters1421 has the correct permissions for guests1422 when the merge request is not in progress1423 has the correct permissions for admin_with_admin_modes1424 has the correct permissions for admin_without_admin_modes (PENDING: All admins are allowed to perform actions https://gitlab.com/gitlab-org/gitlab/-/issues/296509)1425 has the correct permissions for maintainers1426 has the correct permissions for developers1427 has the correct permissions for reporters1428 has the correct permissions for guests1429 when a merge request does not exist for the given source/target branch1430 has the correct permissions for admin_with_admin_modes1431 has the correct permissions for admin_without_admin_modes (PENDING: All admins are allowed to perform actions https://gitlab.com/gitlab-org/gitlab/-/issues/296509)1432 has the correct permissions for maintainers1433 has the correct permissions for developers1434 has the correct permissions for reporters1435 has the correct permissions for guests1436 when developers are allowed to push and merge into the wildcard protected branch1437 has the correct permissions for admin_with_admin_modes1438 has the correct permissions for admin_without_admin_modes (PENDING: All admins are allowed to perform actions https://gitlab.com/gitlab-org/gitlab/-/issues/296509)1439 has the correct permissions for maintainers1440 has the correct permissions for developers1441 has the correct permissions for reporters1442 has the correct permissions for guests1443 when no one is allowed to push to the feat* protected branch1444 has the correct permissions for admin_with_admin_modes1445 has the correct permissions for admin_without_admin_modes (PENDING: All admins are allowed to perform actions https://gitlab.com/gitlab-org/gitlab/-/issues/296509)1446 has the correct permissions for maintainers1447 has the correct permissions for developers1448 has the correct permissions for reporters1449 has the correct permissions for guests1450 when pushing to a project1451 disallows users that are blocked pending approval to push1452 does not allow deactivated users to push1453 disallows users with expired password to push1454 avoids N+1 queries1455 raises TimeoutError when #check_access! raises a timeout error1456 with an ldap user1457 allows ldap users with expired password to push1458 disallows blocked ldap users with expired password to push1459 build authentication abilities1460 when project is authorized1461 is expected to raise Gitlab::GitAccess::ForbiddenError with "You are not allowed to upload code."1462 when unauthorized1463 to public project1464 is expected to raise Gitlab::GitAccess::ForbiddenError with "You are not allowed to upload code."1465 to internal project1466 is expected to raise Gitlab::GitAccess::ForbiddenError with "You are not allowed to upload code."1467 to private project1468 is expected to raise Gitlab::GitAccess::ForbiddenError with "You are not allowed to upload code."1469 when the repository is read-only1470 denies push access1471 deploy key permissions1472 when deploy_key can push1473 when project is authorized1474 is expected not to raise Exception1475 when unauthorized1476 to public project1477 is expected to raise Gitlab::GitAccess::ForbiddenError with "This deploy key does not have write access to this project."1478 to internal project1479 is expected to raise Gitlab::GitAccess::NotFoundError with "The project you were looking for could not be found or you don't have permission to view it."1480 to private project1481 is expected to raise Gitlab::GitAccess::NotFoundError with "The project you were looking for could not be found or you don't have permission to view it."1482 when deploy_key cannot push1483 when project is authorized1484 is expected to raise Gitlab::GitAccess::ForbiddenError with "This deploy key does not have write access to this project."1485 when unauthorized1486 to public project1487 is expected to raise Gitlab::GitAccess::ForbiddenError with "This deploy key does not have write access to this project."1488 to internal project1489 is expected to raise Gitlab::GitAccess::NotFoundError with "The project you were looking for could not be found or you don't have permission to view it."1490 to private project1491 is expected to raise Gitlab::GitAccess::NotFoundError with "The project you were looking for could not be found or you don't have permission to view it."1492 terms are enforced1493 as an anonymous user to a public project1494 is expected not to raise Exception1495 as a guest to a public project1496 behaves like access after accepting terms1497 blocks access when the user did not accept terms1498 allows access when the user accepted the terms1499 as a reporter to the project1500 behaves like access after accepting terms1501 blocks access when the user did not accept terms1502 allows access when the user accepted the terms1503 as a developer of the project1504 behaves like access after accepting terms1505 blocks access when the user did not accept terms1506 allows access when the user accepted the terms1507 as a maintainer of the project1508 behaves like access after accepting terms1509 blocks access when the user did not accept terms1510 allows access when the user accepted the terms1511 as an owner of the project1512 behaves like access after accepting terms1513 blocks access when the user did not accept terms1514 allows access when the user accepted the terms1515 when a ci build clones the project1516 doesn't block http pull1517Gitlab::Middleware::Go1518 #call1519 when go-get=01520 skips go-import generation1521 when go-get=11522 with SSH disabled1523 with simple 2-segment project path1524 with subpackages1525 returns the full project path1526 without subpackages1527 returns the full project path1528 with a nested project path1529 with subpackages1530 behaves like a nested project1531 when the project is public1532 returns the full project path1533 when the project is private1534 when not authenticated1535 behaves like unauthorized1536 returns the 2-segment group path1537 when authenticated1538 using basic auth1539 using a personal access token1540 with api scope1541 behaves like authenticated1542 with access to the project1543 returns the full project path1544 with an empty ssh_user1545 returns the full project path1546 without access to the project1547 behaves like unauthorized1548 returns the 2-segment group path1549 with user is blocked1550 behaves like unauthorized1551 returns the 2-segment group path1552 with read_user scope1553 behaves like unauthorized1554 returns the 2-segment group path1555 with a blacklisted ip1556 returns forbidden1557 when a personal access token is missing1558 returns unauthorized1559 with a subpackage that is not a valid project path1560 behaves like a nested project1561 when the project is public1562 returns the full project path1563 when the project is private1564 when not authenticated1565 behaves like unauthorized1566 returns the 2-segment group path1567 when authenticated1568 using basic auth1569 using a personal access token1570 with api scope1571 behaves like authenticated1572 with access to the project1573 returns the full project path1574 with an empty ssh_user1575 returns the full project path1576 without access to the project1577 behaves like unauthorized1578 returns the 2-segment group path1579 with user is blocked1580 behaves like unauthorized1581 returns the 2-segment group path1582 with read_user scope1583 behaves like unauthorized1584 returns the 2-segment group path1585 with a blacklisted ip1586 returns forbidden1587 when a personal access token is missing1588 returns unauthorized1589 without subpackages1590 behaves like a nested project1591 when the project is public1592 returns the full project path1593 when the project is private1594 when not authenticated1595 behaves like unauthorized1596 returns the 2-segment group path1597 when authenticated1598 using basic auth1599 using a personal access token1600 with api scope1601 behaves like authenticated1602 with access to the project1603 returns the full project path1604 with an empty ssh_user1605 returns the full project path1606 without access to the project1607 behaves like unauthorized1608 returns the 2-segment group path1609 with user is blocked1610 behaves like unauthorized1611 returns the 2-segment group path1612 with read_user scope1613 behaves like unauthorized1614 returns the 2-segment group path1615 with a blacklisted ip1616 returns forbidden1617 when a personal access token is missing1618 returns unauthorized1619 with a bogus path1620 skips go-import generation1621 with a public project without a repository1622 returns 4041623 with a non-standard head1624 returns the full project path1625 with HTTP disabled1626 with simple 2-segment project path1627 with subpackages1628 returns the full project path1629 without subpackages1630 returns the full project path1631 with a nested project path1632 with subpackages1633 behaves like a nested project1634 when the project is public1635 returns the full project path1636 when the project is private1637 when not authenticated1638 behaves like unauthorized1639 returns the 2-segment group path1640 when authenticated1641 using basic auth1642 using a personal access token1643 with api scope1644 behaves like authenticated1645 with access to the project1646 returns the full project path1647 with an empty ssh_user1648 returns the full project path1649 without access to the project1650 behaves like unauthorized1651 returns the 2-segment group path1652 with user is blocked1653 behaves like unauthorized1654 returns the 2-segment group path1655 with read_user scope1656 behaves like unauthorized1657 returns the 2-segment group path1658 with a blacklisted ip1659 returns forbidden1660 when a personal access token is missing1661 returns unauthorized1662 with a subpackage that is not a valid project path1663 behaves like a nested project1664 when the project is public1665 returns the full project path1666 when the project is private1667 when not authenticated1668 behaves like unauthorized1669 returns the 2-segment group path1670 when authenticated1671 using basic auth1672 using a personal access token1673 with api scope1674 behaves like authenticated1675 with access to the project1676 returns the full project path1677 with an empty ssh_user1678 returns the full project path1679 without access to the project1680 behaves like unauthorized1681 returns the 2-segment group path1682 with user is blocked1683 behaves like unauthorized1684 returns the 2-segment group path1685 with read_user scope1686 behaves like unauthorized1687 returns the 2-segment group path1688 with a blacklisted ip1689 returns forbidden1690 when a personal access token is missing1691 returns unauthorized1692 without subpackages1693 behaves like a nested project1694 when the project is public1695 returns the full project path1696 when the project is private1697 when not authenticated1698 behaves like unauthorized1699 returns the 2-segment group path1700 when authenticated1701 using basic auth1702 using a personal access token1703 with api scope1704 behaves like authenticated1705 with access to the project1706 returns the full project path1707 with an empty ssh_user1708 returns the full project path1709 without access to the project1710 behaves like unauthorized1711 returns the 2-segment group path1712 with user is blocked1713 behaves like unauthorized1714 returns the 2-segment group path1715 with read_user scope1716 behaves like unauthorized1717 returns the 2-segment group path1718 with a blacklisted ip1719 returns forbidden1720 when a personal access token is missing1721 returns unauthorized1722 with a bogus path1723 skips go-import generation1724 with a public project without a repository1725 returns 4041726 with a non-standard head1727 returns the full project path1728 with nothing disabled1729 with simple 2-segment project path1730 with subpackages1731 returns the full project path1732 without subpackages1733 returns the full project path1734 with a nested project path1735 with subpackages1736 behaves like a nested project1737 when the project is public1738 returns the full project path1739 when the project is private1740 when not authenticated1741 behaves like unauthorized1742 returns the 2-segment group path1743 when authenticated1744 using basic auth1745 using a personal access token1746 with api scope1747 behaves like authenticated1748 with access to the project1749 returns the full project path1750 with an empty ssh_user1751 returns the full project path1752 without access to the project1753 behaves like unauthorized1754 returns the 2-segment group path1755 with user is blocked1756 behaves like unauthorized1757 returns the 2-segment group path1758 with read_user scope1759 behaves like unauthorized1760 returns the 2-segment group path1761 with a blacklisted ip1762 returns forbidden1763 when a personal access token is missing1764 returns unauthorized1765 with a subpackage that is not a valid project path1766 behaves like a nested project1767 when the project is public1768 returns the full project path1769 when the project is private1770 when not authenticated1771 behaves like unauthorized1772 returns the 2-segment group path1773 when authenticated1774 using basic auth1775 using a personal access token1776 with api scope1777 behaves like authenticated1778 with access to the project1779 returns the full project path1780 with an empty ssh_user1781 returns the full project path1782 without access to the project1783 behaves like unauthorized1784 returns the 2-segment group path1785 with user is blocked1786 behaves like unauthorized1787 returns the 2-segment group path1788 with read_user scope1789 behaves like unauthorized1790 returns the 2-segment group path1791 with a blacklisted ip1792 returns forbidden1793 when a personal access token is missing1794 returns unauthorized1795 without subpackages1796 behaves like a nested project1797 when the project is public1798 returns the full project path1799 when the project is private1800 when not authenticated1801 behaves like unauthorized1802 returns the 2-segment group path1803 when authenticated1804 using basic auth1805 using a personal access token1806 with api scope1807 behaves like authenticated1808 with access to the project1809 returns the full project path1810 with an empty ssh_user1811 returns the full project path1812 without access to the project1813 behaves like unauthorized1814 returns the 2-segment group path1815 with user is blocked1816 behaves like unauthorized1817 returns the 2-segment group path1818 with read_user scope1819 behaves like unauthorized1820 returns the 2-segment group path1821 with a blacklisted ip1822 returns forbidden1823 when a personal access token is missing1824 returns unauthorized1825 with a bogus path1826 skips go-import generation1827 with a public project without a repository1828 returns 4041829 with a non-standard head1830 returns the full project path1831 with nothing disabled (blank string)1832 with simple 2-segment project path1833 with subpackages1834 returns the full project path1835 without subpackages1836 returns the full project path1837 with a nested project path1838 with subpackages1839 behaves like a nested project1840 when the project is public1841 returns the full project path1842 when the project is private1843 when not authenticated1844 behaves like unauthorized1845 returns the 2-segment group path1846 when authenticated1847 using basic auth1848 using a personal access token1849 with api scope1850 behaves like authenticated1851 with access to the project1852 returns the full project path1853 with an empty ssh_user1854 returns the full project path1855 without access to the project1856 behaves like unauthorized1857 returns the 2-segment group path1858 with user is blocked1859 behaves like unauthorized1860 returns the 2-segment group path1861 with read_user scope1862 behaves like unauthorized1863 returns the 2-segment group path1864 with a blacklisted ip1865 returns forbidden1866 when a personal access token is missing1867 returns unauthorized1868 with a subpackage that is not a valid project path1869 behaves like a nested project1870 when the project is public1871 returns the full project path1872 when the project is private1873 when not authenticated1874 behaves like unauthorized1875 returns the 2-segment group path1876 when authenticated1877 using basic auth1878 using a personal access token1879 with api scope1880 behaves like authenticated1881 with access to the project1882 returns the full project path1883 with an empty ssh_user1884 returns the full project path1885 without access to the project1886 behaves like unauthorized1887 returns the 2-segment group path1888 with user is blocked1889 behaves like unauthorized1890 returns the 2-segment group path1891 with read_user scope1892 behaves like unauthorized1893 returns the 2-segment group path1894 with a blacklisted ip1895 returns forbidden1896 when a personal access token is missing1897 returns unauthorized1898 without subpackages1899 behaves like a nested project1900 when the project is public1901 returns the full project path1902 when the project is private1903 when not authenticated1904 behaves like unauthorized1905 returns the 2-segment group path1906 when authenticated1907 using basic auth1908 using a personal access token1909 with api scope1910 behaves like authenticated1911 with access to the project1912 returns the full project path1913 with an empty ssh_user1914 returns the full project path1915 without access to the project1916 behaves like unauthorized1917 returns the 2-segment group path1918 with user is blocked1919 behaves like unauthorized1920 returns the 2-segment group path1921 with read_user scope1922 behaves like unauthorized1923 returns the 2-segment group path1924 with a blacklisted ip1925 returns forbidden1926 when a personal access token is missing1927 returns unauthorized1928 with a bogus path1929 skips go-import generation1930 with a public project without a repository1931 returns 4041932 with a non-standard head1933 returns the full project path1934Member1935 default values1936 is expected to eq 31937 Associations1938 is expected to belong to user required: false1939 is expected to belong to member_namespace required: false1940 is expected to belong to member_role required: false1941 is expected to have one member_task1942 Validation1943 is expected to validate that :user cannot be empty/falsy1944 is expected to validate that :source cannot be empty/falsy1945 expires_at1946 is expected not to allow :expires_at to be ‹Sun, 13 Nov 2022›1947 is expected to allow :expires_at to be ‹Tue, 15 Nov 2022›1948 is expected to allow :expires_at to be ‹Mon, 14 Nov 2022›1949 is expected to allow :expires_at to be ‹nil›1950 behaves like an object with email-formatted attributes1951 specifically its :invite_email attribute1952 with a value of 'info@example.com'1953 is valid1954 with a value of 'info+test@example.com'1955 is valid1956 with a value of 'o'reilly@example.com'1957 is valid1958 with a value of 'mailto:test@example.com'1959 is valid1960 with a value of 'lol!'+=?><#$%^&*()@gmail.com'1961 is valid1962 with a value of 'foobar'1963 is invalid1964 with a value of 'test@test@example.com'1965 is invalid1966 when an invite email is provided1967 doesn't require a user1968 requires a valid invite email1969 requires a unique invite email scoped to this source1970 when an invite email is not provided1971 requires a user1972 is valid otherwise1973 with admin signup restrictions1974 when allowed domains for signup is enabled1975 adds an error message when email is not accepted1976 when denylist is enabled1977 adds an error message when email is denied1978 when email restrictions is enabled1979 adds an error message when email is not accepted1980 when a child member inherits its access level1981 requires a higher level1982 is valid with an equal level1983 is valid with a higher level1984 project bots1985 not a member of any group or project1986 is valid1987 already member of a project1988 is not valid1989 member role access level1990 no member role is associated1991 is valid1992 member role is associated1993 member role matches access level1994 is valid1995 member role does not match access level1996 is invalid1997 access_level cannot be changed1998 is invalid1999 Scopes & finders2000 .access_for_user_ids2001 returns the right access levels2002 .in_hierarchy2003 is expected to contain exactly #<GroupMember id: 450, access_level: 50, source_id: 1086, source_type: "Namespace", user_id: 530, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1086, member_role_id: nil>, #<ProjectMember id: 452, access_level: 40, source_id: 329, source_type: "Project", user_id: 533, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1091, member_role_id: nil>, #<GroupMember id: 453, access_level: 50, source_id: 1095, source_type: "Namespace", user_id: 535, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1095, member_role_id: nil>, and #<ProjectMember id: 455, access_level: 40, source_id: 331, source_type: "Project", user_id: 538, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1100, member_role_id: nil>2004 with scope prefix2005 is expected to contain exactly #<GroupMember id: 456, access_level: 50, source_id: 1104, source_type: "Namespace", user_id: 540, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1104, member_role_id: nil>, #<GroupMember id: 459, access_level: 50, source_id: 1113, source_type: "Namespace", user_id: 545, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1113, member_role_id: nil>, and #<ProjectMember id: 461, access_level: 40, source_id: 335, source_type: "Project", user_id: 548, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1118, member_role_id: nil>2006 with scope suffix2007 is expected to contain exactly #<GroupMember id: 462, access_level: 50, source_id: 1122, source_type: "Namespace", user_id: 550, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1122, member_role_id: nil>, #<GroupMember id: 465, access_level: 50, source_id: 1131, source_type: "Namespace", user_id: 555, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1131, member_role_id: nil>, and #<ProjectMember id: 467, access_level: 40, source_id: 339, source_type: "Project", user_id: 558, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1136, member_role_id: nil>2008 .invite2009 is expected not to include #<ProjectMember id: 440, access_level: 40, source_id: 324, source_type: "Project", user_id: 519, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2010 is expected to include #<ProjectMember id: 444, access_level: 30, source_id: 324, source_type: "Project", user_id: nil, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2011 is expected not to include #<ProjectMember id: 446, access_level: 30, source_id: 324, source_type: "Project", user_id: 526, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2012 is expected not to include #<ProjectMember id: 447, access_level: 30, source_id: 324, source_type: "Project", user_id: 527, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2013 is expected not to include #<ProjectMember id: 448, access_level: 30, source_id: 324, source_type: "Project", user_id: 528, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2014 .non_invite2015 is expected to include #<ProjectMember id: 440, access_level: 40, source_id: 324, source_type: "Project", user_id: 519, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2016 is expected not to include #<ProjectMember id: 444, access_level: 30, source_id: 324, source_type: "Project", user_id: nil, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2017 is expected to include #<ProjectMember id: 446, access_level: 30, source_id: 324, source_type: "Project", user_id: 526, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2018 is expected to include #<ProjectMember id: 447, access_level: 30, source_id: 324, source_type: "Project", user_id: 527, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2019 is expected to include #<ProjectMember id: 448, access_level: 30, source_id: 324, source_type: "Project", user_id: 528, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2020 .non_minimal_access2021 is expected to include #<ProjectMember id: 440, access_level: 40, source_id: 324, source_type: "Project", user_id: 519, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2022 is expected to include #<ProjectMember id: 444, access_level: 30, source_id: 324, source_type: "Project", user_id: nil, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2023 is expected to include #<ProjectMember id: 446, access_level: 30, source_id: 324, source_type: "Project", user_id: 526, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2024 is expected to include #<ProjectMember id: 447, access_level: 30, source_id: 324, source_type: "Project", user_id: 527, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2025 is expected to include #<ProjectMember id: 448, access_level: 30, source_id: 324, source_type: "Project", user_id: 528, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2026 is expected not to include #<GroupMember id: 449, access_level: 5, source_id: 1062, source_type: "Namespace", user_id: 529, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1062, member_role_id: nil>2027 .request2028 is expected not to include #<ProjectMember id: 440, access_level: 40, source_id: 324, source_type: "Project", user_id: 519, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2029 is expected not to include #<ProjectMember id: 444, access_level: 30, source_id: 324, source_type: "Project", user_id: nil, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2030 is expected not to include #<ProjectMember id: 446, access_level: 30, source_id: 324, source_type: "Project", user_id: 526, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2031 is expected to include #<ProjectMember id: 447, access_level: 30, source_id: 324, source_type: "Project", user_id: 527, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2032 is expected not to include #<ProjectMember id: 448, access_level: 30, source_id: 324, source_type: "Project", user_id: 528, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2033 .non_request2034 is expected to include #<ProjectMember id: 440, access_level: 40, source_id: 324, source_type: "Project", user_id: 519, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2035 is expected to include #<ProjectMember id: 444, access_level: 30, source_id: 324, source_type: "Project", user_id: nil, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2036 is expected to include #<ProjectMember id: 446, access_level: 30, source_id: 324, source_type: "Project", user_id: 526, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2037 is expected not to include #<ProjectMember id: 447, access_level: 30, source_id: 324, source_type: "Project", user_id: 527, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2038 is expected to include #<ProjectMember id: 448, access_level: 30, source_id: 324, source_type: "Project", user_id: 528, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2039 .not_accepted_invitations2040 is expected to include #<ProjectMember id: 469, access_level: 40, source_id: 341, source_type: "Project", user_id: nil, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1142, member_role_id: nil>2041 is expected not to include #<ProjectMember id: 471, access_level: 40, source_id: 342, source_type: "Project", user_id: nil, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1145, member_role_id: nil>2042 .not_accepted_invitations_by_user2043 is expected to contain exactly #<ProjectMember id: 477, access_level: 40, source_id: 324, source_type: "Project", user_id: nil, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2044 .not_expired2045 is expected not to include #<GroupMember id: 478, access_level: 50, source_id: 1155, source_type: "Namespace", user_id: 570, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1155, member_role_id: nil> and #<GroupMember id: 479, access_level: 50, source_id: 1157, source_type: "Namespace", user_id: 571, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1157, member_role_id: nil>2046 is expected to include #<GroupMember id: 480, access_level: 50, source_id: 1159, source_type: "Namespace", user_id: 572, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1159, member_role_id: nil> and #<GroupMember id: 481, access_level: 50, source_id: 1161, source_type: "Namespace", user_id: 573, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1161, member_role_id: nil>2047 .created_today2048 is expected not to include #<GroupMember id: 483, access_level: 50, source_id: 1165, source_type: "Namespace", user_id: 575, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1165, member_role_id: nil>2049 is expected to include #<GroupMember id: 482, access_level: 50, source_id: 1163, source_type: "Namespace", user_id: 574, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1163, member_role_id: nil>2050 .last_ten_days_excluding_today2051 is expected to include #<GroupMember id: 485, access_level: 50, source_id: 1169, source_type: "Namespace", user_id: 577, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1169, member_role_id: nil>2052 is expected not to include #<GroupMember id: 484, access_level: 50, source_id: 1167, source_type: "Namespace", user_id: 576, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1167, member_role_id: nil> and #<GroupMember id: 486, access_level: 50, source_id: 1171, source_type: "Namespace", user_id: 578, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1171, member_role_id: nil>2053 .search_invite_email2054 returns only members the matching e-mail2055 .by_access_level2056 by owner2057 is expected to include #<GroupMember id: 439, access_level: 50, source_id: 1062, source_type: "Namespace", user_id: 518, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1062, member_role_id: nil>2058 is expected not to include #<ProjectMember id: 440, access_level: 40, source_id: 324, source_type: "Project", user_id: 519, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2059 is expected not to include #<ProjectMember id: 444, access_level: 30, source_id: 324, source_type: "Project", user_id: nil, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2060 is expected not to include #<ProjectMember id: 446, access_level: 30, source_id: 324, source_type: "Project", user_id: 526, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2061 is expected not to include #<ProjectMember id: 447, access_level: 30, source_id: 324, source_type: "Project", user_id: 527, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2062 is expected not to include nil2063 is expected not to include #<ProjectMember id: 441, access_level: 40, source_id: 324, source_type: "Project", user_id: 520, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2064 is expected not to include #<ProjectMember id: 442, access_level: 30, source_id: 324, source_type: "Project", user_id: 521, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2065 by maintainer2066 is expected not to include #<GroupMember id: 439, access_level: 50, source_id: 1062, source_type: "Namespace", user_id: 518, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1062, member_role_id: nil>2067 is expected to include #<ProjectMember id: 440, access_level: 40, source_id: 324, source_type: "Project", user_id: 519, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2068 is expected not to include #<ProjectMember id: 444, access_level: 30, source_id: 324, source_type: "Project", user_id: nil, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2069 is expected not to include #<ProjectMember id: 446, access_level: 30, source_id: 324, source_type: "Project", user_id: 526, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2070 is expected not to include #<ProjectMember id: 447, access_level: 30, source_id: 324, source_type: "Project", user_id: 527, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2071 is expected not to include nil2072 is expected not to include #<ProjectMember id: 441, access_level: 40, source_id: 324, source_type: "Project", user_id: 520, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2073 is expected not to include #<ProjectMember id: 442, access_level: 30, source_id: 324, source_type: "Project", user_id: 521, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2074 by developer2075 is expected not to include #<GroupMember id: 439, access_level: 50, source_id: 1062, source_type: "Namespace", user_id: 518, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1062, member_role_id: nil>2076 is expected not to include #<ProjectMember id: 440, access_level: 40, source_id: 324, source_type: "Project", user_id: 519, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2077 is expected to include #<ProjectMember id: 444, access_level: 30, source_id: 324, source_type: "Project", user_id: nil, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2078 is expected to include #<ProjectMember id: 446, access_level: 30, source_id: 324, source_type: "Project", user_id: 526, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2079 is expected not to include #<ProjectMember id: 447, access_level: 30, source_id: 324, source_type: "Project", user_id: 527, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2080 is expected not to include nil2081 is expected not to include #<ProjectMember id: 441, access_level: 40, source_id: 324, source_type: "Project", user_id: 520, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2082 is expected not to include #<ProjectMember id: 442, access_level: 30, source_id: 324, source_type: "Project", user_id: 521, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2083 by owner and maintainer2084 is expected to include #<GroupMember id: 439, access_level: 50, source_id: 1062, source_type: "Namespace", user_id: 518, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1062, member_role_id: nil>2085 is expected to include #<ProjectMember id: 440, access_level: 40, source_id: 324, source_type: "Project", user_id: 519, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2086 is expected not to include #<ProjectMember id: 444, access_level: 30, source_id: 324, source_type: "Project", user_id: nil, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2087 is expected not to include #<ProjectMember id: 446, access_level: 30, source_id: 324, source_type: "Project", user_id: 526, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2088 is expected not to include #<ProjectMember id: 447, access_level: 30, source_id: 324, source_type: "Project", user_id: 527, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2089 is expected not to include nil2090 is expected not to include #<ProjectMember id: 441, access_level: 40, source_id: 324, source_type: "Project", user_id: 520, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2091 is expected not to include #<ProjectMember id: 442, access_level: 30, source_id: 324, source_type: "Project", user_id: 521, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2092 by owner, maintainer and developer2093 is expected to include #<GroupMember id: 439, access_level: 50, source_id: 1062, source_type: "Namespace", user_id: 518, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1062, member_role_id: nil>2094 is expected to include #<ProjectMember id: 440, access_level: 40, source_id: 324, source_type: "Project", user_id: 519, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2095 is expected to include #<ProjectMember id: 444, access_level: 30, source_id: 324, source_type: "Project", user_id: nil, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2096 is expected to include #<ProjectMember id: 446, access_level: 30, source_id: 324, source_type: "Project", user_id: 526, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2097 is expected not to include #<ProjectMember id: 447, access_level: 30, source_id: 324, source_type: "Project", user_id: 527, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2098 is expected not to include nil2099 is expected not to include #<ProjectMember id: 441, access_level: 40, source_id: 324, source_type: "Project", user_id: 520, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2100 is expected not to include #<ProjectMember id: 442, access_level: 30, source_id: 324, source_type: "Project", user_id: 521, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2101 .developers2102 is expected not to include #<GroupMember id: 439, access_level: 50, source_id: 1062, source_type: "Namespace", user_id: 518, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1062, member_role_id: nil>2103 is expected not to include #<ProjectMember id: 440, access_level: 40, source_id: 324, source_type: "Project", user_id: 519, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2104 is expected to include #<ProjectMember id: 444, access_level: 30, source_id: 324, source_type: "Project", user_id: nil, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2105 is expected to include #<ProjectMember id: 446, access_level: 30, source_id: 324, source_type: "Project", user_id: 526, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2106 is expected not to include #<ProjectMember id: 447, access_level: 30, source_id: 324, source_type: "Project", user_id: 527, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2107 is expected to include #<ProjectMember id: 448, access_level: 30, source_id: 324, source_type: "Project", user_id: 528, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2108 is expected not to include #<ProjectMember id: 441, access_level: 40, source_id: 324, source_type: "Project", user_id: 520, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2109 is expected not to include #<ProjectMember id: 442, access_level: 30, source_id: 324, source_type: "Project", user_id: 521, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2110 .owners_and_maintainers2111 is expected to include #<GroupMember id: 439, access_level: 50, source_id: 1062, source_type: "Namespace", user_id: 518, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1062, member_role_id: nil>2112 is expected to include #<ProjectMember id: 440, access_level: 40, source_id: 324, source_type: "Project", user_id: 519, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2113 is expected not to include #<ProjectMember id: 444, access_level: 30, source_id: 324, source_type: "Project", user_id: nil, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2114 is expected not to include #<ProjectMember id: 446, access_level: 30, source_id: 324, source_type: "Project", user_id: 526, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2115 is expected not to include #<ProjectMember id: 447, access_level: 30, source_id: 324, source_type: "Project", user_id: 527, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2116 is expected not to include #<ProjectMember id: 448, access_level: 30, source_id: 324, source_type: "Project", user_id: 528, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2117 is expected not to include #<ProjectMember id: 441, access_level: 40, source_id: 324, source_type: "Project", user_id: 520, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2118 .has_access2119 is expected to include #<GroupMember id: 439, access_level: 50, source_id: 1062, source_type: "Namespace", user_id: 518, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1062, member_role_id: nil>2120 is expected to include #<ProjectMember id: 440, access_level: 40, source_id: 324, source_type: "Project", user_id: 519, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2121 is expected to include #<ProjectMember id: 444, access_level: 30, source_id: 324, source_type: "Project", user_id: nil, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2122 is expected to include #<ProjectMember id: 446, access_level: 30, source_id: 324, source_type: "Project", user_id: 526, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2123 is expected not to include #<ProjectMember id: 447, access_level: 30, source_id: 324, source_type: "Project", user_id: 527, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2124 is expected to include #<ProjectMember id: 448, access_level: 30, source_id: 324, source_type: "Project", user_id: 528, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2125 is expected not to include #<ProjectMember id: 441, access_level: 40, source_id: 324, source_type: "Project", user_id: 520, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2126 is expected not to include #<ProjectMember id: 442, access_level: 30, source_id: 324, source_type: "Project", user_id: 521, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2127 .active2128 is expected to include #<GroupMember id: 439, access_level: 50, source_id: 1062, source_type: "Namespace", user_id: 518, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1062, member_role_id: nil>2129 is expected to include #<ProjectMember id: 440, access_level: 40, source_id: 324, source_type: "Project", user_id: 519, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2130 is expected to include #<ProjectMember id: 444, access_level: 30, source_id: 324, source_type: "Project", user_id: nil, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2131 is expected to include #<ProjectMember id: 446, access_level: 30, source_id: 324, source_type: "Project", user_id: 526, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2132 is expected not to include #<ProjectMember id: 447, access_level: 30, source_id: 324, source_type: "Project", user_id: 527, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2133 is expected to include #<ProjectMember id: 448, access_level: 30, source_id: 324, source_type: "Project", user_id: 528, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2134 is expected not to include #<ProjectMember id: 441, access_level: 40, source_id: 324, source_type: "Project", user_id: 520, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2135 is expected not to include #<ProjectMember id: 442, access_level: 30, source_id: 324, source_type: "Project", user_id: 521, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2136 is expected not to include #<GroupMember id: 449, access_level: 5, source_id: 1062, source_type: "Namespace", user_id: 529, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1062, member_role_id: nil>2137 .blocked2138 is expected not to include #<GroupMember id: 439, access_level: 50, source_id: 1062, source_type: "Namespace", user_id: 518, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1062, member_role_id: nil>2139 is expected not to include #<ProjectMember id: 440, access_level: 40, source_id: 324, source_type: "Project", user_id: 519, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2140 is expected not to include #<ProjectMember id: 444, access_level: 30, source_id: 324, source_type: "Project", user_id: nil, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2141 is expected not to include #<ProjectMember id: 446, access_level: 30, source_id: 324, source_type: "Project", user_id: 526, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2142 is expected not to include #<ProjectMember id: 447, access_level: 30, source_id: 324, source_type: "Project", user_id: 527, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2143 is expected not to include #<ProjectMember id: 448, access_level: 30, source_id: 324, source_type: "Project", user_id: 528, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2144 is expected to include #<ProjectMember id: 441, access_level: 40, source_id: 324, source_type: "Project", user_id: 520, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2145 is expected to include #<ProjectMember id: 442, access_level: 30, source_id: 324, source_type: "Project", user_id: 521, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2146 is expected not to include #<GroupMember id: 449, access_level: 5, source_id: 1062, source_type: "Namespace", user_id: 529, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1062, member_role_id: nil>2147 .active_without_invites_and_requests2148 is expected to include #<GroupMember id: 439, access_level: 50, source_id: 1062, source_type: "Namespace", user_id: 518, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1062, member_role_id: nil>2149 is expected to include #<ProjectMember id: 440, access_level: 40, source_id: 324, source_type: "Project", user_id: 519, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2150 is expected not to include #<ProjectMember id: 444, access_level: 30, source_id: 324, source_type: "Project", user_id: nil, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2151 is expected to include #<ProjectMember id: 446, access_level: 30, source_id: 324, source_type: "Project", user_id: 526, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2152 is expected not to include #<ProjectMember id: 447, access_level: 30, source_id: 324, source_type: "Project", user_id: 527, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2153 is expected to include #<ProjectMember id: 448, access_level: 30, source_id: 324, source_type: "Project", user_id: 528, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2154 is expected not to include #<ProjectMember id: 441, access_level: 40, source_id: 324, source_type: "Project", user_id: 520, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2155 is expected not to include #<ProjectMember id: 442, access_level: 30, source_id: 324, source_type: "Project", user_id: 521, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2156 is expected not to include #<GroupMember id: 449, access_level: 5, source_id: 1062, source_type: "Namespace", user_id: 529, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1062, member_role_id: nil>2157 .without_invites_and_requests2158 is expected to include #<GroupMember id: 439, access_level: 50, source_id: 1062, source_type: "Namespace", user_id: 518, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1062, member_role_id: nil>2159 is expected to include #<ProjectMember id: 440, access_level: 40, source_id: 324, source_type: "Project", user_id: 519, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2160 is expected not to include #<ProjectMember id: 444, access_level: 30, source_id: 324, source_type: "Project", user_id: nil, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2161 is expected to include #<ProjectMember id: 446, access_level: 30, source_id: 324, source_type: "Project", user_id: 526, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2162 is expected not to include #<ProjectMember id: 447, access_level: 30, source_id: 324, source_type: "Project", user_id: 527, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2163 is expected to include #<ProjectMember id: 448, access_level: 30, source_id: 324, source_type: "Project", user_id: 528, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2164 is expected to include #<ProjectMember id: 441, access_level: 40, source_id: 324, source_type: "Project", user_id: 520, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2165 is expected to include #<ProjectMember id: 442, access_level: 30, source_id: 324, source_type: "Project", user_id: 521, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2166 is expected not to include #<GroupMember id: 449, access_level: 5, source_id: 1062, source_type: "Namespace", user_id: 529, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1062, member_role_id: nil>2167 is expected not to include #<GroupMember id: 436, access_level: 50, source_id: 1062, source_type: "Namespace", user_id: 515, not...erride: false, state: 1, invite_email_success: true, member_namespace_id: 1062, member_role_id: nil>2168 is expected not to include #<ProjectMember id: 438, access_level: 40, source_id: 324, source_type: "Project", user_id: 516, noti...erride: false, state: 1, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2169 .connected_to_user2170 is expected to include #<GroupMember id: 439, access_level: 50, source_id: 1062, source_type: "Namespace", user_id: 518, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1062, member_role_id: nil>2171 is expected to include #<ProjectMember id: 440, access_level: 40, source_id: 324, source_type: "Project", user_id: 519, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2172 is expected to include #<ProjectMember id: 446, access_level: 30, source_id: 324, source_type: "Project", user_id: 526, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2173 is expected to include #<ProjectMember id: 448, access_level: 30, source_id: 324, source_type: "Project", user_id: 528, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2174 is expected to include #<ProjectMember id: 441, access_level: 40, source_id: 324, source_type: "Project", user_id: 520, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2175 is expected to include #<ProjectMember id: 442, access_level: 30, source_id: 324, source_type: "Project", user_id: 521, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2176 is expected to include #<ProjectMember id: 447, access_level: 30, source_id: 324, source_type: "Project", user_id: 527, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2177 is expected to include #<GroupMember id: 449, access_level: 5, source_id: 1062, source_type: "Namespace", user_id: 529, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1062, member_role_id: nil>2178 is expected not to include #<ProjectMember id: 444, access_level: 30, source_id: 324, source_type: "Project", user_id: nil, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2179 .authorizable2180 includes the member who has an associated user record,but also having an invite_token2181 is expected to include #<GroupMember id: 439, access_level: 50, source_id: 1062, source_type: "Namespace", user_id: 518, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1062, member_role_id: nil>2182 is expected to include #<ProjectMember id: 440, access_level: 40, source_id: 324, source_type: "Project", user_id: 519, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2183 is expected to include #<ProjectMember id: 446, access_level: 30, source_id: 324, source_type: "Project", user_id: 526, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2184 is expected to include #<ProjectMember id: 448, access_level: 30, source_id: 324, source_type: "Project", user_id: 528, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2185 is expected to include #<ProjectMember id: 441, access_level: 40, source_id: 324, source_type: "Project", user_id: 520, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2186 is expected to include #<ProjectMember id: 442, access_level: 30, source_id: 324, source_type: "Project", user_id: 521, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2187 is expected not to include #<ProjectMember id: 444, access_level: 30, source_id: 324, source_type: "Project", user_id: nil, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2188 is expected not to include #<ProjectMember id: 447, access_level: 30, source_id: 324, source_type: "Project", user_id: 527, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2189 is expected not to include #<GroupMember id: 449, access_level: 5, source_id: 1062, source_type: "Namespace", user_id: 529, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1062, member_role_id: nil>2190 is expected not to include #<GroupMember id: 436, access_level: 50, source_id: 1062, source_type: "Namespace", user_id: 515, not...erride: false, state: 1, invite_email_success: true, member_namespace_id: 1062, member_role_id: nil>2191 is expected not to include #<ProjectMember id: 438, access_level: 40, source_id: 324, source_type: "Project", user_id: 516, noti...erride: false, state: 1, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2192 .distinct_on_user_with_max_access_level2193 is expected not to include #<GroupMember id: 490, access_level: 30, source_id: 1178, source_type: "Namespace", user_id: 518, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1178, member_role_id: nil>2194 is expected to include #<GroupMember id: 439, access_level: 50, source_id: 1062, source_type: "Namespace", user_id: 518, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1062, member_role_id: nil>2195 is expected to include #<ProjectMember id: 440, access_level: 40, source_id: 324, source_type: "Project", user_id: 519, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2196 is expected to include #<ProjectMember id: 444, access_level: 30, source_id: 324, source_type: "Project", user_id: nil, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2197 is expected to include #<ProjectMember id: 446, access_level: 30, source_id: 324, source_type: "Project", user_id: 526, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2198 is expected to include #<ProjectMember id: 447, access_level: 30, source_id: 324, source_type: "Project", user_id: 527, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2199 is expected to include #<ProjectMember id: 448, access_level: 30, source_id: 324, source_type: "Project", user_id: 528, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2200 is expected to include #<ProjectMember id: 441, access_level: 40, source_id: 324, source_type: "Project", user_id: 520, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2201 is expected to include #<ProjectMember id: 442, access_level: 30, source_id: 324, source_type: "Project", user_id: 521, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2202 is expected to include #<GroupMember id: 449, access_level: 5, source_id: 1062, source_type: "Namespace", user_id: 529, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1062, member_role_id: nil>2203 with where conditions2204 is expected to eq [#<GroupMember id: 491, access_level: 50, source_id: 1180, source_type: "Namespace", user_id: 582, no...rride: false, state: 0, invite_email_success: true, member_namespace_id: 1180, member_role_id: nil>]2205 .with_invited_user_state2206 is expected to include #<GroupMember id: 439, access_level: 50, source_id: 1062, source_type: "Namespace", user_id: 518, not...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1062, member_role_id: nil>2207 is expected to include #<ProjectMember id: 440, access_level: 40, source_id: 324, source_type: "Project", user_id: 519, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2208 is expected to include #<ProjectMember id: 444, access_level: 30, source_id: 324, source_type: "Project", user_id: nil, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2209 is expected to include #<ProjectMember id: 446, access_level: 30, source_id: 324, source_type: "Project", user_id: 526, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2210 is expected to include #<ProjectMember id: 447, access_level: 30, source_id: 324, source_type: "Project", user_id: 527, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2211 is expected to include #<ProjectMember id: 448, access_level: 30, source_id: 324, source_type: "Project", user_id: 528, noti...erride: false, state: 0, invite_email_success: true, member_namespace_id: 1061, member_role_id: nil>2212 with invited pending members2213 includes invited user state2214 .active_state2215 includes members with an active state2216 does not include members with an awaiting state2217 .excluding_users2218 excludes members with given user ids2219 Delegate methods2220 is expected to respond to #user_name2221 is expected to respond to #user_email2222 .valid_email?2223 is a valid email format2224 is not a valid email format2225 #accept_request2226 is expected to be truthy2227 clears requested_at2228 calls #after_accept_request2229 #invite?2230 is expected to be invite2231 #request?2232 is expected to be request2233 #pending?2234 is expected to be pending2235 is expected to be pending2236 #hook_prerequisites_met?2237 when the member does not have an associated user2238 returns false2239 when the member has an associated user2240 returns true2241 #accept_invite!2242 resets the invite token2243 sets the invite accepted timestamp2244 sets the user2245 calls #after_accept_invite2246 does not accept the invite if saving a new user fails2247 schedules a TasksToBeDone::CreateWorker task2248 authorized projects2249 successfully completes a blocking refresh2250 successfully completes a non-blocking refresh2251 #decline_invite!2252 destroys the member2253 calls #after_decline_invite2254 #generate_invite_token2255 sets the invite token2256 generate invite token on create2257 sets the invite token2258 when invite was already accepted2259 does not set invite token2260 .find_by_invite_token2261 finds the member2262 #send_invitation_reminder2263 an invited group member2264 sends a reminder2265 an invited member without a raw invite token set2266 generates a new token2267 an uninvited member2268 does not send a reminder2269 #invite_to_unknown_user?2270 when user is nil2271 is expected to eq true2272 when user is set2273 is expected to eq false2274 destroying a record2275 refreshes user's authorized projects2276 when after_commit :update_highest_role2277 member_type: :project_member, source_type: :project2278 create member2279 when lease is obtained2280 takes the lease but does not release it2281 schedules a job in the future2282 when lease cannot be obtained2283 only schedules one job2284 when member exists2285 update member2286 when access level was changed2287 when lease is obtained2288 takes the lease but does not release it2289 schedules a job in the future2290 when lease cannot be obtained2291 only schedules one job2292 when access level was not changed2293 does not obtain an exclusive lease2294 destroy member2295 when lease is obtained2296 takes the lease but does not release it2297 schedules a job in the future2298 when lease cannot be obtained2299 only schedules one job2300 member_type: :group_member, source_type: :group2301 create member2302 when lease is obtained2303 takes the lease but does not release it2304 schedules a job in the future2305 when lease cannot be obtained2306 only schedules one job2307 when member exists2308 update member2309 when access level was changed2310 when lease is obtained2311 takes the lease but does not release it2312 schedules a job in the future2313 when lease cannot be obtained2314 only schedules one job2315 when access level was not changed2316 does not obtain an exclusive lease2317 destroy member2318 when lease is obtained2319 takes the lease but does not release it2320 schedules a job in the future2321 when lease cannot be obtained2322 only schedules one job2323 log_invitation_token_cleanup2324 when on gitlab.com2325 doesn't log info for members without invitation or accepted invitation2326 logs error for accepted members with token and creates membership2327 when not on gitlab.com2328 does not log error for accepted members with token and creates membership2329 #set_member_namespace_id2330 on create2331 sets the member_namespace_id2332 .sort_by_attribute2333 sort users in ascending order by access-level2334 sort users in descending order by access-level2335 sorts users in descending order by their creation time2336 sorts users in ascending order by their creation time2337 sort users by recent last activity2338 sort users by oldest last activity2339 when sort by recent_sign_in2340 sorts users by recent sign-in time2341 pushes users who never signed in to the end2342 when sort by oldest_sign_in2343 sorts users by the oldest sign-in time2344 pushes users who never signed in to the end2345Ci::CreatePipelineService2346 job:rules2347 exists:2348 with matches2349 creates two jobs2350 sets when: for all jobs2351 with matches on the second rule2352 includes both jobs2353 sets when: for the created rules job based on the second clause2354 without matches2355 only persists the job without rules2356 sets when: for the created job2357 with allow_failure and exit_codes2358 creates a pipeline2359 assigns job:allow_failure values to the builds2360 removes exit_codes if allow_failure is specified2361 if:2362 variables:2363 when no match2364 does not affect vars2365 when matching to the first rule2366 overrides variables2367 when matching to the second rule2368 overrides variables2369 using calculated workflow var in job rules2370 when matching the first workflow condition2371 uses VAR1 of job rules result2372 with simple if: clauses2373 with matches2374 creates a pipeline with the vanilla and manual jobs2375 assigns job:when values to the builds2376 assigns job:allow_failure values to the builds2377 assigns start_in for delayed jobs2378 with no matches2379 behaves like rules jobs are excluded2380 only persists the job without rules2381 with complex if: clauses2382 matches the first rule2383 changes:2384 and matches2385 creates five jobs2386 sets when: for all jobs2387 sets allow_failure: for negligible job2388 and matches the second rule2389 includes both jobs2390 sets when: for the created rules job based on the second clause2391 and does not match2392 sets when: for the created job2393 behaves like rules jobs are excluded2394 only persists the job without rules2395 with paths and compare_to2396 for jobs rules2397 when there is no such compare_to ref2398 returns an error2399 when the compare_to ref exists2400 when the rule matches2401 creates job1 and job22402 when the rule does not match2403 does not create job12404 for workflow rules2405 when the rule matches2406 creates job12407 when the rule does not match2408 does not create job12409 mixed if: and changes: rules2410 and changes: matches before if2411 creates two jobs2412 sets when: for all jobs2413 sets allow_failure: for all jobs2414 and if: matches after changes2415 includes both jobs2416 sets when: for the created rules job based on the second clause2417 and does not match2418 sets when: for the created job2419 behaves like rules jobs are excluded2420 only persists the job without rules2421 mixed if: and changes: clauses2422 with if matches and changes matches2423 persists all jobs2424 with if matches and no change matches2425 behaves like rules jobs are excluded2426 only persists the job without rules2427 with change matches and no if matches2428 behaves like rules jobs are excluded2429 only persists the job without rules2430 and no matches2431 behaves like rules jobs are excluded2432 only persists the job without rules2433 complex if: allow_failure usages2434 creates a pipeline2435 assigns job:allow_failure values to the builds2436 complex if: allow_failure & when usages2437 creates a pipeline2438 assigns job:allow_failure values to the builds2439 assigns job:when values to the builds2440 deploy freeze period `if:` clause2441 with 2 jobs2442 when outside freeze period2443 creates two jobs2444 when inside freeze period2445 creates one job2446 with 1 job2447 when outside freeze period2448 creates two jobs2449 when inside freeze period2450 does not create the pipeline2451 with when:manual2452 when matching the rules2453 adds the job-with-rules with a when:manual2454 when there is no match to the rule2455 does not add job_with_rules2456 when workflow:rules are used2457 with a single regex-matching if: clause2458 matching the first rule in the list2459 saves a created pipeline2460 matching the last rule in the list2461 saves a created pipeline2462 matching the when:never rule2463 invalidates the pipeline with a workflow rules error2464 matching no rules in the list2465 invalidates the pipeline with a workflow rules error2466 when root variables are used2467 matching the first rule in the list2468 saves a created pipeline2469 with a multiple regex-matching if: clause2470 with partial match2471 saves a created pipeline2472 with complete match2473 invalidates the pipeline with a workflow rules error2474 with job rules2475 where workflow passes and the job fails2476 invalidates the pipeline with an empty jobs error2477 where workflow passes and the job passes2478 saves a created pipeline2479 where workflow fails and the job fails2480 invalidates the pipeline with a workflow rules error2481 where workflow fails and the job passes2482 invalidates the pipeline with a workflow rules error2483 with persisted variables2484 with matches2485 creates a pipeline2486 with no matches2487 does not create a pipeline2488 with pipeline variables2489 with matches2490 creates a pipeline2491 with no matches2492 does not create a pipeline2493 with trigger variables2494 with matches2495 creates a pipeline2496 when a job requires the same variable2497 creates a pipeline2498 with no matches2499 does not create a pipeline2500 when a job requires the same variable2501 does not create a pipeline2502 changes2503 changes is an array2504 behaves like comparing file changes with workflow rules2505 when matches2506 creates the pipeline with a job2507 when does not match2508 creates the pipeline with a job2509 changes:paths is an array2510 behaves like comparing file changes with workflow rules2511 when matches2512 creates the pipeline with a job2513 when does not match2514 creates the pipeline with a job2515 workflow name with rules2516 substitutes variables in pipeline name2517Projects::ImportService2518 #async?2519 returns true for an asynchronous importer2520 returns false for a regular importer2521 returns false when the importer does not define #async?2522 returns false when the importer does not exist2523 #execute2524 with unknown url2525 succeeds if repository is created successfully2526 fails if repository creation fails2527 when repository creation succeeds2528 does not download lfs files2529 with known url2530 with a Github repository2531 tracks the start of import2532 succeeds if repository import was scheduled2533 fails if repository import was not scheduled2534 when repository import scheduled2535 does not download lfs objects2536 with a non Github repository2537 succeeds if repository import is successful2538 fails if repository import fails2539 when lfs import fails2540 logs the error2541 when repository import scheduled2542 downloads lfs objects if lfs_enabled is enabled for project2543 does not download lfs objects if lfs_enabled is not enabled for project2544 with valid importer2545 succeeds if importer succeeds2546 fails if importer fails2547 when importer2548 has a custom repository importer it does not download lfs objects2549 does not have a custom repository importer downloads lfs objects2550 when lfs import fails2551 logs the error2552 with blocked import_URL2553 fails with localhost2554 fails with port 252555 fails with file scheme2556 behaves like measurable service2557 when measurement is enabled2558 measure service execution with Gitlab::Utils::Measuring2559 when measurement is disabled2560 does not measure service execution2561Releases::CreateService2562 #execute2563 behaves like a successful release creation2564 creates a new release2565 when the tag does not exist2566 raises an error2567 when ref is provided2568 creates a tag if the tag does not exist2569 behaves like a successful release creation2570 creates a new release2571 and the tag would be protected2572 and the user does not have permissions2573 raises an error2574 and the user has permissions2575 behaves like a successful release creation2576 creates a new release2577 and tag_message is provided2578 creates a tag if the tag does not exist2579 behaves like a successful release creation2580 creates a new release2581 there already exists a release on a tag2582 raises an error and does not update the release2583 when a passed-in milestone does not exist for this project2584 raises an error saying the milestone is inexistent2585 when existing milestone is passed in2586 creates a release and ties this milestone to it2587 when another release was previously created with that same milestone linked2588 also creates another release tied to that same milestone2589 when multiple existing milestone titles are passed in2590 creates a release and ties it to these milestones2591 when multiple milestone titles are passed in but one of them does not exist2592 raises an error2593 does not create any release2594 no milestone association behavior2595 when no milestones parameter is passed2596 creates a release without a milestone tied to it2597 does not create any new MilestoneRelease object2598 when an empty array is passed as the milestones parameter2599 creates a release without a milestone tied to it2600 when nil is passed as the milestones parameter2601 creates a release without a milestone tied to it2602 Evidence collection2603 historical release2604 does not execute CreateEvidenceWorker2605 does not create an Evidence object2606 is a historical release2607 is not an upcoming release2608 immediate release2609 sets `released_at` to the current dttm2610 queues CreateEvidenceWorker2611 creates Evidence2612 is not a historical release2613 is not an upcoming release2614 creates evidence without pipeline if it does not exist2615 uses the last pipeline for evidence2616 pipeline is still being used for evidence if new pipeline is being created for tag2617 uses the last pipeline for evidence when tag is already created2618 when old evidence_pipeline is passed to service2619 uses the old pipeline for evidence2620 upcoming release2621 does not execute CreateEvidenceWorker2622 does not create an Evidence object2623 is not a historical release2624 is an upcoming release2625ApplicationSettings::UpdateService2626 updating terms2627 when the passed terms are blank2628 does not create terms2629 when passing terms2630 creates the terms2631 does not create terms if they are the same as the existing ones2632 updates terms if they already existed2633 only queries once when the terms are changed2634 updating outbound_local_requests_whitelist2635 when params is blank2636 does not add to allowlist2637 when param add_to_outbound_local_requests_whitelist contains values2638 adds to allowlist2639 when param outbound_local_requests_allowlist_raw is passed2640 overwrites the existing allowlist2641 markdown cache invalidators2642 behaves like invalidates markdown cache2643 increments cache2644 behaves like invalidates markdown cache2645 increments cache2646 behaves like invalidates markdown cache2647 increments cache2648 behaves like invalidates markdown cache2649 increments cache2650 behaves like invalidates markdown cache2651 increments cache2652 when also setting the local_markdown_version2653 does not increment2654 do not invalidate if value does not change2655 does not increment2656 performance bar settings2657 params_performance_bar_enabled: true, params_performance_bar_allowed_group_path: "", previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: nil, expected_valid: true2658 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2659 adds errors to the model for invalid params2660 params_performance_bar_enabled: true, params_performance_bar_allowed_group_path: "", previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: nil, expected_valid: true2661 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2662 adds errors to the model for invalid params2663 params_performance_bar_enabled: true, params_performance_bar_allowed_group_path: nil, previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: nil, expected_valid: true2664 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2665 adds errors to the model for invalid params2666 params_performance_bar_enabled: true, params_performance_bar_allowed_group_path: nil, previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: nil, expected_valid: true2667 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2668 adds errors to the model for invalid params2669 params_performance_bar_enabled: true, params_performance_bar_allowed_group_path: "foo", previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: nil, expected_valid: false2670 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2671 adds errors to the model for invalid params2672 params_performance_bar_enabled: true, params_performance_bar_allowed_group_path: "foo", previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: 42000000, expected_valid: false2673 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2674 adds errors to the model for invalid params2675 params_performance_bar_enabled: true, params_performance_bar_allowed_group_path: "group_a", previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: 42000000, expected_valid: true2676 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2677 adds errors to the model for invalid params2678 params_performance_bar_enabled: true, params_performance_bar_allowed_group_path: "group_b", previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: 43000000, expected_valid: true2679 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2680 adds errors to the model for invalid params2681 params_performance_bar_enabled: true, params_performance_bar_allowed_group_path: "group_b/", previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: 43000000, expected_valid: true2682 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2683 adds errors to the model for invalid params2684 params_performance_bar_enabled: true, params_performance_bar_allowed_group_path: "group_a", previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: 42000000, expected_valid: true2685 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2686 adds errors to the model for invalid params2687 params_performance_bar_enabled: false, params_performance_bar_allowed_group_path: "", previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: nil, expected_valid: true2688 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2689 adds errors to the model for invalid params2690 params_performance_bar_enabled: false, params_performance_bar_allowed_group_path: "", previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: nil, expected_valid: true2691 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2692 adds errors to the model for invalid params2693 params_performance_bar_enabled: false, params_performance_bar_allowed_group_path: nil, previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: nil, expected_valid: true2694 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2695 adds errors to the model for invalid params2696 params_performance_bar_enabled: false, params_performance_bar_allowed_group_path: nil, previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: nil, expected_valid: true2697 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2698 adds errors to the model for invalid params2699 params_performance_bar_enabled: false, params_performance_bar_allowed_group_path: "foo", previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: nil, expected_valid: true2700 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2701 adds errors to the model for invalid params2702 params_performance_bar_enabled: false, params_performance_bar_allowed_group_path: "foo", previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: nil, expected_valid: true2703 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2704 adds errors to the model for invalid params2705 params_performance_bar_enabled: false, params_performance_bar_allowed_group_path: "group_a", previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: nil, expected_valid: true2706 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2707 adds errors to the model for invalid params2708 params_performance_bar_enabled: false, params_performance_bar_allowed_group_path: "group_b", previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: nil, expected_valid: true2709 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2710 adds errors to the model for invalid params2711 params_performance_bar_enabled: false, params_performance_bar_allowed_group_path: "group_a", previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: nil, expected_valid: true2712 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2713 adds errors to the model for invalid params2714 params_performance_bar_enabled: nil, params_performance_bar_allowed_group_path: "", previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: nil, expected_valid: true2715 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2716 adds errors to the model for invalid params2717 params_performance_bar_enabled: nil, params_performance_bar_allowed_group_path: "foo", previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: nil, expected_valid: false2718 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2719 adds errors to the model for invalid params2720 params_performance_bar_enabled: nil, params_performance_bar_allowed_group_path: "group_a", previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: 42000000, expected_valid: true2721 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true2722 adds errors to the model for invalid params2723 when :performance_bar_allowed_group_path is not present2724 does not change the performance bar settings2725 when :performance_bar_enabled is not present2726 implicitly defaults to true2727 when external authorization is enabled2728 does not validate labels if external authorization gets disabled2729 does validate labels if external authorization gets enabled2730 does validate labels if external authorization is left unchanged2731 does not save the settings with an error if the service denies access2732 saves the setting when the user has access to the label2733 does not validate the label if it was not passed2734 when raw_blob_request_limit is passsed2735 updates raw_blob_request_limit value2736 when protected path settings are passed2737 updates protected path settings2738 when general rate limits are passed2739 updates general throttle settings2740 when package registry rate limits are passed2741 updates package registry throttle settings2742 when files API rate limits are passed2743 updates files API throttle settings2744 when deprecated API rate limits are passed2745 updates deprecated API throttle settings2746 when git lfs rate limits are passed2747 updates git lfs throttle settings2748 when issues_create_limit is passed2749 updates issues_create_limit value2750 when users_get_by_id_limit and users_get_by_id_limit_allowlist_raw are passed2751 updates users_get_by_id_limit and users_get_by_id_limit_allowlist value2752 when require_admin_approval_after_user_signup changes2753 when it goes from enabled to disabled2754 calls ApproveBlockedPendingApprovalUsersWorker2755 when it goes from disabled to enabled2756 does not call ApproveBlockedPendingApprovalUsersWorker2757Gitlab::Ci::Parsers::Security::Validators::SchemaValidator2758 SUPPORTED_VERSIONS2759 matches DEPRECATED_VERSIONS keys2760 when all files under schema path are explicitly listed2761 secret_detection 14.1.12762 dast 14.1.12763 dependency_scanning 14.1.12764 container_scanning 14.1.12765 cluster_image_scanning 14.1.12766 sast 14.1.12767 coverage_fuzzing 14.1.12768 secret_detection 14.0.02769 dast 14.0.02770 dependency_scanning 14.0.02771 container_scanning 14.0.02772 sast 14.0.02773 coverage_fuzzing 14.0.02774 secret_detection 15.0.42775 dast 15.0.42776 dependency_scanning 15.0.42777 container_scanning 15.0.42778 cluster_image_scanning 15.0.42779 sast 15.0.42780 coverage_fuzzing 15.0.42781 secret_detection 14.0.42782 dast 14.0.42783 dependency_scanning 14.0.42784 container_scanning 14.0.42785 cluster_image_scanning 14.0.42786 sast 14.0.42787 coverage_fuzzing 14.0.42788 secret_detection 15.0.22789 dast 15.0.22790 dependency_scanning 15.0.22791 container_scanning 15.0.22792 cluster_image_scanning 15.0.22793 sast 15.0.22794 coverage_fuzzing 15.0.22795 secret_detection 14.0.12796 dast 14.0.12797 dependency_scanning 14.0.12798 container_scanning 14.0.12799 sast 14.0.12800 coverage_fuzzing 14.0.12801 secret_detection 14.0.52802 dast 14.0.52803 dependency_scanning 14.0.52804 container_scanning 14.0.52805 cluster_image_scanning 14.0.52806 sast 14.0.52807 coverage_fuzzing 14.0.52808 secret_detection 14.0.22809 dast 14.0.22810 dependency_scanning 14.0.22811 container_scanning 14.0.22812 sast 14.0.22813 coverage_fuzzing 14.0.22814 secret_detection 14.1.02815 dast 14.1.02816 dependency_scanning 14.1.02817 container_scanning 14.1.02818 cluster_image_scanning 14.1.02819 sast 14.1.02820 coverage_fuzzing 14.1.02821 secret_detection 14.0.62822 dast 14.0.62823 dependency_scanning 14.0.62824 container_scanning 14.0.62825 cluster_image_scanning 14.0.62826 sast 14.0.62827 coverage_fuzzing 14.0.62828 secret_detection 14.1.32829 dast 14.1.32830 dependency_scanning 14.1.32831 container_scanning 14.1.32832 cluster_image_scanning 14.1.32833 sast 14.1.32834 coverage_fuzzing 14.1.32835 secret_detection 15.0.02836 dast 15.0.02837 dependency_scanning 15.0.02838 container_scanning 15.0.02839 cluster_image_scanning 15.0.02840 sast 15.0.02841 coverage_fuzzing 15.0.02842 secret_detection 14.1.22843 dast 14.1.22844 dependency_scanning 14.1.22845 container_scanning 14.1.22846 cluster_image_scanning 14.1.22847 sast 14.1.22848 coverage_fuzzing 14.1.22849 secret_detection 14.0.32850 dast 14.0.32851 dependency_scanning 14.0.32852 container_scanning 14.0.32853 sast 14.0.32854 coverage_fuzzing 14.0.32855 secret_detection 15.0.12856 dast 15.0.12857 dependency_scanning 15.0.12858 container_scanning 15.0.12859 cluster_image_scanning 15.0.12860 sast 15.0.12861 coverage_fuzzing 15.0.12862 when every SUPPORTED_VERSION has a corresponding JSON file2863 cluster_image_scanning 14.0.4 schema file is present2864 cluster_image_scanning 14.0.5 schema file is present2865 cluster_image_scanning 14.0.6 schema file is present2866 cluster_image_scanning 14.1.0 schema file is present2867 cluster_image_scanning 14.1.1 schema file is present2868 cluster_image_scanning 14.1.2 schema file is present2869 cluster_image_scanning 14.1.3 schema file is present2870 cluster_image_scanning 15.0.0 schema file is present2871 cluster_image_scanning 15.0.1 schema file is present2872 cluster_image_scanning 15.0.2 schema file is present2873 cluster_image_scanning 15.0.4 schema file is present2874 container_scanning 14.0.0 schema file is present2875 container_scanning 14.0.1 schema file is present2876 container_scanning 14.0.2 schema file is present2877 container_scanning 14.0.3 schema file is present2878 container_scanning 14.0.4 schema file is present2879 container_scanning 14.0.5 schema file is present2880 container_scanning 14.0.6 schema file is present2881 container_scanning 14.1.0 schema file is present2882 container_scanning 14.1.1 schema file is present2883 container_scanning 14.1.2 schema file is present2884 container_scanning 14.1.3 schema file is present2885 container_scanning 15.0.0 schema file is present2886 container_scanning 15.0.1 schema file is present2887 container_scanning 15.0.2 schema file is present2888 container_scanning 15.0.4 schema file is present2889 coverage_fuzzing 14.0.0 schema file is present2890 coverage_fuzzing 14.0.1 schema file is present2891 coverage_fuzzing 14.0.2 schema file is present2892 coverage_fuzzing 14.0.3 schema file is present2893 coverage_fuzzing 14.0.4 schema file is present2894 coverage_fuzzing 14.0.5 schema file is present2895 coverage_fuzzing 14.0.6 schema file is present2896 coverage_fuzzing 14.1.0 schema file is present2897 coverage_fuzzing 14.1.1 schema file is present2898 coverage_fuzzing 14.1.2 schema file is present2899 coverage_fuzzing 14.1.3 schema file is present2900 coverage_fuzzing 15.0.0 schema file is present2901 coverage_fuzzing 15.0.1 schema file is present2902 coverage_fuzzing 15.0.2 schema file is present2903 coverage_fuzzing 15.0.4 schema file is present2904 dast 14.0.0 schema file is present2905 dast 14.0.1 schema file is present2906 dast 14.0.2 schema file is present2907 dast 14.0.3 schema file is present2908 dast 14.0.4 schema file is present2909 dast 14.0.5 schema file is present2910 dast 14.0.6 schema file is present2911 dast 14.1.0 schema file is present2912 dast 14.1.1 schema file is present2913 dast 14.1.2 schema file is present2914 dast 14.1.3 schema file is present2915 dast 15.0.0 schema file is present2916 dast 15.0.1 schema file is present2917 dast 15.0.2 schema file is present2918 dast 15.0.4 schema file is present2919 dependency_scanning 14.0.0 schema file is present2920 dependency_scanning 14.0.1 schema file is present2921 dependency_scanning 14.0.2 schema file is present2922 dependency_scanning 14.0.3 schema file is present2923 dependency_scanning 14.0.4 schema file is present2924 dependency_scanning 14.0.5 schema file is present2925 dependency_scanning 14.0.6 schema file is present2926 dependency_scanning 14.1.0 schema file is present2927 dependency_scanning 14.1.1 schema file is present2928 dependency_scanning 14.1.2 schema file is present2929 dependency_scanning 14.1.3 schema file is present2930 dependency_scanning 15.0.0 schema file is present2931 dependency_scanning 15.0.1 schema file is present2932 dependency_scanning 15.0.2 schema file is present2933 dependency_scanning 15.0.4 schema file is present2934 sast 14.0.0 schema file is present2935 sast 14.0.1 schema file is present2936 sast 14.0.2 schema file is present2937 sast 14.0.3 schema file is present2938 sast 14.0.4 schema file is present2939 sast 14.0.5 schema file is present2940 sast 14.0.6 schema file is present2941 sast 14.1.0 schema file is present2942 sast 14.1.1 schema file is present2943 sast 14.1.2 schema file is present2944 sast 14.1.3 schema file is present2945 sast 15.0.0 schema file is present2946 sast 15.0.1 schema file is present2947 sast 15.0.2 schema file is present2948 sast 15.0.4 schema file is present2949 secret_detection 14.0.0 schema file is present2950 secret_detection 14.0.1 schema file is present2951 secret_detection 14.0.2 schema file is present2952 secret_detection 14.0.3 schema file is present2953 secret_detection 14.0.4 schema file is present2954 secret_detection 14.0.5 schema file is present2955 secret_detection 14.0.6 schema file is present2956 secret_detection 14.1.0 schema file is present2957 secret_detection 14.1.1 schema file is present2958 secret_detection 14.1.2 schema file is present2959 secret_detection 14.1.3 schema file is present2960 secret_detection 15.0.0 schema file is present2961 secret_detection 15.0.1 schema file is present2962 secret_detection 15.0.2 schema file is present2963 secret_detection 15.0.4 schema file is present2964 #valid?2965 when given a supported MAJOR.MINOR schema version2966 behaves like report is valid2967 and the report is valid2968 is expected to be truthy2969 behaves like report is invalid2970 and the report is invalid2971 is expected to be falsey2972 behaves like logs related information2973 logs related information2974 when given a supported schema version2975 behaves like report is valid2976 and the report is valid2977 is expected to be truthy2978 behaves like report is invalid2979 and the report is invalid2980 is expected to be falsey2981 behaves like logs related information2982 logs related information2983 when given a deprecated schema version2984 and the report passes schema validation2985 is expected to be truthy2986 behaves like logs related information2987 logs related information2988 and the report does not pass schema validation2989 is expected to be falsey2990 when given an unsupported schema version2991 and the report is valid2992 is expected to be falsey2993 behaves like logs related information2994 logs related information2995 and the report is invalid2996 is expected to be falsey2997 and scanner information is empty2998 logs related information2999 when not given a schema version3000nil versions are discouraged and will be deprecated in Rubygems 43001 is expected to be falsey3002 #errors3003 when given a supported schema version3004 behaves like report is valid with no error3005 and the report is valid3006 is expected to be empty3007 and the report is invalid3008 behaves like report with expected errors3009 is expected to contain exactly "root is missing required keys: scan, vulnerabilities"3010 when given a deprecated schema version3011 behaves like report is valid with no error3012 and the report is valid3013 is expected to be empty3014 and the report does not pass schema validation3015 behaves like report with expected errors3016 is expected to contain exactly "property '/version' does not match pattern: ^[0-9]+\\.[0-9]+\\.[0-9]+$" and "root is missing required keys: vulnerabilities"3017 when given an unsupported schema version3018 and the report is valid3019 behaves like report with expected errors3020 is expected to contain exactly "Version 12.37.0 for report type dast is unsupported, supported versions for this report type are: 14...liest supported versions of this report type, to show all the errors but will not ingest the report"3021 and the report is invalid3022 behaves like report with expected errors3023 is expected to contain exactly "Version 12.37.0 for report type dast is unsupported, supported versions for this report type are: 14...liest supported versions of this report type, to show all the errors but will not ingest the report" and "root is missing required keys: vulnerabilities"3024 when not given a schema version3025 behaves like report with expected errors3026 is expected to contain exactly "root is missing required keys: version" and "Report version not provided, dast report type supports versions: 14.0.0, 14.0.1, 14.0.2, 14.0.3, 14....liest supported versions of this report type, to show all the errors but will not ingest the report"3027 #deprecation_warnings3028 when given a supported schema version3029 and the report is valid3030 is expected to be empty3031 and the report is invalid3032 is expected to be empty3033 when given a deprecated schema version3034 and the report passes schema validation3035 behaves like report with expected warnings3036 is expected to contain exactly "Version V2.7.0 for report type dast has been deprecated, supported versions for this report type are....1.3, 15.0.0, 15.0.1, 15.0.2, 15.0.4. GitLab will attempt to parse and ingest this report if valid."3037 and the report does not pass schema validation3038 behaves like report with expected warnings3039 is expected to contain exactly "Version V2.7.0 for report type dast has been deprecated, supported versions for this report type are....1.3, 15.0.0, 15.0.1, 15.0.2, 15.0.4. GitLab will attempt to parse and ingest this report if valid."3040 when given an unsupported schema version3041 behaves like report with expected warnings3042 is expected to contain exactly3043 #warnings3044 when given a supported MAJOR.MINOR schema version3045 and the report is valid3046 is expected to contain exactly "This report uses a supported MAJOR.MINOR schema version but the PATCH version doesn't match any vendored schema version. Validation will be attempted against version 15.0.4"3047 and the report is invalid3048 is expected to contain exactly "This report uses a supported MAJOR.MINOR schema version but the PATCH version doesn't match any vendored schema version. Validation will be attempted against version 15.0.4"3049 behaves like logs related information3050 logs related information3051 when given a supported schema version3052 behaves like report is valid with no warning3053 and the report is valid3054 is expected to be empty3055 and the report is invalid3056 is expected to be empty3057 when given a deprecated schema version3058 and the report passes schema validation3059 is expected to be empty3060 and the report does not pass schema validation3061 is expected to be empty3062 when given an unsupported schema version3063 behaves like report is valid with no warning3064 and the report is valid3065 is expected to be empty3066 and the report is invalid3067 is expected to be empty3068 when not given a schema version3069 is expected to be empty3070ObjectStorage::DirectUpload3071 #has_length3072 is known3073 maximum size is not required3074 is unknown3075 and maximum size is specified3076 does not raise an error3077 and maximum size is not specified3078 raises an error3079 #get_url3080 when AWS is used3081 calls the proper method3082 when Google is used3083 calls the proper method3084 #to_hash3085 when AWS is used3086 when length is known3087 behaves like a valid S3 upload without multipart data3088 behaves like a valid S3 upload3089 sets Workhorse client data3090 behaves like a valid upload3091 returns valid structure3092 with an object with UTF-8 characters3093 returns an escaped path3094 when no region is specified3095 defaults to us-east-13096 when V2 signatures are used3097 does not enable Workhorse client3098 when V4 signatures are used3099 enables the Workhorse client for instance profiles3100 when consolidated settings are used3101 enables the Workhorse client3102 when only server side encryption is used3103 sends server side encryption settings3104 when SSE-KMS is used3105 sends server side encryption settings3106 behaves like a valid upload without multipart data3107 returns valid structure3108 behaves like a valid upload3109 returns valid structure3110 with an object with UTF-8 characters3111 returns an escaped path3112 when path style is true3113 behaves like a valid S3 upload without multipart data3114 behaves like a valid S3 upload3115 sets Workhorse client data3116 behaves like a valid upload3117 returns valid structure3118 with an object with UTF-8 characters3119 returns an escaped path3120 when no region is specified3121 defaults to us-east-13122 when V2 signatures are used3123 does not enable Workhorse client3124 when V4 signatures are used3125 enables the Workhorse client for instance profiles3126 when consolidated settings are used3127 enables the Workhorse client3128 when only server side encryption is used3129 sends server side encryption settings3130 when SSE-KMS is used3131 sends server side encryption settings3132 behaves like a valid upload without multipart data3133 returns valid structure3134 behaves like a valid upload3135 returns valid structure3136 with an object with UTF-8 characters3137 returns an escaped path3138 when IAM profile is true3139 behaves like a valid S3 upload without multipart data3140 behaves like a valid S3 upload3141 sets Workhorse client data3142 behaves like a valid upload3143 returns valid structure3144 with an object with UTF-8 characters3145 returns an escaped path3146 when no region is specified3147 defaults to us-east-13148 when V2 signatures are used3149 does not enable Workhorse client3150 when V4 signatures are used3151 enables the Workhorse client for instance profiles3152 when consolidated settings are used3153 enables the Workhorse client3154 when only server side encryption is used3155 sends server side encryption settings3156 when SSE-KMS is used3157 sends server side encryption settings3158 behaves like a valid upload without multipart data3159 returns valid structure3160 behaves like a valid upload3161 returns valid structure3162 with an object with UTF-8 characters3163 returns an escaped path3164 when IMSDv2 is available3165 behaves like a valid S3 upload without multipart data3166 behaves like a valid S3 upload3167 sets Workhorse client data3168 behaves like a valid upload3169 returns valid structure3170 with an object with UTF-8 characters3171 returns an escaped path3172 when no region is specified3173 defaults to us-east-13174 when V2 signatures are used3175 does not enable Workhorse client3176 when V4 signatures are used3177 enables the Workhorse client for instance profiles3178 when consolidated settings are used3179 enables the Workhorse client3180 when only server side encryption is used3181 sends server side encryption settings3182 when SSE-KMS is used3183 sends server side encryption settings3184 behaves like a valid upload without multipart data3185 returns valid structure3186 behaves like a valid upload3187 returns valid structure3188 with an object with UTF-8 characters3189 returns an escaped path3190 when length is unknown3191 behaves like a valid S3 upload with multipart data3192 behaves like a valid S3 upload3193 sets Workhorse client data3194 behaves like a valid upload3195 returns valid structure3196 with an object with UTF-8 characters3197 returns an escaped path3198 when no region is specified3199 defaults to us-east-13200 when V2 signatures are used3201 does not enable Workhorse client3202 when V4 signatures are used3203 enables the Workhorse client for instance profiles3204 when consolidated settings are used3205 enables the Workhorse client3206 when only server side encryption is used3207 sends server side encryption settings3208 when SSE-KMS is used3209 sends server side encryption settings3210 behaves like a valid upload with multipart data3211 returns valid structure3212 uses only strings in query parameters3213 behaves like a valid upload3214 returns valid structure3215 with an object with UTF-8 characters3216 returns an escaped path3217 when maximum upload size is 03218 returns maximum number of parts3219 part size is minimum, 5MB3220 when maximum upload size is < 5 MB3221 returns only 1 part3222 part size is minimum, 5MB3223 when maximum upload size is 10MB3224 returns only 2 parts3225 part size is minimum, 5MB3226 when maximum upload size is 12MB3227 returns only 3 parts3228 part size is rounded-up to 5MB3229 when maximum upload size is 49GB3230 returns maximum, 100 parts3231 part size is rounded-up to 5MB3232 when Google is used3233 with google_application_default3234 when length is known3235 behaves like a valid Google upload3236 enables the Workhorse client3237 behaves like a valid upload3238 returns valid structure3239 with an object with UTF-8 characters3240 returns an escaped path3241 with workhorse_google_client disabled3242 does not set Workhorse client data3243 behaves like a valid upload without multipart data3244 returns valid structure3245 behaves like a valid upload3246 returns valid structure3247 with an object with UTF-8 characters3248 returns an escaped path3249 when length is unknown3250 behaves like a valid Google upload3251 enables the Workhorse client3252 behaves like a valid upload3253 returns valid structure3254 with an object with UTF-8 characters3255 returns an escaped path3256 with workhorse_google_client disabled3257 does not set Workhorse client data3258 behaves like a valid upload without multipart data3259 returns valid structure3260 behaves like a valid upload3261 returns valid structure3262 with an object with UTF-8 characters3263 returns an escaped path3264 with google_json_key_location3265 when length is known3266 behaves like a valid Google upload3267 enables the Workhorse client3268 behaves like a valid upload3269 returns valid structure3270 with an object with UTF-8 characters3271 returns an escaped path3272 with workhorse_google_client disabled3273 does not set Workhorse client data3274 behaves like a valid upload without multipart data3275 returns valid structure3276 behaves like a valid upload3277 returns valid structure3278 with an object with UTF-8 characters3279 returns an escaped path3280 when length is unknown3281 behaves like a valid Google upload3282 enables the Workhorse client3283 behaves like a valid upload3284 returns valid structure3285 with an object with UTF-8 characters3286 returns an escaped path3287 with workhorse_google_client disabled3288 does not set Workhorse client data3289 behaves like a valid upload without multipart data3290 returns valid structure3291 behaves like a valid upload3292 returns valid structure3293 with an object with UTF-8 characters3294 returns an escaped path3295 with google_json_key_string3296 when length is known3297 behaves like a valid Google upload3298 enables the Workhorse client3299 behaves like a valid upload3300 returns valid structure3301 with an object with UTF-8 characters3302 returns an escaped path3303 with workhorse_google_client disabled3304 does not set Workhorse client data3305 behaves like a valid upload without multipart data3306 returns valid structure3307 behaves like a valid upload3308 returns valid structure3309 with an object with UTF-8 characters3310 returns an escaped path3311 when length is unknown3312 behaves like a valid Google upload3313 enables the Workhorse client3314 behaves like a valid upload3315 returns valid structure3316 with an object with UTF-8 characters3317 returns an escaped path3318 with workhorse_google_client disabled3319 does not set Workhorse client data3320 behaves like a valid upload without multipart data3321 returns valid structure3322 behaves like a valid upload3323 returns valid structure3324 with an object with UTF-8 characters3325 returns an escaped path3326 when AzureRM is used3327 behaves like a valid AzureRM upload3328 enables the Workhorse client3329 behaves like a valid upload3330 returns valid structure3331 with an object with UTF-8 characters3332 returns an escaped path3333 behaves like a valid upload without multipart data3334 returns valid structure3335 behaves like a valid upload3336 returns valid structure3337 with an object with UTF-8 characters3338 returns an escaped path3339 when a custom storage domain is used3340 behaves like a valid AzureRM upload3341 enables the Workhorse client3342 behaves like a valid upload3343 returns valid structure3344 with an object with UTF-8 characters3345 returns an escaped path3346 #use_workhorse_google_client?3347 with consolidated_settings3348 with google_application_default3349 is expected to be truthy3350 with google_json_key_string3351 is expected to be truthy3352 with google_json_key_location3353 is expected to be truthy3354 without any google setting3355 is expected to be falsey3356 without consolidated_settings3357 is expected to be falsey3358VerifyPagesDomainService3359 #execute3360 domain_sym: :domain, code_sym: :verification_code3361 when domain is disabled(or new)3362 when txt record contains verification code3363 verifies and enables the domain3364 when txt record contains verification code with other text3365 verifies and enables the domain3366 when txt record does not contain verification code3367 unverifies domain3368 disables domain and shedules it for removal in 1 week3369 when txt record does not contain verification code3370 unverifies domain3371 disables domain and shedules it for removal in 1 week3372 when no txt records are present3373 unverifies domain3374 disables domain and shedules it for removal in 1 week3375 when domain is verified3376 when txt record contains verification code3377 verifies and enables the domain3378 when txt record contains verification code with other text3379 verifies and enables the domain3380 when txt record does not contain verification code3381 unverifies but does not disable domain3382 does not schedule domain for removal3383 when no txt records are present3384 unverifies but does not disable domain3385 does not schedule domain for removal3386 when domain is expired3387 when the right code is present3388 verifies and enables the domain3389 when the right code is not present3390 unverifies domain3391 disables domain and shedules it for removal in 1 week3392 when domain is disabled and scheduled for removal3393 when the right code is present3394 verifies and enables domain3395 prevent domain from being removed3396 when the right code is not present3397 keeps domain scheduled for removal but does not change removal time3398 invalid domain3399 can be disabled3400 domain_sym: :domain, code_sym: :keyed_verification_code3401 when domain is disabled(or new)3402 when txt record contains verification code3403 verifies and enables the domain3404 when txt record contains verification code with other text3405 verifies and enables the domain3406 when txt record does not contain verification code3407 unverifies domain3408 disables domain and shedules it for removal in 1 week3409 when txt record does not contain verification code3410 unverifies domain3411 disables domain and shedules it for removal in 1 week3412 when no txt records are present3413 unverifies domain3414 disables domain and shedules it for removal in 1 week3415 when domain is verified3416 when txt record contains verification code3417 verifies and enables the domain3418 when txt record contains verification code with other text3419 verifies and enables the domain3420 when txt record does not contain verification code3421 unverifies but does not disable domain3422 does not schedule domain for removal3423 when no txt records are present3424 unverifies but does not disable domain3425 does not schedule domain for removal3426 when domain is expired3427 when the right code is present3428 verifies and enables the domain3429 when the right code is not present3430 unverifies domain3431 disables domain and shedules it for removal in 1 week3432 when domain is disabled and scheduled for removal3433 when the right code is present3434 verifies and enables domain3435 prevent domain from being removed3436 when the right code is not present3437 keeps domain scheduled for removal but does not change removal time3438 invalid domain3439 can be disabled3440 domain_sym: :verification_domain, code_sym: :verification_code3441 when domain is disabled(or new)3442 when txt record contains verification code3443 verifies and enables the domain3444 when txt record contains verification code with other text3445 verifies and enables the domain3446 when txt record does not contain verification code3447 unverifies domain3448 disables domain and shedules it for removal in 1 week3449 when txt record does not contain verification code3450 unverifies domain3451 disables domain and shedules it for removal in 1 week3452 when no txt records are present3453 unverifies domain3454 disables domain and shedules it for removal in 1 week3455 when domain is verified3456 when txt record contains verification code3457 verifies and enables the domain3458 when txt record contains verification code with other text3459 verifies and enables the domain3460 when txt record does not contain verification code3461 unverifies but does not disable domain3462 does not schedule domain for removal3463 when no txt records are present3464 unverifies but does not disable domain3465 does not schedule domain for removal3466 when domain is expired3467 when the right code is present3468 verifies and enables the domain3469 when the right code is not present3470 unverifies domain3471 disables domain and shedules it for removal in 1 week3472 when domain is disabled and scheduled for removal3473 when the right code is present3474 verifies and enables domain3475 prevent domain from being removed3476 when the right code is not present3477 keeps domain scheduled for removal but does not change removal time3478 invalid domain3479 can be disabled3480 domain_sym: :verification_domain, code_sym: :keyed_verification_code3481 when domain is disabled(or new)3482 when txt record contains verification code3483 verifies and enables the domain3484 when txt record contains verification code with other text3485 verifies and enables the domain3486 when txt record does not contain verification code3487 unverifies domain3488 disables domain and shedules it for removal in 1 week3489 when txt record does not contain verification code3490 unverifies domain3491 disables domain and shedules it for removal in 1 week3492 when no txt records are present3493 unverifies domain3494 disables domain and shedules it for removal in 1 week3495 when domain is verified3496 when txt record contains verification code3497 verifies and enables the domain3498 when txt record contains verification code with other text3499 verifies and enables the domain3500 when txt record does not contain verification code3501 unverifies but does not disable domain3502 does not schedule domain for removal3503 when no txt records are present3504 unverifies but does not disable domain3505 does not schedule domain for removal3506 when domain is expired3507 when the right code is present3508 verifies and enables the domain3509 when the right code is not present3510 unverifies domain3511 disables domain and shedules it for removal in 1 week3512 when domain is disabled and scheduled for removal3513 when the right code is present3514 verifies and enables domain3515 prevent domain from being removed3516 when the right code is not present3517 keeps domain scheduled for removal but does not change removal time3518 invalid domain3519 can be disabled3520 timeout behaviour3521 sets a timeout on the DNS query3522 email notifications3523 factory: nil, verification_succeeds: true, expected_notification: nil3524 sends a notification if appropriate3525 factory: nil, verification_succeeds: false, expected_notification: :verification_failed3526 sends a notification if appropriate3527 factory: :reverify, verification_succeeds: true, expected_notification: nil3528 sends a notification if appropriate3529 factory: :reverify, verification_succeeds: false, expected_notification: :verification_failed3530 sends a notification if appropriate3531 factory: :unverified, verification_succeeds: true, expected_notification: :verification_succeeded3532 sends a notification if appropriate3533 factory: :unverified, verification_succeeds: false, expected_notification: nil3534 sends a notification if appropriate3535 factory: :expired, verification_succeeds: true, expected_notification: nil3536 sends a notification if appropriate3537 factory: :expired, verification_succeeds: false, expected_notification: :disabled3538 sends a notification if appropriate3539 factory: :disabled, verification_succeeds: true, expected_notification: :enabled3540 sends a notification if appropriate3541 factory: :disabled, verification_succeeds: false, expected_notification: nil3542 sends a notification if appropriate3543 pages verification disabled3544 skips email notifications3545 no verification code3546 returns an error3547 pages domain verification is disabled3548 extends domain validity by unconditionally reverifying3549 does not shorten any grace period3550Gitlab::Email::Handler::CreateMergeRequestHandler3551 behaves like reply_processing_shared_examples3552 when the user could not be found3553 raises a UserNotFoundError3554 when the user is not authorized to the project3555 raises a ProjectNotFound3556 when email key3557 matches the new format3558 matches the legacy format3559 doesn't match either format3560 as a non-developer3561 raises UserNotAuthorizedError if the user is not a member3562 as a developer3563 when everything is fine3564 behaves like a new merge request3565 creates a new merge request3566 creates a new merge request with legacy email address3567 behaves like a new merge request3568 creates a new merge request3569 something is wrong3570 when the merge request could not be saved3571 raises an InvalidMergeRequestError3572 when we can't find the incoming_email_token3573 raises an UserNotFoundError3574 when the subject is blank3575 raises an InvalidMergeRequestError3576 when the message body is blank3577 creates a new merge request with description set from the last commit3578 when the email contains patch attachments3579 creates the source branch and applies the patches3580 creates the merge request3581 does not mention the patches in the created merge request3582 when the patch could not be applied3583 raises an error3584 when specifying the target branch using quick actions3585 creates the merge request with the correct target branch3586 based the merge request of the target_branch3587 #patch_attachments3588 orders attachments ending in `.patch` by name3589Gitlab::Ci::Build::Rules::Rule::Clause::Exists3590 #satisfied_by?3591 when the rules are being evaluated at job level3592 behaves like a rules:exists with a context3593 behaves like a glob matching rule3594 exact top-level match3595 is expected to eq true3596 exact top-level no match3597 is expected to eq false3598 pattern top-level match3599 is expected to eq true3600 pattern top-level no match3601 is expected to eq false3602 exact nested match3603 is expected to eq true3604 exact nested no match3605 is expected to eq false3606 pattern nested match3607 is expected to eq true3608 pattern nested no match3609 is expected to eq false3610 ext top-level match3611 is expected to eq true3612 ext nested no match3613 is expected to eq false3614 ext slash no match3615 is expected to eq false3616 when the rules:exists has a variable3617 when the ci_variables_rules_exists FF is disabled3618 is expected to be falsey3619 when the ci_variables_rules_exists FF is enabled3620 when the context has the specified variables3621 is expected to be truthy3622 when variable expansion does not match3623 is expected to be falsey3624 after pattern comparision limit is reached3625 is expected to be truthy3626 when the rules are being evaluated for an entire pipeline3627 behaves like a rules:exists with a context3628 behaves like a glob matching rule3629 exact top-level match3630 is expected to eq true3631 exact top-level no match3632 is expected to eq false3633 pattern top-level match3634 is expected to eq true3635 pattern top-level no match3636 is expected to eq false3637 exact nested match3638 is expected to eq true3639 exact nested no match3640 is expected to eq false3641 pattern nested match3642 is expected to eq true3643 pattern nested no match3644 is expected to eq false3645 ext top-level match3646 is expected to eq true3647 ext nested no match3648 is expected to eq false3649 ext slash no match3650 is expected to eq false3651 when the rules:exists has a variable3652 when the ci_variables_rules_exists FF is disabled3653 is expected to be falsey3654 when the ci_variables_rules_exists FF is enabled3655 when the context has the specified variables3656 is expected to be truthy3657 when variable expansion does not match3658 is expected to be falsey3659 after pattern comparision limit is reached3660 is expected to be truthy3661 when rules are being evaluated with `include`3662 behaves like a rules:exists with a context3663 behaves like a glob matching rule3664 exact top-level match3665 is expected to eq true3666 exact top-level no match3667 is expected to eq false3668 pattern top-level match3669 is expected to eq true3670 pattern top-level no match3671 is expected to eq false3672 exact nested match3673 is expected to eq true3674 exact nested no match3675 is expected to eq false3676 pattern nested match3677 is expected to eq true3678 pattern nested no match3679 is expected to eq false3680 ext top-level match3681 is expected to eq true3682 ext nested no match3683 is expected to eq false3684 ext slash no match3685 is expected to eq false3686 when the rules:exists has a variable3687 when the ci_variables_rules_exists FF is disabled3688 is expected to be falsey3689 when the ci_variables_rules_exists FF is enabled3690 when the context has the specified variables3691 is expected to be truthy3692 when variable expansion does not match3693 is expected to be falsey3694 after pattern comparision limit is reached3695 is expected to be truthy3696 when context has no project3697 is expected to eq false3698NamespacesHelper3699 #namespaces_options3700 returns only allowed namespaces for user3701 avoids duplicate groups when extra_group is used3702 selects the new group by default3703 falls back to current user selection3704 returns only groups if groups_only option is true3705 when admin mode is enabled3706 returns groups without being a member for admin3707 when admin mode is disabled3708 returns only allowed namespaces for admin3709 when admin mode is disabled3710 selects existing group3711 when nested groups are available3712 includes groups nested in groups the user can administer3713 orders the groups correctly3714 #cascading_namespace_settings_popover_data3715 when locked by an application setting3716 returns expected hash3717 when locked by an ancestor namespace3718 returns expected hash3719 #cascading_namespace_setting_locked?3720 when `group` argument is `nil`3721 returns `false`3722 when `*_locked?` method does not exist3723 returns `false`3724 when `*_locked?` method does exist3725 calls corresponding `*_locked?` method3726 #pipeline_usage_app_data3727 returns a hash with necessary data for the frontend3728MergeRequestDiffFile3729 behaves like a BulkInsertSafe model3730 when calling class methods directly3731 raises an error when method is not bulk-insert safe3732 does not raise an error when method is bulk-insert safe3733 .bulk_insert!3734 when all items are valid3735 inserts them all3736 returns an empty array3737 when some items are invalid3738 does not insert any of them and raises an error3739 inserts them anyway when bypassing validations3740 #diff3741 when diff is not stored3742 when the diff is marked as binary3743 unpacks from base 643744 invalid base643745 returns the raw diff3746 when the diff is not marked as binary3747 returns the raw diff3748 when diff is stored in DB3749 returns UTF-8 string3750 when diff is stored in external storage3751 returns UTF-8 string3752 #utf8_diff3753 does not raise error when the diff is binary3754 calls #diff once3755 externally stored diff caching3756 when external diff is not cached3757 caches external diffs3758 when external diff is already cached3759 reads diff from cached external diff3760 when the diff is marked as binary3761 when the diff is marked as binary3762 unpacks from base 643763 invalid base643764 returns the raw diff3765 when the diff is not marked as binary3766 returns the raw diff3767 when content responds to #encoding3768 encodes content to utf8 encoding3769 when content is blank3770 returns an empty string3771 when exception is raised3772 falls back to #diff3773 when diff is not stored externally3774 calls #diff3775 when exception is raised3776 logs exception and returns an empty string3777GroupsHelper3778 #group_icon_url3779 returns an url for the avatar3780 gives default avatar_icon when no avatar is present3781 #group_lfs_status3782 only one project in group3783 returns all projects as enabled3784 returns all projects as disabled3785 more than one project in group3786 LFS enabled in group3787 returns both projects as enabled3788 returns only one as enabled3789 LFS disabled in group3790 returns both projects as disabled3791 returns only one as disabled3792 #group_title3793 enqueues the elements in the breadcrumb schema list3794 avoids N+1 queries3795 traversal queries3796 recursive3797 outputs the groups in the correct order3798 linear3799 outputs the groups in the correct order3800 #group_title_link3801 link3802 uses the group name as innerText3803 links to the group path3804 icon3805 specifies the group name as the alt text3806 uses the group's avatar_url3807 #share_with_group_lock_help_text3808 traversal queries3809 recursive3810 root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :root_owner, help_text: :default_help, linked_ancestor: nil3811 has the correct help text with correct ancestor links3812 root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :sub_owner, help_text: :default_help, linked_ancestor: nil3813 has the correct help text with correct ancestor links3814 root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :sub_sub_owner, help_text: :default_help, linked_ancestor: nil3815 has the correct help text with correct ancestor links3816 root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :root_owner, help_text: :default_help, linked_ancestor: nil3817 has the correct help text with correct ancestor links3818 root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :sub_owner, help_text: :default_help, linked_ancestor: nil3819 has the correct help text with correct ancestor links3820 root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :sub_sub_owner, help_text: :default_help, linked_ancestor: nil3821 has the correct help text with correct ancestor links3822 root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :root_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :subgroup3823 has the correct help text with correct ancestor links3824 root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :sub_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :subgroup3825 has the correct help text with correct ancestor links3826 root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :sub_sub_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :subgroup3827 has the correct help text with correct ancestor links3828 root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :root_owner, help_text: :ancestor_locked_but_you_can_override, linked_ancestor: :subgroup3829 has the correct help text with correct ancestor links3830 root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :sub_owner, help_text: :ancestor_locked_but_you_can_override, linked_ancestor: :subgroup3831 has the correct help text with correct ancestor links3832 root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :sub_sub_owner, help_text: :ancestor_locked_so_ask_the_owner, linked_ancestor: :subgroup3833 has the correct help text with correct ancestor links3834 root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :root_owner, help_text: :default_help, linked_ancestor: nil3835 has the correct help text with correct ancestor links3836 root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :sub_owner, help_text: :default_help, linked_ancestor: nil3837 has the correct help text with correct ancestor links3838 root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :sub_sub_owner, help_text: :default_help, linked_ancestor: nil3839 has the correct help text with correct ancestor links3840 root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :root_owner, help_text: :default_help, linked_ancestor: nil3841 has the correct help text with correct ancestor links3842 root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :sub_owner, help_text: :default_help, linked_ancestor: nil3843 has the correct help text with correct ancestor links3844 root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :sub_sub_owner, help_text: :default_help, linked_ancestor: nil3845 has the correct help text with correct ancestor links3846 root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :root_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :root_group3847 has the correct help text with correct ancestor links3848 root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :sub_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :root_group3849 has the correct help text with correct ancestor links3850 root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :sub_sub_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :root_group3851 has the correct help text with correct ancestor links3852 root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :root_owner, help_text: :ancestor_locked_but_you_can_override, linked_ancestor: :root_group3853 has the correct help text with correct ancestor links3854 root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :sub_owner, help_text: :ancestor_locked_so_ask_the_owner, linked_ancestor: :root_group3855 has the correct help text with correct ancestor links3856 root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :sub_sub_owner, help_text: :ancestor_locked_so_ask_the_owner, linked_ancestor: :root_group3857 has the correct help text with correct ancestor links3858 linear3859 root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :root_owner, help_text: :default_help, linked_ancestor: nil3860 has the correct help text with correct ancestor links3861 root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :sub_owner, help_text: :default_help, linked_ancestor: nil3862 has the correct help text with correct ancestor links3863 root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :sub_sub_owner, help_text: :default_help, linked_ancestor: nil3864 has the correct help text with correct ancestor links3865 root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :root_owner, help_text: :default_help, linked_ancestor: nil3866 has the correct help text with correct ancestor links3867 root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :sub_owner, help_text: :default_help, linked_ancestor: nil3868 has the correct help text with correct ancestor links3869 root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :sub_sub_owner, help_text: :default_help, linked_ancestor: nil3870 has the correct help text with correct ancestor links3871 root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :root_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :subgroup3872 has the correct help text with correct ancestor links3873 root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :sub_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :subgroup3874 has the correct help text with correct ancestor links3875 root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :sub_sub_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :subgroup3876 has the correct help text with correct ancestor links3877 root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :root_owner, help_text: :ancestor_locked_but_you_can_override, linked_ancestor: :subgroup3878 has the correct help text with correct ancestor links3879 root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :sub_owner, help_text: :ancestor_locked_but_you_can_override, linked_ancestor: :subgroup3880 has the correct help text with correct ancestor links3881 root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :sub_sub_owner, help_text: :ancestor_locked_so_ask_the_owner, linked_ancestor: :subgroup3882 has the correct help text with correct ancestor links3883 root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :root_owner, help_text: :default_help, linked_ancestor: nil3884 has the correct help text with correct ancestor links3885 root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :sub_owner, help_text: :default_help, linked_ancestor: nil3886 has the correct help text with correct ancestor links3887 root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :sub_sub_owner, help_text: :default_help, linked_ancestor: nil3888 has the correct help text with correct ancestor links3889 root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :root_owner, help_text: :default_help, linked_ancestor: nil3890 has the correct help text with correct ancestor links3891 root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :sub_owner, help_text: :default_help, linked_ancestor: nil3892 has the correct help text with correct ancestor links3893 root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :sub_sub_owner, help_text: :default_help, linked_ancestor: nil3894 has the correct help text with correct ancestor links3895 root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :root_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :root_group3896 has the correct help text with correct ancestor links3897 root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :sub_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :root_group3898 has the correct help text with correct ancestor links3899 root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :sub_sub_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :root_group3900 has the correct help text with correct ancestor links3901 root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :root_owner, help_text: :ancestor_locked_but_you_can_override, linked_ancestor: :root_group3902 has the correct help text with correct ancestor links3903 root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :sub_owner, help_text: :ancestor_locked_so_ask_the_owner, linked_ancestor: :root_group3904 has the correct help text with correct ancestor links3905 root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :sub_sub_owner, help_text: :ancestor_locked_so_ask_the_owner, linked_ancestor: :root_group3906 has the correct help text with correct ancestor links3907 #can_disable_group_emails?3908 returns true for the group owner3909 returns false for anyone else3910 when subgroups3911 returns false if parent group is disabling emails3912 returns true if parent group is not disabling emails3913 #can_update_default_branch_protection?3914 for users who can update default branch protection of the group3915 is expected to be truthy3916 for users who cannot update default branch protection of the group3917 is expected to be falsey3918 #show_thanks_for_purchase_alert?3919 with quantity present3920 returns true3921 with quantity not present3922 returns false3923 with quantity empty3924 returns false3925 #render_setting_to_allow_project_access_token_creation?3926 returns true if group is root3927 returns false if group is subgroup3928 #can_admin_group_member?3929 returns true when current_user can admin members3930 returns false when current_user can not admin members3931 #localized_jobs_to_be_done_choices3932 has a translation for all `jobs_to_be_done` values3933 #subgroup_creation_data3934 when group has a parent3935 returns expected hash3936 when group does not have a parent3937 returns expected hash3938 #group_name_and_path_app_data3939 when group has a parent3940 returns expected hash3941 #subgroups_and_projects_list_app_data3942 returns expected hash3943 #group_overview_tabs_app_data3944 returns expected hash3945 #enabled_git_access_protocol_options_for_group3946 instance setting is nil3947 is expected to contain exactly ["Both SSH and HTTP(S)", "all"], ["Only SSH", "ssh"], and ["Only HTTP(S)", "http"]3948 instance setting is blank3949 is expected to contain exactly ["Both SSH and HTTP(S)", "all"], ["Only SSH", "ssh"], and ["Only HTTP(S)", "http"]3950 instance setting is ssh3951 is expected to contain exactly ["Only SSH", "ssh"]3952 instance setting is http3953 is expected to contain exactly ["Only HTTP(S)", "http"]3954Gitlab::UrlSanitizer3955 .sanitize3956 input: "http://user:pass@test.com/root/repoC.git/", output: "http://*****:*****@test.com/root/repoC.git/"3957 is expected to include "repository 'http://*****:*****@test.com/root/repoC.git/' not found"3958 input: "https://user:pass@test.com/root/repoA.git/", output: "https://*****:*****@test.com/root/repoA.git/"3959 is expected to include "repository 'https://*****:*****@test.com/root/repoA.git/' not found"3960 input: "ssh://user@host.test/path/to/repo.git", output: "ssh://*****@host.test/path/to/repo.git"3961 is expected to include "repository 'ssh://*****@host.test/path/to/repo.git' not found"3962 input: "git://user:pass@host.test/path/to/repo.git", output: "git://*****:*****@host.test/path/to/repo.git"3963 is expected to include "repository 'git://*****:*****@host.test/path/to/repo.git' not found"3964 input: "git://host.test/path/to/repo.git", output: "git://host.test/path/to/repo.git"3965 is expected to include "repository 'git://host.test/path/to/repo.git' not found"3966 input: "user@server:project.git", output: "user@server:project.git"3967 is expected to include "repository 'user@server:project.git' not found"3968 input: "user:pass@server:project.git", output: "user:pass@server:project.git"3969 is expected to include "repository 'user:pass@server:project.git' not found"3970 input: "ssh://", output: ""3971 is expected to include "repository '' not found"3972 .valid?3973 value: false, url: nil3974 is expected to eq false3975 value: false, url: ""3976 is expected to eq false3977 value: false, url: "123://invalid:url"3978 is expected to eq false3979 value: false, url: "valid@project:url.git"3980 is expected to eq false3981 value: false, url: "valid:pass@project:url.git"3982 is expected to eq false3983 value: false, url: ["test", "array"]3984 is expected to eq false3985 value: true, url: "ssh://example.com"3986 is expected to eq true3987 value: true, url: "ssh://:@example.com"3988 is expected to eq true3989 value: true, url: "ssh://foo@example.com"3990 is expected to eq true3991 value: true, url: "ssh://foo:bar@example.com"3992 is expected to eq true3993 value: true, url: "ssh://foo:bar@example.com/group/group/project.git"3994 is expected to eq true3995 value: true, url: "git://example.com/group/group/project.git"3996 is expected to eq true3997 value: true, url: "git://foo:bar@example.com/group/group/project.git"3998 is expected to eq true3999 value: true, url: "http://foo:bar@example.com/group/group/project.git"4000 is expected to eq true4001 value: true, url: "https://foo:bar@example.com/group/group/project.git"4002 is expected to eq true4003 .valid_web?4004 value: false, url: nil4005 is expected to eq false4006 value: false, url: ""4007 is expected to eq false4008 value: false, url: "123://invalid:url"4009 is expected to eq false4010 value: false, url: "valid@project:url.git"4011 is expected to eq false4012 value: false, url: "valid:pass@project:url.git"4013 is expected to eq false4014 value: false, url: ["test", "array"]4015 is expected to eq false4016 value: false, url: "ssh://example.com"4017 is expected to eq false4018 value: false, url: "ssh://:@example.com"4019 is expected to eq false4020 value: false, url: "ssh://foo@example.com"4021 is expected to eq false4022 value: false, url: "ssh://foo:bar@example.com"4023 is expected to eq false4024 value: false, url: "ssh://foo:bar@example.com/group/group/project.git"4025 is expected to eq false4026 value: false, url: "git://example.com/group/group/project.git"4027 is expected to eq false4028 value: false, url: "git://foo:bar@example.com/group/group/project.git"4029 is expected to eq false4030 value: true, url: "http://foo:bar@example.com/group/group/project.git"4031 is expected to eq true4032 value: true, url: "https://foo:bar@example.com/group/group/project.git"4033 is expected to eq true4034 #sanitized_url4035 credentials in hash4036 username: "foo", password: "bar"4037 is expected to eq "http://example.com"4038 username: "foo", password: ""4039 is expected to eq "http://example.com"4040 username: "foo", password: nil4041 is expected to eq "http://example.com"4042 username: "", password: "bar"4043 is expected to eq "http://example.com"4044 username: "", password: ""4045 is expected to eq "http://example.com"4046 username: "", password: nil4047 is expected to eq "http://example.com"4048 username: nil, password: "bar"4049 is expected to eq "http://example.com"4050 username: nil, password: ""4051 is expected to eq "http://example.com"4052 username: nil, password: nil4053 is expected to eq "http://example.com"4054 credentials in URL4055 userinfo: "foo:bar@"4056 is expected to eq "http://example.com"4057 userinfo: "foo@"4058 is expected to eq "http://example.com"4059 userinfo: ":bar@"4060 is expected to eq "http://example.com"4061 userinfo: ":@"4062 is expected to eq "http://example.com"4063 userinfo: "@"4064 is expected to eq "http://example.com"4065 userinfo: nil4066 is expected to eq "http://example.com"4067 #credentials4068 credentials in hash4069 overrides URL-provided credentials4070 credentials in URL4071 url: "http://foo:bar@example.com", credentials: {:user=>"foo", :password=>"bar"}4072 is expected to eq {:password=>"bar", :user=>"foo"}4073 url: "http://foo:bar:baz@example.com", credentials: {:user=>"foo", :password=>"bar:baz"}4074 is expected to eq {:password=>"bar:baz", :user=>"foo"}4075 url: "http://:bar@example.com", credentials: {:user=>nil, :password=>"bar"}4076 is expected to eq {:password=>"bar", :user=>nil}4077 url: "http://foo:@example.com", credentials: {:user=>"foo", :password=>nil}4078 is expected to eq {:password=>nil, :user=>"foo"}4079 url: "http://foo@example.com", credentials: {:user=>"foo", :password=>nil}4080 is expected to eq {:password=>nil, :user=>"foo"}4081 url: "http://:@example.com", credentials: {:user=>nil, :password=>nil}4082 is expected to eq {:password=>nil, :user=>nil}4083 url: "http://@example.com", credentials: {:user=>nil, :password=>nil}4084 is expected to eq {:password=>nil, :user=>nil}4085 url: "http://example.com", credentials: {:user=>nil, :password=>nil}4086 is expected to eq {:password=>nil, :user=>nil}4087 url: nil, credentials: {:user=>nil, :password=>nil}4088 is expected to eq {:password=>nil, :user=>nil}4089 url: "", credentials: {:user=>nil, :password=>nil}4090 is expected to eq {:password=>nil, :user=>nil}4091 url: "no", credentials: {:user=>nil, :password=>nil}4092 is expected to eq {:password=>nil, :user=>nil}4093 with mixed credentials4094 url: "http://a@example.com", credentials: {:password=>"d"}, result: {:user=>"a", :password=>"d"}4095 is expected to eq {:password=>"d", :user=>"a"}4096 url: "http://a:b@example.com", credentials: {:password=>"d"}, result: {:user=>"a", :password=>"d"}4097 is expected to eq {:password=>"d", :user=>"a"}4098 url: "http://:b@example.com", credentials: {:password=>"d"}, result: {:user=>nil, :password=>"d"}4099 is expected to eq {:password=>"d", :user=>nil}4100 url: "http://a@example.com", credentials: {:user=>"c"}, result: {:user=>"c", :password=>nil}4101 is expected to eq {:password=>nil, :user=>"c"}4102 url: "http://a:b@example.com", credentials: {:user=>"c"}, result: {:user=>"c", :password=>"b"}4103 is expected to eq {:password=>"b", :user=>"c"}4104 url: "http://a:b@example.com", credentials: {:user=>""}, result: {:user=>"a", :password=>"b"}4105 is expected to eq {:password=>"b", :user=>"a"}4106 #user4107 credentials in hash4108 overrides URL-provided user4109 credentials in URL4110 url: "http://foo:bar@example.com", user: "foo"4111 is expected to eq "foo"4112 url: "http://foo:bar:baz@example.com", user: "foo"4113 is expected to eq "foo"4114 url: "http://:bar@example.com", user: nil4115 is expected to eq nil4116 url: "http://foo:@example.com", user: "foo"4117 is expected to eq "foo"4118 url: "http://foo@example.com", user: "foo"4119 is expected to eq "foo"4120 url: "http://:@example.com", user: nil4121 is expected to eq nil4122 url: "http://@example.com", user: nil4123 is expected to eq nil4124 url: "http://example.com", user: nil4125 is expected to eq nil4126 url: nil, user: nil4127 is expected to eq nil4128 url: "", user: nil4129 is expected to eq nil4130 url: "no", user: nil4131 is expected to eq nil4132 #full_url4133 credentials in hash4134 credentials: {:user=>"foo", :password=>"bar"}, userinfo: "foo:bar@"4135 is expected to eq "http://foo:bar@example.com"4136 credentials: {:user=>"foo", :password=>""}, userinfo: "foo@"4137 is expected to eq "http://foo@example.com"4138 credentials: {:user=>"foo", :password=>nil}, userinfo: "foo@"4139 is expected to eq "http://foo@example.com"4140 credentials: {:user=>"", :password=>"bar"}, userinfo: ":bar@"4141 is expected to eq "http://:bar@example.com"4142 credentials: {:user=>"", :password=>""}, userinfo: nil4143 is expected to eq "http://example.com"4144 credentials: {:user=>"", :password=>nil}, userinfo: nil4145 is expected to eq "http://example.com"4146 credentials: {:user=>nil, :password=>"bar"}, userinfo: ":bar@"4147 is expected to eq "http://:bar@example.com"4148 credentials: {:user=>nil, :password=>""}, userinfo: nil4149 is expected to eq "http://example.com"4150 credentials: {:user=>nil, :password=>nil}, userinfo: nil4151 is expected to eq "http://example.com"4152 credentials in URL4153 input: nil, output: ""4154 is expected to eq ""4155 input: "", output: :same4156 is expected to eq ""4157 input: "git@example.com", output: :same4158 is expected to eq "git@example.com"4159 input: "http://example.com", output: :same4160 is expected to eq "http://example.com"4161 input: "http://foo@example.com", output: :same4162 is expected to eq "http://foo@example.com"4163 input: "http://foo:@example.com", output: "http://foo@example.com"4164 is expected to eq "http://foo@example.com"4165 input: "http://:bar@example.com", output: :same4166 is expected to eq "http://:bar@example.com"4167 input: "http://foo:bar@example.com", output: :same4168 is expected to eq "http://foo:bar@example.com"4169 input: "http://foo:g p@example.com", output: "http://foo:g%20p@example.com"4170 is expected to eq "http://foo:g%20p@example.com"4171 input: "http://foo:s/h@example.com", output: "http://foo:s%2Fh@example.com"4172 is expected to eq "http://foo:s%2Fh@example.com"4173 input: "http://t u:a#b@example.com", output: "http://t%20u:a%23b@example.com"4174 is expected to eq "http://t%20u:a%23b@example.com"4175 input: "http://t+u:a#b@example.com", output: "http://t%2Bu:a%23b@example.com"4176 is expected to eq "http://t%2Bu:a%23b@example.com"4177 when credentials contains special chars4178 parses the URL without errors4179Blob4180 .decorate4181 returns NilClass when given nil4182 .lazy4183 with project4184 behaves like .lazy checks4185 does not fetch blobs when none are accessed4186 fetches all blobs for the same repository when one is accessed4187 does not include blobs from previous requests in later requests4188 with personal snippet4189 behaves like .lazy checks4190 does not fetch blobs when none are accessed4191 fetches all blobs for the same repository when one is accessed4192 does not include blobs from previous requests in later requests4193 with project snippet4194 behaves like .lazy checks4195 does not fetch blobs when none are accessed4196 fetches all blobs for the same repository when one is accessed4197 does not include blobs from previous requests in later requests4198 #data4199 with project4200 behaves like #data checks4201 using a binary blob4202 returns the data as-is4203 using a text blob4204 converts the data to UTF-84205 with personal snippet4206 behaves like #data checks4207 using a binary blob4208 returns the data as-is4209 using a text blob4210 converts the data to UTF-84211 with project snippet4212 behaves like #data checks4213 using a binary blob4214 returns the data as-is4215 using a text blob4216 converts the data to UTF-84217 #external_storage_error?4218 if the blob is stored in LFS4219 when LFS is enabled4220 is expected to be falsy4221 when LFS is not enabled4222 is expected to be truthy4223 if the blob is not stored in LFS4224 is expected to be falsy4225 #stored_externally?4226 if the blob is stored in LFS4227 when LFS is enabled4228 is expected to be truthy4229 when LFS is not enabled4230 is expected to be falsy4231 if the blob is not stored in LFS4232 is expected to be falsy4233 #binary?4234 an lfs object4235 filename: "file.pdf", is_binary: true4236 is expected to eq true4237 filename: "file.md", is_binary: false4238 is expected to eq false4239 filename: "file.txt", is_binary: false4240 is expected to eq false4241 filename: "file.ics", is_binary: false4242 is expected to eq false4243 filename: "file.rb", is_binary: false4244 is expected to eq false4245 filename: "file.exe", is_binary: true4246 is expected to eq true4247 filename: "file.ini", is_binary: false4248 is expected to eq false4249 filename: "file.wtf", is_binary: true4250 is expected to eq true4251 a non-lfs object4252 delegates to binary_in_repo?4253 #symlink?4254 is true for symlinks4255 is false for non-symlinks4256 #executable?4257 is true for executables4258 is false for non-executables4259 #extension4260 returns the extension4261 #file_type4262 returns the file type4263 #simple_viewer4264 when the blob is empty4265 returns an empty viewer4266 when the file represented by the blob is binary4267 returns a download viewer4268 when the file represented by the blob is text-based4269 returns a text viewer4270 #rich_viewer4271 when the blob has an external storage error4272 returns nil4273 when the blob is empty4274 returns nil4275 when the blob is stored externally4276 returns a matching viewer4277 when the blob is binary4278 returns a matching binary viewer4279 when the blob is text-based4280 returns a matching text-based viewer4281 when the blob is video4282 returns a video viewer4283 when the blob is audio4284 returns an audio viewer4285 #auxiliary_viewer4286 when the blob has an external storage error4287 returns nil4288 when the blob is empty4289 returns nil4290 when the blob is stored externally4291 returns a matching viewer4292 when the blob is binary4293 returns nil4294 when the blob is text-based4295 returns a matching text-based viewer4296 #rendered_as_text?4297 when ignoring errors4298 when the simple viewer is text-based4299 is expected to be truthy4300 when the simple viewer is binary4301 is expected to be falsy4302 when not ignoring errors4303 when the viewer has render errors4304 is expected to be falsy4305 when the viewer doesn't have render errors4306 is expected to be truthy4307 policy4308 works with policy4309 when project is nil4310 does not err4311Groups::CreateService#execute4312 visibility level restrictions4313 create groups without restricted visibility level4314 is expected to be persisted4315 cannot create group with restricted visibility level4316 is expected not to be persisted4317 when `setup_for_company:true` is passed4318 creates group with the specified setup_for_company4319 creating a group with `default_branch_protection` attribute4320 for users who have the ability to create a group with `default_branch_protection`4321 creates group with the specified branch protection level4322 for users who do not have the ability to create a group with `default_branch_protection`4323 does not create the group with the specified branch protection level4324 creating a group with `allow_mfa_for_subgroups` attribute4325 creates group without error4326 creating a top level group4327 when user can create a group4328 is expected to be persisted4329 adds an onboarding progress record4330 with before_commit callback4331 behaves like has sync-ed traversal_ids4332 is expected to eq [2087]4333 when user can not create a group4334 is expected not to be persisted4335 creating subgroup4336 as group owner4337 is expected to be persisted4338 does not add an onboarding progress record4339 behaves like has sync-ed traversal_ids4340 is expected to eq [2096, 2097]4341 as guest4342 does not save group and returns an error4343 as owner4344 is expected to be persisted4345 as maintainer4346 is expected to be persisted4347 when visibility level is passed as a string4348 assigns the correct visibility level4349 creating a mattermost team4350 create the chat team with the group4351 creating a setting record4352 create the settings record connected to the group4353 creating a details record4354 create the details record connected to the group4355 create service for the group4356 with an active instance-level integration4357 creates a service from the instance-level integration4358 with an active group-level integration4359 creates a service from the group-level integration4360 with an active subgroup4361 creates a service from the subgroup-level integration4362 shared runners configuration4363 parent group present4364 shared_runners_config: true, descendants_override_disabled_shared_runners_config: false4365 creates group following the parent config4366 shared_runners_config: false, descendants_override_disabled_shared_runners_config: false4367 creates group following the parent config4368 shared_runners_config: false, descendants_override_disabled_shared_runners_config: true4369 creates group following the parent config4370 root group4371 follows default config4372Resolvers::TimelogResolver4373 is expected to have non-null GraphQL type TimelogConnection4374 on a project4375 behaves like with a project4376 finds all timelogs within given dates4377 return nothing when user has insufficient permissions4378 when no dates specified4379 finds all timelogs4380 when only start_time present4381 finds timelogs after the start_time4382 when only end_time present4383 finds timelogs before the end_time4384 when start_time and end_date are present4385 finds timelogs until the end of day of end_date4386 when start_date and end_time are present4387 finds all timelogs within start_date and end_time4388 when arguments are invalid4389 when start_time and start_date are present4390 generates an error4391 when end_time and end_date are present4392 generates an error4393 when start argument is after end argument4394 generates an error4395 with a project filter4396 behaves like with a project4397 finds all timelogs within given dates4398 return nothing when user has insufficient permissions4399 when no dates specified4400 finds all timelogs4401 when only start_time present4402 finds timelogs after the start_time4403 when only end_time present4404 finds timelogs before the end_time4405 when start_time and end_date are present4406 finds timelogs until the end of day of end_date4407 when start_date and end_time are present4408 finds all timelogs within start_date and end_time4409 when arguments are invalid4410 when start_time and start_date are present4411 generates an error4412 when end_time and end_date are present4413 generates an error4414 when start argument is after end argument4415 generates an error4416 on a group4417 behaves like with a group4418 finds all timelogs4419 finds all timelogs within given dates4420 when only start_date is present4421 finds timelogs until the end of day of end_date4422 when only end_date is present4423 finds timelogs until the end of day of end_date4424 when start_time and end_date are present4425 finds timelogs until the end of day of end_date4426 when start_date and end_time are present4427 finds all timelogs within start_date and end_time4428 when arguments are invalid4429 when start_time and start_date are present4430 generates an error4431 when end_time and end_date are present4432 generates an error4433 when start argument is after end argument4434 generates an error4435 with a group filter4436 behaves like with a group4437 finds all timelogs4438 finds all timelogs within given dates4439 when only start_date is present4440 finds timelogs until the end of day of end_date4441 when only end_date is present4442 finds timelogs until the end of day of end_date4443 when start_time and end_date are present4444 finds timelogs until the end of day of end_date4445 when start_date and end_time are present4446 finds all timelogs within start_date and end_time4447 when arguments are invalid4448 when start_time and start_date are present4449 generates an error4450 when end_time and end_date are present4451 generates an error4452 when start argument is after end argument4453 generates an error4454 on a user4455 behaves like with a user4456 blah4457 with a user filter4458 behaves like with a user4459 blah4460 when > `default_max_page_size` records4461 pagination returns `default_max_page_size` and sets `has_next_page` true4462 when no object or arguments provided4463 generates an error4464SystemNotes::TimeTrackingService4465 #change_start_date_or_due_date4466 when noteable is an issue4467 does not track the work item event in usage ping4468 tracks the issue event4469 behaves like issuable getting date change notes4470 behaves like a note with overridable created_at4471 the note has the correct time4472 behaves like a system note4473 has the correct attributes4474 when both dates are added4475 sets the correct note message4476 when both dates are removed4477 sets the correct note message4478 when due date is added4479 sets the correct note message4480 and start date removed4481 sets the correct note message4482 when start_date is added4483 does not track the issue event4484 does not emit snowplow event4485 sets the correct note message4486 and due date removed4487 sets the correct note message4488 when no dates are changed4489 does not create a note and returns nil4490 behaves like issue_edit snowplow tracking4491 behaves like Snowplow event tracking4492 is not emitted if FF is disabled4493 is emitted4494 when only start_date is added4495 does not track the issue event in usage ping4496 when noteable is a work item4497 does not track the issue event4498 does not emit snowplow event4499 behaves like issuable getting date change notes4500 behaves like a note with overridable created_at4501 the note has the correct time4502 behaves like a system note4503 has the correct attributes4504 when both dates are added4505 sets the correct note message4506 when both dates are removed4507 sets the correct note message4508 when due date is added4509 sets the correct note message4510 and start date removed4511 sets the correct note message4512 when start_date is added4513 does not track the issue event4514 does not emit snowplow event4515 sets the correct note message4516 and due date removed4517 sets the correct note message4518 when no dates are changed4519 does not create a note and returns nil4520 when only start_date is added4521 tracks the issue event in usage ping4522 when noteable is a merge request4523 does not track the issue event4524 does not track the work item event in usage ping4525 does not emit snowplow event4526 #change_time_estimate4527 when noteable is an issue4528 tracks the issue event in usage ping4529 behaves like a system note4530 has the correct attributes4531 with a time estimate4532 sets the note text4533 when time_tracking_limit_to_hours setting is true4534 sets the note text4535 without a time estimate4536 sets the note text4537 behaves like issue_edit snowplow tracking4538 behaves like Snowplow event tracking4539 is not emitted if FF is disabled4540 is emitted4541 when noteable is a merge request4542 does not track the issue event4543 does not emit snowplow event4544 #create_timelog4545 when the timelog has a positive time spent value4546 sets the note text4547 when the timelog has a negative time spent value4548 sets the note text4549 #remove_timelog4550 when the timelog has a positive time spent value4551 sets the note text4552 when the timelog has a negative time spent value4553 sets the note text4554 #change_time_spent4555 when noteable is an issue4556 behaves like a system note4557 has the correct attributes4558 when time was added4559 sets the note text4560 tracks the issue event4561 when time was subtracted4562 sets the note text4563 when time was removed4564 sets the note text4565 when time_tracking_limit_to_hours setting is true4566 sets the note text4567 behaves like issue_edit snowplow tracking4568 behaves like Snowplow event tracking4569 is not emitted if FF is disabled4570 is emitted4571 when noteable is a merge request4572 does not track the issue event4573 does not emit snowplow event4574Gitlab::ErrorTracking::ErrorRepository::OpenApiStrategy4575 #report_error4576 is not implemented4577 #find_error4578 when request succeeds4579 without events returned4580 does not log anything4581 returns detailed error4582 returns no first and last release version4583 with events returned4584 does not log anything4585 returns first and last release version4586 when request fails4587 logs error4588 is expected to be nil4589 #list_errors4590 with errors4591 does not log anything4592 maps errors to models4593 when n errors are returned4594 does not log anything4595 returns the amount of errors4596 cursor links are preserved4597 when less errors than requested are returned4598 does not log anything4599 returns the amount of errors4600 cursor link for next is removed4601 with params4602 does not log anything4603 passes provided params to client4604 without explicit params4605 does not log anything4606 passes default params to client4607 when request fails4608 logs error4609 is expected to have attributes {:next => nil, :prev => nil}4610 #last_event_for4611 when both event and error is returned4612 does not log anything4613 returns mapped error event4614 when event is not returned4615 does not log anything4616 is expected to be nil4617 when list_events request fails4618 logs error4619 is expected to be nil4620 when error is not returned4621 does not log anything4622 is expected to be nil4623 when get_error request fails4624 logs error4625 is expected to be nil4626 #update_error4627 when update succeeds4628 does not log anything4629 is expected to eq true4630 when update fails4631 logs error4632 is expected to eq false4633 #dsn_url4634 is expected to eq "http://abc@localhost:8080/errortracking/api/v1/projects/1100"4635UsersHelper4636 display_public_email?4637 is expected to equal true4638 when user public email is blank4639 is expected to equal false4640 #user_link4641 links to the user's profile4642 has the user's email as title4643 #profile_tabs4644 with public profile4645 includes all the expected tabs4646 with private profile4647 is empty4648 #user_internal_regex_data4649 user_default_external: false, user_default_internal_regex: nil, result: {:user_internal_regex_pattern=>nil, :user_internal_regex_options=>nil}4650 is expected to eq {:user_internal_regex_options=>nil, :user_internal_regex_pattern=>nil}4651 user_default_external: false, user_default_internal_regex: "", result: {:user_internal_regex_pattern=>nil, :user_internal_regex_options=>nil}4652 is expected to eq {:user_internal_regex_options=>nil, :user_internal_regex_pattern=>nil}4653 user_default_external: false, user_default_internal_regex: "mockRegexPattern", result: {:user_internal_regex_pattern=>nil, :user_internal_regex_options=>nil}4654 is expected to eq {:user_internal_regex_options=>nil, :user_internal_regex_pattern=>nil}4655 user_default_external: true, user_default_internal_regex: nil, result: {:user_internal_regex_pattern=>nil, :user_internal_regex_options=>nil}4656 is expected to eq {:user_internal_regex_options=>nil, :user_internal_regex_pattern=>nil}4657 user_default_external: true, user_default_internal_regex: "", result: {:user_internal_regex_pattern=>nil, :user_internal_regex_options=>nil}4658 is expected to eq {:user_internal_regex_options=>nil, :user_internal_regex_pattern=>nil}4659 user_default_external: true, user_default_internal_regex: "mockRegexPattern", result: {:user_internal_regex_pattern=>"mockRegexPattern", :user_internal_regex_options=>"i"}4660 is expected to eq {:user_internal_regex_options=>"i", :user_internal_regex_pattern=>"mockRegexPattern"}4661 #current_user_menu_items4662 includes all default items4663 includes the profile tab if the user can read themself4664 includes the settings tab if the user can update themself4665 when terms are enforced4666 hides the profile and the settings tab4667 #user_badges_in_admin_section4668 with a blocked user4669 returns the blocked badge4670 with a pending approval user4671 returns the pending approval badge4672 with a banned user4673 returns the banned badge4674 with an admin user4675 returns the admin badge4676 with a bot4677 returns the bot badge4678 with an external user4679 returns the external badge4680 with the current user4681 returns the "It's You" badge4682 with an external blocked admin4683 returns the blocked, admin and external badges4684 with a locked user4685 returns the "Locked" badge4686 get badges for normal user4687 returns no badges4688 #can_force_email_confirmation?4689 for a user that is already confirmed4690 is expected to eq false4691 for a user that is not confirmed4692 is expected to eq true4693 #work_information4694 when neither organization nor job_title are present4695 is expected to be nil4696 when user parameter is nil4697 is expected to be nil4698 without schema markup4699 when both job_title and organization are present4700 returns job title concatenated with organization4701 when only organization is present4702 returns organization4703 when only job_title is present4704 returns job title4705 with schema markup4706 when both job_title and organization are present4707 returns job title concatenated with organization4708 when only organization is present4709 returns organization4710 when only job_title is present4711 returns job title4712 #user_display_name4713 for a confirmed user4714 is expected to eq "Sidney Jones1314"4715 for an unconfirmed user4716 is expected to eq "Unconfirmed user"4717 when current user is an admin4718 is expected to eq "Sidney Jones1316"4719 when the current user is self4720 is expected to eq "Sidney Jones1318"4721 for a blocked user4722 is expected to eq "Blocked user"4723 #admin_users_data_attributes4724 users matches the serialized json4725 paths matches the schema4726 #confirm_user_data4727 sets `path` key correctly4728 sets `modal_attributes` key to valid json4729 when `user.unconfirmed_email` is set4730 sets `modal_attributes.messageHtml` correctly4731 when `user.unconfirmed_email` is not set4732 sets `modal_attributes.messageHtml` correctly4733 #user_email_help_text4734 when `user.unconfirmed_email` is not set4735 contains avatar detection text4736 when `user.unconfirmed_email` is set4737 contains resend confirmation e-mail text4738 #admin_user_actions_data_attributes4739 user matches the serialized json4740 paths matches the schema4741WorkItems::TaskListReferenceRemovalService4742 #execute4743 when task mardown spans a single line4744 behaves like successful work item task reference removal service4745 is expected to be success4746 removes the task list item containing the task reference4747 creates system notes4748 when description does not contain a task4749 behaves like failing work item task reference removal service4750 is expected to be error4751 does not change the work item description4752 returns an error message4753 when description reference does not exactly match the task reference4754 behaves like failing work item task reference removal service4755 is expected to be error4756 does not change the work item description4757 returns an error message4758 when task mardown spans multiple lines4759 behaves like successful work item task reference removal service4760 is expected to be success4761 removes the task list item containing the task reference4762 creates system notes4763 when updating the work item fails4764 behaves like failing work item task reference removal service4765 is expected to be error4766 does not change the work item description4767 returns an error message4768 when description is empty4769 behaves like failing work item task reference removal service4770 is expected to be error4771 does not change the work item description4772 returns an error message4773 when line_number_start is lower than 14774 behaves like failing work item task reference removal service4775 is expected to be error4776 does not change the work item description4777 returns an error message4778 when line_number_end is lower than line_number_start4779 behaves like failing work item task reference removal service4780 is expected to be error4781 does not change the work item description4782 returns an error message4783 when lock_version is older than current4784 behaves like failing work item task reference removal service4785 is expected to be error4786 does not change the work item description4787 returns an error message4788 when work item is stale before updating4789 behaves like failing work item task reference removal service4790 is expected to be error4791 does not change the work item description4792 returns an error message4793Projects::HashedStorage::MigrateRepositoryService4794 #execute4795 works even when project validation fails4796 repository lock4797 tries to lock the repository4798 fails when a git operation is in progress4799 when repository doesnt exist on disk4800 skips the disk change but increase the version4801 when succeeds4802 renames project, wiki and design repositories4803 updates project to be hashed and not read-only4804 move operation is called for all repositories4805 writes project full path to gitaly4806 when exception happens4807 handles OpenSSL::Cipher::CipherError4808 ensures rollback when OpenSSL::Cipher::CipherError4809 handles Gitlab::Git::CommandError4810 ensures rollback when Gitlab::Git::CommandError4811 when one move fails4812 rollsback repositories to original name4813 when rollback fails4814 does not try to move nil repository over existing4815Pages::InvalidateDomainCacheWorker4816 behaves like clears caches with4817 clears the cache with Gitlab::Pages::CacheControl4818 behaves like subscribes to event4819 consumes the published event4820 behaves like an idempotent worker4821 is labeled as idempotent4822 performs multiple times sequentially without raising an exception4823 behaves like clears caches with4824 clears the cache with Gitlab::Pages::CacheControl4825 behaves like subscribes to event4826 consumes the published event4827 behaves like an idempotent worker4828 is labeled as idempotent4829 performs multiple times sequentially without raising an exception4830 behaves like clears caches with4831 clears the cache with Gitlab::Pages::CacheControl4832 behaves like subscribes to event4833 consumes the published event4834 behaves like an idempotent worker4835 is labeled as idempotent4836 performs multiple times sequentially without raising an exception4837 behaves like clears caches with4838 clears the cache with Gitlab::Pages::CacheControl4839 behaves like subscribes to event4840 consumes the published event4841 behaves like an idempotent worker4842 is labeled as idempotent4843 performs multiple times sequentially without raising an exception4844 behaves like clears caches with4845 clears the cache with Gitlab::Pages::CacheControl4846 behaves like subscribes to event4847 consumes the published event4848 behaves like an idempotent worker4849 is labeled as idempotent4850 performs multiple times sequentially without raising an exception4851 behaves like clears caches with4852 clears the cache with Gitlab::Pages::CacheControl4853 behaves like subscribes to event4854 consumes the published event4855 behaves like an idempotent worker4856 is labeled as idempotent4857 performs multiple times sequentially without raising an exception4858 behaves like clears caches with4859 clears the cache with Gitlab::Pages::CacheControl4860 behaves like subscribes to event4861 consumes the published event4862 behaves like an idempotent worker4863 is labeled as idempotent4864 performs multiple times sequentially without raising an exception4865 behaves like clears caches with4866 clears the cache with Gitlab::Pages::CacheControl4867 behaves like subscribes to event4868 consumes the published event4869 behaves like an idempotent worker4870 is labeled as idempotent4871 performs multiple times sequentially without raising an exception4872 behaves like clears caches with4873 clears the cache with Gitlab::Pages::CacheControl4874 behaves like subscribes to event4875 consumes the published event4876 behaves like an idempotent worker4877 is labeled as idempotent4878 performs multiple times sequentially without raising an exception4879 behaves like clears caches with4880 clears the cache with Gitlab::Pages::CacheControl4881 behaves like subscribes to event4882 consumes the published event4883 behaves like an idempotent worker4884 is labeled as idempotent4885 performs multiple times sequentially without raising an exception4886 behaves like clears caches with4887 clears the cache with Gitlab::Pages::CacheControl4888 behaves like subscribes to event4889 consumes the published event4890 behaves like an idempotent worker4891 is labeled as idempotent4892 performs multiple times sequentially without raising an exception4893 behaves like clears caches with4894 clears the cache with Gitlab::Pages::CacheControl4895 behaves like subscribes to event4896 consumes the published event4897 behaves like an idempotent worker4898 is labeled as idempotent4899 performs multiple times sequentially without raising an exception4900 behaves like clears caches with4901 clears the cache with Gitlab::Pages::CacheControl4902 behaves like subscribes to event4903 consumes the published event4904 behaves like an idempotent worker4905 is labeled as idempotent4906 performs multiple times sequentially without raising an exception4907 when project attributes change4908 behaves like clears caches with4909 clears the cache with Gitlab::Pages::CacheControl4910 behaves like subscribes to event4911 consumes the published event4912 behaves like an idempotent worker4913 is labeled as idempotent4914 performs multiple times sequentially without raising an exception4915 behaves like clears caches with4916 clears the cache with Gitlab::Pages::CacheControl4917 behaves like subscribes to event4918 consumes the published event4919 behaves like an idempotent worker4920 is labeled as idempotent4921 performs multiple times sequentially without raising an exception4922 behaves like ignores the published event4923 does not consume the published event4924 when project features change4925 behaves like clears caches with4926 clears the cache with Gitlab::Pages::CacheControl4927 behaves like subscribes to event4928 consumes the published event4929 behaves like an idempotent worker4930 is labeled as idempotent4931 performs multiple times sequentially without raising an exception4932 behaves like ignores the published event4933 does not consume the published event4934 when namespace based cache keys are duplicated4935 behaves like clears caches with4936 clears the cache with Gitlab::Pages::CacheControl4937 behaves like subscribes to event4938 consumes the published event4939 behaves like an idempotent worker4940 is labeled as idempotent4941 performs multiple times sequentially without raising an exception4942Resolvers::TodosResolver4943 is expected to have nullable GraphQL type TodoConnection4944 #resolve4945 calls TodosFinder4946 when using no filter4947 returns pending todos4948 when using filters4949 returns the todos for multiple states4950 returns the todos for multiple filters4951 returns the todos for single filter4952 returns the todos for multiple groups4953 returns the todos for multiple authors4954 returns the todos for multiple actions4955 returns the todos for multiple projects4956 when no target is provided4957 returns no todos4958 when target user is not the current user4959 returns no todos4960 when request is for a todo target4961 returns only the todos for the target4962Gitlab::Database::LoadBalancing::Host4963 #connection4964 returns a connection from the pool4965 #disconnect!4966 disconnects the pool4967 disconnects the pool when waiting for connections takes too long4968 #release_connection4969 releases the current connection from the pool4970 #offline!4971 marks the host as offline4972 #online?4973 when the replica status is recent enough4974 returns the latest status4975 returns an offline status4976 when the replica status is outdated4977 refreshes the status4978 and replica is not up to date4979 marks the host offline4980 when the replica is not online4981 returns false when ActionView::Template::Error is raised4982 returns false when ActiveRecord::StatementInvalid is raised4983 returns false when PG::Error is raised4984 returns false when ActiveRecord::ConnectionNotEstablished is raised4985 #refresh_status4986 refreshes the status4987 #check_replica_status?4988 returns true when we need to check the replica status4989 returns false when we do not need to check the replica status4990 #replica_is_up_to_date?4991 when the lag time is below the threshold4992 returns true4993 when the lag time exceeds the threshold4994 returns true if the data is recent enough4995 returns false when the data is not recent enough4996 #replication_lag_below_threshold4997 returns true when the lag time is below the threshold4998 returns false when the lag time exceeds the threshold4999 returns false when no lag time could be calculated5000 #data_is_recent_enough?5001 returns true when the data is recent enough5002 returns false when the data is not recent enough5003 returns false when no lag size could be calculated5004 #replication_lag_time5005 returns the lag time as a Float5006 returns nil when the database query returned no rows5007 #replication_lag_size5008 returns the lag size as an Integer5009 returns nil when the database query returned no rows5010 returns nil when the database connection fails5011 #primary_write_location5012 returns the write location of the primary5013 #caught_up?5014 returns true when a host has caught up5015 returns true when a host has caught up5016 returns false when a host has not caught up5017 returns false when a host has not caught up5018 returns false when the connection fails5019 #database_replica_location5020 returns the write ahead location of the replica5021 returns nil when the database query returned no rows5022 returns nil when the database connection fails5023 #query_and_release5024 executes a SQL query5025 releases the connection after running the query5026 returns an empty Hash in the event of an error5027 #host5028 returns the hostname5029Projects::AfterRenameService5030 #execute5031 using legacy storage5032 renames a repository5033 updates project full path in gitaly5034 updates storage location5035 container registry with images5036 raises a RenameFailedError5037 attachments5038 moves uploads folder to new location5039 with hashed storage upgrade when renaming enabled5040 calls HashedStorage::MigrationService with correct options5041 using hashed storage5042 renames a repository5043 updates project full path in gitaly5044 updates storage location5045 container registry with images5046 raises a RenameFailedError5047 attachments5048 keeps uploads folder location unchanged5049 when not rolled out5050 moves attachments folder to hashed storage5051 EventStore5052 publishes a ProjectPathChangedEvent5053SystemNotes::DesignManagementService5054 #design_version_added5055 with one kind of event5056 makes just one note5057 adds a new system note5058 with a mixture of events5059 makes one note for each kind of event5060 adds a system note for each kind of event5061 icons5062 action: :creation5063 has a valid action5064 action: :modification5065 has a valid action5066 action: :deletion5067 has a valid action5068 it succeeds5069 action: :creation, icon: "designs_added", human_description: "added"5070 has the correct data5071 action: :modification, icon: "designs_modified", human_description: "updated"5072 has the correct data5073 action: :deletion, icon: "designs_removed", human_description: "removed"5074 has the correct data5075 #design_discussion_added5076 adds a new system note5077 has the correct note text5078 behaves like a system note5079 has the correct attributes5080Issues::SetCrmContactsService5081 #execute5082 when the user has no permission5083 returns expected error response5084 when user has permission5085 but the crm setting is disabled5086 returns expected error response5087 when the contact does not exist5088 returns expected error response5089 when the contact belongs to a different group5090 returns expected error response5091 replace5092 behaves like setting contacts5093 updates the issue with correct contacts5094 behaves like adds system note5095 calls SystemNoteService.change_issuable_contacts with correct counts5096 add5097 behaves like setting contacts5098 updates the issue with correct contacts5099 behaves like adds system note5100 calls SystemNoteService.change_issuable_contacts with correct counts5101 add by email5102 with pure emails in params5103 behaves like setting contacts5104 updates the issue with correct contacts5105 behaves like adds system note5106 calls SystemNoteService.change_issuable_contacts with correct counts5107 with autocomplete prefix emails in params5108 behaves like setting contacts5109 updates the issue with correct contacts5110 behaves like adds system note5111 calls SystemNoteService.change_issuable_contacts with correct counts5112 remove5113 behaves like setting contacts5114 updates the issue with correct contacts5115 behaves like adds system note5116 calls SystemNoteService.change_issuable_contacts with correct counts5117 remove by email5118 with pure email in params5119 behaves like setting contacts5120 updates the issue with correct contacts5121 behaves like adds system note5122 calls SystemNoteService.change_issuable_contacts with correct counts5123 with autocomplete prefix and suffix email in params5124 behaves like setting contacts5125 updates the issue with correct contacts5126 behaves like adds system note5127 calls SystemNoteService.change_issuable_contacts with correct counts5128 when attempting to add more than 65129 returns expected error message5130 when trying to remove non-existent contact5131 returns expected error message5132 when combining params5133 add and remove5134 with contact ids5135 behaves like setting contacts5136 updates the issue with correct contacts5137 with contact emails5138 behaves like setting contacts5139 updates the issue with correct contacts5140 replace and remove5141 returns expected error response5142 replace and add5143 returns expected error response5144 when trying to add an existing issue contact5145 does not return an error5146 when trying to add the same contact twice5147 does not return an error5148 when trying to remove a contact not attached to the issue5149 does not return an error5150Gitlab::Database::Migrations::TestBatchedBackgroundRunner5151 main database5152 running a real background migration5153 runs sampled jobs from the batched background migration5154 uses the correct connection to instrument the background migration5155 with jobs to run5156 samples jobs5157 with multiple jobs to run5158 runs all jobs created within the last 3 hours5159 choosing uniform batches to run5160 #uniform_fractions5161 generates evenly distributed sequences of fractions5162 ci database5163 running a real background migration5164 runs sampled jobs from the batched background migration5165 uses the correct connection to instrument the background migration5166 with jobs to run5167 samples jobs5168 with multiple jobs to run5169 runs all jobs created within the last 3 hours5170 choosing uniform batches to run5171 #uniform_fractions5172 generates evenly distributed sequences of fractions5173Gitlab::Ci::Ansi2html5174 prints non-ansi as-is5175 strips non-color-changing control sequences5176 prints simply red5177 prints simply red without trailing reset5178 prints simply yellow5179 prints default on blue5180 prints red on blue5181 resets colors after red on blue5182 performs color change from red/blue to yellow/blue5183 performs color change from red/blue to yellow/green5184 performs color change from red/blue to reset to yellow/green5185 ignores unsupported codes5186 prints light red5187 prints default on light red5188 performs color change from red/blue to default/blue5189 performs color change from light red/blue to default/blue5190 prints bold text5191 resets bold text5192 prints italic text5193 resets italic text5194 prints underlined text5195 resets underlined text5196 prints concealed text5197 resets concealed text5198 prints crossed-out text5199 resets crossed-out text5200 can print 256 xterm fg colors5201 can print 256 xterm fg colors on normal magenta background5202 can print 256 xterm bg colors5203 can print 256 xterm fg bold colors5204 can print 256 xterm bg colors on normal magenta foreground5205 prints bold colored text vividly5206 prints bold light colored text correctly5207 prints <5208 replaces newlines with line break tags5209 groups carriage returns with newlines5210 replaces invalid UTF-8 data5211 incremental update5212 with split word5213 behaves like stateable converter5214 to returns html to append5215 with split sequence5216 behaves like stateable converter5217 to returns html to append5218 with partial sequence5219 behaves like stateable converter5220 to returns html to append5221 with new line5222 behaves like stateable converter5223 to returns html to append5224 with section markers5225 do not allow XSS injections5226 behaves like a legit section5227 prints light red5228 begins with a section_start html marker5229 ends with a section_end html marker5230 section name includes $5231 behaves like forbidden char in section_name5232 ignores sections5233 section name includes <5234 behaves like forbidden char in section_name5235 ignores sections5236 section name contains .-_5237 behaves like a legit section5238 prints light red5239 begins with a section_start html marker5240 ends with a section_end html marker5241 truncates5242 returns truncated output5243 does not append output5244Integrations::ChatMessage::PipelineMessage5245 returns an empty pretext5246 returns the pipeline summary in the activity's title5247 returns a link to the project in the activity's subtitle5248 returns the build duration in the activity's text property5249 returns the user's avatar image URL in the activity's image property5250 returns the pipeline summary as the attachment's fallback property5251 returns 'good' as the attachment's color property5252 returns the committer's name and username as the attachment's author_name property5253 returns the committer's avatar URL as the attachment's author_icon property5254 returns the committer's GitLab profile URL as the attachment's author_link property5255 returns the pipeline ID, status, and duration as the attachment's title property5256 returns the pipeline URL as the attachment's title_link property5257 returns two attachment fields5258 returns the commit message as the attachment's second field property5259 returns the ref name and link as the attachment's second field property5260 returns the project's name as the attachment's footer property5261 returns the project's avatar URL as the attachment's footer_icon property5262 returns the pipeline's timestamp as the attachment's ts property5263 behaves like Integrations::ChatMessage5264 when input contains link markup5265 strips all link markup characters5266 when the pipeline failed5267 returns the summary with a 'failed' status5268 when the pipeline passed with warnings5269 returns the summary with a 'passed with warnings' status5270 when no user is provided because the pipeline was triggered by the API5271 returns the summary with 'API' as the username5272 when the user does not have an avatar5273 returns an empty string in the activity's image property5274 when the pipeline failed5275 returns 'danger' as the attachment's color property5276 when the pipeline passed with warnings5277 returns 'warning' as the attachment's color property5278 when no user is provided because the pipeline was triggered by the API5279 returns the committer's name and username as the attachment's author_name property5280 returns nil as the attachment's author_icon property5281 returns nil as the attachment's author_link property5282 when a job in the pipeline fails5283 returns four attachment fields5284 returns the stage name and link to the 'Failed jobs' tab on the pipeline's page as the attachment's third field property5285 returns the job name and link as the attachment's fourth field property5286 when lots of jobs across multiple stages fail5287 returns the stage names and links to the 'Failed jobs' tab on the pipeline's page as the attachment's third field property5288 returns the job names and links as the attachment's fourth field property5289 when jobs succeed on retries5290 do not return a job which succeeded on retry5291 when jobs failed even on retries5292 returns only first instance of the failed job5293 when the CI config file contains a YAML error5294 returns three attachment fields5295 returns the YAML error deatils as the attachment's third field property5296 when rendering markdown5297 returns the pipeline summary as the attachments in markdown format5298Banzai::Filter::SanitizationFilter5299 behaves like default allowlist5300 sanitizes tags that are not allowed5301 sanitizes tag attributes5302 sanitizes javascript in attributes5303 sanitizes mixed-cased javascript in attributes5304 allows whitelisted HTML tags from the user5305 sanitizes `class` attribute on any element5306 sanitizes `id` attribute on any element5307 custom allowlist5308 customizes the allowlist only once5309 customizes the allowlist only once for different instances5310 sanitizes `class` attribute from all elements5311 sanitizes `class` attribute from non-highlight spans5312 allows `text-align` property in `style` attribute on table elements5313 disallows other properties in `style` attribute on table elements5314 disallows `text-align` property in `style` attribute on other elements5315 allows `span` elements5316 allows `abbr` elements5317 disallows the `name` attribute globally, allows on `a`5318 allows `summary` elements5319 allows `details` elements5320 allows `rel=license` in links5321 allows `data-math-style` attribute on `code` and `pre` elements5322 allows the `data-sourcepos` attribute globally5323 behaves like XSS prevention5324 disallows protocol-based JS injection: simple, no spaces5325 disallows protocol-based JS injection: simple, spaces before5326 disallows protocol-based JS injection: simple, spaces after5327 disallows protocol-based JS injection: simple, spaces before and after5328 disallows protocol-based JS injection: preceding colon5329 disallows protocol-based JS injection: UTF-8 encoding5330 disallows protocol-based JS injection: long UTF-8 encoding5331 disallows protocol-based JS injection: long UTF-8 encoding without semicolons5332 disallows protocol-based JS injection: hex encoding5333 disallows protocol-based JS injection: long hex encoding5334 disallows protocol-based JS injection: hex encoding without semicolons5335 disallows protocol-based JS injection: null char5336 disallows protocol-based JS injection: invalid URL char5337 disallows protocol-based JS injection: Unicode5338 disallows protocol-based JS injection: spaces and entities5339 disallows protocol whitespace5340 disallows data links5341 disallows vbscript links5342 behaves like sanitize link5343 removes `rel` attribute from `a` elements5344 disallows invalid URIs5345 allows non-standard anchor schemes5346 allows relative links5347 footnotes5348 allows correct footnote id property on links5349 allows correct footnote id property on li element5350 removes invalid id for footnote links5351 removes invalid id for footnote li5352PackagesHelper5353 #package_registry_instance_url5354 returns conan instance url when registry_type is conant5355 returns npm instance url when registry_type is npm5356 #package_registry_project_url5357 returns maven registry url when registry_type is not provided5358 returns specified registry url when registry_type is provided5359 #pypi_registry_url5360 returns the pypi registry url5361 #composer_registry_url5362 return the composer registry url5363 #composer_config_repository_name5364 return global unique composer registry id5365 #show_cleanup_policy_link5366 com: false, config_registry: false, project_registry: false, nil_policy: false, container_repositories_exist: false, expected_result: false5367 is expected to eq false5368 com: false, config_registry: false, project_registry: false, nil_policy: false, container_repositories_exist: true, expected_result: false5369 is expected to eq false5370 com: false, config_registry: false, project_registry: false, nil_policy: true, container_repositories_exist: false, expected_result: false5371 is expected to eq false5372 com: false, config_registry: false, project_registry: false, nil_policy: true, container_repositories_exist: true, expected_result: false5373 is expected to eq false5374 com: false, config_registry: false, project_registry: true, nil_policy: false, container_repositories_exist: false, expected_result: false5375 is expected to eq false5376 com: false, config_registry: false, project_registry: true, nil_policy: false, container_repositories_exist: true, expected_result: false5377 is expected to eq false5378 com: false, config_registry: false, project_registry: true, nil_policy: true, container_repositories_exist: false, expected_result: false5379 is expected to eq false5380 com: false, config_registry: false, project_registry: true, nil_policy: true, container_repositories_exist: true, expected_result: false5381 is expected to eq false5382 com: false, config_registry: true, project_registry: false, nil_policy: false, container_repositories_exist: false, expected_result: false5383 is expected to eq false5384 com: false, config_registry: true, project_registry: false, nil_policy: false, container_repositories_exist: true, expected_result: false5385 is expected to eq false5386 com: false, config_registry: true, project_registry: false, nil_policy: true, container_repositories_exist: false, expected_result: false5387 is expected to eq false5388 com: false, config_registry: true, project_registry: false, nil_policy: true, container_repositories_exist: true, expected_result: false5389 is expected to eq false5390 com: false, config_registry: true, project_registry: true, nil_policy: false, container_repositories_exist: false, expected_result: false5391 is expected to eq false5392 com: false, config_registry: true, project_registry: true, nil_policy: false, container_repositories_exist: true, expected_result: false5393 is expected to eq false5394 com: false, config_registry: true, project_registry: true, nil_policy: true, container_repositories_exist: false, expected_result: false5395 is expected to eq false5396 com: false, config_registry: true, project_registry: true, nil_policy: true, container_repositories_exist: true, expected_result: false5397 is expected to eq false5398 com: true, config_registry: false, project_registry: false, nil_policy: false, container_repositories_exist: false, expected_result: false5399 is expected to eq false5400 com: true, config_registry: false, project_registry: false, nil_policy: false, container_repositories_exist: true, expected_result: false5401 is expected to eq false5402 com: true, config_registry: false, project_registry: false, nil_policy: true, container_repositories_exist: false, expected_result: false5403 is expected to eq false5404 com: true, config_registry: false, project_registry: false, nil_policy: true, container_repositories_exist: true, expected_result: false5405 is expected to eq false5406 com: true, config_registry: false, project_registry: true, nil_policy: false, container_repositories_exist: false, expected_result: false5407 is expected to eq false5408 com: true, config_registry: false, project_registry: true, nil_policy: false, container_repositories_exist: true, expected_result: false5409 is expected to eq false5410 com: true, config_registry: false, project_registry: true, nil_policy: true, container_repositories_exist: false, expected_result: false5411 is expected to eq false5412 com: true, config_registry: false, project_registry: true, nil_policy: true, container_repositories_exist: true, expected_result: false5413 is expected to eq false5414 com: true, config_registry: true, project_registry: false, nil_policy: false, container_repositories_exist: false, expected_result: false5415 is expected to eq false5416 com: true, config_registry: true, project_registry: false, nil_policy: false, container_repositories_exist: true, expected_result: false5417 is expected to eq false5418 com: true, config_registry: true, project_registry: false, nil_policy: true, container_repositories_exist: false, expected_result: false5419 is expected to eq false5420 com: true, config_registry: true, project_registry: false, nil_policy: true, container_repositories_exist: true, expected_result: false5421 is expected to eq false5422 com: true, config_registry: true, project_registry: true, nil_policy: false, container_repositories_exist: false, expected_result: false5423 is expected to eq false5424 com: true, config_registry: true, project_registry: true, nil_policy: false, container_repositories_exist: true, expected_result: false5425 is expected to eq false5426 com: true, config_registry: true, project_registry: true, nil_policy: true, container_repositories_exist: false, expected_result: false5427 is expected to eq false5428 com: true, config_registry: true, project_registry: true, nil_policy: true, container_repositories_exist: true, expected_result: true5429 is expected to eq true5430Ci::ArchiveTraceService#execute5431 when job is finished5432 creates an archived trace5433 integration hooks5434 is expected not to raise Exception5435 when trace is already archived5436 ignores an exception5437 does not create an archived trace5438 when live trace chunks still exist5439 removes the trace chunks5440 when associated data does not exist5441 removes the trace artifact and builds a new one5442 when job does not have trace5443 leaves a warning message in sidekiq log5444 when the job is out of archival attempts5445 skips archiving5446 leaves a warning message in sidekiq log5447 job has archive and chunks5448 removes trace chunks5449 archive is not completed5450 cleanups any stale archive data5451 when the archival process is backed off5452 skips archiving5453 leaves a warning message in sidekiq log5454 when job failed to archive trace but did not raise an exception5455 leaves a warning message in sidekiq log5456 when job is running5457 increments Prometheus counter, sends crash report to Sentry and ignore an error for continuing to archive5458notify/pipeline_success_email.text.erb5459 behaves like pipeline status changes email5460 when the pipeline contains a failed job5461 behaves like renders the pipeline status changes email correctly5462 pipeline with user5463 renders the email correctly5464 behaves like correct pipeline information for pipelines for merge requests5465 when pipeline for merge request5466 renders a source ref of the pipeline5467 pipeline without user5468 renders the email correctly5469 when the latest failed job is a bridge job5470 behaves like renders the pipeline status changes email correctly5471 pipeline with user5472 renders the email correctly5473 behaves like correct pipeline information for pipelines for merge requests5474 when pipeline for merge request5475 renders a source ref of the pipeline5476 pipeline without user5477 renders the email correctly5478CommitEntity5479 contains path to commit5480 contains URL to commit5481 needs to receive project in the request5482 exposes gravatar url that belongs to author5483 when commit author is a user5484 contains information about user5485 when commit author is not a user5486 does not contain author details5487 when type is not set5488 does not expose extra properties5489 when type is "full"5490 exposes extra properties5491 when commit has signature5492 exposes "signature_html"5493 when commit has pipeline5494 exposes "pipeline_status_path"5495 when commit_url_params is set5496 adds commit_url_params to url and path5497Ci::StuckBuilds::DropScheduledService5498 when job is scheduled5499 for more than an hour ago5500 behaves like job is dropped with failure reason5501 changes status5502 when job has data integrity problem5503 drops the job and logs the reason5504 for less than 1 hour ago5505 behaves like job is unchanged5506 does not change status5507 when job is success5508 and scheduled for more than an hour ago5509 behaves like job is unchanged5510 does not change status5511 and scheduled for less than 1 hour ago5512 behaves like job is unchanged5513 does not change status5514 when job is skipped5515 and scheduled for more than an hour ago5516 behaves like job is unchanged5517 does not change status5518 and scheduled for less than 1 hour ago5519 behaves like job is unchanged5520 does not change status5521 when job is failed5522 and scheduled for more than an hour ago5523 behaves like job is unchanged5524 does not change status5525 and scheduled for less than 1 hour ago5526 behaves like job is unchanged5527 does not change status5528 when job is canceled5529 and scheduled for more than an hour ago5530 behaves like job is unchanged5531 does not change status5532 and scheduled for less than 1 hour ago5533 behaves like job is unchanged5534 does not change status5535 when job is running5536 and scheduled for more than an hour ago5537 behaves like job is unchanged5538 does not change status5539 and scheduled for less than 1 hour ago5540 behaves like job is unchanged5541 does not change status5542 when job is pending5543 and scheduled for more than an hour ago5544 behaves like job is unchanged5545 does not change status5546 and scheduled for less than 1 hour ago5547 behaves like job is unchanged5548 does not change status5549 when there are no stale scheduled builds5550 does not drop the stale scheduled build yet5551Gitlab::Ci::Pipeline::Chain::Validate::Abilities5552 when users has no ability to run a pipeline5553 adds an error about insufficient permissions5554 breaks the pipeline builder chain5555 when user has ability to create a pipeline5556 does not invalidate the pipeline5557 does not break the chain5558 when project is deleted5559 is expected to contain exactly "Project is deleted!"5560 #allowed_to_write_ref?5561 when user is a developer5562 is expected to be truthy5563 when pipeline is a detached merge request pipeline5564 is expected to be truthy5565 when the branch is protected5566 is expected to be falsey5567 when pipeline is a detached merge request pipeline5568 is expected to be falsey5569 when developers are allowed to merge5570 is expected to be truthy5571 when pipeline is a detached merge request pipeline5572 is expected to be truthy5573 when the tag is protected5574 is expected to be falsey5575 when developers are allowed to create the tag5576 is expected to be truthy5577 when user is a maintainer5578 is expected to be truthy (FAILED - 1)55801st Try error in ./spec/lib/gitlab/ci/pipeline/chain/validate/abilities_spec.rb:161:5581expected: truthy value5582 got: false5584RSpec::Retry: 2nd try ./spec/lib/gitlab/ci/pipeline/chain/validate/abilities_spec.rb:1615585 when the branch is protected5586 is expected to be truthy5587 when pipeline is a detached merge request pipeline5588 is expected to be truthy5589 when the tag is protected5590 is expected to be truthy5591 when no one can create the tag5592 is expected to be falsey5593 when owner cannot create pipeline5594 is expected to be falsey5595Packages::Nuget::ExtractionWorker5596 #perform5597 with valid package file5598 updates package and package file5599 with exisiting package5600 reuses existing package and updates package file5601 with invalid package file id5602 doesn't update package and package file5603 with package file not containing a nuspec file5604 behaves like handling the metadata error5605 updates package status to error5606 with package with an invalid package name5607 behaves like handling the metadata error5608 updates package status to error5609 behaves like handling the metadata error5610 updates package status to error5611 behaves like handling the metadata error5612 updates package status to error5613 behaves like handling the metadata error5614 updates package status to error5615 with package with an invalid package version5616 behaves like handling the metadata error5617 updates package status to error5618 behaves like handling the metadata error5619 updates package status to error5620 behaves like handling the metadata error5621 updates package status to error5622 behaves like handling the metadata error5623 updates package status to error5624 behaves like handling the metadata error5625 updates package status to error5626 behaves like handling the metadata error5627 updates package status to error5628 handles a processing an unaccounted for error5629 behaves like handling the metadata error5630 updates package status to error5631BoardGroupRecentVisit5632 relationships5633 is expected to belong to user required: false5634 is expected to belong to group required: false5635 is expected to belong to board required: false5636 validations5637 is expected to validate that :user cannot be empty/falsy5638 is expected to validate that :group cannot be empty/falsy5639 is expected to validate that :board cannot be empty/falsy5640 behaves like boards recent visit5641 #visited5642 creates a visit if one does not exists5643 behaves like was visited previously5644 updates the timestamp5645 when we try to create a visit that is not unique5646 behaves like was visited previously5647 updates the timestamp5648 #latest5649 returns the most recent visited5650 returns last 3 visited boards5651ProtectableDropdown5652 initialize5653 raises ArgumentError for invalid ref type5654 #protectable_ref_names5655 for branches5656 is expected to include "feature"5657 is expected not to include "master"5658 behaves like protectable_ref_names5659 when project repository is not empty5660 includes elements matching a protected ref wildcard5661 when project repository is empty5662 returns empty list5663 for tags5664 is expected to include "v1.0.0"5665 is expected not to include "v1.1.0"5666 behaves like protectable_ref_names5667 when project repository is not empty5668 includes elements matching a protected ref wildcard5669 when project repository is empty5670 returns empty list5671 #hash5672 for branches5673 is expected to include {:id => "feature", :text => "feature", :title => "feature"}5674 for tags5675 is expected to include {:id => "v1.0.0", :text => "v1.0.0", :title => "v1.0.0"}5676Gitlab::VisibilityLevel5677 .level_value5678 defaults to PRIVATE when string value is not valid5679 defaults to PRIVATE when integer value is not valid5680 string_value: "private", integer_value: 05681 converts 'private' to integer value 05682 converts string integer '0' to integer value 05683 defaults to PRIVATE when string integer value is not valid5684 defaults to PRIVATE when string value is not valid5685 string_value: "internal", integer_value: 105686 converts 'internal' to integer value 105687 converts string integer '10' to integer value 105688 defaults to PRIVATE when string integer value is not valid5689 defaults to PRIVATE when string value is not valid5690 string_value: "public", integer_value: 205691 converts 'public' to integer value 205692 converts string integer '20' to integer value 205693 defaults to PRIVATE when string integer value is not valid5694 defaults to PRIVATE when string value is not valid5695 when `fallback_value` is set to `nil`5696 returns `nil` when string value is not valid5697 returns `nil` when integer value is not valid5698 .levels_for_user5699 returns INTERNAL and PUBLIC for internal users5700 returns PUBLIC for external users5701 returns PUBLIC when no user is given5702 when admin mode is enabled5703 returns all levels for an admin5704 when admin mode is disabled5705 returns INTERNAL and PUBLIC for an admin5706 .allowed_levels5707 only includes the levels that arent restricted5708 returns all levels when no visibility level was set5709 .closest_allowed_level5710 picks INTERNAL instead of PUBLIC if public is restricted5711 picks PRIVATE if nothing is available5712 .valid_level?5713 returns true when visibility is valid5714 .restricted_level?, .non_restricted_level?, and .public_level_restricted?5715 visibility_levels: nil, expected_status: false5716 returns the expected status5717 visibility_levels: [0], expected_status: false5718 returns the expected status5719 visibility_levels: [0, 10], expected_status: false5720 returns the expected status5721 visibility_levels: [20], expected_status: true5722 returns the expected status5723 visibility_levels: [20, 10], expected_status: true5724 returns the expected status5725 .options5726 keys5727 returns the allowed visibility levels5728 .level_name5729 level_value: 0, level_name: "Private"5730 returns the name of the visibility level5731 level_value: 10, level_name: "Internal"5732 returns the name of the visibility level5733 level_value: 20, level_name: "Public"5734 returns the name of the visibility level5735 level_value: 2147483647, level_name: "Unknown"5736 returns the name of the visibility level5737Metrics::Dashboard::Annotation5738 associations5739 is expected to belong to environment required: false inverse_of => metrics_dashboard_annotations5740 is expected to belong to cluster class_name => Clusters::Cluster required: false inverse_of => metrics_dashboard_annotations5741 validation5742 is expected to validate that :description cannot be empty/falsy5743 is expected to validate that :dashboard_path cannot be empty/falsy5744 is expected to validate that :starting_at cannot be empty/falsy5745 is expected to validate that the length of :dashboard_path is at most 2555746 is expected to validate that the length of :panel_xid is at most 2555747 is expected to validate that the length of :description is at most 2555748 orphaned annotation5749 is expected not to be valid5750 reports error about both missing relations5751 ending_at_after_starting_at5752 starting_at: Sat, 12 Nov 2022 00:00:00.000000000 UTC +00:00, ending_at: Sun, 13 Nov 2022 00:00:00.000000000 UTC +00:00, valid?: true, message: nil5753 is expected to equal true5754 starting_at: Sun, 13 Nov 2022 00:00:00.000000000 UTC +00:00, ending_at: nil, valid?: true, message: nil5755 is expected to equal true5756 starting_at: Sun, 13 Nov 2022 00:00:00.000000000 UTC +00:00, ending_at: Sun, 13 Nov 2022 00:00:00.000000000 UTC +00:00, valid?: true, message: nil5757 is expected to equal true5758 starting_at: Sun, 13 Nov 2022 00:00:00.000000000 UTC +00:00, ending_at: Sat, 12 Nov 2022 00:00:00.000000000 UTC +00:00, valid?: false, message: /Ending at can't be before starting_at time/5759 is expected to include /Ending at can't be before starting_at time/5760 starting_at: nil, ending_at: Sat, 12 Nov 2022 00:00:00.000000000 UTC +00:00, valid?: false, message: /Starting at can't be blank/5761 is expected to include /Starting at can't be blank/5762 starting_at: nil, ending_at: nil, valid?: false, message: /Starting at can't be blank/5763 is expected to include /Starting at can't be blank/5764 environments annotation5765 is expected to be valid5766 clusters annotation5767 is expected to be valid5768 annotation with shared ownership5769 reports error about both shared ownership5770 scopes5771 #after5772 returns only younger annotations5773 #before5774 returns only older annotations5775 #for_dashboard5776 returns annotations only for appointed dashboard5777 #ending_before5778 returns annotations only for appointed dashboard5779Gitlab::Checks::SnippetCheck5780 #validate!5781 does not raise any error5782 trying to delete the branch5783 behaves like raises and logs error5784 is expected to raise Gitlab::GitAccess::ForbiddenError with "You can not create or delete branches."5785 trying to create the branch5786 behaves like raises and logs error5787 is expected to raise Gitlab::GitAccess::ForbiddenError with "You can not create or delete branches."5788 when branch is the same as the default branch5789 allows the operation5790 when snippet has an empty repo5791 allows the operation5792 when default_branch is nil5793 behaves like raises and logs error5794 is expected to raise Gitlab::GitAccess::ForbiddenError with "You can not create or delete branches."5795ErrorTracking::IssueUpdateService5796 #execute5797 with authorized user5798 when update_issue returns success5799 returns the response5800 updates any related issue5801 clears the reactive cache5802 with related issue and resolving5803 closes the issue5804 when issue gets closed5805 creates a system note5806 returns a response with closed issue5807 when issue is already closed5808 does not call the close issue service5809 does not create system note5810 when status is not resolving5811 does not call the close issue service5812 does not create system note5813 when update_issue returns error5814 returns the error5815 with integrated error tracking5816 resolves the error and responds with expected format5817 with unauthorized user5818 returns error5819 with error tracking disabled5820 raises error5821Security::SecurityJobsFinder5822 behaves like Security::JobsFinder5823 #new5824 does not get initialized for unsupported job types5825 #execute5826 behaves like JobsFinder core functionality5827 when the pipeline has no jobs5828 is expected to be empty5829 when the pipeline has no Secure jobs5830 is expected to be empty5831 when the pipeline only has jobs without report artifacts5832 is expected to be empty5833 when the pipeline only has jobs with reports unrelated to Secure products5834 is expected to be empty5835 when the pipeline only has jobs with reports with paths similar but not identical to Secure reports5836 is expected to be empty5837 when there is more than one pipeline5838 returns jobs associated with provided pipeline5839 #execute5840 with specific secure job types5841 returns only those requested5842 with combination of security jobs and license scanning jobs5843 returns only the security jobs5844RuboCop::Cop::RSpec::HaveGitlabHttpStatus5845 # order random5846 ignore5847 code: "have_http_status"5848 does not register an offense5849 code: "have_http_status { }"5850 does not register an offense5851 code: "have_http_status(200, arg)"5852 does not register an offense5853 code: "have_gitlab_http_status"5854 does not register an offense5855 code: "have_gitlab_http_status { }"5856 does not register an offense5857 code: "have_gitlab_http_status(200, arg)"5858 does not register an offense5859 code: "expect(response.status).to eq(arg)"5860 does not register an offense5861 code: "expect(response.status).to eq(:ok)"5862 does not register an offense5863 code: "expect(response.status).to some_matcher(200)"5864 does not register an offense5865 code: "expect(response.status).not_to eq(arg)"5866 does not register an offense5867 code: "expect(response.status).not_to eq(:ok)"5868 does not register an offense5869 code: "expect(response.status).not_to some_matcher(200)"5870 does not register an offense5871 code: "expect(result.status).to eq(200)"5872 does not register an offense5873 code: "expect(result.status).not_to eq(200)"5874 does not register an offense5875 code: "response = some_assignment\nexpect(response.status).to eq(200)\n"5876 does not register an offense5877 code: "response = some_assignment\nexpect(response.status).not_to eq(200)\n"5878 does not register an offense5879 offenses and autocorrections5880 bad: "have_http_status(:ok)", good: "have_gitlab_http_status(:ok)"5881 registers an offense5882 does not register an offense5883 bad: "have_http_status(204)", good: "have_gitlab_http_status(:no_content)"5884 registers an offense5885 does not register an offense5886 bad: "have_gitlab_http_status(201)", good: "have_gitlab_http_status(:created)"5887 registers an offense5888 does not register an offense5889 bad: "have_http_status(var)", good: "have_gitlab_http_status(var)"5890 registers an offense5891 does not register an offense5892 bad: "have_http_status(:success)", good: "have_gitlab_http_status(:success)"5893 registers an offense5894 does not register an offense5895 bad: "have_http_status(:invalid)", good: "have_gitlab_http_status(:invalid)"5896 registers an offense5897 does not register an offense5898 bad: "expect(response.status).to eq(200)", good: "expect(response).to have_gitlab_http_status(:ok)"5899 registers an offense5900 does not register an offense5901 bad: "expect(response.status).not_to eq(200)", good: "expect(response).not_to have_gitlab_http_status(:ok)"5902 registers an offense5903 does not register an offense5904 partially autocorrects invalid numeric status5905 bad: "have_http_status(-1)", good: "have_gitlab_http_status(-1)"5906 registers an offense5907 does not autocorrect5908IncidentManagement::Incidents::CreateService5909 #execute5910 when incident has title and description5911 responds with success5912 creates an incident issue5913 created issue has correct attributes5914 behaves like incident issue5915 has incident as issue type5916 with default severity5917 sets the correct severity level to "unknown"5918 with severity5919 severity: "critical", incident_severity: "critical"5920 sets the correct severity level5921 severity: "high", incident_severity: "high"5922 sets the correct severity level5923 severity: "medium", incident_severity: "medium"5924 sets the correct severity level5925 severity: "low", incident_severity: "low"5926 sets the correct severity level5927 severity: "unknown", incident_severity: "unknown"5928 sets the correct severity level5929 when incident has no title5930 does not create an issue5931 responds with errors5932 result payload contains an Issue object5933 with alert5934 associates the alert with the incident5935 the alert prevents the issue from saving5936 responds with errors5937Ci::ExpirePipelineCacheService5938 #execute5939 invalidates Etag caching for project pipelines path5940 invalidates Etag caching for merge request pipelines if pipeline runs on any commit of that source branch5941 updates the cached status for a project5942 does not do N+1 queries5943 destroyed pipeline5944 clears the cache5945 when the pipeline is triggered by another pipeline5946 updates the cache of dependent pipeline5947 when the pipeline triggered another pipeline5948 updates the cache of dependent pipeline5949RuboCop::Cop::StaticTranslationDefinition5950 # order random5951 ignore5952 code: "CONSTANT_1 = __(\"a\")"5953 does not register an offense5954 code: "CONSTANT_2 = s__(\"a\")"5955 does not register an offense5956 code: "CONSTANT_3 = n__(\"a\")"5957 does not register an offense5958 code: "CONSTANT_var = _(code)"5959 does not register an offense5960 code: "CONSTANT_int = _(1)"5961 does not register an offense5962 code: "CONSTANT_none = _()"5963 does not register an offense5964 code: "class MyClass\n def self.method\n @cache ||= { hello: -> { _(\"hello\") } }\n end\nend\n"5965 does not register an offense5966 code: "class MyClass\n def self.method\n @cache ||= { hello: proc { _(\"hello\") } }\n end\nend\n"5967 does not register an offense5968 code: "class MyClass\n def method\n @cache ||= { hello: _(\"hello\") }\n end\nend\n"5969 does not register an offense5970 code: "def method\n s_('a')\nend\n"5971 does not register an offense5972 code: "class MyClass\n VALID = -> {\n s_('hi')\n }\nend\n"5973 does not register an offense5974 code: "class MyClass\n def hello\n {\n a: _('hi')\n }\n end\nend\n"5975 does not register an offense5976 code: "SomeClass = Struct.new do\n def text\n _('Some translated text')\n end\nend\n"5977 does not register an offense5978 code: "Struct.new('SomeClass') do\n def text\n _('Some translated text')\n end\nend\n"5979 does not register an offense5980 code: "class MyClass\n field :foo, title: -> { _('A title') }\nend\n"5981 does not register an offense5982 code: "included do\n put do\n _('b')\n end\nend\nclass_methods do\n expose do\n _('b')\n end\nend\n"5983 does not register an offense5984 offenses5985 code: "A = _(\"a\")\n ^^^^^^ Translation is defined in static scope. Keep translations dynamic. See https://docs.gitlab.com/ee/development/i18n/externalization.html#keep-translations-dynamic \n"5986 registers an offense5987 code: "B = s_(\"b\")\n ^^^^^^^ Translation is defined in static scope. Keep translations dynamic. See https://docs.gitlab.com/ee/development/i18n/externalization.html#keep-translations-dynamic \n"5988 registers an offense5989 code: "C = n_(\"c\")\n ^^^^^^^ Translation is defined in static scope. Keep translations dynamic. See https://docs.gitlab.com/ee/development/i18n/externalization.html#keep-translations-dynamic \n"5990 registers an offense5991 code: "A = _('a' \\\n ^^^^^^^ [...]\n 'b')\n"5992 registers an offense5993 code: "A = _(\"a\#{s}\")\n ^^^^^^^^^^ [...]\n"5994 registers an offense5995 code: "class MyClass\n def self.translations\n @cache ||= { hello: _(\"hello\") }\n ^^^^^^^^^^ Translation is defined in static scope. Keep translations dynamic. See https://docs.gitlab.com/ee/development/i18n/externalization.html#keep-translations-dynamic \n end\nend\n"5996 registers an offense5997 code: "module MyModule\n A = {\n b: {\n c: _(\"a\")\n ^^^^^^ Translation is defined in static scope. Keep translations dynamic. See https://docs.gitlab.com/ee/development/i18n/externalization.html#keep-translations-dynamic \n }\n }\nend\n"5998 registers an offense5999 code: "class MyClass\n B = [\n [\n s_(\"a\")\n ^^^^^^^ Translation is defined in static scope. Keep translations dynamic. See https://docs.gitlab.com/ee/development/i18n/externalization.html#keep-translations-dynamic \n ]\n ]\nend\n"6000 registers an offense6001 code: "class MyClass\n field :foo, title: _('A title')\n ^^^^^^^^^^^^ Translation is defined in static scope. Keep translations dynamic. See https://docs.gitlab.com/ee/development/i18n/externalization.html#keep-translations-dynamic \nend\n"6002 registers an offense6003 code: "included do\n _('a')\n ^^^^^^ Translation is defined in static scope. Keep translations dynamic. See https://docs.gitlab.com/ee/development/i18n/externalization.html#keep-translations-dynamic \nend\nprepended do\n self.var = _('a')\n ^^^^^^ Translation is defined in static scope. Keep translations dynamic. See https://docs.gitlab.com/ee/development/i18n/externalization.html#keep-translations-dynamic \nend\nclass_methods do\n _('a')\n ^^^^^^ Translation is defined in static scope. Keep translations dynamic. See https://docs.gitlab.com/ee/development/i18n/externalization.html#keep-translations-dynamic \nend\n"6004 registers an offense6005Gitlab::Middleware::HandleMalformedStrings6006 does not modify the env6007 in the URL6008 rejects null bytes6009 rejects escaped null bytes6010 rejects malformed strings6011 rejects escaped malformed strings6012 in authorization headers6013 does not reject correct non-basic-auth tokens6014 does not reject correct encoded password with special characters6015 behaves like rejecting invalid input6016 rejects problematic input in the password6017 rejects problematic input in the username6018 rejects problematic input in non-basic-auth tokens6019 behaves like rejecting invalid input6020 rejects problematic input in the password6021 rejects problematic input in the username6022 rejects problematic input in non-basic-auth tokens6023 behaves like rejecting invalid input6024 rejects problematic input in the password6025 rejects problematic input in the username6026 rejects problematic input in non-basic-auth tokens6027 in params6028 with null byte6029 gives up and does not reject too deeply nested params6030 behaves like checks params6031 rejects bad params in a top level param6032 rejects bad params for hashes with strings6033 rejects bad params for arrays with strings6034 rejects bad params for arrays containing hashes with string values6035 with malformed strings6036 behaves like checks params6037 rejects bad params in a top level param6038 rejects bad params for hashes with strings6039 rejects bad params for arrays with strings6040 rejects bad params for arrays containing hashes with string values6041 without problematic input6042 does not error for strings6043 does not error with no params6044CustomerRelations::Organization6045 associations6046 is expected to belong to group required: false6047 validations6048 is expected to validate that :group cannot be empty/falsy6049 is expected to validate that :name cannot be empty/falsy6050 is expected to validate that :name is case-insensitively unique within the scope of :group_id6051 is expected to validate that the length of :name is at most 2556052 is expected to validate that the length of :description is at most 10246053 #root_group6054 when root group6055 is expected to be valid6056 when subgroup6057 is expected to be invalid6058 #name6059 strips name6060 #find_by_name6061 strips name6062 #self.move_to_root_group6063 moves organizations with unique names and deletes the rest6064 updates contact.organization_id for dupes and leaves the rest untouched6065 .search6066 when search term is empty6067 returns all group organizations6068 when search term is not empty6069 when searching for name6070 is expected to contain exactly #<CustomerRelations::Organization id: 17, group_id: 2630, created_at: "2022-11-14 12:56:22.907541033 ...56:22.907541033 +0000", state: "active", default_rate: nil, name: "ABC_st", description: [FILTERED]>6071 when searching for description6072 is expected to contain exactly #<CustomerRelations::Organization id: 16, group_id: 2630, created_at: "2022-11-14 12:56:22.902412273 ...:56:22.902412273 +0000", state: "inactive", default_rate: nil, name: "DEF", description: [FILTERED]>6073 when searching for name and description6074 is expected to contain exactly #<CustomerRelations::Organization id: 16, group_id: 2630, created_at: "2022-11-14 12:56:22.902412273 ...:56:22.902412273 +0000", state: "inactive", default_rate: nil, name: "DEF", description: [FILTERED]> and #<CustomerRelations::Organization id: 17, group_id: 2630, created_at: "2022-11-14 12:56:22.907541033 ...56:22.907541033 +0000", state: "active", default_rate: nil, name: "ABC_st", description: [FILTERED]>6075 .search_by_state6076 when searching for organizations state6077 returns only inactive organizations6078 returns only active organizations6079 .counts_by_state6080 returns correct organization counts6081 returns 0 with no results6082 sorting6083 .sort_by_name6084 sorts them by name in ascendent order6085 .sort_by_field6086 sorts them by description in descending order6087Users::RefreshAuthorizedProjectsService6088 #execute6089 refreshes the authorizations using a lease6090 callbacks6091 incorrect_auth_found_callback callback6092 is called6093 missing_auth_found_callback callback6094 is called6095 #execute_without_lease6096 updates the authorized projects of the user6097 sets the access level of a project to the highest available level6098 returns a User6099 #update_authorizations6100 removes authorizations that should be removed6101 inserts authorizations that should be added6102 logs the details of the refresh6103 when there are no rows to add and remove6104 does not change authorizations6105Gitlab::Auth::UniqueIpsLimiter6106 #count_unique_ips6107 resets count after specified time window6108 non unique IPs6109 properly counts them6110 unique IPs6111 properly counts them6112 #limit_user!6113 allows user authenticating from the same ip6114 blocks user authenticating from two distinct ips6115 allow 2 unique ips6116 blocks user trying to login from third ip6117MergeRequests::Mergeability::RunChecksService6118 #execute6119 when every check is skipped6120 is still a success6121 when a check is skipped6122 does not execute the check6123 when a check is not skipped6124 when the check is cacheable6125 when the check is cached6126 returns the cached result6127 when the check is not cached6128 writes and returns the result6129 when check is not cacheable6130 does not call the results store6131 #success?6132 when the execute method has been executed6133 when all the checks succeed6134 returns true6135 when one check fails6136 returns false6137 when execute has not been exectued6138 raises an error6139 #failure_reason6140 when the execute method has been executed6141 when all the checks succeed6142 returns nil6143 when one check fails6144 returns the open reason6145 when execute has not been exectued6146 raises an error6147Resolvers::Crm::ContactsResolver6148 #resolve6149 with unauthorized user6150 does not rise an error and returns no contacts6151 with authorized user6152 does not rise an error and returns all contacts in the correct order6153 without parent6154 returns no contacts6155 with a group parent6156 when no filter is provided6157 returns all the contacts in the default order6158 when a sort is provided6159 returns all the contacts in the correct order6160 when a sort is provided needing offset_pagination6161 returns all the contacts in the correct order6162 when filtering for all states6163 returns all the contacts in the correct order6164 when search term is provided6165 returns the correct contacts6166 when state is provided6167 returns the correct contacts6168 when ids are provided6169 returns the correct contacts6170Ci::DagPipelineEntity6171 #as_json6172 when pipeline is empty6173 contains stages6174 behaves like matches schema6175 matches schema6176 when pipeline has jobs6177 contains 3 stages6178 behaves like matches schema6179 matches schema6180 when pipeline has parallel jobs, DAG needs and GenericCommitStatus6181 performs the smallest number of queries6182 contains all the data6183 behaves like matches schema6184 matches schema6185Gitlab::OmniauthInitializer6186 .arguments_for6187 when there are no args at all6188 returns an empty array6189 when there is an app_id and an app_secret6190 includes both of them, in positional order6191 when there is an app_id and an app_secret, and an array of args6192 concatenates the args on the end6193 when there is an app_id and an app_secret, and an array of args, and default values6194 concatenates the args on the end6195 when there is an app_id and an app_secret, and a hash of args6196 concatenates the args on the end6197 when there is an app_id and an app_secret, and a hash of args, and default arguments6198 concatenates the args on the end6199 when there is an app_id and an app_secret, no args, and default values6200 concatenates the args on the end6201 when there are args, of an unsupported type6202 when there are default arguments6203 tracks a configuration error6204 when there are no default arguments6205 tracks a configuration error6206 #execute6207 configures providers from array6208 allows "args" array for app_id and app_secret6209 passes app_id and app_secret as additional arguments6210 passes "args" hash as symbolized hash argument6211 normalizes a String strategy_class6212 allows a class to be specified in strategy_class6213 throws an error for an invalid strategy_class6214 configures fail_with_empty_uid for shibboleth6215 configures remote_sign_out_handler proc for authentiq6216 configures on_single_sign_out proc for cas36217 configures defaults for google_oauth26218 configures defaults for gitlab6219 configures defaults for gitlab, when arguments are not provided6220 configures defaults for gitlab, when array arguments are provided6221 tracks a configuration error if the arguments are neither a hash nor an array6222 .full_host6223 is expected to eq "http://localhost/test"6224Gitlab::Ci::Config::External::File::Remote6225 #matching?6226 when a remote is specified6227 returns true6228 with a missing remote6229 returns false6230 with a missing remote key6231 returns false6232 #valid?6233 when is a valid remote url6234 is expected to be truthy6235 with an irregular url6236 is expected to be falsy6237 with a timeout6238 is expected to be falsy6239 when is not a yaml file6240 is expected to be falsy6241 with an internal url6242 is expected to be falsy6243 #content6244 with a valid remote file6245 returns the content of the file6246 with a timeout6247 is falsy6248 with an invalid remote url6249 is nil6250 with an internal url6251 is nil6252 #error_message6253 when remote file location is not valid6254 returns an error message describing invalid address6255 when timeout error has been raised6256 returns error message about a timeout6257 when HTTP error has been raised6258 returns error message about a HTTP error6259 when response has 404 status6260 returns error message about a timeout6261 when the URL is blocked6262 includes details about blocked URL6263 #expand_context6264 drops all parameters6265 #metadata6266 is expected to eq {:blob=>nil, :context_project=>nil, :context_sha=>"12345", :extra=>{}, :location=>"https://gitlab.com....yml", :raw=>"https://gitlab.com/gitlab-org/gitlab-foss/blob/1234/.xxxxxxxxxxx.yml", :type=>:remote}6267 #to_hash6268 with a valid remote file6269 returns the content as a hash6270 when it has `include` with rules:exists6271 returns the content as a hash6272Gitlab::Diff::FileCollection::Compare6273 behaves like diff statistics6274 when include_stats is true6275 Repository#diff_stats is called6276 Gitlab::Diff::File is initialized with diff stats6277 when should not request diff stats6278 Repository#diff_stats is not called6279 behaves like sortable diff files6280 #raw_diff_files6281 when sorted is false (default)6282 returns unsorted diff files6283 when sorted is true6284 returns sorted diff files6285 #cache_key6286 returns with head and base6287Pages::LookupPath6288 #project_id6289 delegates to Project#id6290 #access_control6291 delegates to Project#private_pages?6292 #https_only6293 when no domain provided6294 delegates to Project#pages_https_only?6295 when there is domain provided6296 takes into account the https setting of the domain6297 #source6298 returns nil6299 when there is pages deployment6300 uses deployment from object storage6301 when deployment is in the local storage6302 uses file protocol6303 when deployment were created during migration6304 uses deployment from object storage6305 #prefix6306 returns "/" for pages group root projects6307 returns the project full path with the provided prefix removed6308Projects::ImportExport::ProjectExportPresenter6309 #description6310 override_description not provided6311 keeps original description6312 override_description provided6313 overrides description6314 #as_json6315 override_description not provided6316 keeps original description6317 override_description provided6318 overrides description6319 #protected_branches6320 returns the project exported protected branches6321 #project_members6322 does not export group members if it has no permission6323 does not export group members as maintainer6324 exports group members as group owner6325 as admin6326 when admin mode is enabled6327 exports group members as admin6328 exports group members as project members6329 when admin mode is disabled6330 does not export group members6331Gitlab::Metrics::Samplers::RubySampler6332 behaves like metrics sampler6333 when sampling interval is passed explicitly6334 is expected to eq 426335 when sampling interval is passed through the environment6336 is expected to eq 426337 when no sampling interval is passed anywhere6338 uses the hardcoded default6339 #start6340 calls the sample method on the sampler thread6341 with warmup set to true6342 calls the sample method first on the caller thread6343 #safe_sample6344 calls #sample once6345 when sampling fails with error6346 recovers from errors6347 with logger6348 logs errors6349 #initialize6350 sets process_start_time_seconds6351 when not setting a prefix6352 does not prepend metrics with that prefix6353 when using custom prefix6354 prepends metrics with that prefix6355 #sample6356 adds a metric containing the process total resident memory bytes6357 adds a metric containing the process anonymous resident memory bytes6358 adds a metric containing the process file backed resident memory bytes6359 adds a metric containing the process unique and proportional memory bytes6360 adds a metric containing the amount of open file descriptors6361 adds a metric containing the process total cpu time6362 adds a metric containing the process max file descriptors6363 clears any GC profiles6364 when USS+PSS sampling is disabled via environment6365 does not sample USS or PSS6366 #sample_gc6367 re-enables GC::Profiler if needed6368 observes GC cycles time6369 adds a metric containing garbage collection statistics6370 adds a heap fragmentation metric6371SystemNotes::CommitService6372 #add_commits6373 behaves like a system note6374 has the correct attributes6375 note body6376 comparison diff link line6377 adds the comparison text6378 without existing commits6379 adds a message header6380 adds a message for each commit6381 summary line for existing commits6382 with one existing commit6383 includes the existing commit6384 with multiple existing commits6385 with oldrev6386 includes a commit range and count6387 without oldrev6388 includes a commit range and count6389 on a fork6390 includes the project namespace6391 #tag_commit6392 sets the note text6393 behaves like a system note6394 has the correct attributes6395 #new_commit_summary6396 escapes HTML titles6397Users::ActivityService6398 #execute6399 when last activity is nil6400 updates last_activity_on for the user6401 when last activity is in the past6402 updates last_activity_on for the user6403 tries to obtain ExclusiveLease6404 tracks RedisHLL event6405 when a bad object is passed6406 does not record activity6407 when last activity is today6408 does not update last_activity_on6409 does not try to obtain ExclusiveLease6410 when in GitLab read-only instance6411 does not update last_activity_on6412 when a lease could not be obtained6413 does not update last_activity_on6414 with DB Load Balancing6415 when last activity is in the past6416 database load balancing is configured6417 does not stick to primary6418 database load balancing is not configured6419 updates user without error6420Gitlab::Kubernetes::RolloutStatus6421 #deployments6422 stores the deployments6423 #instances6424 for stable track6425 stores the union of deployment instances6426 for stable track6427 sorts stable instances last6428 #completion6429 when all instances are finished6430 is expected to eq 1006431 when half of the instances are finished6432 is expected to eq 506433 with one deployment6434 sets the completion percentage when a deployment has more running pods than desired6435 with two deployments on different tracks6436 sets the completion percentage when all pods are complete6437 with two deployments that both have track set to "stable"6438 sets the completion percentage when all pods are complete6439 sets the completion percentage when no pods are complete6440 sets the completion percentage when a quarter of the pods are complete6441 with two deployments, one with track set to "stable" and one with no track label6442 sets the completion percentage when all pods are complete6443 sets the completion percentage when no pods are complete6444 sets the completion percentage when a third of the pods are complete6445 #complete?6446 when all instances are finished6447 is expected to be truthy6448 when half of the instances are finished6449 is expected to be falsy6450 #found?6451 when the specs are passed6452 is expected to be found6453 when list of specs is empty6454 is expected not to be found6455 .loading6456 is expected to be loading6457 #not_found?6458 when the specs are passed6459 is expected not to be not found6460 when list of specs is empty6461 is expected to be not found6462 #canary_ingress_exists?6463 when canary ingress exists6464 returns true6465 when canary ingress does not exist6466 returns false6467Resolvers::ProjectPackagesResolver6468 #resolve6469 behaves like group and projects packages resolver6470 without sort6471 returns the proper packages6472 with sorting and filtering6473 CREATED_DESC6474 is expected to eq [#<Packages::Package id: 21, project_id: 846, created_at: "2022-11-14 11:57:03.436489921 +0000", upda...sion: "1.0.0", package_type: "conan", creator_id: 1456, status: "default", last_downloaded_at: nil>]6475 NAME_DESC6476 is expected to eq [#<Packages::Package id: 21, project_id: 846, created_at: "2022-11-14 11:57:03.436489921 +0000", upda...sion: "1.0.0", package_type: "conan", creator_id: 1456, status: "default", last_downloaded_at: nil>]6477 VERSION_DESC6478 is expected to eq [#<Packages::Package id: 21, project_id: 846, created_at: "2022-11-14 11:57:03.436489921 +0000", upda...sion: "1.0.0", package_type: "conan", creator_id: 1456, status: "default", last_downloaded_at: nil>]6479 TYPE_ASC6480 is expected to eq [#<Packages::Package id: 21, project_id: 846, created_at: "2022-11-14 11:57:03.436489921 +0000", upda...sion: "1.0.0", package_type: "conan", creator_id: 1456, status: "default", last_downloaded_at: nil>]6481 CREATED_ASC6482 is expected to eq [#<Packages::Package id: 19, project_id: 846, created_at: "2022-11-13 12:57:03.032704277 +0000", upda...ersion: "2.0.0", package_type: "maven", creator_id: 1456, status: "error", last_downloaded_at: nil>]6483 NAME_ASC6484 is expected to eq [#<Packages::Package id: 19, project_id: 846, created_at: "2022-11-13 12:57:03.032704277 +0000", upda...ersion: "2.0.0", package_type: "maven", creator_id: 1456, status: "error", last_downloaded_at: nil>]6485 VERSION_ASC6486 is expected to eq [#<Packages::Package id: 19, project_id: 846, created_at: "2022-11-13 12:57:03.032704277 +0000", upda...ersion: "2.0.0", package_type: "maven", creator_id: 1456, status: "error", last_downloaded_at: nil>]6487 TYPE_DESC6488 is expected to eq [#<Packages::Package id: 19, project_id: 846, created_at: "2022-11-13 12:57:03.032704277 +0000", upda...ersion: "2.0.0", package_type: "maven", creator_id: 1456, status: "error", last_downloaded_at: nil>]6489 filter by package_name6490 is expected to eq [#<Packages::Package id: 19, project_id: 846, created_at: "2022-11-13 12:57:03.032704277 +0000", upda...sion: "1.0.0", package_type: "conan", creator_id: 1456, status: "default", last_downloaded_at: nil>]6491 filter by package_type6492 is expected to eq [#<Packages::Package id: 19, project_id: 846, created_at: "2022-11-13 12:57:03.032704277 +0000", upda...sion: "1.0.0", package_type: "conan", creator_id: 1456, status: "default", last_downloaded_at: nil>]6493 filter by status6494 is expected to eq [#<Packages::Package id: 21, project_id: 846, created_at: "2022-11-14 11:57:03.436489921 +0000", upda...ersion: "2.0.0", package_type: "maven", creator_id: 1456, status: "error", last_downloaded_at: nil>]6495 include_versionless6496 is expected to include #<Packages::Package id: 23, project_id: 846, created_at: "2022-11-14 12:56:03.750582518 +0000", updat..., version: nil, package_type: "maven", creator_id: 1456, status: "default", last_downloaded_at: nil>6497Jobs/SAST-IaC.gitlab-ci.yml6498 the created pipeline6499 on feature branch6500 creates the kics-iac-sast job6501 on merge request6502 has no jobs6503 SAST_DISABLED is set6504 on default branch6505 has no jobs6506 on feature branch6507 has no jobs6508ClustersFinder6509 #execute6510 when scope is all6511 is expected to contain exactly #<Clusters::Cluster id: 3, user_id: 1463, provider_type: "gcp", platform_type: "kubernetes", created_...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3> and #<Clusters::Cluster id: 6, user_id: 1466, provider_type: "gcp", platform_type: "kubernetes", created_...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>6512 when scope is active6513 is expected to contain exactly #<Clusters::Cluster id: 9, user_id: 1470, provider_type: "gcp", platform_type: "kubernetes", created_...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>6514 when scope is inactive6515 is expected to contain exactly #<Clusters::Cluster id: 12, user_id: 1474, provider_type: "gcp", platform_type: "kubernetes", created...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>6516API::Helpers::PackagesManagerClientsHelpers6517 #find_job_from_http_basic_auth6518 behaves like valid auth header6519 with a valid Authorization header6520 is expected to eq #<Ci::Build status: "running", finished_at: nil, created_at: "2022-11-14 08:50:29.000000000 +0000", u...rocessed: false, scheduling_type: "stage", id: 238, stage_id: 128, partition_id: 100, tag_list: nil>6521 with an unknown password6522 is expected to equal nil6523 behaves like invalid auth header6524 with an invalid Authorization header6525 is expected to equal nil6526 when the job is not running6527 behaves like valid auth header6528 with a valid Authorization header6529 is expected to eq nil6530 with an unknown password6531 is expected to equal nil6532 #find_deploy_token_from_http_basic_auth6533 behaves like valid auth header6534 with a valid Authorization header6535 is expected to eq #<DeployToken id: 9, revoked: false, read_repository: true, read_registry: true, expires_at: "2022-11...write_registry: false, read_package_registry: false, write_package_registry: false, creator_id: nil>6536 with an unknown password6537 is expected to equal nil6538 behaves like invalid auth header6539 with an invalid Authorization header6540 is expected to equal nil6541UsersStatistics6542 scopes6543 .order_created_at_desc6544 returns the entries ordered by created at descending6545 .latest6546 returns the latest entry6547 .create_current_stats!6548 when successful6549 creates an entry with the current statistics values6550 when unsuccessful6551 raises an ActiveRecord::RecordInvalid exception6552 #active6553 sums users statistics values without the value for blocked6554 #total6555 sums all users statistics values6556Gitlab::Database::Partitioning6557 .register_models6558 ensure that the registered models have partitioning strategy6559 fails when partitioning_strategy is not specified for the model6560 .sync_partitions_ignore_db_error6561 calls sync_partitions6562 when ActiveRecord::ActiveRecordError is raised6563 ignores it6564 when PG::Error is raised6565 ignores it6566 when DISABLE_POSTGRES_PARTITION_CREATION_ON_STARTUP is set6567 does not call sync_partitions6568 .sync_partitions6569 manages partitions for each given model6570 with multiple databases6571 creates partitions in each database6572 when no partitioned models are given6573 manages partitions for each registered model6574 when only a specific database is requested6575 manages partitions for models for the given database6576 .report_metrics6577 when no partitioned models are given6578 reports metrics for each registered model6579 when partitioned models are given6580 reports metrics for each given model6581 .drop_detached_partitions6582 drops detached partitions for each database6583SnippetsHelper6584 #embedded_raw_snippet_button6585 for Personal Snippets6586 returns view raw button of embedded snippets6587 for Project Snippets6588 returns view raw button of embedded snippets6589 #embedded_snippet_download_button6590 for Personal Snippets6591 returns download button of embedded snippets6592 for Project Snippets6593 returns download button of embedded snippets6594 #embedded_snippet_copy_button6595 for Personal Snippets6596 returns copy button of embedded snippets6597 for Project Snippets6598 returns copy button of embedded snippets6599 #snippet_badge6600 when snippet is private6601 returns the snippet badge6602 when snippet is public6603 does not return anything6604 when snippet is internal6605 does not return anything6606 #snippet_report_abuse_path6607 returns false if the user cannot submit the snippet as spam6608 returns true if the user can submit the snippet as spam6609Environments::AutoDeleteCronWorker6610 #perform6611 deletes the environment6612 when environment is not stopped6613 does not delete the environment6614 when auto_delete_at is null6615 does not delete the environment6616 with multiple deletable environments6617 deletes all deletable environments6618 when loop reached loop limit6619 deletes only one deletable environment6620 when batch size is less than the number of environments6621 deletes all deletable environments6622 with multiple deployments6623 deletes the deployment records and refs6624 when loop reached timeout6625 does not delete the environment6626 with idempotent flag6627 is labeled as idempotent6628 performs multiple times sequentially without raising an exception6629 deletes the environment6630EventPresenter6631 #resource_parent_name6632 with group event6633 is expected to eq "group455"6634 with project label6635 is expected to eq "group455 / project1001"6636 #target_link_options6637 with group event6638 is expected to eq [#<Group id:2806 @group455>, #<Milestone id:15 group455/project1001%"My title 274">]6639 with project label6640 is expected to eq [#<Project id:859 group455/project1001>>, #<Milestone id:15 group455/project1001%"My title 274">]6641 #target_type_name6642 returns design for a design event6643 returns project for a project event6644 returns milestone for a milestone event6645 returns the issue_type for issue events6646 returns the issue_type for work item events6647 #note_target_type_name6648 returns design for an event on a comment on a design6649 returns nil for an event without a target6650 returns issue for an issue comment event6651BulkImportWorker6652 #perform6653 when no bulk import is found6654 does nothing6655 when bulk import is finished6656 does nothing6657 when bulk import is failed6658 does nothing6659 when all entities are processed6660 marks bulk import as finished6661 when all entities are failed6662 marks bulk import as failed6663 when bulk import is created6664 marks bulk import as started6665 creates all the required pipeline trackers6666 when there are created entities to process6667 marks all entities as started, enqueues EntityWorker, ExportRequestWorker and reenqueues6668 when there are project entities to process6669 enqueues ExportRequestWorker6670 when exception occurs6671 tracks the exception & marks import as failed6672layouts/simple_registration6673 behaves like a layout which reflects the application theme setting6674 as a themed layout6675 when no theme is explicitly selected6676 renders with the default theme6677 when user is authenticated & has selected a specific theme6678 chosen_theme: #<struct Gitlab::Themes::Theme id=1, name="Indigo", css_class="ui-indigo", css_filename="theme_indigo", primary_color="#292961">6679 renders with the Indigo theme6680 chosen_theme: #<struct Gitlab::Themes::Theme id=6, name="Light Indigo", css_class="ui-light-indigo", css_filename="theme_light_indigo", primary_color="#4b4ba3">6681 renders with the Light Indigo theme6682 chosen_theme: #<struct Gitlab::Themes::Theme id=4, name="Blue", css_class="ui-blue", css_filename="theme_blue", primary_color="#1a3652">6683 renders with the Blue theme6684 chosen_theme: #<struct Gitlab::Themes::Theme id=7, name="Light Blue", css_class="ui-light-blue", css_filename="theme_light_blue", primary_color="#2261a1">6685 renders with the Light Blue theme6686 chosen_theme: #<struct Gitlab::Themes::Theme id=5, name="Green", css_class="ui-green", css_filename="theme_green", primary_color="#0d4524">6687 renders with the Green theme6688 chosen_theme: #<struct Gitlab::Themes::Theme id=8, name="Light Green", css_class="ui-light-green", css_filename="theme_light_green", primary_color="#156b39">6689 renders with the Light Green theme6690 chosen_theme: #<struct Gitlab::Themes::Theme id=9, name="Red", css_class="ui-red", css_filename="theme_red", primary_color="#691a16">6691 renders with the Red theme6692 chosen_theme: #<struct Gitlab::Themes::Theme id=10, name="Light Red", css_class="ui-light-red", css_filename="theme_light_red", primary_color="#a62e21">6693 renders with the Light Red theme6694 chosen_theme: #<struct Gitlab::Themes::Theme id=2, name="Gray", css_class="ui-gray", css_filename="theme_gray", primary_color="#303030">6695 renders with the Gray theme6696 chosen_theme: #<struct Gitlab::Themes::Theme id=3, name="Light Gray", css_class="ui-light-gray", css_filename="theme_light_gray", primary_color="#666">6697 renders with the Light Gray theme6698 chosen_theme: #<struct Gitlab::Themes::Theme id=11, name="Dark Mode (alpha)", css_class="gl-dark", css_filename=nil, primary_color="#303030">6699 renders with the Dark Mode (alpha) theme6700Gitlab::GithubImport::Importer::DiffNoteImporter6701 #execute6702 when the merge request no longer exists6703 does not import anything6704 when the merge request exists6705 behaves like diff notes without suggestion6706 imports the note as legacy diff note6707 adds a "created by:" note when the author cannot be found6708 does not import the note when a foreign key error is raised6709 when the note has suggestions6710 imports the note as diff note6711 when the note diff file creation fails with DiffNoteCreationError due to outdated suggestion6712 falls back to the LegacyDiffNote6713 when the note diff file creation fails with NoteDiffFileCreationError6714 falls back to the LegacyDiffNote6715Clusters::Applications::ActivateIntegrationWorker#perform6716 when cluster exists6717 prometheus integration6718 with cluster type: group6719 ensures Prometheus integration is activated6720 with cluster type: project6721 ensures Prometheus integration is activated6722 with cluster type: instance6723 ensures Prometheus integration is activated6724 when cluster does not exist6725 does not raise Record Not Found error6726Gitlab::GithubImport::Importer::Events::ChangedLabel6727 with Issue6728 when importing a labeled event6729 behaves like new event6730 creates a new label event6731 when importing an unlabeled event6732 behaves like new event6733 creates a new label event6734 with MergeRequest6735 when importing a labeled event6736 behaves like new event6737 creates a new label event6738 when importing an unlabeled event6739 behaves like new event6740 creates a new label event6741Clusters::Agents::DeleteExpiredEventsService6742 #execute6743 does not delete events if the limit has not been reached6744 there are more events than the limit6745 removes events to remain at the limit, keeping the most recent6746Metrics::UsersStarredDashboard6747 associations6748 is expected to belong to project required: false inverse_of => metrics_users_starred_dashboards6749 is expected to belong to user required: false inverse_of => metrics_users_starred_dashboards6750 validation6751 is expected to validate that :user_id cannot be empty/falsy6752 is expected to validate that :project_id cannot be empty/falsy6753 is expected to validate that :dashboard_path cannot be empty/falsy6754 is expected to validate that the length of :dashboard_path is at most 2556755 is expected to validate that :dashboard_path is case-sensitively unique within the scope of :user_id and :project_id6756 scopes6757 #for_project6758 selects only starred dashboards belonging to project6759 #for_project_dashboard6760 selects only starred dashboards belonging to project with given dashboard path6761Gitlab::Diff::FileCollection::MergeRequestDiffBase6762 #overflow?6763 when it is not overflown6764 returns false6765 when it is overflown6766 returns true6767 #cache_key6768 returns cache_key from merge_request_diff6769Gitlab::Auth::OAuth::AuthHash6770 defaults6771 is expected to eq "ldap"6772 is expected to eql "CN=Onur Küçük,OU=Test,DC=example,DC=net"6773 is expected to eql "onur.küçük_ABC-123@example.net"6774 is expected to eql "oküçük"6775 is expected to eql "Onur Küçük"6776 is expected not to be empty6777 is expected to eq "some locality, some country"6778 email not provided6779 generates a temp email6780 username not provided6781 takes the first part of the email as username6782 name not provided6783 concats first and lastname as the name6784 custom username field provided6785 uses the custom field for the username6786 uses the default claim for the username when the custom claim is not found6787 uses the default claim for the username when the custom claim is empty6788 uses the default claim for the username when the custom claim is nil6789 auth_hash constructed with ASCII-8BIT encoding6790 forces utf8 encoding on uid6791 forces utf8 encoding on provider6792 forces utf8 encoding on name6793 forces utf8 encoding on username6794 forces utf8 encoding on email6795 forces utf8 encoding on password6796Packages::BuildInfo6797 relationships6798 is expected to belong to package required: false6799 is expected to belong to pipeline required: false6800 with some build infos6801 .pluck_pipeline_ids6802 is expected to eq [134, 135, 136]6803 .without_empty_pipelines6804 is expected to contain exactly #<Packages::BuildInfo id: 1, package_id: 24, pipeline_id: 134>, #<Packages::BuildInfo id: 2, package_id: 24, pipeline_id: 135>, and #<Packages::BuildInfo id: 3, package_id: 24, pipeline_id: 136>6805 .order_by_pipeline_id asc6806 is expected to eq [#<Packages::BuildInfo id: 1, package_id: 24, pipeline_id: 134>, #<Packages::BuildInfo id: 2, package_id: 24, pipeline_id: 135>, #<Packages::BuildInfo id: 3, package_id: 24, pipeline_id: 136>]6807 .order_by_pipeline_id desc6808 is expected to eq [#<Packages::BuildInfo id: 3, package_id: 24, pipeline_id: 136>, #<Packages::BuildInfo id: 2, package_id: 24, pipeline_id: 135>, #<Packages::BuildInfo id: 1, package_id: 24, pipeline_id: 134>]6809 .with_pipeline_id_less_than6810 is expected to contain exactly #<Packages::BuildInfo id: 1, package_id: 24, pipeline_id: 134>6811 .with_pipeline_id_greater_than6812 is expected to contain exactly #<Packages::BuildInfo id: 3, package_id: 24, pipeline_id: 136>6813Featurable6814 .set_available_features6815 is expected to contain exactly :feature1, :feature2, and :feature36816 #*_enabled?6817 is expected to be falsey6818 is expected to be truthy6819 .quoted_access_level_column6820 returns the table name and quoted column name for a feature6821 .access_level_attribute6822 is expected to eq :feature1_access_level6823 raises error for unspecified feature6824 #access_level6825 returns access level6826 #feature_available?6827 when features are disabled6828 returns false6829 when features are enabled only for team members6830 when user is not present6831 returns false6832 when user can read all resources6833 returns true6834 when user cannot read all resources6835 raises NotImplementedError exception6836 when feature is enabled for everyone6837 returns true6838RuboCop::Cop::Gitlab::FeatureAvailableUsage6839 # order random6840 no arguments given6841 does not flag the use of Gitlab::Sourcegraph.feature_available? with no arguments6842 two arguments given6843 does not flag the use with an OSS project feature6844 does not flag the use with an EE project feature6845 flags the use with a dynamic feature as a method call with two args6846 one argument given6847 does not flag the use of License.feature_available?6848 flags the use with a dynamic feature as nil6849 flags the use with an OSS project feature6850 flags the use with a feature that is not a project feature6851Packages::Debian::GroupComponent6852 behaves like Debian Distribution Component6853 relationships6854 is expected to belong to distribution class_name => Packages::Debian::GroupDistribution required: false inverse_of => components6855 is expected to have many files class_name => Packages::Debian::GroupComponentFile inverse_of => component6856 validations6857 #distribution6858 is expected to validate that :distribution cannot be empty/falsy6859 #name6860 is expected to validate that :name cannot be empty/falsy6861 is expected to allow :name to be ‹"main"›6862 is expected to allow :name to be ‹"non-free"›6863 is expected to allow :name to be ‹"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"›6864 is expected not to allow :name to be ‹"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"›6865 is expected not to allow :name to be ‹"non/free"›6866 is expected not to allow :name to be ‹"hé"›6867 scopes6868 .ordered_by_name6869 sorts by name6870 .with_distribution6871 does not return other distributions6872 .with_name6873 does not return other distributions6874Groups::GroupLinks::DestroyService#execute6875 when authorizing by user6876 single link6877 destroys the link6878 with skip_group_share_unlink_auth_refresh feature flag disabled6879 revokes project authorization6880 with skip_group_share_unlink_auth_refresh feature flag enabled6881 maintains project authorization6882 multiple links6883 with skip_group_share_unlink_auth_refresh feature flag disabled6884 updates project authorization once per group6885 with skip_group_share_unlink_auth_refresh feature flag enabled6886 does not update project authorization once per group6887 when skipping authorization6888 with provided group and owner6889 destroys the link6890 without providing group or owner6891 destroys the link6892Gitlab::EndpointAttributes6893 is nil when nothing was defined6894 returns the expected category6895 falls back to default when urgency was not defined6896 returns the expected urgency6897 returns feature category for an implied action if not specify actions6898 returns expected duration for an implied action if not specify actions6899 returns the expected category for categories defined in subclasses6900 falls back to superclass's feature category6901 returns the expected urgency for categories defined in subclasses6902 falls back to superclass's expected duration6903 raises an error when defining for the controller and for individual actions6904 raises an error when multiple calls define the same action6905 raises an error when multiple calls define the same action6906 does not raise an error when multiple calls define the same action and configs6907 raises an error if the expected duration is not supported6908SystemHookUrlValidator6909 #validate6910 with no options6911 allows http,https schemes by default6912 checks that the url structure is valid6913 with schemes6914 allows urls with the defined schemes6915 add error if the url scheme does not match the selected ones6916 by default6917 blocks urls pointing to localhost6918 blocks urls pointing to the local network6919 when local requests are allowed6920 does not block urls pointing to localhost6921 does not block urls pointing to the local network6922layouts/_flash6923 default6924 does not render flash container no margin class6925 closable flash messages6926 flash_type: "alert"6927 shows a close button6928 flash_type: "notice"6929 shows a close button6930 flash_type: "success"6931 shows a close button6932 non closable flash messages6933 flash_type: "error"6934 does not show a close button6935 flash_type: "message"6936 does not show a close button6937 flash_type: "toast"6938 does not show a close button6939 flash_type: "warning"6940 does not show a close button6941 with flash_class in locals6942 adds class to flash-container6943Projects::RefreshBuildArtifactsSizeStatisticsService6944 #execute6945 resets the build artifacts size stats6946 increments the counter attribute by the total size of the current batch of artifacts6947 updates the last_job_artifact_id to the ID of the last artifact from the batch6948 updates the last_job_artifact_id to the ID of the last artifact from the project6949 requeues the refresh job6950 when an error happens after the recalculation has started6951 keeps the last_job_artifact_id unchanged6952 keeps the last_job_artifact_id_on_refresh_start unchanged6953 keeps the state of the refresh record at running6954 when there are no more artifacts to recalculate for the next refresh job6955 deletes the refresh record6956Gitlab::Ci::Reports::Sbom::Component6957 has correct attributes6958 #ingestible?6959 when component_type is invalid6960 is expected to equal false6961 when purl_type is invalid6962 is expected to equal false6963 when component_type is valid6964 component_type: "library"6965 is expected to equal true6966 when purl_type is valid6967 purl_type: "composer"6968 is expected to equal true6969 purl_type: "conan"6970 is expected to equal true6971 purl_type: "gem"6972 is expected to equal true6973 purl_type: "golang"6974 is expected to equal true6975 purl_type: "maven"6976 is expected to equal true6977 purl_type: "npm"6978 is expected to equal true6979 purl_type: "nuget"6980 is expected to equal true6981 purl_type: "pypi"6982 is expected to equal true6983 when there is no purl6984 is expected to equal true6985Notes::ResolveService6986 #execute6987 resolves the note6988 sends notifications if all discussions are resolved6989Ci::JobArtifacts::DeleteService6990 # order random6991 #execute6992 is successful6993 deletes erasable artifacts6994 does not delete trace6995 when project is undergoing stats refresh6996 logs a warning6997 returns an error response with the correct message and reason6998 when an error response is received from DestroyBatchService6999 returns an error response with the correct message7000Gitlab::SidekiqCluster7001 .start7002 starts Sidekiq with the given queues, environment and options7003 starts Sidekiq with the given queues and sensible default options7004 .start_sidekiq7005 starts a Sidekiq process7006 handles duplicate queue names7007 runs the sidekiq process in a new process group7008 .count_by_queue7009 tallies the queue counts7010 .concurrency7011 queue_count: 2, min: 0, max: 0, expected: 37012 is expected to eq 37013 queue_count: 2, min: 0, max: 9, expected: 37014 is expected to eq 37015 queue_count: 2, min: 1, max: 4, expected: 37016 is expected to eq 37017 queue_count: 2, min: 4, max: 5, expected: 47018 is expected to eq 47019 queue_count: 5, min: 2, max: 3, expected: 37020 is expected to eq 37021 queue_count: 2, min: 1, max: 1, expected: 17022 is expected to eq 17023 queue_count: 0, min: 3, max: 3, expected: 37024 is expected to eq 37025 queue_count: 1, min: 4, max: 3, expected: 37026 is expected to eq 37027Resolvers::UserDiscussionsCountResolver7028 #resolve7029 is expected to have nullable GraphQL type Int7030 when counting discussions from a public issue7031 returns the number of discussions for the issue7032 when a user has permission to view discussions7033 returns the number of non-system discussions for the issue7034 when a user does not have permission to view discussions7035 returns no discussions7036DevOpsReportHelper7037 #devops_score_metrics7038 is expected to eq {:scoreLevel=>{:icon=>"status-alert", :label=>"Moderate", :variant=>"warning"}, :value=>"55.9"}7039 is expected to eq {:leadInstance=>"9.3", :score=>"13.3", :scoreLevel=>{:label=>"Low", :variant=>"muted"}, :title=>"Issues created per active user", :usage=>"1.2"}7040 is expected to eq {:leadInstance=>"30.3", :score=>"92.7", :scoreLevel=>{:label=>"High", :variant=>"success"}, :title=>"Comments created per active user", :usage=>"28.1"}7041 is expected to eq {:leadInstance=>"5.2", :score=>"62.4", :scoreLevel=>{:label=>"Moderate", :variant=>"neutral"}, :title=>"Boards created per active user", :usage=>"3.3"}7042 is expected to eq "2021-04-03 02:01"7043 with low average score7044 is expected to eq {:scoreLevel=>{:icon=>"status-failed", :label=>"Low", :variant=>"danger"}, :value=>"2.0"}7045 with high average score7046 is expected to eq {:scoreLevel=>{:icon=>"status_success_solid", :label=>"High", :variant=>"success"}, :value=>"82.0"}7047 with blank metrics7048 is expected to eq {}7049StuckExportJobsWorker7050 with started export status7051 behaves like project export job detection7052 when the job has completed7053 when the export status was already updated7054 does not mark the export as failed7055 when the export status was not updated7056 marks the project as failed7057 when the job is not in queue and db record in queued state7058 marks the project as failed7059 when the job is running in Sidekiq7060 does not mark the project export as failed7061Resolvers::MergeRequestPipelinesResolver7062 resolves only MRs for the passed merge request7063 with archived project7064 is expected not to contain exactly #<Ci::Pipeline id: 143, ref: "master", sha: "b83d6e391c22777fca1ed3012fce84f633d7fed0", before_sha: n...: nil, external_pull_request_id: nil, ci_ref_id: 136, locked: "artifacts_locked", partition_id: 100>7065FeatureFlagSerializer7066 #represent7067 includes feature flag attributes7068TokenAuthenticatableStrategies::EncryptionHelper7069 .encrypt_token7070 when dynamic_nonce feature flag is switched on7071 adds nonce identifier on the beginning7072 adds nonce at the end7073 encrypts token7074 when dynamic_nonce feature flag is switched off7075 does not add nonce identifier on the beginning7076 does not add nonce in the end7077 encrypts token with static iv7078 .decrypt_token7079 with feature flag switched off7080 decrypts token with static iv7081 decrypts token if feature flag changed after encryption7082 decrypts token with dynamic iv7083 with feature flag switched on7084 decrypts token with dynamic iv7085 decrypts token if feature flag changed after encryption7086Gitlab::JobWaiter7087 .notify7088 pushes the jid to the named queue7089 #wait7090 returns when all jobs have been completed7091 times out if not all jobs complete7092 when a label is provided7093 increments just job_waiter_started_total when all jobs complete7094 increments job_waiter_started_total and job_waiter_timeouts_total when it times out7095Clusters::Applications::DeactivateIntegrationWorker#perform7096 when cluster exists7097 prometheus integration7098 when prometheus integration exists7099 with cluster type: group7100 ensures Prometheus integration is deactivated7101 with cluster type: project7102 ensures Prometheus integration is deactivated7103 with cluster type: instance7104 ensures Prometheus integration is deactivated7105 when prometheus integration does not exist7106 with cluster type: project7107 does not raise errors7108 when cluster does not exist7109 raises Record Not Found error7110ActsAsTaggableOn::Tag7111 .find_or_create_all_with_like_by_name7112 creates a tag7113 returns the Tag record7114 some tags already existing7115 creates only the missing tag7116 returns the Tag records7117 all tags already existing7118 does not create new tags7119 returns the Tag records7120Database::WithoutCheckConstraint7121 # order random7122 .without_check_constraint7123 with invalid table7124 raises exception7125 with invalid constraint name7126 raises exception7127 with constraint7128 removes inside block7129 restores outside block7130 when creating an invalid record7131 enables invalid record creation inside block7132 rolls back changes made within the block7133Import::ManifestProviderRepoEntity7134 behaves like exposes required fields for import entity7135 exposes required fields7136 correctly exposes id7137 correctly exposes full name7138 correctly exposes sanitized name7139 correctly exposes provider link7140DeclarativeEnum7141 .key7142 when the argument is set7143 changes the key7144 when the argument is `nil`7145 is expected to eq :my_enum7146 .name7147 when the argument is set7148 changes the name7149 when the argument is `nil`7150 is expected to eq "MyEnumName"7151 .description7152 when the argument is set7153 changes the description7154 when the argument is `nil`7155 is expected to eq "Enum description"7156 .define7157 when there is a block given7158 when the given block tries to register the same key7159 raises a `KeyCollisionError`7160 when the given block does not try to register the same key7161 appends the new definition7162 when there is no block given7163 raises a LocalJumpError7164 .definition7165 is expected to eq {:bar=>{:description=>"description of bar", :value=>1}, :foo=>{:description=>"description of foo", :value=>0}}7166 extending the enum module7167 extends the values of the base enum module7168ProjectDestroyWorker7169 #perform7170 deletes the project7171 does not raise error when project could not be found7172 does not raise error when user could not be found7173Expirable7174 ProjectMember7175 .expired7176 is expected to contain exactly #<ProjectMember id: 1339, access_level: 40, source_id: 914, source_type: "Project", user_id: 1630, no...erride: false, state: 0, invite_email_success: true, member_namespace_id: 2988, member_role_id: nil>7177 .not_expired7178 is expected to include #<ProjectMember id: 1335, access_level: 40, source_id: 912, source_type: "Project", user_id: 1626, no...erride: false, state: 0, invite_email_success: true, member_namespace_id: 2982, member_role_id: nil> and #<ProjectMember id: 1337, access_level: 40, source_id: 913, source_type: "Project", user_id: 1628, no...erride: false, state: 0, invite_email_success: true, member_namespace_id: 2985, member_role_id: nil>7179 is expected not to include #<ProjectMember id: 1339, access_level: 40, source_id: 914, source_type: "Project", user_id: 1630, no...erride: false, state: 0, invite_email_success: true, member_namespace_id: 2988, member_role_id: nil>7180 #expired?7181 is expected to eq false7182 is expected to eq false7183 is expected to eq true7184 #expires?7185 is expected to eq false7186 is expected to eq true7187 is expected to eq true7188 #expires_soon?7189 is expected to eq false7190 is expected to eq true7191 is expected to eq true7192Gitlab::CycleAnalytics::Summary::Value7193 Gitlab::CycleAnalytics::Summary::Value::None7194 returns `-`7195 Gitlab::CycleAnalytics::Summary::Value::Numeric7196 returns the string representation of the number7197 Gitlab::CycleAnalytics::Summary::Value::PrettyNumeric7198 #to_s7199 returns `-` when the number is 07200 returns `-` when the number is nil7201 returns the string representation of the number7202JiraConnect::SyncFeatureFlagsWorker7203 behaves like worker with data consistency7204 .get_data_consistency_feature_flag_enabled?7205 returns true7206 .get_data_consistency7207 returns correct data consistency7208 #perform7209 when object exists7210 calls the Jira sync service7211 when object does not exist7212 does not call the sync service7213Gitlab::Ci::Pipeline::Chain::Sequence7214 when one of steps breaks the chain7215 does not process the second step7216 returns a pipeline object7217 when all chains are executed correctly7218 iterates through entire sequence7219 returns a pipeline object7220 adds sequence duration to duration histogram7221 adds step sequence duration to duration histogram7222 records pipeline size by pipeline source in a histogram7223 active jobs by pipeline plan histogram7224 counts all the active jobs7225Gitlab::Kubernetes::KubectlCmd7226 .delete7227 constructs string properly7228 .apply_file7229 without optional args7230 requires filename to be present7231 constructs string properly7232 with optional args7233 constructs command properly with many args7234 constructs command properly with single arg7235 .api_resources7236 constructs string properly7237 .delete_crds_from_group7238 constructs string properly7239Mutations::Terraform::State::Lock7240 is expected to eq "TerraformStateLock"7241 is expected to require graphql authorizations :admin_terraform_state7242 #resolve7243 user does not have permission7244 raises an error7245 user has permission7246 locks the state7247 state is already locked7248 does not modify the existing lock7249 with invalid params7250 raises an error7251Clusters::Agents::GroupAuthorization7252 is expected to belong to agent class_name => Clusters::Agent required: true7253 is expected to belong to group class_name => ::Group required: true7254 is expected to validate jsonb schema "config"7255 #config_project7256 is expected to eq #<Project id:919 namespace972/project1083>>7257PagesDomainSslRenewalCronWorker7258 #perform7259 enqueues a PagesDomainSslRenewalWorker for domains needing renewal7260 behaves like a pages cronjob scheduling jobs with context7261 schedules the renewal with a context7262 with RequestStore enabled7263 does not cause extra queries for multiple domains7264 when letsencrypt integration is disabled7265 does nothing7266Gitlab::Graphql::MarkdownField7267 .markdown_field7268 creates the field with some default attributes7269 developer warnings7270 raises when passing a resolver7271 resolving markdown7272 renders markdown from the same property as the field name without the `_html` suffix7273 when a `method` argument is passed7274 renders markdown from a specific property7275 when a block is passed for the resolved object7276 renders markdown from the same property as the field name without the `_html` suffix7277 basic verification that references work7278 renders markdown correctly7279 when the issue is not publicly accessible7280 hides the references from users that are not allowed to see the reference7281 shows the reference to users that are allowed to see it7282Resolvers::Crm::ContactStateCountsResolver7283 #resolve7284 with unauthorized user7285 does not raise an error and returns no counts7286 with authorized user7287 without parent7288 returns no counts7289 with a group7290 when no filter is provided7291 returns the count of all contacts7292 when search term is provided7293 returns the correct counts7294Resolvers::IncidentManagement::TimelineEventTagsResolver7295 # order random7296 returns timeline event tags7297 is expected to have nullable GraphQL type TimelineEventTagTypeConnection7298 when timeline event is nil7299 returns no timeline event tags7300 when there is no timeline event tag link7301 returns no timeline event tags7302 when user does not have permissions7303 returns no timeline event tags7304Gitlab::SetupHelper::Praefect7305 .configuration_toml7306 defaults to in memory queue7307 provides database details if wanted7308 fails when pghost is missing7309 uses the provided pghost7310 fails when pgport is missing7311 uses the provided pgport7312 fails when pguser is missing7313 uses the provided pguser7314 defaults to praefect_test if dbname is missing7315 uses the provided dbname7316 .get_config_path7317 defaults to praefect.config.toml7318 takes the provided config_filename7319Gitlab::Ci::Reports::Security::Locations::Sast7320 behaves like vulnerability location7321 #initialize7322 when all params are given7323 initializes an instance7324 param: :file_path7325 when param file_path is missing7326 raises an error7327 param: :start_line7328 when param start_line is missing7329 raises an error7330 #fingerprint7331 generates expected fingerprint7332 #fingerprint_path7333 generates expected fingerprint7334 #==7335 returns true when fingerprints are equal7336 returns false when fingerprints are different7337Gitlab::Audit::CiRunnerTokenAuthor7338 .initialize7339 with runner_authentication_token7340 returns CiRunnerTokenAuthor with expected attributes7341 with runner_registration_token7342 returns CiRunnerTokenAuthor with expected attributes7343 with runner token missing7344 raises ArgumentError7345 #full_path7346 with instance registration token7347 returns correct url7348 with group registration token7349 returns correct url7350 with project registration token7351 returns correct url7352Gitlab::Import::ImportFailureService7353 .track7354 with all arguments provided7355 invokes a new instance and executes7356 with only necessary arguments utilizing defaults7357 invokes a new instance and executes7358 #execute7359 when tracking metrics7360 tracks the failed import7361 when using the project as reference7362 when it fails the import7363 behaves like logs the exception and fails the import7364 when the failure does not abort the import7365 when it does not fail the import7366 behaves like logs the exception and does not fail the import7367 when the failure does not abort the import7368 when using the import_state as reference7369 when it fails the import7370 behaves like logs the exception and fails the import7371 when the failure does not abort the import7372 when it does not fail the import7373 behaves like logs the exception and does not fail the import7374 when the failure does not abort the import7375ListUserPreference7376 relationships7377 is expected to belong to list required: false7378 is expected to belong to user required: false7379 is expected to validate that :user_id is case-sensitively unique within the scope of :list_id, producing a custom validation error on failure7380projects/issues/service_desk/_service_desk_info_content7381 when service desk is disabled7382 when the logged user is at least maintainer7383 shows the info including the project settings link7384 when the logged user is at only a developer7385 shows the info without the project settings link7386 when service desk is enabled7387 when the logged user is at least reporter7388 shows the info including the email address7389 when the logged user is at only a guest7390 shows the info without the email address7391 when user is not logged in7392 shows the info without the email address7393ServiceHookPresenter7394 #logs_details_path7395 is expected to eq "/namespace990/project1101/-/settings/integrations/drone_ci/hook_logs/1"7396 #logs_retry_path7397 is expected to eq "/namespace991/project1102/-/settings/integrations/drone_ci/hook_logs/2/retry"7398Gitlab::Ci::Matching::BuildMatcher7399 .new7400 when attributes are missing7401 is expected to raise KeyError7402 with attributes7403 is expected to eq true7404 is expected to eq ["tag1", "tag2"]7405 is expected to eq [1, 2, 3]7406 is expected to eq :my_project7407 #protected?7408 when protected is set to true7409 is expected to be truthy7410 when protected is set to false7411 is expected to be falsey7412 #has_tags?7413 when tags are present7414 is expected to be truthy7415 when tags are empty7416 is expected to be falsey7417Resolvers::RecentBoardsResolver7418 #resolve7419 when there is no parent7420 returns none if parent is nil7421 when project boards7422 behaves like group and project recent boards resolver7423 calls ::Boards::VisitsFinder7424 avoids N+1 queries7425 returns most recent visited boards7426 returns a set number of boards7427 when group boards7428 behaves like group and project recent boards resolver7429 calls ::Boards::VisitsFinder7430 avoids N+1 queries7431 returns most recent visited boards7432 returns a set number of boards7433SafeUrl7434 #safe_url7435 is expected to eq "http://example.com"7436 when URL contains credentials7437 masks username and password7438 when username is allowed7439 masks the password, but not the username7440 when URL is empty7441 is expected to be nil7442 when URI raises an error7443 is expected to be nil7444Gitlab::Database::AsyncIndexes::IndexCreator7445 #perform7446 creates the index while controlling statement timeout7447 removes the index preparation record from postgres_async_indexes7448 skips logic if not able to acquire exclusive lease7449 when the index already exists7450 skips index creation7451Gitlab::ReferenceCounter7452 #increase7453 increases and sets the expire time of a reference count for a path7454 #decrease7455 decreases the reference count for a path7456 warns if attempting to decrease a counter with a value of zero or less, and resets the counter7457 #value7458 get the reference count for a path7459 #reset!7460 resets reference count down to zero7461 #expires_in7462 displays the expiration time in seconds7463Mutations::CustomEmoji::Create7464 #resolve7465 creates the custom emoji7466 sets the creator to be the user who added the emoji7467PrometheusMetricsFinder7468 #execute7469 with params7470 with appropriate indexes7471 with project7472 is expected to eq [#<PrometheusMetric id: 1, project_id: 936, title: [FILTERED], query: "avg(metric)", y_label: "y_labe...43 +0000", common: false, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml">]7473 with group7474 is expected to contain exactly #<PrometheusMetric id: 2, project_id: nil, title: [FILTERED], query: "avg(metric)", y_label: "y_label...1983 +0000", common: true, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml"> and #<PrometheusMetric id: 1, project_id: 936, title: [FILTERED], query: "avg(metric)", y_label: "y_label...143 +0000", common: false, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml">7475 with title7476 is expected to contain exactly #<PrometheusMetric id: 1, project_id: 936, title: [FILTERED], query: "avg(metric)", y_label: "y_label...143 +0000", common: false, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml"> and #<PrometheusMetric id: 2, project_id: nil, title: [FILTERED], query: "avg(metric)", y_label: "y_label...1983 +0000", common: true, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml">7477 with y_label7478 is expected to contain exactly #<PrometheusMetric id: 1, project_id: 936, title: [FILTERED], query: "avg(metric)", y_label: "y_label...143 +0000", common: false, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml"> and #<PrometheusMetric id: 2, project_id: nil, title: [FILTERED], query: "avg(metric)", y_label: "y_label...1983 +0000", common: true, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml">7479 with common7480 is expected to contain exactly #<PrometheusMetric id: 2, project_id: nil, title: [FILTERED], query: "avg(metric)", y_label: "y_label...1983 +0000", common: true, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml"> and #<PrometheusMetric id: 3, project_id: nil, title: [FILTERED], query: "avg(metric)", y_label: "Unique ...0", common: true, identifier: "identifier", dashboard_path: ".gitlab/dashboards/dashboard_path.yml">7481 with ordered7482 is expected to eq [#<PrometheusMetric id: 3, project_id: nil, title: [FILTERED], query: "avg(metric)", y_label: "Unique...983 +0000", common: true, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml">]7483 with indentifier7484 raises an error7485 with common7486 is expected to contain exactly #<PrometheusMetric id: 3, project_id: nil, title: [FILTERED], query: "avg(metric)", y_label: "Unique ...0", common: true, identifier: "identifier", dashboard_path: ".gitlab/dashboards/dashboard_path.yml">7487 with id7488 raises an error7489 with id7490 is expected to contain exactly #<PrometheusMetric id: 2, project_id: nil, title: [FILTERED], query: "avg(metric)", y_label: "y_label...1983 +0000", common: true, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml">7491 with multiple params7492 is expected to contain exactly #<PrometheusMetric id: 2, project_id: nil, title: [FILTERED], query: "avg(metric)", y_label: "y_label...1983 +0000", common: true, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml">7493 without an appropriate index7494 raises an error7495 without params7496 raises an error7497Issues::CloseWorker7498 # order random7499 #perform7500 #perform7501 when the user can update the issues7502 closes the issues7503 closes external issues7504 when the user can not update the issues7505 does not close the issues7506 when the project does not exist7507 behaves like when object does not exist7508 does not call the close issue service7509 when the user does not exist7510 behaves like when object does not exist7511 does not call the close issue service7512 when the issue does not exist7513 behaves like when object does not exist7514 does not call the close issue service7515Gitlab::Pagination::Keyset::InOperatorOptimization::Strategies::OrderValuesLoaderStrategy7516 #initializer_columns7517 returns NULLs for each ORDER BY columns7518 when an SQL expression is given7519 when the sql_type attribute is missing7520 raises error7521 when the sql_type_attribute is present7522 returns the initializer columns7523RuboCop::Cop::Performance::ARCountEach7524 # order random7525 when it is haml file7526 when the same object uses count and each7527 flags it as an offense7528 when different object uses count and each7529 does not flag it as an offense7530 when just using count without each7531 does not flag it as an offense7532 when just using each without count7533 does not flag it as an offense7534 when it is not haml file7535 does not flag it as an offense7536Banzai::Pipeline7537 .[]7538 for nil7539 is expected to eq Banzai::Pipeline::FullPipeline7540 for symbols7541 when known7542 is expected to eq Banzai::Pipeline::FullPipeline7543 when unknown7544 behaves like error7545 is expected to raise NameError with "uninitialized constant Banzai::Pipeline::UnknownPipeline"7546 for classes7547 subclassing Banzai::Pipeline::BasePipeline7548 is expected to eq #<Class:0x00007fef362c3170>7549 subclassing other types7550 behaves like error7551 is expected to raise ArgumentError with "unsupported pipeline name Foo (Class)"7552 for other types7553 behaves like error7554 is expected to raise ArgumentError with "unsupported pipeline name \"label\" (String)"7555Gitlab::GithubImport::AttachmentsDownloader7556 # order random7557 #delete7558 removes file with parent folder7559 #perform7560 when file valid7561 downloads file7562 when filename is malicious7563 raises expected exception7564 when file size exceeds limit7565 raises expected exception7566 when file name length exceeds limit7567 chops filename7568BulkImports::Common::Pipelines::LabelsPipeline7569 #run7570 imports group labels into destination group and removes tmpdir7571 #load7572 when label is not persisted7573 saves the label7574 when label is missing7575 returns7576Ci::CreateCrossProjectPipelineWorker7577 #perform7578 when bridge exists7579 calls cross project pipeline creation service7580 when bridge does not exist7581 does nothing7582BulkImports::Groups::Pipelines::ProjectEntitiesPipeline7583 #run7584 creates project entity7585 pipeline parts7586 is expected to includes the BulkImports::Pipeline module7587 is expected to includes the BulkImports::Pipeline::Runner module7588 has extractors7589 has transformers7590Gitlab::RuggedInstrumentation7591 .query_time7592 increments query times7593 .increment_query_count7594 tracks query counts7595Types::MergeRequests::AssigneeType7596 behaves like a user type with merge request interaction type7597 is expected to require graphql authorizations :read_user7598 has the expected fields7599 #merge_request_interaction7600 returns the correct type7601 has the correct arguments7602Gitlab::LegacyGithubImport::CommentFormatter7603 #attributes7604 when do not reference a portion of the diff7605 returns formatted attributes7606 when on a portion of the diff7607 returns formatted attributes7608 when author is a GitLab user7609 returns GitLab user id associated with GitHub id as author_id7610 returns GitLab user id associated with GitHub email as author_id7611 returns note without created at tag line7612IncidentManagement::PagerDuty::ProcessIncidentWorker7613 #perform7614 with valid incident payload7615 creates a GitLab issue7616 with invalid incident payload7617 does not create a GitLab issue7618 logs a warning7619ServiceDeskEmailReceiverWorker7620 #perform7621 when service_desk_email config is enabled7622 does not ignore the email7623 when service desk receiver raises an exception7624 sends a rejection email7625 when service_desk_email config is disabled7626 ignores the email7627BlobViewer::Markup7628 #banzai_render_context7629 returns context needed for banzai rendering7630 when blob does respond to rendered_markup7631 does sets rendered key7632Keys::LastUsedService7633 #execute7634 updates the key when it has not been used recently7635 does not update the key when it has been used recently7636 does not update the updated_at field7637 #update?7638 returns true when no last used timestamp is present7639 returns true when the key needs to be updated7640 returns false when a lease has already been obtained7641 returns false when the key does not yet need to be updated7642GroupExportWorker7643 #perform7644 when it succeeds7645 calls the ExportService7646 when it fails7647 raises an exception when params are invalid7648 sidekiq options7649 disables retry7650 disables dead7651Ci::StuckBuilds::DropScheduledWorker7652 #perform7653 executes an instance of Ci::StuckBuilds::DropScheduledService with an exclusive lease7654 behaves like an idempotent worker7655 is labeled as idempotent7656 performs multiple times sequentially without raising an exception7657Banzai::Pipeline::BroadcastMessagePipeline7658 allows `a` elements7659 is expected to eq "<p><a>Link</a></p>"7660 allows `br` elements7661 is expected to eq "<p>Hello<br>World</p>"7662UserSerializer7663 serializer with merge request context7664 returns a user with can_merge option7665Gitlab::LetsEncrypt::Order7666 #url7667 delegates to Acme::Client::Resources::Order7668 #status7669 delegates to Acme::Client::Resources::Order7670 #expires7671 delegates to Acme::Client::Resources::Order7672 #new_challenge7673 returns challenge7674 #request_certificate7675 generates csr and finalizes order7676 #challenge_error7677 returns error if challenge has errors7678RuboCop::Cop::FileDecompression7679 # order random7680 flags the when using 'zip' subshell command7681 flags the when using 'gunzip' system command7682 flags the when using 'tar' system command7683 flags the when using 'gzip' system command7684 flags the when using 'zip' system command7685 flags the when using 'tar' subshell command7686 does not flag when using a system command not related to file decompression7687 flags the when using 'gzip' subshell command7688 flags the when using 'gunzip' subshell command7689Gitlab::InternalPostReceive::Response7690 #add_merge_request_urls7691 when there are urls_data7692 adds a message for each merge request URL7693 #add_merge_request_url7694 when :new_merge_request is false7695 adds a basic message to view the existing merge request7696 when :new_merge_request is true7697 adds a basic message to create a new merge request7698 #add_basic_message7699 when text is present7700 adds a basic message7701 when text is blank7702 does not add a message7703 #add_alert_message7704 when text is present7705 adds a alert message7706 when text is blank7707 does not add a message7708 #reference_counter_decreased7709 initially7710 reference_counter_decreased is set to false7711 #reference_counter_decreased=7712 when the argument is truthy7713 reference_counter_decreased is truthy7714 when the argument is falsey7715 reference_counter_decreased is falsey7716Gitlab::Prometheus::Adapter7717 #prometheus_adapter7718 prometheus integration can execute queries7719 return prometheus integration as prometheus adapter7720 with cluster with prometheus available7721 returns prometheus integration7722 prometheus integration can't execute queries7723 with cluster with prometheus disabled7724 returns nil7725 with cluster with prometheus available7726 returns application handling all environments7727 with cluster without prometheus installed7728 returns nil7729AlertManagement::HttpIntegrations::CreateService7730 #execute7731 when the current_user is anonymous7732 behaves like error response7733 has an informative message7734 when current_user does not have permission to create integrations7735 behaves like error response7736 has an informative message7737 when an integration already exists7738 behaves like error response7739 has an informative message7740 when an error occurs during update7741 behaves like error response7742 has an informative message7743 with valid params7744 successfully creates an integration7745BuildQueueWorker7746 #perform7747 when build exists7748 ticks runner queue value7749 when build does not exist7750 does not raise exception7751 behaves like worker with data consistency7752 .get_data_consistency_feature_flag_enabled?7753 returns true7754 .get_data_consistency7755 returns correct data consistency7756Gitlab::GithubImport::Stage::ImportLfsObjectsWorker7757 #import7758 imports all the lfs objects7759Types::PermissionTypes::User7760 returns user permissions7761Mutations::SavedReplies::Update7762 #resolve7763 when feature is disabled7764 raises Gitlab::Graphql::Errors::ResourceNotAvailable7765 when feature is enabled for current user7766 when service fails to update a new saved reply7767 is expected to be nil7768 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 '_'"7769 when service successfully updates the saved reply7770 is expected to eq "save_reply_name"7771 is expected to eq "Save Reply Content"7772 is expected to be empty7773Integrations::ChatMessage::BaseMessage7774 #fallback7775 without relative links7776 is expected to eq "Just another *markdown* message"7777 with relative links7778 is expected to eq "Check this out https://gitlab-domain.com/uploads/Screenshot1.png"7779 with multiple relative links7780 is expected to eq "Check this out https://gitlab-domain.com/uploads/Screenshot1.png. And this https://gitlab-domain.com/uploads/Screenshot2.png"7781 #strip_markup7782 input: nil, output: nil7783 returns the expected output7784 input: "", output: ""7785 returns the expected output7786 input: "[label](url)", output: "label(url)"7787 returns the expected output7788 input: "<url|label>", output: "urllabel"7789 returns the expected output7790 input: "<a href=\"url\">label</a>", output: "a href=\"url\"label/a"7791 returns the expected output7792Quality::Seeders::Issues7793 #seed7794. seeds issues7795SystemCheck::Orphans::NamespaceCheck7796 #multi_check7797 all orphans7798 prints list of all orphaned namespaces except @hashed7799 few orphans with existing namespace7800 prints list of orphaned namespaces7801 few orphans with existing namespace and parents with same name as orphans7802 prints list of orphaned namespaces ignoring parents with same namespace as orphans7803 no orphans7804 prints an empty list ignoring @hashed7805Gitlab::Auth::Atlassian::User7806 .assign_identity_from_auth_hash!7807 behaves like an atlassian identity7808 sets the proper values7809 #save7810 for an existing user7811 with an existing Atlassian Identity7812 finds the existing user and identity7813 behaves like an atlassian identity7814 sets the proper values7815 for a new user7816 creates the user and identity7817X509SerialNumberAttribute7818 #x509_serial_number_attribute7819 when in non-production7820 when the table exists7821 defines a x509 serial number attribute for a binary column7822 raises ArgumentError when the column type is not :binary7823 when the table does not exist7824 allows the attribute to be added and issues a warning7825 when the column does not exist7826 allows the attribute to be added and issues a warning7827 when other execeptions are raised7828 logs and re-rasises the error7829 when in production7830 defines a x509 serial number attribute7831BuildArtifactEntity7832 #as_json7833 contains job name7834 exposes information about expiration of artifacts7835 exposes the artifact download path7836 when project is specified in options7837 doesnt get a project from the artifact7838Ci::DailyBuildGroupReportResultsWorker7839 #perform7840 when pipeline is found7841 executes service7842 when pipeline is not found7843 does not execute service7844Gitlab::Database::QueryAnalyzers::QueryRecorder7845 # order random7846 when analyzer is enabled for tests7847 logs queries to a file7848Gitlab::Ci::Status::Failed7849 #text7850 is expected to eq "failed"7851 #label7852 is expected to eq "failed"7853 #icon7854 is expected to eq "status_failed"7855 #favicon7856 is expected to eq "favicon_status_failed"7857 #group7858 is expected to eq "failed"7859 #details_path7860 is expected to be nil7861Types::ContainerRepositorySortEnum7862 is expected to eq "ContainerRepositorySort"7863 exposes all the existing issue sort values7864 behaves like common sort values7865 exposes all the existing common sort values7866Integrations::IssueTrackerData7867 behaves like Integrations::BaseDataFields7868 associations7869 is expected to belong to integration required: false7870 #activated?7871 with integration7872 with value set to false7873 is expected to eq false7874 with value set to true7875 is expected to eq true7876 without integration7877 is expected to eq false7878 #to_database_hash7879 does not include certain attributes7880 encrypted attributes7881 is expected to contain exactly :issues_url, :new_issue_url, and :project_url7882API::Entities::DeployKeysProject7883 #as_json7884 includes basic fields7885Types::CustomEmojiType7886 is expected to eq "CustomEmoji"7887 is expected to require graphql authorizations :read_custom_emoji7888 is expected to have graphql fields :id, :name, :url, and :external7889validate database config7890 when config/database.yml is valid7891 validates configuration without errors and warnings7892 when config/database.yml is invalid7893 uses unknown connection name7894 raises exception7895 behaves like with SKIP_DATABASE_CONFIG_VALIDATION=true7896 does not raise exception7897 uses replica configuration7898 raises exception7899 behaves like with SKIP_DATABASE_CONFIG_VALIDATION=true7900 does not raise exception7901 main is not a first entry7902 raises exception7903 behaves like with SKIP_DATABASE_CONFIG_VALIDATION=true7904 does not raise exception7905ProjectExportJob7906 associations7907 is expected to belong to project required: false7908 is expected to have many relation_exports7909 validations7910 is expected to validate that :project cannot be empty/falsy7911 is expected to validate that :jid cannot be empty/falsy7912 is expected to validate that :status cannot be empty/falsy7913Gitlab::Database::BackgroundMigration::HealthStatus::Indicators::WriteAheadLog7914 #evaluate7915 remembers the indicator class7916 returns NoSignal signal in case the feature flag is disabled7917 returns NoSignal signal when WAL archive queue can not be calculated7918 uses primary database7919 when WAL archive queue size is below the limit7920 returns Normal signal7921 when WAL archive queue size is above the limit7922 returns Stop signal7923Gitlab::Ci::Reports::Security::FindingSignature7924 #initialize7925 when a supported algorithm type is given7926 allows itself to be created7927 #valid?7928 returns true7929 #valid?7930 when supported algorithm_type is given7931 is valid7932 when an unsupported algorithm_type is given7933 is not valid7934 #to_hash7935 returns a hash representation of the signature7936Types::CommitSignatures::X509SignatureType7937 # order random7938 is expected to include Types::CommitSignatureInterface7939 contains attributes related to X.509 signatures7940 is expected to require graphql authorizations :download_code7941 is expected to eq "X509Signature"7942WebIdeButtonHelper7943 #show_pipeline_editor_button?7944 when can view pipeline editor7945 when path is ci config path7946 returns true7947 when path is not config path7948 returns false7949 when can not view pipeline editor7950 returns false7951Gitlab::Git::Conflict::Resolver7952 #conflicts7953 returns list of conflicts7954 when GRPC::FailedPrecondition is raised7955 rescues and raises Gitlab::Git::Conflict::Resolver::ConflictSideMissing7956Users::InProductMarketingEmailRecords7957 initializes records7958 #save!7959 bulk inserts added records7960 resets its records7961 #add7962 adds a Users::InProductMarketingEmail record to its records7963Gitlab::UploadsTransfer7964 leaves avatar uploads where they are7965ChatTeam7966 is expected to belong to namespace required: false7967 is expected to validate that :namespace is case-sensitively unique7968 is expected to respond to #name7969 is expected to respond to #team_id7970Gitlab::SidekiqLogging::DeduplicationLogger7971 #log_deduplication7972 logs a deduplication message to the sidekiq logger7973 does not modify the job7974 #rescheduled_log7975 logs a rescheduled message to the sidekiq logger7976 does not modify the job7977DiffLineEntity7978 exposes correct attributes7979 #rich_text7980 when rich_line is present7981 behaves like escapes html tags7982 is expected to be html safe7983 when rich_line is not present7984 behaves like escapes html tags7985 is expected to be html safe7986API::Entities::BulkImports::ExportStatus7987 has the correct attributes7988API::Entities::Nuget::PackageMetadataCatalogEntry7989 is expected to eq {:@id=>"http://sandbox.com/json/package", :authors=>"Authors", :dependencyGroups=>[], :iconUrl=>"http...tUrl=>"http://sandbox.com/project", :summary=>"Summary", :tags=>"tag1 tag2 tag3", :version=>"1.2.3"}7990Gitlab::Metrics::Dashboard::Validator::Client7991 #execute7992 with no validation errors7993 returns empty array7994 with validation errors7995 returns array of error objects7996Gitlab::Git::Patches::Collection7997 #size7998 combines the size of the patches7999 #valid_size?8000 is not valid if the total size is bigger than 2MB8001Types::Notes::NoteableInterface8002 exposes the expected fields8003 .resolve_type8004 knows the correct type for objects8005Gitlab::Middleware::RackMultipartTempfileFactory8006 for a multipart request8007 immediately unlinks the temporary file8008 processes the request as normal8009 for a regular request8010 does nothing8011Types::SavedReplyType8012 is expected to eq "SavedReply"8013 has all the required fields8014 is expected to require graphql authorizations :read_saved_replies8015Gitlab::DatabaseImporters::CommonMetrics::PrometheusMetric8016 group enum equals ::PrometheusMetric8017 .group_titles equals ::PrometheusMetric8018Types::Ci::RecentFailuresType8019 is expected to eq "RecentFailures"8020 contains attributes related to a recent failure history for a test case8021ActsAsTaggableOn::Tagging8022 has the same connection as Ci::ApplicationRecord8023 has the same sticking as Ci::ApplicationRecord8024Gitlab::Ci::Reports::TerraformReports8025 initializes plans with and empty hash8026 #add_plan8027 when providing two unique plans8028 returns two plans8029 when providing the same plan twice8030 returns the last added plan8031errors/omniauth_error8032 renders template8033Gitlab::Memory::Watchdog::Monitor::RssMemoryLimit8034 # order random8035 #call8036 when process exceeds threshold8037 returns if threshold is violated and payload8038 when process does not exceed threshold8039 returns if threshold is violated and payload8040Types::DeploymentTagType8041 # order random8042 has the expected fields8043 is expected to eq "DeploymentTag"8044CiPlatformMetricsUpdateCronWorker8045 #perform8046 inserts new platform metrics8047Types::Ci::RunnerPlatformType8048 is expected to eq "RunnerPlatform"8049 exposes the expected fields8050RuboCop::Cop::Migration::RemoveIndex8051 # order random8052 when in migration8053 registers an offense when remove_index is used8054 when outside of migration8055 registers no offense8056Types::Packages::PackageDependencyLinkType8057 includes package file fields8058DatabaseReflection8059 .reflect8060 returns a Reflection instance8061 memoizes the result8062PartitionCreationWorker8063 #perform8064 forwards to the Database::PartitionManagementWorker8065Gitlab::Kubernetes::GenericSecret8066 #generate8067 is expected to eq #<Kubeclient::Resource type="Opaque", metadata={:name=>"example-name", :namespace=>"example-namespace"}, data="example-data">8068Ci::ChangeVariablesService8069 #execute8070 delegates to ActiveRecord update8071GravatarService8072 #execute8073 replaces the placeholders8074Knapsack report was generated. Preview:8075{8076 "spec/lib/gitlab/git_access_spec.rb": 230.01963302399986,8077 "spec/lib/gitlab/middleware/go_spec.rb": 134.46661309599995,8078 "spec/models/member_spec.rb": 61.51708237099979,8079 "spec/services/ci/create_pipeline_service/rules_spec.rb": 79.74210568900003,8080 "spec/services/projects/import_service_spec.rb": 79.30626246599991,8081 "spec/services/releases/create_service_spec.rb": 42.804023088999884,8082 "spec/services/application_settings/update_service_spec.rb": 43.257570391999934,8083 "spec/lib/gitlab/ci/parsers/security/validators/schema_validator_spec.rb": 7.178590511999801,8084 "spec/lib/object_storage/direct_upload_spec.rb": 28.478279821000115,8085 "spec/services/verify_pages_domain_service_spec.rb": 4.4635906839998825,8086 "spec/lib/gitlab/email/handler/create_merge_request_handler_spec.rb": 24.832499181999992,8087 "spec/lib/gitlab/ci/build/rules/rule/clause/exists_spec.rb": 21.107926072000055,8088 "spec/helpers/namespaces_helper_spec.rb": 20.32612106800002,8089 "spec/models/merge_request_diff_file_spec.rb": 25.602269546999878,8090 "spec/helpers/groups_helper_spec.rb": 11.37659422799993,8091 "spec/lib/gitlab/url_sanitizer_spec.rb": 4.009121635000156,8092 "spec/models/blob_spec.rb": 12.930723474999922,8093 "spec/services/groups/create_service_spec.rb": 14.643957303999969,8094 "spec/graphql/resolvers/timelog_resolver_spec.rb": 6.8352025009999124,8095 "spec/services/system_notes/time_tracking_service_spec.rb": 7.281968600000027,8096 "spec/lib/gitlab/error_tracking/error_repository/open_api_strategy_spec.rb": 9.70004489400003,8097 "spec/helpers/users_helper_spec.rb": 7.664929842999982,8098 "spec/services/work_items/task_list_reference_removal_service_spec.rb": 5.551349819000052,8099 "spec/services/projects/hashed_storage/migrate_repository_service_spec.rb": 11.779685250000057,8100 "spec/workers/pages/invalidate_domain_cache_worker_spec.rb": 2.648812268000029,8101 "spec/graphql/resolvers/todos_resolver_spec.rb": 14.18870022499982,8102 "spec/lib/gitlab/database/load_balancing/host_spec.rb": 3.7671389909999107,8103 "spec/services/projects/after_rename_service_spec.rb": 11.823645756999895,8104 "spec/services/system_notes/design_management_service_spec.rb": 9.798394686999927,8105 "spec/services/issues/set_crm_contacts_service_spec.rb": 8.179084577999674,8106 "spec/lib/gitlab/database/migrations/test_batched_background_runner_spec.rb": 10.20221189699987,8107 "spec/lib/gitlab/ci/ansi2html_spec.rb": 1.8034984270002496,8108 "spec/models/integrations/chat_message/pipeline_message_spec.rb": 1.6772917250000319,8109 "spec/lib/banzai/filter/sanitization_filter_spec.rb": 1.6884316040000158,8110 "spec/helpers/packages_helper_spec.rb": 2.516098257000067,8111 "spec/services/ci/archive_trace_service_spec.rb": 7.616778810000142,8112 "spec/views/notify/pipeline_success_email.text.erb_spec.rb": 7.842552946000069,8113 "spec/serializers/commit_entity_spec.rb": 9.498991007999848,8114 "spec/services/ci/stuck_builds/drop_scheduled_service_spec.rb": 7.474002943999949,8115 "spec/lib/gitlab/ci/pipeline/chain/validate/abilities_spec.rb": 5.275682329000119,8116 "spec/workers/packages/nuget/extraction_worker_spec.rb": 6.7368774790002135,8117 "spec/models/board_group_recent_visit_spec.rb": 3.821734497000307,8118 "spec/models/protectable_dropdown_spec.rb": 7.303987703000075,8119 "spec/lib/gitlab/visibility_level_spec.rb": 1.9350001069997234,8120 "spec/models/metrics/dashboard/annotation_spec.rb": 5.524036066000008,8121 "spec/lib/gitlab/checks/snippet_check_spec.rb": 7.230665826000404,8122 "spec/services/error_tracking/issue_update_service_spec.rb": 4.800161721000222,8123 "spec/finders/security/security_jobs_finder_spec.rb": 5.594814023999788,8124 "spec/rubocop/cop/rspec/have_gitlab_http_status_spec.rb": 1.8697891510000773,8125 "spec/services/incident_management/incidents/create_service_spec.rb": 4.587313220999931,8126 "spec/services/ci/expire_pipeline_cache_service_spec.rb": 4.933964744999685,8127 "spec/rubocop/cop/static_translation_definition_spec.rb": 1.0645607699998436,8128 "spec/lib/gitlab/middleware/handle_malformed_strings_spec.rb": 0.8862740979998307,8129 "spec/models/customer_relations/organization_spec.rb": 2.147800337999797,8130 "spec/services/users/refresh_authorized_projects_service_spec.rb": 4.282810736000101,8131 "spec/lib/gitlab/auth/unique_ips_limiter_spec.rb": 4.215848168999855,8132 "spec/services/merge_requests/mergeability/run_checks_service_spec.rb": 3.9919581999997718,8133 "spec/graphql/resolvers/crm/contacts_resolver_spec.rb": 2.0663811710001028,8134 "spec/serializers/ci/dag_pipeline_entity_spec.rb": 1.724621538000065,8135 "spec/lib/gitlab/omniauth_initializer_spec.rb": 1.1624099450000358,8136 "spec/lib/gitlab/ci/config/external/file/remote_spec.rb": 1.3890236639999785,8137 "spec/lib/gitlab/diff/file_collection/compare_spec.rb": 4.949431353999898,8138 "spec/models/pages/lookup_path_spec.rb": 3.857391557000028,8139 "spec/presenters/projects/import_export/project_export_presenter_spec.rb": 3.0231050960001085,8140 "spec/lib/gitlab/metrics/samplers/ruby_sampler_spec.rb": 1.7545170170001256,8141 "spec/services/system_notes/commit_service_spec.rb": 4.0336336010000196,8142 "spec/services/users/activity_service_spec.rb": 1.5413978370002042,8143 "spec/lib/gitlab/kubernetes/rollout_status_spec.rb": 1.1659238819997881,8144 "spec/graphql/resolvers/project_packages_resolver_spec.rb": 2.2852501170000323,8145 "spec/lib/gitlab/ci/templates/Jobs/sast_iac_gitlab_ci_yaml_spec.rb": 2.3619790439997814,8146 "spec/finders/clusters_finder_spec.rb": 3.3218591649997506,8147 "spec/lib/api/helpers/packages_manager_clients_helpers_spec.rb": 2.1012884040001154,8148 "spec/models/users_statistics_spec.rb": 3.9436031190002723,8149 "spec/lib/gitlab/database/partitioning_spec.rb": 1.6009237549997124,8150 "spec/helpers/snippets_helper_spec.rb": 2.339611695000258,8151 "spec/workers/environments/auto_delete_cron_worker_spec.rb": 1.9170932619999803,8152 "spec/presenters/event_presenter_spec.rb": 1.2403241100000741,8153 "spec/workers/bulk_import_worker_spec.rb": 2.8208746549998978,8154 "spec/views/layouts/simple_registration.html.haml_spec.rb": 1.8675819639997826,8155 "spec/lib/gitlab/github_import/importer/diff_note_importer_spec.rb": 2.0280763370001296,8156 "spec/workers/clusters/applications/activate_integration_worker_spec.rb": 2.318523966000157,8157 "spec/lib/gitlab/github_import/importer/events/changed_label_spec.rb": 1.781706717000361,8158 "spec/services/clusters/agents/delete_expired_events_service_spec.rb": 2.912787662000028,8159 "spec/models/metrics/users_starred_dashboard_spec.rb": 1.718406800000139,8160 "spec/lib/gitlab/diff/file_collection/merge_request_diff_base_spec.rb": 3.165830021000147,8161 "spec/lib/gitlab/auth/o_auth/auth_hash_spec.rb": 0.9066728030002196,8162 "spec/models/packages/build_info_spec.rb": 2.078585035999822,8163 "spec/models/concerns/featurable_spec.rb": 1.371382874000119,8164 "spec/rubocop/cop/gitlab/feature_available_usage_spec.rb": 0.54103757699977,8165 "spec/models/packages/debian/group_component_spec.rb": 1.000215308999941,8166 "spec/services/groups/group_links/destroy_service_spec.rb": 2.9089750909997747,8167 "spec/lib/gitlab/endpoint_attributes_spec.rb": 0.5153910789999827,8168 "spec/validators/system_hook_url_validator_spec.rb": 1.0965567549997104,8169 "spec/views/layouts/_flash.html.haml_spec.rb": 1.2801641380001456,8170 "spec/services/projects/refresh_build_artifacts_size_statistics_service_spec.rb": 2.851668794000034,8171 "spec/lib/gitlab/ci/reports/sbom/component_spec.rb": 0.6912575119999929,8172 "spec/services/notes/resolve_service_spec.rb": 2.5080780669995875,8173 "spec/services/ci/job_artifacts/delete_service_spec.rb": 1.2325509000002057,8174 "spec/sidekiq_cluster/sidekiq_cluster_spec.rb": 0.5362603179996768,8175 "spec/graphql/resolvers/user_discussions_count_resolver_spec.rb": 1.365571603999797,8176 "spec/helpers/dev_ops_report_helper_spec.rb": 0.5300930479997987,8177 "spec/workers/stuck_export_jobs_worker_spec.rb": 1.6813878420002766,8178 "spec/graphql/resolvers/merge_request_pipelines_resolver_spec.rb": 2.3543636649997097,8179 "spec/serializers/feature_flag_serializer_spec.rb": 2.2288891000002877,8180 "spec/models/concerns/token_authenticatable_strategies/encryption_helper_spec.rb": 0.4960311400000137,8181 "spec/lib/gitlab/job_waiter_spec.rb": 2.5417468649998227,8182 "spec/workers/clusters/applications/deactivate_integration_worker_spec.rb": 3.0993200230000184,8183 "spec/initializers/1_acts_as_taggable_spec.rb": 0.43382539300000644,8184 "spec/support_specs/database/without_check_constraint_spec.rb": 0.45515109100006157,8185 "spec/serializers/import/manifest_provider_repo_entity_spec.rb": 0.7331210800002737,8186 "spec/lib/declarative_enum_spec.rb": 0.5339462179999828,8187 "spec/workers/project_destroy_worker_spec.rb": 2.8638146440002856,8188 "spec/models/concerns/expirable_spec.rb": 1.832074084999931,8189 "spec/lib/gitlab/cycle_analytics/summary/value_spec.rb": 0.3781147240001701,8190 "spec/workers/jira_connect/sync_feature_flags_worker_spec.rb": 0.6159430339998835,8191 "spec/lib/gitlab/ci/pipeline/chain/sequence_spec.rb": 1.2922190569997838,8192 "spec/lib/gitlab/kubernetes/kubectl_cmd_spec.rb": 0.6006171549997816,8193 "spec/graphql/mutations/terraform/state/lock_spec.rb": 1.4374448309999934,8194 "spec/models/clusters/agents/group_authorization_spec.rb": 1.3342143350000697,8195 "spec/workers/pages_domain_ssl_renewal_cron_worker_spec.rb": 1.4992464590000054,8196 "spec/lib/gitlab/graphql/markdown_field_spec.rb": 1.7348545290001312,8197 "spec/graphql/resolvers/crm/contact_state_counts_resolver_spec.rb": 0.8561793060002856,8198 "spec/graphql/resolvers/incident_management/timeline_event_tags_resolver_spec.rb": 2.3056256849999954,8199 "spec/lib/gitlab/setup_helper/praefect_spec.rb": 0.5476407969999855,8200 "spec/lib/gitlab/ci/reports/security/locations/sast_spec.rb": 0.45198573200013925,8201 "spec/lib/gitlab/audit/ci_runner_token_author_spec.rb": 0.6334945549997428,8202 "spec/lib/gitlab/import/import_failure_service_spec.rb": 0.7466565190002257,8203 "spec/models/list_user_preference_spec.rb": 0.9698123110001688,8204 "spec/views/projects/issues/_service_desk_info_content.html.haml_spec.rb": 1.3302022359998773,8205 "spec/presenters/service_hook_presenter_spec.rb": 1.6960647109999627,8206 "spec/lib/gitlab/ci/matching/build_matcher_spec.rb": 0.47627207999994425,8207 "spec/graphql/resolvers/recent_boards_resolver_spec.rb": 1.0565885870000784,8208 "spec/models/concerns/safe_url_spec.rb": 0.33294622599987633,8209 "spec/lib/gitlab/database/async_indexes/index_creator_spec.rb": 0.5499094179999702,8210 "spec/lib/gitlab/reference_counter_spec.rb": 0.3390901760003544,8211 "spec/graphql/mutations/custom_emoji/create_spec.rb": 0.9781693099998847,8212 "spec/finders/prometheus_metrics_finder_spec.rb": 1.0020311789999141,8213 "spec/workers/issues/close_worker_spec.rb": 1.4705321999999796,8214 "spec/lib/gitlab/pagination/keyset/in_operator_optimization/strategies/order_values_loader_strategy_spec.rb": 0.3342672759999914,8215 "spec/rubocop/cop/performance/ar_count_each_spec.rb": 0.45447801099999197,8216 "spec/lib/banzai/pipeline_spec.rb": 0.43508509200000844,8217 "spec/lib/gitlab/github_import/attachments_downloader_spec.rb": 0.3647429459997511,8218 "spec/lib/bulk_imports/common/pipelines/labels_pipeline_spec.rb": 1.1572754329999952,8219 "spec/workers/ci/create_cross_project_pipeline_worker_spec.rb": 0.9712934009999117,8220 "spec/lib/bulk_imports/groups/pipelines/project_entities_pipeline_spec.rb": 0.9057731030002287,8221 "spec/lib/gitlab/rugged_instrumentation_spec.rb": 0.27809255800002575,8222 "spec/graphql/types/merge_requests/assignee_type_spec.rb": 0.3019986270001027,8223 "spec/lib/gitlab/legacy_github_import/comment_formatter_spec.rb": 0.8702719749999233,8224 "spec/workers/incident_management/pager_duty/process_incident_worker_spec.rb": 1.5446032270001524,8225 "spec/workers/service_desk_email_receiver_worker_spec.rb": 0.3914384540003084,8226 "spec/models/blob_viewer/markup_spec.rb": 1.8111100360001728,8227 "spec/services/keys/last_used_service_spec.rb": 0.8414103059999434,8228 "spec/workers/group_export_worker_spec.rb": 1.055682166999759,8229 "spec/workers/ci/stuck_builds/drop_scheduled_worker_spec.rb": 0.24832926999988558,8230 "spec/lib/banzai/pipeline/broadcast_message_pipeline_spec.rb": 0.7351824110000962,8231 "spec/serializers/user_serializer_spec.rb": 1.8034126759998799,8232 "spec/lib/gitlab/lets_encrypt/order_spec.rb": 1.0163192280001567,8233 "spec/rubocop/cop/file_decompression_spec.rb": 0.5095510989999639,8234 "spec/lib/gitlab/internal_post_receive/response_spec.rb": 0.6104094049997002,8235 "spec/lib/gitlab/prometheus/adapter_spec.rb": 0.9655310799998915,8236 "spec/services/alert_management/http_integrations/create_service_spec.rb": 1.0571041869998226,8237 "spec/workers/build_queue_worker_spec.rb": 1.0587236669998674,8238 "spec/workers/gitlab/github_import/stage/import_lfs_objects_worker_spec.rb": 0.8575954650000313,8239 "spec/graphql/types/permission_types/user_spec.rb": 0.195030412000051,8240 "spec/graphql/mutations/saved_replies/update_spec.rb": 0.6332366340002409,8241 "spec/models/integrations/chat_message/base_message_spec.rb": 0.49447004900002867,8242 "spec/lib/quality/seeders/issues_spec.rb": 0.9836866000000555,8243 "spec/lib/system_check/orphans/namespace_check_spec.rb": 0.6387643839998418,8244 "spec/lib/gitlab/auth/atlassian/user_spec.rb": 0.748413199999959,8245 "spec/models/concerns/x509_serial_number_attribute_spec.rb": 0.624374823999915,8246 "spec/serializers/build_artifact_entity_spec.rb": 1.0033882090001498,8247 "spec/workers/ci/daily_build_group_report_results_worker_spec.rb": 1.1840707219998876,8248 "spec/lib/gitlab/database/query_analyzers/query_recorder_spec.rb": 0.25497479000023304,8249 "spec/lib/gitlab/ci/status/failed_spec.rb": 0.5213705579999441,8250 "spec/graphql/types/container_repository_sort_enum_spec.rb": 0.27204893899988747,8251 "spec/models/integrations/issue_tracker_data_spec.rb": 0.5502136580003025,8252 "spec/lib/api/entities/deploy_keys_project_spec.rb": 0.7425014600003124,8253 "spec/graphql/types/custom_emoji_type_spec.rb": 0.5182322680002471,8254 "spec/initializers/validate_database_config_spec.rb": 0.4473191219999535,8255 "spec/models/project_export_job_spec.rb": 0.4561151819998486,8256 "spec/lib/gitlab/database/background_migration/health_status/indicators/write_ahead_log_spec.rb": 0.48297230900016075,8257 "spec/lib/gitlab/ci/reports/security/finding_signature_spec.rb": 0.3889536239998961,8258 "spec/graphql/types/commit_signatures/x509_signature_type_spec.rb": 0.3255538170001273,8259 "spec/helpers/web_ide_button_helper_spec.rb": 0.5223772780000218,8260 "spec/lib/gitlab/git/conflict/resolver_spec.rb": 0.3724697150000793,8261 "spec/services/users/in_product_marketing_email_records_spec.rb": 0.45853279099992506,8262 "spec/lib/gitlab/uploads_transfer_spec.rb": 0.7231683910003994,8263 "spec/models/chat_team_spec.rb": 0.3835720639999636,8264 "spec/lib/gitlab/sidekiq_logging/deduplication_logger_spec.rb": 0.4172713030002342,8265 "spec/serializers/diff_line_entity_spec.rb": 0.298781168000005,8266 "spec/lib/api/entities/bulk_imports/export_status_spec.rb": 0.5006254099998841,8267 "spec/lib/api/entities/nuget/package_metadata_catalog_entry_spec.rb": 0.29675600899963683,8268 "spec/lib/gitlab/metrics/dashboard/validator/client_spec.rb": 0.36783102600020356,8269 "spec/lib/gitlab/git/patches/collection_spec.rb": 0.18584067300025708,8270 "spec/graphql/types/notes/noteable_interface_spec.rb": 0.34557448600025964,8271 "spec/lib/gitlab/middleware/rack_multipart_tempfile_factory_spec.rb": 0.4475087719997646,8272 "spec/graphql/types/saved_reply_type_spec.rb": 0.3227561560001959,8273 "spec/lib/gitlab/database_importers/common_metrics/prometheus_metric_spec.rb": 0.2508202799999708,8274 "spec/graphql/types/ci/recent_failures_type_spec.rb": 0.2935536179998053,8275 "spec/models/acts_as_taggable_on/tagging_spec.rb": 0.2338657410000451,8276 "spec/lib/gitlab/ci/reports/terraform_reports_spec.rb": 0.3569583859998602,8277 "spec/views/errors/omniauth_error.html.haml_spec.rb": 0.6495713630001774,8278 "spec/lib/gitlab/memory/watchdog/monitor/rss_memory_limit_spec.rb": 0.23243054100021254,8279 "spec/graphql/types/detployment_tag_type_spec.rb": 0.17877909299977546,8280 "spec/workers/ci_platform_metrics_update_cron_worker_spec.rb": 0.17934218199980023,8281 "spec/graphql/types/ci/runner_platform_type_spec.rb": 0.24990377999984048,8282 "spec/rubocop/cop/migration/remove_index_spec.rb": 0.5485917580003843,8283 "spec/graphql/types/packages/package_dependency_link_type_spec.rb": 0.29560504799974296,8284 "spec/models/concerns/database_reflection_spec.rb": 0.4662554899996394,8285 "spec/workers/partition_creation_worker_spec.rb": 0.29495178700017277,8286 "spec/lib/gitlab/kubernetes/generic_secret_spec.rb": 0.43312909199994465,8287 "spec/services/ci/change_variables_service_spec.rb": 0.3775766249996195,8288 "spec/services/gravatar_service_spec.rb": 0.26843294999980578289}8290Knapsack global time execution for tests: 20m 46s8291Pending: (Failures listed here are expected and do not affect your suite's status)8292 1) Gitlab::GitAccess#check_push_access! has the correct permissions for admin_without_admin_modes8293 # All admins are allowed to perform actions https://gitlab.com/gitlab-org/gitlab/-/issues/2965098294 # ./spec/lib/gitlab/git_access_spec.rb:8248295 2) Gitlab::GitAccess#check_push_access! when developers are allowed to push into the exact protected branch has the correct permissions for admin_without_admin_modes8296 # All admins are allowed to perform actions https://gitlab.com/gitlab-org/gitlab/-/issues/2965098297 # ./spec/lib/gitlab/git_access_spec.rb:8248298 3) Gitlab::GitAccess#check_push_access! developers are allowed to merge into the exact protected branch when a merge request exists for the given source/target branch when the merge request is in progress has the correct permissions for admin_without_admin_modes8299 # All admins are allowed to perform actions https://gitlab.com/gitlab-org/gitlab/-/issues/2965098300 # ./spec/lib/gitlab/git_access_spec.rb:8248301 4) Gitlab::GitAccess#check_push_access! developers are allowed to merge into the exact protected branch when a merge request exists for the given source/target branch when the merge request is not in progress has the correct permissions for admin_without_admin_modes8302 # All admins are allowed to perform actions https://gitlab.com/gitlab-org/gitlab/-/issues/2965098303 # ./spec/lib/gitlab/git_access_spec.rb:8248304 5) Gitlab::GitAccess#check_push_access! developers are allowed to merge into the exact protected branch when a merge request exists for the given source/target branch when a merge request does not exist for the given source/target branch has the correct permissions for admin_without_admin_modes8305 # All admins are allowed to perform actions https://gitlab.com/gitlab-org/gitlab/-/issues/2965098306 # ./spec/lib/gitlab/git_access_spec.rb:8248307 6) Gitlab::GitAccess#check_push_access! when developers are allowed to push and merge into the exact protected branch has the correct permissions for admin_without_admin_modes8308 # All admins are allowed to perform actions https://gitlab.com/gitlab-org/gitlab/-/issues/2965098309 # ./spec/lib/gitlab/git_access_spec.rb:8248310 7) Gitlab::GitAccess#check_push_access! when no one is allowed to push to the feature protected branch has the correct permissions for admin_without_admin_modes8311 # All admins are allowed to perform actions https://gitlab.com/gitlab-org/gitlab/-/issues/2965098312 # ./spec/lib/gitlab/git_access_spec.rb:8248313 8) Gitlab::GitAccess#check_push_access! has the correct permissions for admin_without_admin_modes8314 # All admins are allowed to perform actions https://gitlab.com/gitlab-org/gitlab/-/issues/2965098315 # ./spec/lib/gitlab/git_access_spec.rb:8248316 9) Gitlab::GitAccess#check_push_access! when developers are allowed to push into the wildcard protected branch has the correct permissions for admin_without_admin_modes8317 # All admins are allowed to perform actions https://gitlab.com/gitlab-org/gitlab/-/issues/2965098318 # ./spec/lib/gitlab/git_access_spec.rb:8248319 10) Gitlab::GitAccess#check_push_access! developers are allowed to merge into the wildcard protected branch when a merge request exists for the given source/target branch when the merge request is in progress has the correct permissions for admin_without_admin_modes8320 # All admins are allowed to perform actions https://gitlab.com/gitlab-org/gitlab/-/issues/2965098321 # ./spec/lib/gitlab/git_access_spec.rb:8248322 11) Gitlab::GitAccess#check_push_access! developers are allowed to merge into the wildcard protected branch when a merge request exists for the given source/target branch when the merge request is not in progress has the correct permissions for admin_without_admin_modes8323 # All admins are allowed to perform actions https://gitlab.com/gitlab-org/gitlab/-/issues/2965098324 # ./spec/lib/gitlab/git_access_spec.rb:8248325 12) Gitlab::GitAccess#check_push_access! developers are allowed to merge into the wildcard protected branch when a merge request exists for the given source/target branch when a merge request does not exist for the given source/target branch has the correct permissions for admin_without_admin_modes8326 # All admins are allowed to perform actions https://gitlab.com/gitlab-org/gitlab/-/issues/2965098327 # ./spec/lib/gitlab/git_access_spec.rb:8248328 13) Gitlab::GitAccess#check_push_access! when developers are allowed to push and merge into the wildcard protected branch has the correct permissions for admin_without_admin_modes8329 # All admins are allowed to perform actions https://gitlab.com/gitlab-org/gitlab/-/issues/2965098330 # ./spec/lib/gitlab/git_access_spec.rb:8248331 14) Gitlab::GitAccess#check_push_access! when no one is allowed to push to the feat* protected branch has the correct permissions for admin_without_admin_modes8332 # All admins are allowed to perform actions https://gitlab.com/gitlab-org/gitlab/-/issues/2965098333 # ./spec/lib/gitlab/git_access_spec.rb:8248334Failures:8335 1) Gitlab::Ci::Pipeline::Chain::Validate::Abilities#allowed_to_write_ref? when user is a maintainer is expected to be truthy8336 Failure/Error: it { is_expected.to be_truthy }8337 expected: truthy value8338 got: false8339 # ./spec/lib/gitlab/ci/pipeline/chain/validate/abilities_spec.rb:161:in `block (4 levels) in <top (required)>'8340 # ./spec/spec_helper.rb:412:in `block (3 levels) in <top (required)>'8341 # ./spec/support/sidekiq_middleware.rb:18:in `with_sidekiq_server_middleware'8342 # ./spec/spec_helper.rb:404:in `block (2 levels) in <top (required)>'8343 # ./spec/spec_helper.rb:400:in `block (3 levels) in <top (required)>'8344 # ./lib/gitlab/application_context.rb:59:in `with_raw_context'8345 # ./spec/spec_helper.rb:400:in `block (2 levels) in <top (required)>'8346 # ./spec/spec_helper.rb:240:in `block (2 levels) in <top (required)>'8347 # ./spec/support/system_exit_detected.rb:7:in `block (2 levels) in <top (required)>'8348 # ./spec/support/flaky_tests.rb:27:in `block (2 levels) in <top (required)>'8349 # ./spec/support/database/prevent_cross_joins.rb:106:in `block (3 levels) in <top (required)>'8350 # ./spec/support/database/prevent_cross_joins.rb:60:in `with_cross_joins_prevented'8351 # ./spec/support/database/prevent_cross_joins.rb:106:in `block (2 levels) in <top (required)>'8352Finished in 20 minutes 49 seconds (files took 40.11 seconds to load)83533541 examples, 1 failure, 14 pending8354Failed examples:8355rspec ./spec/lib/gitlab/ci/pipeline/chain/validate/abilities_spec.rb:161 # Gitlab::Ci::Pipeline::Chain::Validate::Abilities#allowed_to_write_ref? when user is a maintainer is expected to be truthy8356Randomized with seed 102418357[TEST PROF INFO] Time spent in factories: 11:58.041 (57.23% of total time)8358Stopped processing SimpleCov as a previous error not related to SimpleCov has been detected8359RSpec exited with 1.8360Retrying the failing examples in a new RSpec process...8361$ gem install junit_merge --no-document --version 0.1.28362Successfully installed nokogiri-1.13.9-x86_64-linux8363Successfully installed junit_merge-0.1.283642 gems installed8365==> 'gem install junit_merge --no-document --version 0.1.2' succeeded in 1 seconds.8366Running RSpec command: bin/rspec -Ispec -rspec_helper --color --format documentation --format RspecJunitFormatter --out rspec/junit_rspec-retry.xml --only-failures --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.rb"8367Run options: include {:last_run_status=>"failed"}8368Test environment set up in 1.157851503 seconds8369Gitlab::Ci::Pipeline::Chain::Validate::Abilities8370 #allowed_to_write_ref?8371 when user is a maintainer8372 is expected to be truthy8373Finished in 5.81 seconds (files took 41.19 seconds to load)83741 example, 0 failures8375[TEST PROF INFO] Time spent in factories: 00:01.648 (20.86% of total time)8377Not uploading cache ruby-gems-debian-bullseye-ruby-2.7-16 due to policy8378Not uploading cache gitaly-ruby-gems-debian-bullseye-ruby-2.7-16 due to policy8380Uploading artifacts...8381coverage/: found 4 matching files and directories 8382crystalball/: found 2 matching files and directories 8383WARNING: deprecations/: no matching files. Ensure that the artifact path is relative to the working directory 8384knapsack/: found 3 matching files and directories 8385rspec/: found 14 matching files and directories 8386WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory 8387log/*.log: found 18 matching files and directories 8388WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/3318206486/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com8389WARNING: Retrying... context=artifacts-uploader error=request redirected8390Uploading artifacts as "archive" to coordinator... 201 Created id=3318206486 responseStatus=201 Created token=okNJ6t_x8391Uploading artifacts...8392rspec/junit_rspec.xml: found 1 matching files and directories 8393WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/3318206486/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com8394WARNING: Retrying... context=artifacts-uploader error=request redirected8395Uploading artifacts as "junit" to coordinator... 201 Created id=3318206486 responseStatus=201 Created token=okNJ6t_x8397Job succeeded