rspec unit pg13 single-db 7/28
Passed Started
by
@fabiopitino
Fabio Pitino
1Running with gitlab-runner 16.1.0~beta.5.gf131a6a2 (f131a6a2)2 on blue-4.private.runners-manager.gitlab.com/gitlab.com/gitlab-org tDjA3Sp3, system ID: s_96a8ae3d10503 feature flags: FF_NETWORK_PER_BUILD:true, FF_USE_FASTZIP:true, FF_USE_IMPROVED_URL_MASKING:true6Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 ...7Starting service registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-13-pgvector-0.4.1 ...8Authenticating with credentials from job payload (GitLab Registry)9Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-13-pgvector-0.4.1 ...10Using docker image sha256:73740c557807c4bc5d692f263c0e35454270600da4b22bbe952331411426c8b5 for registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-13-pgvector-0.4.1 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:3174001f839c42e299ac06a42f8ded446edfcb33b0eb820874749a3f53eb799c ...11WARNING: Service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 is already created. Ignoring.12WARNING: Service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 is already created. Ignoring.13Starting service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 ...14Authenticating with credentials from job payload (GitLab Registry)15Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 ...16Using docker image sha256:a9a90ece30d9630d694ab1997cd103ea8ec729789451b983a75c7b58b0062d45 for registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:7ef36177d5d0bc554fbb63d8210ae751bcc538bea7905b51d078d9ab90a755fa ...17Starting service redis:6.2-alpine ...18Pulling docker image redis:6.2-alpine ...19Using docker image sha256:85fd7bd884b6493c8eb6f4dffbe5406d97cce56aff84f1580a5eb5b9d841f158 for redis:6.2-alpine with digest redis@sha256:87c44d5d9f472e767c8737f4130c765d77bdc95c7472d6427cfc9d4632f12da6 ...20Waiting for services to be up and running (timeout 30 seconds)...21Authenticating with credentials from job payload (GitLab Registry)22Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 ...23Using docker image sha256:61b59025d0d646cd177f654d8f81df859675be528f37dcc2ce6f39a49c7a5dd9 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13@sha256:25367d41b1034f1ecacfc9cb8eebc70cb30c6fdade3781cf295488255bf61614 ...25Running on runner-tdja3sp3-project-278964-concurrent-0 via runner-tdja3sp3-private-1685686908-0408b893...27Fetching changes with git depth set to 20...28Initialized empty Git repository in /builds/gitlab-org/gitlab/.git/29Created fresh repository.30remote: Enumerating objects: 139970, done. 31remote: Counting objects: 100% (139970/139970), done. 32remote: Compressing objects: 100% (94736/94736), done. 33remote: Total 139970 (delta 61223), reused 92035 (delta 39894), pack-reused 0 34Receiving objects: 100% (139970/139970), 123.36 MiB | 30.92 MiB/s, done.35Resolving deltas: 100% (61223/61223), done.37 * [new ref] refs/pipelines/887306308 -> refs/pipelines/88730630838Checking out 95754c79 as detached HEAD (ref is refs/merge-requests/122015/merge)...39Skipping Git submodules setup40$ git remote set-url origin "${CI_REPOSITORY_URL}"42Checking cache for ruby-gems-debian-bullseye-ruby-3.0-16...43Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/ruby-gems-debian-bullseye-ruby-3.0-16 44Successfully extracted cache46Downloading artifacts for compile-test-assets (4400964016)...47Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4400964016 responseStatus=200 OK token=64_DBzFC48Downloading artifacts for detect-tests (4400964025)...49Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4400964025 responseStatus=200 OK token=64_DBzFC50Downloading artifacts for retrieve-tests-metadata (4400964028)...51Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4400964028 responseStatus=200 OK token=64_DBzFC52Downloading artifacts for setup-test-env (4400964019)...53Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4400964019 responseStatus=200 OK token=64_DBzFC55Using docker image sha256:61b59025d0d646cd177f654d8f81df859675be528f37dcc2ce6f39a49c7a5dd9 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13@sha256:25367d41b1034f1ecacfc9cb8eebc70cb30c6fdade3781cf295488255bf61614 ...56$ echo $FOSS_ONLY57$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb58$ export GOPATH=$CI_PROJECT_DIR/.go59$ mkdir -p $GOPATH60$ source scripts/utils.sh61$ source scripts/prepare_build.sh716Using decomposed database config (config/database.yml.postgresql)717Disabling ci connection in config/database.yml718Geo DB won't be set up.719Embedding DB won't be set up.731$ source ./scripts/rspec_helpers.sh732$ run_timed_command "gem install knapsack --no-document"733$ gem install knapsack --no-document734Successfully installed knapsack-4.0.07351 gem installed736==> 'gem install knapsack --no-document' succeeded in 0 seconds.737$ echo -e "\e[0Ksection_start:`date +%s`:gitaly-test-spawn[collapsed=true]\r\e[0KStarting Gitaly"739$ section_start "gitaly-test-spawn" "Spawning Gitaly"; scripts/gitaly-test-spawn; section_end "gitaly-test-spawn"744$ echo -e "\e[0Ksection_end:`date +%s`:gitaly-test-spawn\r\e[0K"745$ rspec_paralellized_job "--tag ~quarantine --tag ~level:background_migration"746SKIP_FLAKY_TESTS_AUTOMATICALLY: 747RETRY_FAILED_TESTS_IN_NEW_PROCESS: true748KNAPSACK_GENERATE_REPORT: true749FLAKY_RSPEC_GENERATE_REPORT: true750KNAPSACK_TEST_FILE_PATTERN: spec/{bin,channels,components,config,contracts,db,dependencies,elastic,elastic_integration,experiments,factories,finders,frontend,graphql,haml_lint,helpers,initializers,lib,metrics_server,models,policies,presenters,rack_servers,replicators,routing,rubocop,scripts,serializers,services,sidekiq,sidekiq_cluster,spam,support_specs,tasks,uploaders,validators,views,workers,tooling}{,/**/}*_spec.rb751KNAPSACK_LOG_LEVEL: debug752KNAPSACK_REPORT_PATH: knapsack/rspec_unit_pg13_single-db_7_28_report.json753FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json754FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg13_single-db_7_28_report.json755NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg13_single-db_7_28_report.json756SKIPPED_TESTS_REPORT_PATH: rspec/skipped_tests_rspec_unit_pg13_single-db_7_28.txt757CRYSTALBALL: 758RSPEC_TESTS_MAPPING_ENABLED: 759RSPEC_TESTS_FILTER_FILE: 760Running command: bundle exec rspec -Ispec -rspec_helper --color --failure-exit-code 1 --error-exit-code 2 --format documentation --format Support::Formatters::JsonFormatter --out rspec/rspec-4400964271.json --format RspecJunitFormatter --out rspec/rspec-4400964271.xml --tag ~quarantine --tag ~level:background_migration -- spec/models/group_spec.rb spec/models/project_wiki_spec.rb spec/lib/gitlab/background_migration/project_namespaces/backfill_project_namespaces_spec.rb spec/models/commit_spec.rb spec/services/issues/create_service_spec.rb spec/lib/banzai/filter/references/label_reference_filter_spec.rb spec/services/ci/unlock_artifacts_service_spec.rb spec/models/namespace/package_setting_spec.rb spec/services/ci/runners/create_runner_service_spec.rb spec/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_projects_spec.rb spec/lib/gitlab/url_sanitizer_spec.rb spec/services/merge_requests/cleanup_refs_service_spec.rb spec/lib/gitlab/health_checks/redis_spec.rb spec/models/integrations/every_integration_spec.rb spec/models/alert_management/alert_spec.rb spec/models/namespace/root_storage_statistics_spec.rb spec/models/discussion_spec.rb spec/models/trending_project_spec.rb spec/models/integrations/hangouts_chat_spec.rb spec/lib/gitlab/usage_data_counters/merge_request_activity_unique_counter_spec.rb spec/serializers/pipeline_serializer_spec.rb spec/lib/gitlab/background_migration/legacy_uploads_migrator_spec.rb spec/lib/gitlab/database/with_lock_retries_spec.rb spec/policies/todo_policy_spec.rb spec/models/ci/build_runner_session_spec.rb spec/services/deployments/create_for_build_service_spec.rb spec/models/timelog_spec.rb spec/lib/banzai/reference_parser/commit_range_parser_spec.rb spec/lib/gitlab/email/handler/create_note_on_issuable_handler_spec.rb spec/lib/gitlab/redis/queues_spec.rb spec/lib/gitlab/prometheus/queries/additional_metrics_deployment_query_spec.rb spec/services/branches/delete_merged_service_spec.rb spec/services/ci/archive_trace_service_spec.rb spec/workers/incident_management/process_alert_worker_v2_spec.rb spec/services/upload_service_spec.rb spec/services/projects/container_repository/delete_tags_service_spec.rb spec/graphql/mutations/merge_requests/set_reviewers_spec.rb spec/lib/gitlab/process_supervisor_spec.rb spec/models/ci/sources/pipeline_spec.rb spec/presenters/ci/stage_presenter_spec.rb spec/graphql/resolvers/work_items_resolver_spec.rb spec/tasks/gitlab/packages/events_rake_spec.rb spec/lib/gitlab/diff/lines_unfolder_spec.rb spec/helpers/timeboxes_helper_spec.rb spec/services/integrations/test/project_service_spec.rb spec/lib/gitlab/sanitizers/exif_spec.rb spec/lib/sidebars/menu_spec.rb spec/serializers/ci/lint/result_serializer_spec.rb spec/lib/gitlab/database/migrations/timeout_helpers_spec.rb spec/models/lfs_file_lock_spec.rb spec/lib/gitlab/gl_repository/repo_type_spec.rb spec/lib/gitlab/ci/build/context/global_spec.rb spec/tasks/cache_rake_spec.rb spec/initializers/00_deprecations_spec.rb spec/serializers/merge_request_serializer_spec.rb spec/models/ci/persistent_ref_spec.rb spec/workers/ci/archive_traces_cron_worker_spec.rb spec/models/personal_snippet_spec.rb spec/lib/gitlab/ci/pipeline/chain/seed_spec.rb spec/lib/gitlab/ci/variables/collection/item_spec.rb spec/initializers/secret_token_spec.rb spec/lib/gitlab/conflict/file_collection_spec.rb spec/tasks/gitlab/refresh_project_statistics_build_artifacts_size_rake_spec.rb spec/models/network/graph_spec.rb spec/services/namespace_settings/update_service_spec.rb spec/tasks/gitlab/incoming_email_rake_spec.rb spec/services/projects/move_deploy_keys_projects_service_spec.rb spec/services/ci/job_artifacts/track_artifact_report_service_spec.rb spec/graphql/mutations/release_asset_links/update_spec.rb spec/helpers/version_check_helper_spec.rb spec/tasks/import_rake_spec.rb spec/models/merge_request_assignee_spec.rb spec/models/organizations/organization_spec.rb spec/models/namespace_statistics_spec.rb spec/lib/gitlab/metrics/method_call_spec.rb spec/lib/gitlab/instrumentation/redis_interceptor_spec.rb spec/lib/gitlab/github_import/importer/issue_importer_spec.rb spec/lib/gitlab/cleanup/orphan_job_artifact_files_spec.rb spec/lib/gitlab/ci/jwt_v2_spec.rb spec/lib/gitlab/ci/runner_releases_spec.rb spec/lib/gitlab/ci/config/entry/ports_spec.rb spec/services/bulk_update_integration_service_spec.rb spec/models/loose_foreign_keys/deleted_record_spec.rb spec/graphql/resolvers/user_notes_count_resolver_spec.rb spec/services/error_tracking/list_projects_service_spec.rb spec/lib/gitlab/github_import/importer/events/cross_referenced_spec.rb spec/lib/gitlab/jira/dvcs_spec.rb spec/services/ci/test_failure_history_service_spec.rb spec/views/projects/pipelines/show.html.haml_spec.rb spec/services/merge_requests/add_spent_time_service_spec.rb spec/models/concerns/token_authenticatable_strategies/base_spec.rb spec/lib/sidebars/user_settings/menus/gpg_keys_menu_spec.rb spec/finders/users_star_projects_finder_spec.rb spec/lib/gitlab/email/message/in_product_marketing/team_spec.rb spec/views/layouts/terms.html.haml_spec.rb spec/serializers/admin/abuse_report_details_entity_spec.rb spec/models/board_spec.rb spec/services/users/dismiss_project_callout_service_spec.rb spec/tooling/lib/tooling/mappings/graphql_base_type_mappings_spec.rb spec/lib/gitlab/email/incoming_email_spec.rb spec/workers/namespaces/process_sync_events_worker_spec.rb spec/services/todos/allowed_target_filter_service_spec.rb spec/models/note_diff_file_spec.rb spec/lib/gitlab/prometheus/query_variables_spec.rb spec/models/issue_assignee_spec.rb spec/services/system_notes/base_service_spec.rb spec/models/packages/go/module_spec.rb spec/lib/gitlab/config/entry/validatable_spec.rb spec/lib/gitlab/sourcegraph_spec.rb spec/lib/sidebars/projects/menus/monitor_menu_spec.rb spec/lib/gitlab/database/migrations/observers/query_statistics_spec.rb spec/lib/api/entities/ml/mlflow/run_spec.rb spec/graphql/resolvers/blobs_resolver_spec.rb spec/workers/update_highest_role_worker_spec.rb spec/lib/gitlab/database/count/exact_count_strategy_spec.rb spec/models/users/merge_request_interaction_spec.rb spec/graphql/mutations/environments/delete_spec.rb spec/workers/packages/debian/cleanup_dangling_package_files_worker_spec.rb spec/graphql/mutations/issues/move_spec.rb spec/lib/gitlab/github_import/milestone_finder_spec.rb spec/lib/api/helpers/authentication_spec.rb spec/services/loose_foreign_keys/process_deleted_records_service_spec.rb spec/services/groups/auto_devops_service_spec.rb spec/services/projects/all_merge_requests_count_service_spec.rb spec/services/groups/group_links/update_service_spec.rb spec/lib/gitlab/github_import/importer/pull_requests/all_merged_by_importer_spec.rb spec/workers/pages_domain_verification_cron_worker_spec.rb spec/finders/ci/variables_finder_spec.rb spec/serializers/ci/dag_pipeline_entity_spec.rb spec/lib/gitlab/ci/yaml_processor/feature_flags_spec.rb spec/workers/import_issues_csv_worker_spec.rb spec/components/pajamas/spinner_component_spec.rb spec/lib/gitlab/graphs/commits_spec.rb spec/lib/gitlab/branch_push_merge_commit_analyzer_spec.rb spec/services/users/keys_count_service_spec.rb spec/services/ci/prometheus_metrics/observe_histograms_service_spec.rb spec/services/groups/merge_requests_count_service_spec.rb spec/graphql/types/group_member_type_spec.rb spec/workers/project_cache_worker_spec.rb spec/models/packages/rpm/metadatum_spec.rb spec/lib/gitlab/zentao/query_spec.rb spec/rubocop/cop/feature_flag_usage_spec.rb spec/lib/gitlab/background_migration/batching_strategies/dismissed_vulnerabilities_strategy_spec.rb spec/lib/gitlab/database/postgres_constraint_spec.rb spec/views/projects/environments/terminal.html.haml_spec.rb spec/workers/merge_requests/resolve_todos_after_approval_worker_spec.rb spec/workers/gitlab/github_import/stage/import_pull_requests_reviews_worker_spec.rb spec/views/shared/snippets/_snippet.html.haml_spec.rb spec/graphql/subscriptions/issuable_updated_spec.rb spec/lib/bulk_imports/projects/pipelines/commit_notes_pipeline_spec.rb spec/services/ci/compare_accessibility_reports_service_spec.rb spec/lib/gitlab/github_import/importer/collaborators_importer_spec.rb spec/lib/gitlab/usage_data_non_sql_metrics_spec.rb spec/lib/gitlab/import_export/avatar_restorer_spec.rb spec/lib/gitlab/bullet/exclusions_spec.rb spec/services/ci/change_variable_service_spec.rb spec/lib/gitlab/sidekiq_logging/json_formatter_spec.rb spec/workers/gitlab/github_import/stage/import_pull_requests_review_requests_worker_spec.rb spec/graphql/types/work_items/widgets/current_user_todos_type_spec.rb spec/lib/gitlab/slug/path_spec.rb spec/lib/gitlab/language_detection_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/count_users_with_ml_candidates_metric_spec.rb spec/lib/gitlab/database/load_balancing/logger_spec.rb spec/lib/gitlab/gitaly_client/storage_settings_spec.rb spec/lib/gitlab/feature_categories_spec.rb spec/rubocop/cop/migration/update_column_in_batches_spec.rb spec/lib/gitlab/email/message/in_product_marketing/trial_spec.rb spec/lib/gitlab/graphql/pagination/offset_active_record_relation_connection_spec.rb spec/workers/auto_merge_process_worker_spec.rb spec/workers/gitlab/github_gists_import/import_gist_worker_spec.rb spec/policies/timelog_policy_spec.rb spec/views/projects/pipeline_schedules/_pipeline_schedule.html.haml_spec.rb spec/lib/gitlab/database/connection_timer_spec.rb spec/lib/gitlab/memory/jemalloc_spec.rb spec/services/work_items/widgets/start_and_due_date_service/update_service_spec.rb spec/finders/terraform/states_finder_spec.rb spec/lib/gitlab/checks/force_push_spec.rb spec/lib/gitlab/github_import/importer/pull_requests/review_requests_importer_spec.rb spec/lib/gitlab/database/migrations/reestablished_connection_stack_spec.rb spec/services/pages_domains/retry_acme_order_service_spec.rb spec/rubocop/cop/performance/active_record_subtransaction_methods_spec.rb spec/graphql/mutations/achievements/delete_spec.rb spec/lib/bulk_imports/common/rest/get_badges_query_spec.rb spec/lib/gitlab/pages_spec.rb spec/models/user_mentions/snippet_user_mention_spec.rb spec/services/ci/queue/pending_builds_strategy_spec.rb spec/models/description_version_spec.rb spec/rubocop/cop/scalability/bulk_perform_with_context_spec.rb spec/workers/ci/runners/reconcile_existing_runner_versions_cron_worker_spec.rb spec/rubocop/cop/rake/require_spec.rb spec/finders/bulk_imports/imports_finder_spec.rb spec/workers/analytics/usage_trends/count_job_trigger_worker_spec.rb spec/lib/gitlab/usage_data_counters/productivity_analytics_counter_spec.rb spec/services/achievements/destroy_service_spec.rb spec/services/merge_requests/mergeability/check_draft_status_service_spec.rb spec/lib/gitlab/ci/config/header/spec_spec.rb spec/lib/gitlab/ci/config/entry/caches_spec.rb spec/helpers/projects/cluster_agents_helper_spec.rb spec/workers/gitlab/bitbucket_server_import/stage/import_lfs_objects_worker_spec.rb spec/graphql/types/error_tracking/sentry_error_collection_type_spec.rb spec/lib/banzai/pipeline/broadcast_message_pipeline_spec.rb spec/initializers/net_http_response_patch_spec.rb spec/rubocop/cop/graphql/graphql_name_position_spec.rb spec/helpers/x509_helper_spec.rb spec/lib/gitlab/ci/project_config/source_spec.rb spec/views/admin/application_settings/network.html.haml_spec.rb spec/lib/error_tracking/collector/sentry_auth_parser_spec.rb spec/lib/bitbucket_server/collection_spec.rb spec/serializers/test_reports_comparer_entity_spec.rb spec/initializers/countries_spec.rb spec/lib/gitlab/cache/metrics_spec.rb spec/graphql/types/container_respository_tags_sort_enum_spec.rb spec/lib/api/validations/validators/project_portable_spec.rb spec/lib/unnested_in_filters/dsl_spec.rb spec/services/integrations/slack_event_service_spec.rb spec/lib/sidebars/projects/super_sidebar_menus/plan_menu_spec.rb spec/lib/prometheus/cleanup_multiproc_dir_service_spec.rb spec/serializers/codequality_reports_comparer_serializer_spec.rb spec/graphql/types/packages/helm/metadata_type_spec.rb spec/lib/gitlab/ci/reports/security/link_spec.rb spec/finders/security/jobs_finder_spec.rb spec/graphql/types/label_type_spec.rb spec/serializers/serverless/domain_entity_spec.rb spec/support_specs/graphql/field_selection_spec.rb spec/graphql/types/work_items/widget_type_enum_spec.rb spec/graphql/types/issuable_state_enum_spec.rb spec/lib/gitlab/markdown_cache/field_data_spec.rb spec/lib/gitlab/usage/metrics/names_suggestions/relation_parsers/where_constraints_spec.rb spec/views/help/show.html.haml_spec.rb spec/serializers/ci/lint/result_entity_spec.rb spec/serializers/evidences/issue_entity_spec.rb spec/serializers/project_mirror_entity_spec.rb spec/serializers/integrations/harbor_serializers/tag_serializer_spec.rb spec/graphql/types/work_items/widgets/hierarchy_type_spec.rb spec/serializers/evidences/release_serializer_spec.rb spec/serializers/project_mirror_serializer_spec.rb spec/lib/gitlab/saas_spec.rb spec/lib/gitlab/gitaly_client/util_spec.rbKnapsack report generator started!761warning: parser/current is loading parser/ruby30, which recognizes 3.0.5-compliant syntax, but you are running 3.0.6.763Run options: exclude {:quarantine=>true, :level=>"background_migration"}764Test environment set up in 0.762344331 seconds765Group766 associations767 is expected to have many projects768 is expected to have many group_members dependent => destroy769 is expected to have many namespace_members770 is expected to have many users through group_members771 is expected to have many owners through group_members772 is expected to have many requesters dependent => destroy773 is expected to have many namespace_requesters774 is expected to have many members_and_requesters775 is expected to have many namespace_members_and_requesters776 is expected to have many project_group_links dependent => destroy777 is expected to have many shared_projects through project_group_links778 is expected to have many notification_settings dependent => destroy779 is expected to have many labels class_name => GroupLabel780 is expected to have many variables class_name => Ci::GroupVariable781 is expected to have many uploads782 is expected to have one chat_team783 is expected to have many custom_attributes class_name => GroupCustomAttribute784 is expected to have many badges class_name => GroupBadge785 is expected to have many cluster_groups class_name => Clusters::Group786 is expected to have many clusters class_name => Clusters::Cluster787 is expected to have many container_repositories788 is expected to have many milestones789 is expected to have many group_deploy_keys790 is expected to have many integrations791 is expected to have one dependency_proxy_setting792 is expected to have one dependency_proxy_image_ttl_policy793 is expected to have many dependency_proxy_blobs794 is expected to have many dependency_proxy_manifests795 is expected to have many debian_distributions class_name => Packages::Debian::GroupDistribution dependent => destroy796 is expected to have many daily_build_group_report_results class_name => Ci::DailyBuildGroupReportResult797 is expected to have many group_callouts class_name => Users::GroupCallout798 is expected to have many bulk_import_exports class_name => BulkImports::Export799 is expected to have many bulk_import_entities class_name => BulkImports::Entity inverse_of => group800 is expected to have many contacts class_name => CustomerRelations::Contact801 is expected to have many crm_organizations class_name => CustomerRelations::Organization802 is expected to have many protected_branches inverse_of => group803 is expected to have one crm_settings804 is expected to have one group_feature805 is expected to have one harbor_integration806 #namespace_members807 includes the correct users808 is equivelent to #group_members809 behaves like query without source filters810 is expected not to include "source_id" and "source_type"811 #namespace_requesters812 includes the correct users813 is equivalent to #requesters814 behaves like query without source filters815 is expected not to include "source_id" and "source_type"816 #namespace_members_and_requesters817 includes the correct users818 is equivalent to #members_and_requesters819 behaves like query without source filters820 is expected not to include "source_id" and "source_type"821 #namespace_members setters822 is expected to be an instance of GroupMember823 is expected to eq #<User id:17 @user17>824 is expected to eq #<Group id:67 @group50>825 is expected to be nil826 behaves like polymorphic membership relationship827 is expected to include {"source_type" => "Namespace", "source_id" => 71}828 behaves like member_namespace membership relationship829 is expected to include {"member_namespace_id" => 73}830 #namespace_requesters setters831 is expected to be an instance of GroupMember832 is expected to eq #<User id:23 @user23>833 is expected to eq #<Group id:79 @group56>834 is expected to eq 2023-06-02 06:26:51.898229623 +0000835 behaves like polymorphic membership relationship836 is expected to include {"source_type" => "Namespace", "source_id" => 83}837 behaves like member_namespace membership relationship838 is expected to include {"member_namespace_id" => 85}839 #namespace_members_and_requesters setters840 is expected to be an instance of GroupMember841 is expected to eq #<User id:29 @user29>842 is expected to eq #<Group id:91 @group62>843 is expected to eq 2023-06-02 06:26:53.834084853 +0000844 behaves like polymorphic membership relationship845 is expected to include {"source_type" => "Namespace", "source_id" => 95}846 behaves like member_namespace membership relationship847 is expected to include {"member_namespace_id" => 97}848 #members & #requesters849 behaves like members and requesters associations850 #members_and_requesters851 includes members and requesters852 #members853 includes members and exclude requesters854 #requesters855 does not include requesters856 modules857 is expected to includes the Referable module858 validations859 is expected to validate that :name cannot be empty/falsy860 is expected not to allow :path to be ‹"colon:in:path"›861 is expected to allow :name to be ‹"group test_4"›862 is expected not to allow :name to be ‹"test/../foo"›863 is expected not to allow :name to be ‹"<script>alert(\"Attack!\")</script>"›864 is expected to validate that :path cannot be empty/falsy865 is expected not to validate that :owner cannot be empty/falsy866 is expected to validate that :two_factor_grace_period cannot be empty/falsy867 is expected to validate that :two_factor_grace_period looks like a number greater than or equal to 0868 validating the parent of a group869 when the group has no parent870 allows a group to have no parent associated with it871 when the group has a parent872 does not allow a group to have a namespace as its parent873 allows a group to have another group as its parent874 does not allow a subgroup to have the same name as an existing subgroup875 path validation876 rejects paths reserved on the root namespace when the group has no parent877 allows root paths when the group has a parent878 rejects any wildcard paths when not a top level group879 #notification_settings880 also gets notification settings from parent groups881 when sub group is deleted882 does not delete parent notification settings883 #notification_email_for884 when both group notification emails are set885 returns subgroup notification email886 when subgroup notification email is blank887 returns parent group notification email888 when only the parent group notification email is set889 returns parent group notification email890 #visibility_level_allowed_by_parent891 without a parent892 is valid893 with a parent894 when visibility of sub group is greater than the parent895 is invalid896 when visibility of sub group is lower or equal to the parent897 is valid898 is valid899 #visibility_level_allowed_by_projects900 when group has a lower visibility901 is invalid902 when group has a higher visibility903 is valid904 #visibility_level_allowed_by_sub_groups905 when parent group has a lower visibility906 is invalid907 when parent group has a higher visibility908 is valid909 #two_factor_authentication_allowed910 for a parent group911 is valid912 for a child group913 is valid when parent group allows914 is invalid when parent group blocks915 behaves like a BulkUsersByEmailLoad model916 #users_by_emails917 when nothing is loaded918 preforms the yielded query and supplies the data with only emails desired919 when store is preloaded920 passes back loaded data and does not update the items that already exist921 behaves like ensures runners_token is prefixed922 #runners_token923 generates runners_token which starts with runner prefix924 when record has an invalid token925 generates runners_token which starts with runner prefix926 after initialized927 has a group_feature928 when creating a new project929 automatically creates the groups feature for the group930 traversal_ids on create931 default traversal_ids932 is expected to eq [178]933 has a parent934 is expected to eq [179]935 is expected to eq [181, 182]936 has a parent update before save937 avoid traversal_ids race condition938 traversal_ids on update939 parent is updated940 behaves like update on column941 traversal_ids column updated942 parent is not updated943 behaves like no update on column944 traversal_ids column is not updated945 traversal_ids on ancestral update946 update multiple ancestors before save947 avoids traversal_ids race condition948 assign a new parent949 within the same hierarchy950 with FOR NO KEY UPDATE lock951 updates traversal_ids952 behaves like hierarchy with traversal_ids953 will be valid954 behaves like locked row955 has locked row956 to another hierarchy957 updates traversal_ids958 behaves like locked rows959 has locked rows960 old hierarchy961 behaves like hierarchy with traversal_ids962 will be valid963 new hierarchy964 behaves like hierarchy with traversal_ids965 will be valid966 from being a root ancestor967 updates traversal_ids968 behaves like locked rows969 has locked rows970 behaves like hierarchy with traversal_ids971 will be valid972 to being a root ancestor973 updates traversal_ids974 behaves like locked rows975 has locked rows976 behaves like hierarchy with traversal_ids977 will be valid978 assigning a new grandparent979 updates traversal_ids for all descendants980 traversal queries981 recursive982 behaves like namespace traversal983 #root_ancestor984 returns the correct root ancestor985 #recursive_root_ancestor986 is equivalent to #recursive_root_ancestor987 #self_and_hierarchy988 returns the correct tree989 #recursive_self_and_hierarchy990 behaves like recursive version991 is equivalent to #self_and_hierarchy992 makes a recursive query993 #ancestors994 returns the correct ancestors995 with asc hierarchy_order996 returns the correct ancestors997 with desc hierarchy_order998 returns the correct ancestors999 #recursive_ancestors1000 behaves like recursive version1001 is equivalent to #ancestors1002 makes a recursive query1003 #ancestor_ids1004 returns the correct ancestor ids1005 with asc hierarchy_order1006 returns the correct ancestor ids1007 with desc hierarchy_order1008 returns the correct ancestor ids1009 #recursive_ancestor_ids1010 behaves like recursive version1011 is equivalent to #ancestor_ids1012 makes a recursive query1013 #self_and_ancestors1014 returns the correct ancestors1015 with asc hierarchy_order1016 returns the correct ancestors1017 with desc hierarchy_order1018 returns the correct ancestors1019 #recursive_self_and_ancestors1020 behaves like recursive version1021 is equivalent to #self_and_ancestors1022 makes a recursive query1023 #self_and_ancestor_ids1024 returns the correct ancestor ids1025 with asc hierarchy_order1026 returns the correct ancestor ids1027 with desc hierarchy_order1028 returns the correct ancestor ids1029 #recursive_self_and_ancestor_ids1030 behaves like recursive version1031 is equivalent to #self_and_ancestor_ids1032 makes a recursive query1033 #ancestors_upto1034 with use_traversal_ids_for_ancestors_upto enabled1035 returns all ancestors when no namespace is given1036 includes ancestors upto but excluding the given ancestor1037 with asc hierarchy_order1038 returns the correct ancestor ids1039 with desc hierarchy_order1040 returns the correct ancestor ids1041 #recursive_self_and_ancestor_ids1042 is equivalent to ancestors_upto1043 makes a recursive query1044 with use_traversal_ids_for_ancestors_upto disabled1045 returns all ancestors when no namespace is given1046 includes ancestors upto but excluding the given ancestor1047 with asc hierarchy_order1048 returns the correct ancestor ids1049 with desc hierarchy_order1050 returns the correct ancestor ids1051 #recursive_self_and_ancestor_ids1052 is equivalent to ancestors_upto1053 makes a recursive query1054 #descendants1055 returns the correct descendants1056 does not include project namespaces1057 #recursive_descendants1058 behaves like recursive version1059 is equivalent to #descendants1060 makes a recursive query1061 #self_and_descendants1062 returns the correct descendants1063 does not include project namespaces1064 #recursive_self_and_descendants1065 behaves like recursive version1066 is equivalent to #self_and_descendants1067 makes a recursive query1068 #self_and_descendant_ids1069 is expected to contain exactly 235, 236, 237, and 2381070 #recursive_self_and_descendant_ids1071 behaves like recursive version1072 is equivalent to #self_and_descendant_ids1073 makes a recursive query1074 #self_and_descendants1075 is expected not to include "traversal_ids @>"1076 #self_and_descendant_ids1077 is expected not to include "traversal_ids @>"1078 #descendants1079 is expected not to include "traversal_ids @>"1080 #self_and_hierarchy1081 is expected not to include "traversal_ids @>"1082 #ancestors1083 is expected not to include "traversal_ids <@"1084 #ancestors_upto1085 is expected not to include "WITH ORDINALITY"1086 .shortest_traversal_ids_prefixes1087 is expected to raise /Feature not supported since the `:use_traversal_ids` is disabled/1088 linear1089 behaves like namespace traversal1090 #root_ancestor1091 returns the correct root ancestor1092 #recursive_root_ancestor1093 is equivalent to #recursive_root_ancestor1094 #self_and_hierarchy1095 returns the correct tree1096 #recursive_self_and_hierarchy1097 behaves like recursive version1098 is equivalent to #self_and_hierarchy1099 makes a recursive query1100 #ancestors1101 returns the correct ancestors1102 with asc hierarchy_order1103 returns the correct ancestors1104 with desc hierarchy_order1105 returns the correct ancestors1106 #recursive_ancestors1107 behaves like recursive version1108 is equivalent to #ancestors1109 makes a recursive query1110 #ancestor_ids1111 returns the correct ancestor ids1112 with asc hierarchy_order1113 returns the correct ancestor ids1114 with desc hierarchy_order1115 returns the correct ancestor ids1116 #recursive_ancestor_ids1117 behaves like recursive version1118 is equivalent to #ancestor_ids1119 makes a recursive query1120 #self_and_ancestors1121 returns the correct ancestors1122 with asc hierarchy_order1123 returns the correct ancestors1124 with desc hierarchy_order1125 returns the correct ancestors1126 #recursive_self_and_ancestors1127 behaves like recursive version1128 is equivalent to #self_and_ancestors1129 makes a recursive query1130 #self_and_ancestor_ids1131 returns the correct ancestor ids1132 with asc hierarchy_order1133 returns the correct ancestor ids1134 with desc hierarchy_order1135 returns the correct ancestor ids1136 #recursive_self_and_ancestor_ids1137 behaves like recursive version1138 is equivalent to #self_and_ancestor_ids1139 makes a recursive query1140 #ancestors_upto1141 with use_traversal_ids_for_ancestors_upto enabled1142 returns all ancestors when no namespace is given1143 includes ancestors upto but excluding the given ancestor1144 with asc hierarchy_order1145 returns the correct ancestor ids1146 with desc hierarchy_order1147 returns the correct ancestor ids1148 #recursive_self_and_ancestor_ids1149 is equivalent to ancestors_upto1150 makes a recursive query1151 with use_traversal_ids_for_ancestors_upto disabled1152 returns all ancestors when no namespace is given1153 includes ancestors upto but excluding the given ancestor1154 with asc hierarchy_order1155 returns the correct ancestor ids1156 with desc hierarchy_order1157 returns the correct ancestor ids1158 #recursive_self_and_ancestor_ids1159 is equivalent to ancestors_upto1160 makes a recursive query1161 #descendants1162 returns the correct descendants1163 does not include project namespaces1164 #recursive_descendants1165 behaves like recursive version1166 is equivalent to #descendants1167 makes a recursive query1168 #self_and_descendants1169 returns the correct descendants1170 does not include project namespaces1171 #recursive_self_and_descendants1172 behaves like recursive version1173 is equivalent to #self_and_descendants1174 makes a recursive query1175 #self_and_descendant_ids1176 is expected to contain exactly 300, 301, 302, and 3031177 #recursive_self_and_descendant_ids1178 behaves like recursive version1179 is equivalent to #self_and_descendant_ids1180 makes a recursive query1181 #self_and_descendants1182 is expected to include "traversal_ids @>"1183 #self_and_descendant_ids1184 is expected to include "traversal_ids @>"1185 #descendants1186 is expected to include "traversal_ids @>"1187 #self_and_hierarchy1188 is expected to include "traversal_ids @>"1189 #ancestors1190 is expected to include "\"namespaces\".\"id\" = 233"1191 hierarchy order1192 ancestor linear queries feature flag disabled1193 is expected not to include "traversal_ids <@"1194 #ancestors_upto1195 is expected to include "WITH ORDINALITY"1196 .shortest_traversal_ids_prefixes1197 for many top-level namespaces1198 when querying all groups1199 returns all traversal_ids1200 when querying selected groups1201 returns only a selected traversal_ids1202 for namespace hierarchy1203 when querying all groups1204 returns only shortest prefixes of top-level groups1205 when sub-group is reparented1206 returns a proper shortest prefix of a new group1207 when querying sub-groups1208 returns sub-groups as they are shortest prefixes1209 when querying group and sub-group of this group1210 returns parent groups as this contains all sub-groups1211 when project namespace exists in the group1212 filters out project namespace1213 .without_integration1214 returns groups without integration1215 .public_or_visible_to_user1216 when user is nil1217 is expected to contain exactly #<Group id:402 @group353>1218 when user1219 when user does not have access to any private group1220 is expected to contain exactly #<Group id:409 @group360> and #<Group id:406 @group357>1221 when user is a member of private group1222 is expected to contain exactly #<Group id:412 @group362>, #<Group id:414 @group364>, and #<Group id:411 @group361>1223 does not have access to subgroups (see accessible_to_user scope)1224 when user is a member of private subgroup1225 is expected to contain exactly #<Group id:423 @group370/group371>, #<Group id:424 @group372>, and #<Group id:421 @group369>1226 scopes1227 public_only1228 is expected to eq [#<Group id:430 @group375>]1229 public_and_internal_only1230 is expected to contain exactly #<Group id:431 @group376> and #<Group id:427 @group374>1231 non_public_only1232 is expected to contain exactly #<Group id:426 @group373> and #<Group id:427 @group374>1233 private_only1234 is expected to contain exactly #<Group id:426 @group373>1235 with_onboarding_progress1236 joins onboarding_progress1237 for_authorized_group_members1238 is expected to contain exactly #<Group id:426 @group373>1239 for_authorized_project_members1240 is expected to contain exactly #<Group id:427 @group374>1241 .with_project_creation_levels1242 returns groups with the specified project creation levels1243 .project_creation_allowed1244 only includes groups where project creation is allowed1245 when the application_setting is set to `NO_ONE_PROJECT_ACCESS`1246 only includes groups where project creation is allowed1247 by_ids_or_paths1248 returns matching records based on paths1249 returns matching records based on ids1250 returns matching records based on both paths and ids1251 returns matching records based on full_paths1252 excluding_groups1253 when passing a single group1254 does not return excluded group1255 when passing an array with groups1256 does not return excluded groups1257 accessible_to_user1258 when user is nil1259 is expected to contain exactly #<Group id:466 @group408> and #<Group id:461 @group403>1260 when user is present1261 is expected to contain exactly #<Group id:467 @group409>, #<Group id:427 @group374>, and #<Group id:461 @group403>1262 when user has access to accessible group1263 is expected to contain exactly #<Group id:469 @group410>, #<Group id:427 @group374>, #<Group id:461 @group403>, #<Group id:464 @group406>, and #<Group id:465 @group406/group407>1264 #to_reference1265 returns a String reference to the object1266 #users1267 is expected to eq #<ActiveRecord::Associations::CollectionProxy []>1268 #human_name1269 is expected to eq "group413"1270 #add_user1271 adds the user1272 #add_users1273 updates the group permission1274 when `tasks_to_be_done` and `tasks_project_id` are passed1275 creates a member_task with the correct attributes1276 #avatar_type1277 is true if avatar is image1278 is false if avatar is html page1279 #avatar_url1280 when avatar file is uploaded1281 shows correct avatar url1282 .search1283 returns groups with a matching name1284 returns groups with a partially matching name1285 returns groups with a matching name regardless of the casing1286 returns groups with a matching path1287 returns groups with a partially matching path1288 returns groups with a matching path regardless of the casing1289 #has_owner?1290 is expected to be truthy1291 is expected to be falsey1292 is expected to be falsey1293 is expected to be falsey1294 is expected to be falsey1295 is expected to be falsey1296 is expected to be falsey1297 #has_maintainer?1298 is expected to be falsey1299 is expected to be truthy1300 is expected to be falsey1301 is expected to be falsey1302 is expected to be falsey1303 is expected to be falsey1304 is expected to be falsey1305 #last_owner?1306 is expected to be truthy1307 there is also a project_bot owner1308 is expected to be truthy1309 with two owners1310 is expected to be falsy1311 with owners from a parent1312 when top-level group1313 is expected to be truthy1314 with group sharing1315 is expected to be truthy1316 when subgroup1317 is expected to be truthy1318 with two owners1319 is expected to be falsey1320 #member_last_blocked_owner?1321 when last_blocked_owner is set1322 returns true1323 returns false1324 when last_blocked_owner is not set1325 is expected to equal true1326 with another active owner1327 is expected to equal false1328 with another active project_bot owner1329 is expected to equal true1330 with 2 blocked owners1331 is expected to equal false1332 with owners from a parent1333 when top-level group1334 is expected to equal true1335 with group sharing1336 is expected to equal true1337 when subgroup1338 is expected to equal true1339 with two owners1340 is expected to equal false1341 when analyzing blocked owners1342 #single_blocked_owner?1343 when there is only one blocked owner1344 returns true1345 when there are multiple blocked owners1346 returns true1347 when there are no blocked owners1348 returns false1349 #blocked_owners1350 has only blocked owners1351 #member_owners_excluding_project_bots1352 returns the member-owners1353 there is also a project_bot owner1354 returns only the human member-owners1355 with owners from a parent1356 when top-level group1357 with group sharing1358 returns only direct member-owners1359 when subgroup1360 returns member-owners including parents1361 when there are no owners1362 returns an empty result1363 #member_last_owner?1364 when last_owner is set1365 returns true1366 returns false1367 when last_owner is not set1368 returns true1369 #lfs_enabled?1370 LFS enabled globally1371 returns true when nothing is set1372 returns false when set to false1373 returns true when set to true1374 LFS disabled globally1375 returns false when nothing is set1376 returns false when set to false1377 returns false when set to true1378 #owners1379 returns the owners of a Group1380 #web_url1381 returns the canonical URL1382 nested group1383 is expected to include "groups/group509/group508"1384 nested group1385 is expected to be valid1386 is expected to be a kind of Group(id: integer, name: string, path: string, owner_id: integer, created_at: datetime, updated_at: d...endants_override_disabled_shared_runners: boolean, traversal_ids: integer, organization_id: integer)1387 #max_member_access_for_user1388 with user in the group1389 returns correct access level1390 when user is nil1391 returns NO_ACCESS1392 evaluating admin access level1393 returns NO_ACCESS when only concrete membership should be considered1394 when admin mode is enabled1395 returns OWNER by default1396 when admin mode is disabled1397 returns NO_ACCESS1398 group shared with another group1399 with user in the group1400 returns correct access level1401 with lower group access level than max access level for share1402 returns correct access level1403 with user in the parent group1404 returns correct access level1405 with user in the child group1406 returns correct access level1407 unrelated project owner1408 returns correct access level1409 user without accepted access request1410 returns correct access level1411 multiple groups shared with group1412 returns correct access level1413 #direct_members1414 does not return members of the parent1415 returns the direct member of the group1416 group sharing1417 does not return members of the shared_with group1418 #members_with_parents1419 behaves like members_with_parents1420 returns parents active members1421 group sharing1422 returns shared with group active members1423 #authorizable_members_with_parents1424 behaves like members_with_parents1425 returns parents active members1426 group sharing1427 returns shared with group active members1428 members with associated user but also having invite_token1429 includes such members in the result1430 invited members1431 does not include such members in the result1432 members from group shares1433 an invited member that is part of the shared_with_group1434 does not include such members in the result1435 #members_from_self_and_ancestors_with_effective_access_level1436 returns effective access level for user1437 members-related methods1438 #direct_and_indirect_members1439 returns parents members1440 returns descendant members1441 #direct_and_indirect_members_with_inactive1442 returns parents members1443 returns descendant members1444 #users_with_descendants1445 returns member users on every nest level without duplication1446 user-related methods1447 #direct_and_indirect_users1448 returns member users on every nest level without duplication1449 does not return members of projects belonging to ancestor groups1450 #direct_and_indirect_users_with_inactive1451 returns member users on every nest level without duplication1452 returns members of projects belonging to group1453 #project_users_with_descendants1454 returns members of all projects in group and subgroups1455 #refresh_members_authorized_projects1456 users for which authorizations refresh is executed1457 processes authorizations refresh for all members of the group1458 when explicitly specified to run only for direct members1459 processes authorizations refresh only for direct members of the group1460 #users_ids_of_direct_members1461 does not return user ids of the members of the parent1462 returns the user ids of the direct member of the group1463 group sharing1464 does not return the user ids of members of the shared_with group1465 #user_ids_for_project_authorizations1466 returns the user IDs for which to refresh authorizations1467 group sharing1468 returns the user IDs for shared with group members1469 distinct user ids1470 returns only distinct user ids of users for which to refresh authorizations1471 #self_and_hierarchy_intersecting_with_user_groups1472 makes a call to GroupsFinder1473 when the group is private1474 when the user is not a member of the group1475 is an empty array1476 when the user is a member of the group1477 is equal to the group1478 when the group has a sub group1479 when the user is not a member of the subgroup1480 is an empty array1481 when the user is a member of the subgroup1482 is equal to the group and subgroup1483 when the group has an ancestor1484 is equal to the ancestor, group and subgroup1485 when the group is public1486 is equal to the public group regardless of membership1487 #update_two_factor_requirement_for_members1488 group membership1489 enables two_factor_requirement for group members1490 disables two_factor_requirement for group members1491 sub groups and projects1492 expanded group members1493 two_factor_requirement is enabled1494 two_factor_requirement is also enabled for ancestor group1495 enables two_factor_requirement for subgroup member1496 two_factor_requirement is disabled for ancestor group1497 enables two_factor_requirement for subgroup member1498 enable two_factor_requirement for ancestor group member1499 two_factor_requirement is disabled1500 two_factor_requirement is enabled for ancestor group1501 enables two_factor_requirement for subgroup member1502 two_factor_requirement is also disabled for ancestor group1503 disables two_factor_requirement for subgroup member1504 disables two_factor_requirement for ancestor group member1505 project members1506 does not enable two_factor_requirement for child project member1507 does not enable two_factor_requirement for subgroup child project member1508 #update_two_factor_requirement1509 enqueues a job when require_two_factor_authentication is changed1510 enqueues a job when two_factor_grace_period is changed1511 does not enqueue a job when other attributes are changed1512 #path_changed_hook1513 for a new group1514 does not trigger system hook1515 for an existing group1516 when the path is changed1517 triggers the rename system hook1518 when the path is not changed1519 does not trigger system hook1520 #highest_group_member1521 when the user is not a member of any group in the hierarchy1522 returns nil1523 when the user is only a member of one group in the hierarchy1524 returns that group member1525 when the user is a member of several groups in the hierarchy1526 returns the group member with the highest access level1527 #bots1528 is expected to contain exactly #<User id:347 @user337>1529 is expected not to include #<User id:348 @user338>1530 #related_group_ids1531 returns id1532 returns ancestor id1533 returns shared with group id1534 with more than one ancestor group1535 returns all ancestor group ids1536 with more than one shared with group1537 returns all shared with group ids1538 with uploads1539 behaves like model with uploads1540 .destroy1541 with mounted uploader1542 deletes remote uploads1543 with not mounted uploads1544 with local files1545 deletes any FileUploader uploads which are not mounted1546 deletes local files1547 with remote files1548 deletes any FileUploader uploads which are not mounted1549 deletes remote files1550 #first_auto_devops_config1551 instance_value: true, group_value: nil, config: {:status=>true, :scope=>:instance}1552 is expected to eq {:scope=>:instance, :status=>true}1553 instance_value: true, group_value: true, config: {:status=>true, :scope=>:group}1554 is expected to eq {:scope=>:group, :status=>true}1555 instance_value: true, group_value: false, config: {:status=>false, :scope=>:group}1556 is expected to eq {:scope=>:group, :status=>false}1557 instance_value: false, group_value: nil, config: {:status=>false, :scope=>:instance}1558 is expected to eq {:scope=>:instance, :status=>false}1559 instance_value: false, group_value: true, config: {:status=>true, :scope=>:group}1560 is expected to eq {:scope=>:group, :status=>true}1561 instance_value: false, group_value: false, config: {:status=>false, :scope=>:group}1562 is expected to eq {:scope=>:group, :status=>false}1563 with parent groups1564 instance_value: true, parent_value: nil, group_value: nil, config: {:status=>true, :scope=>:instance}1565 is expected to eq {:scope=>:instance, :status=>true}1566 caches the parent config when group auto_devops_enabled is nil1567 instance_value: true, parent_value: nil, group_value: true, config: {:status=>true, :scope=>:group}1568 is expected to eq {:scope=>:group, :status=>true}1569 caches the parent config when group auto_devops_enabled is nil1570 instance_value: true, parent_value: nil, group_value: false, config: {:status=>false, :scope=>:group}1571 is expected to eq {:scope=>:group, :status=>false}1572 caches the parent config when group auto_devops_enabled is nil1573 instance_value: true, parent_value: true, group_value: nil, config: {:status=>true, :scope=>:group}1574 is expected to eq {:scope=>:group, :status=>true}1575 caches the parent config when group auto_devops_enabled is nil1576 instance_value: true, parent_value: true, group_value: true, config: {:status=>true, :scope=>:group}1577 is expected to eq {:scope=>:group, :status=>true}1578 caches the parent config when group auto_devops_enabled is nil1579 instance_value: true, parent_value: true, group_value: false, config: {:status=>false, :scope=>:group}1580 is expected to eq {:scope=>:group, :status=>false}1581 caches the parent config when group auto_devops_enabled is nil1582 instance_value: true, parent_value: false, group_value: nil, config: {:status=>false, :scope=>:group}1583 is expected to eq {:scope=>:group, :status=>false}1584 caches the parent config when group auto_devops_enabled is nil1585 instance_value: true, parent_value: false, group_value: true, config: {:status=>true, :scope=>:group}1586 is expected to eq {:scope=>:group, :status=>true}1587 caches the parent config when group auto_devops_enabled is nil1588 instance_value: true, parent_value: false, group_value: false, config: {:status=>false, :scope=>:group}1589 is expected to eq {:scope=>:group, :status=>false}1590 caches the parent config when group auto_devops_enabled is nil1591 instance_value: false, parent_value: nil, group_value: nil, config: {:status=>false, :scope=>:instance}1592 is expected to eq {:scope=>:instance, :status=>false}1593 caches the parent config when group auto_devops_enabled is nil1594 instance_value: false, parent_value: nil, group_value: true, config: {:status=>true, :scope=>:group}1595 is expected to eq {:scope=>:group, :status=>true}1596 caches the parent config when group auto_devops_enabled is nil1597 instance_value: false, parent_value: nil, group_value: false, config: {:status=>false, :scope=>:group}1598 is expected to eq {:scope=>:group, :status=>false}1599 caches the parent config when group auto_devops_enabled is nil1600 instance_value: false, parent_value: true, group_value: nil, config: {:status=>true, :scope=>:group}1601 is expected to eq {:scope=>:group, :status=>true}1602 caches the parent config when group auto_devops_enabled is nil1603 instance_value: false, parent_value: true, group_value: true, config: {:status=>true, :scope=>:group}1604 is expected to eq {:scope=>:group, :status=>true}1605 caches the parent config when group auto_devops_enabled is nil1606 instance_value: false, parent_value: true, group_value: false, config: {:status=>false, :scope=>:group}1607 is expected to eq {:scope=>:group, :status=>false}1608 caches the parent config when group auto_devops_enabled is nil1609 instance_value: false, parent_value: false, group_value: nil, config: {:status=>false, :scope=>:group}1610 is expected to eq {:scope=>:group, :status=>false}1611 caches the parent config when group auto_devops_enabled is nil1612 instance_value: false, parent_value: false, group_value: true, config: {:status=>true, :scope=>:group}1613 is expected to eq {:scope=>:group, :status=>true}1614 caches the parent config when group auto_devops_enabled is nil1615 instance_value: false, parent_value: false, group_value: false, config: {:status=>false, :scope=>:group}1616 is expected to eq {:scope=>:group, :status=>false}1617 caches the parent config when group auto_devops_enabled is nil1618 cache expiration1619 clears both self and descendant cache when the parent value is updated1620 only clears self cache when there are no dependents1621 #auto_devops_enabled?1622 when auto devops is explicitly enabled on group1623 is expected to be truthy1624 when auto devops is explicitly disabled on group1625 is expected to be falsy1626 when auto devops is implicitly enabled or disabled1627 when auto devops is enabled on root group1628 is expected to be truthy1629 when auto devops is disabled on root group1630 is expected to be falsy1631 when auto devops is disabled on parent group and enabled on root group1632 is expected to be falsy1633 project_creation_level1634 outputs the default one if it is nil1635 subgroup_creation_level1636 defaults to maintainers1637 #access_request_approvers_to_be_notified1638 returns a maximum of ten owners of the group in recent_sign_in descending order1639 returns active, non_invited, non_requested owners of the group1640 .preset_root_ancestor_for1641 does noting for single group1642 sets the same root_ancestor for multiple groups1643 #update_shared_runners_setting!1644 enabled1645 group that its ancestors have shared runners disabled1646 raises exception1647 does not enable shared runners1648 root group with shared runners disabled1649 enables shared Runners only for itself1650 disabled_and_unoverridable1651 disables shared Runners for all descendant groups and projects1652 with override on self1653 disables it1654 disabled_and_overridable1655 top level group1656 enables allow descendants to override only for itself1657 group that its ancestors have shared Runners disabled but allows to override1658 enables allow descendants to override1659 when parent does not allow1660 raises exception1661 does not allow descendants to override1662 top level group that has shared Runners enabled1663 enables allow descendants to override & disables shared runners everywhere1664 disabled_with_override (deprecated)1665 top level group1666 enables allow descendants to override only for itself1667 group that its ancestors have shared Runners disabled but allows to override1668 enables allow descendants to override1669 when parent does not allow1670 raises exception1671 does not allow descendants to override1672 top level group that has shared Runners enabled1673 enables allow descendants to override & disables shared runners everywhere1674 #default_branch_name1675 when group.namespace_settings does not have a default branch name1676 returns nil1677 when group.namespace_settings has a default branch name1678 returns the default branch name1679 #access_level_roles1680 returns the correct roles1681 #membership_locked?1682 returns false1683 #first_owner1684 the group has owners1685 is the first owner1686 the group has a parent1687 is the first owner of the parent1688 we fallback to group.owner1689 is the group.owner1690 #parent_allows_two_factor_authentication?1691 returns true for top-level group1692 for subgroup1693 returns true if parent group allows two factor authentication for its descendants1694 returns true if parent group allows two factor authentication for its descendants1695 has_project_with_service_desk_enabled?1696 when service desk is enabled1697 for top level group1698 is expected to eq true1699 when service desk is not supported1700 is expected to eq false1701 for subgroup project1702 is expected to eq true1703 when none of group child projects has service desk enabled1704 is expected to eq false1705 with Debian Distributions1706 behaves like model with Debian distributions1707 removes distribution files on removal1708 .ids_with_disabled_email1709 behaves like returns namespaces with disabled email1710 is expected to eq #<Set: {1226}>1711 .timelogs1712 returns timelogs belonging to the group1713 .crm_organizations1714 returns crm_organizations belonging to the group1715 .contacts1716 returns contacts belonging to the group1717 #to_ability_name1718 returns group1719 #activity_path1720 returns the group activity_path1721 with export1722 #export_file_exists? returns true1723 #export_archive_exists? returns true1724 #open_issues_count1725 provides the issue count1726 invokes the count service with current_user1727 invokes the count service with no current_user1728 #open_merge_requests_count1729 provides the merge request count1730 invokes the count service with current_user1731 invokes the count service with no current_user1732 #dependency_proxy_image_prefix1733 converts uppercase letters to lowercase1734 removes the protocol1735 does not include /groups1736 #dependency_proxy_image_ttl_policy1737 builds a new policy if one does not exist1738 with existing policy1739 returns the policy if it already exists1740 #dependency_proxy_setting1741 builds a new policy if one does not exist1742 with existing policy1743 returns the policy if it already exists1744 #crm_enabled?1745 returns false where no crm_settings exist1746 returns false where crm_settings.state is disabled1747 returns true where crm_settings.state is enabled1748 returns true where crm_settings.state is enabled for subgroup1749 .get_ids_by_ids_or_paths1750 returns ids matching records based on paths1751 returns ids matching records based on ids1752 returns ids matching records based on both paths and ids1753 #shared_with_group_links_visible_to_user1754 when user is admin1755 returns all existing shared group links1756 when user is nil1757 returns only link of public shared group1758 when user has no access to private shared group1759 returns links of internal and public shared groups1760 when user is member of private shared group1761 returns links of private, internal and public shared groups1762 when user is inherited member of private shared group1763 returns links of private, internal and public shared groups1764 #enforced_runner_token_expiration_interval and #effective_runner_token_expiration_interval1765 when there is no interval in group settings1766 behaves like no enforced expiration interval1767 is expected to be nil1768 behaves like no effective expiration interval1769 is expected to be nil1770 when there is a group interval1771 behaves like no enforced expiration interval1772 is expected to be nil1773 behaves like effective expiration interval1774 is expected to eq 3 days1775 when there is a site-wide enforced shared interval1776 behaves like no enforced expiration interval1777 is expected to be nil1778 behaves like no effective expiration interval1779 is expected to be nil1780 when there is a site-wide enforced group interval1781 behaves like enforced expiration interval1782 is expected to eq 5 days1783 behaves like effective expiration interval1784 is expected to eq 5 days1785 when there is a site-wide enforced project interval1786 behaves like no enforced expiration interval1787 is expected to be nil1788 behaves like no effective expiration interval1789 is expected to be nil1790 when there is a grandparent group enforced group interval1791 behaves like no enforced expiration interval1792 is expected to be nil1793 behaves like no effective expiration interval1794 is expected to be nil1795 when there is a grandparent group enforced subgroup interval1796 behaves like enforced expiration interval1797 is expected to eq 4 days1798 behaves like effective expiration interval1799 is expected to eq 4 days1800 when there is a grandparent group enforced project interval1801 behaves like no enforced expiration interval1802 is expected to be nil1803 behaves like no effective expiration interval1804 is expected to be nil1805 when there is a parent group enforced interval overridden by group interval1806 has human-readable expiration intervals1807 behaves like enforced expiration interval1808 is expected to eq 5 days1809 behaves like effective expiration interval1810 is expected to eq 4 days1811 when site-wide enforced interval overrides group interval1812 behaves like enforced expiration interval1813 is expected to eq 3 days1814 behaves like effective expiration interval1815 is expected to eq 3 days1816 when group interval overrides site-wide enforced interval1817 behaves like enforced expiration interval1818 is expected to eq 5 days1819 behaves like effective expiration interval1820 is expected to eq 4 days1821 when site-wide enforced interval overrides parent group enforced interval1822 behaves like enforced expiration interval1823 is expected to eq 3 days1824 behaves like effective expiration interval1825 is expected to eq 3 days1826 when parent group enforced interval overrides site-wide enforced interval1827 behaves like enforced expiration interval1828 is expected to eq 4 days1829 behaves like effective expiration interval1830 is expected to eq 4 days1831 when there is an enforced group interval in an unrelated group1832 behaves like no enforced expiration interval1833 is expected to be nil1834 behaves like no effective expiration interval1835 is expected to be nil1836 when there is an enforced group interval in a subgroup1837 behaves like no enforced expiration interval1838 is expected to be nil1839 behaves like no effective expiration interval1840 is expected to be nil1841 #content_editor_on_issues_feature_flag_enabled?1842 behaves like checks self and root ancestor feature flag1843 when FF is enabled for the root group1844 is expected to be truthy1845 when FF is enabled for the group1846 is expected to be truthy1847 when root_group is the actor1848 is not enabled if the FF is enabled for a child1849 when FF is disabled globally1850 is expected to be falsey1851 when FF is enabled globally1852 is expected to be truthy1853 #work_items_feature_flag_enabled?1854 behaves like checks self and root ancestor feature flag1855 when FF is enabled for the root group1856 is expected to be truthy1857 when FF is enabled for the group1858 is expected to be truthy1859 when root_group is the actor1860 is not enabled if the FF is enabled for a child1861 when FF is disabled globally1862 is expected to be falsey1863 when FF is enabled globally1864 is expected to be truthy1865 #work_items_mvc_feature_flag_enabled?1866 behaves like checks self and root ancestor feature flag1867 when FF is enabled for the root group1868 is expected to be truthy1869 when FF is enabled for the group1870 is expected to be truthy1871 when root_group is the actor1872 is not enabled if the FF is enabled for a child1873 when FF is disabled globally1874 is expected to be falsey1875 when FF is enabled globally1876 is expected to be truthy1877 #work_items_mvc_2_feature_flag_enabled?1878 behaves like checks self and root ancestor feature flag1879 when FF is enabled for the root group1880 is expected to be truthy1881 when FF is enabled for the group1882 is expected to be truthy1883 when root_group is the actor1884 is not enabled if the FF is enabled for a child1885 when FF is disabled globally1886 is expected to be falsey1887 when FF is enabled globally1888 is expected to be truthy1889 group shares1890 #shared_with_group_links.of_ancestors1891 subject_group: group, result: []1892 returns correct group shares1893 subject_group: sub_group, result: lazy { [shared_group_1].map(&:id) }1894 returns correct group shares1895 subject_group: sub_sub_group, result: lazy { [shared_group_1, shared_group_2].map(&:id) }1896 returns correct group shares1897 #shared_with_group_links.of_ancestors_and_self1898 subject_group: group, result: lazy { [shared_group_1].map(&:id) }1899 returns correct group shares1900 subject_group: sub_group, result: lazy { [shared_group_1, shared_group_2].map(&:id) }1901 returns correct group shares1902 subject_group: sub_sub_group, result: lazy { [shared_group_1, shared_group_2, shared_group_3].map(&:id) }1903 returns correct group shares1904 #packages_policy_subject1905 returns wrapper1906 #gitlab_deploy_token1907 when there is a gitlab deploy token associated1908 is expected to eq #<DeployToken id: 1, revoked: false, read_repository: true, read_registry: true, expires_at: "2023-06...write_registry: false, read_package_registry: false, write_package_registry: false, creator_id: nil>1909 when there is no a gitlab deploy token associated1910 is expected to be nil1911 when there is a gitlab deploy token associated but is has been revoked1912 is expected to be nil1913 when there is a gitlab deploy token associated but it is expired1914 is expected to be nil1915 when there is a deploy token associated with a different name1916 is expected to be nil1917 when there is a gitlab deploy token associated to a different group1918 is expected to be nil1919 #readme_project1920 returns groups project containing metadata1921 #group_readme1922 returns readme from group readme project1923 returns nil if no readme project is present1924ProjectWiki1925 behaves like wiki model1926 VALID_USER_MARKUPS contains all valid markups1927 container class includes HasWiki1928 is expected to delegate #storage to the #container object1929 is expected to delegate #repository_storage to the #container object1930 is expected to delegate #hashed_storage? to the #container object1931 behaves like model with repository1932 container class includes HasRepository1933 #commits_by1934 retrieves several commits from the repository by oid1935 #web_url1936 when given the only_path option1937 when only_path is false1938 returns the full web URL for this repo1939 when only_path is true1940 returns the relative web URL for this repo1941 when only_path is nil1942 returns the full web URL for this repo1943 when not given the only_path option1944 returns the full web URL for this repo1945 #url_to_repo1946 returns the SSH URL to the repository1947 #ssh_url_to_repo1948 returns the SSH URL to the repository1949 #http_url_to_repo1950 returns the HTTP URL to the repository1951 #repository1952 returns valid repo1953 uses the same container1954 #storage1955 returns valid storage1956 #full_path1957 returns valid full_path1958 #lfs_enabled?1959 returns the expected value1960 #empty_repo?1961 when the repo does not exist1962 returns true1963 when the repo exists1964 returns the empty state of the repository1965 #valid_repo?1966 is expected to equal false1967 is expected to equal true1968 #repository_exists?1969 is expected to equal false1970 is expected to equal true1971 #repo_exists?1972 is expected to equal false1973 is expected to equal true1974 #root_ref1975 is expected to equal true1976 is expected to equal false1977 is expected to equal false1978 Respond to1979 is expected to respond to #base_dir1980 is expected to respond to #disk_path1981 is expected to respond to #gitlab_shell1982 #change_head1983 delegates #change_head to repository1984 #after_repository_change_head1985 calls #reload_default_branch1986 .container_class1987 is set to the container class1988 .find_by_id1989 returns a wiki instance if the container is found1990 returns nil if the container is not found1991 #initialize1992 accepts a valid user1993 accepts a blank user1994 raises an error for invalid users1995 #run_after_commit1996 delegates to the container1997 #==1998 returns true for wikis from the same container1999 returns false for wikis from different containers2000 #id2001 returns the ID of the container2002 #has_home_page?2003 when home page exists2004 returns true2005 returns false when #find_page raise an error2006 when home page does not exist2007 returns false2008 #to_global_id2009 returns a global ID2010 #repository2011 returns a wiki repository2012 #full_path2013 returns the container path with the .wiki extension2014 #wiki_base_path2015 returns the wiki base path2016 includes the relative URL root2017 #empty?2018 when the wiki repository is empty2019 returns true2020 when the repository does not exist2021 returns true and does not create the repo2022 when the wiki has pages2023 #empty?2024 returns false2025 #list_pages2026 behaves like wiki model #list_pages2027 returns an array of WikiPage instances2028 does not load WikiPage content by default2029 returns all pages by default2030 with limit option2031 returns limited set of pages2032 returns all set of pages if limit is more than the total pages2033 returns all set of pages if limit is 02034 with offset option2035 returns offset-ed set of pages2036 returns all set of pages if offset is 02037 can combines with limit2038 with sorting options2039 returns pages sorted by title by default2040 with load_content option2041 loads WikiPage content2042 #sidebar_entries2043 when the number of pages does not exceed the limit2044 returns all pages grouped by directory and limited is false2045 when the number of pages exceeds the limit2046 returns 15 pages grouped by directory and limited is true2047 #find_page2048 find page with normal repository RPCs2049 behaves like wiki model #find_page2050 returns the latest version of the page if it exists2051 returns nil if the page or version does not exist2052 can find a page by slug2053 returns a WikiPage instance2054 pages with multibyte-character title2055 can find a page by slug2056 pages with invalidly-encoded content2057 can find the page2058 wiki repository's default branch is updated2059 returns the page in the updated default branch2060 wiki repository's HEAD is updated2061 returns the page in the new HEAD2062 pages with relative paths2063 path: "~hello.md", title: "~Hello"2064 can find page with `~Hello` title2065 path: "hello~world.md", title: "Hello~World"2066 can find page with `Hello~World` title2067 path: "~~~hello.md", title: "~~~Hello"2068 can find page with `~~~Hello` title2069 path: "~/hello.md", title: "~/Hello"2070 can find page with `~/Hello` title2071 path: "hello.md", title: "/Hello"2072 can find page with `/Hello` title2073 path: "hello.md", title: "../Hello"2074 can find page with `../Hello` title2075 path: "hello.md", title: "./Hello"2076 can find page with `./Hello` title2077 path: "dir/hello.md", title: "/dir/Hello"2078 can find page with `/dir/Hello` title2079 pages with different file extensions2080 extension: :md, path: "wiki-markdown.md", title: "wiki markdown"2081 can find page with md extension2082 extension: :markdown, path: "wiki-markdown-2.md", title: "wiki markdown 2"2083 can find page with markdown extension2084 extension: :rdoc, path: "wiki-rdoc.rdoc", title: "wiki rdoc"2085 can find page with rdoc extension2086 extension: :asciidoc, path: "wiki-asciidoc.asciidoc", title: "wiki asciidoc"2087 can find page with asciidoc extension2088 extension: :adoc, path: "wiki-asciidoc-2.adoc", title: "wiki asciidoc 2"2089 can find page with adoc extension2090 extension: :org, path: "wiki-org.org", title: "wiki org"2091 can find page with org extension2092 extension: :textile, path: "wiki-textile.textile", title: "wiki textile"2093 can find page with textile extension2094 extension: :creole, path: "wiki-creole.creole", title: "wiki creole"2095 can find page with creole extension2096 extension: :rest, path: "wiki-rest.rest", title: "wiki rest"2097 can find page with rest extension2098 extension: :rst, path: "wiki-rest-2.rst", title: "wiki rest 2"2099 can find page with rst extension2100 extension: :mediawiki, path: "wiki-mediawiki.mediawiki", title: "wiki mediawiki"2101 can find page with mediawiki extension2102 extension: :wiki, path: "wiki-mediawiki-2.wiki", title: "wiki mediawiki 2"2103 can find page with wiki extension2104 extension: :pod, path: "wiki-pod.pod", title: "wiki pod"2105 can find page with pod extension2106 extension: :text, path: "wiki-text.txt", title: "wiki text"2107 can find page with text extension2108 #find_sidebar2109 find sidebar with normal repository RPCs2110 behaves like wiki model #find_sidebar2111 finds the page defined as _sidebar2112 #find_file2113 returns the latest version of the file if it exists2114 returns nil if the page does not exist2115 returns a Gitlab::Git::WikiFile instance2116 returns the whole file2117 when load_content is disabled2118 includes the file data in the Gitlab::Git::WikiFile2119 wiki repository's default branch is updated2120 returns the page in the updated default branch2121 #create_page2122 behaves like create_page tests2123 creates a new wiki page2124 returns false when a duplicate page exists2125 stores an error message when a duplicate page exists2126 sets the correct commit message2127 sets the correct commit email2128 runs after_wiki_activity callbacks2129 cannot create two pages with the same title but different format2130 cannot create two pages with the same title but different capitalization2131 cannot create two pages with the same title, different capitalization, and different format2132 returns false if a page exists already in the repository2133 returns false if it has an invalid format2134 new_file: "foo", format: :markdown, existing_repo_files: [], success: true2135 is expected to eq true2136 new_file: "foo", format: :rdoc, existing_repo_files: [], success: true2137 is expected to eq true2138 new_file: "foo", format: :asciidoc, existing_repo_files: [], success: true2139 is expected to eq true2140 new_file: "foo", format: :org, existing_repo_files: [], success: true2141 is expected to eq true2142 new_file: "foo", format: :textile, existing_repo_files: [], success: false2143 is expected to eq false2144 new_file: "foo", format: :creole, existing_repo_files: [], success: false2145 is expected to eq false2146 new_file: "foo", format: :rest, existing_repo_files: [], success: false2147 is expected to eq false2148 new_file: "foo", format: :mediawiki, existing_repo_files: [], success: false2149 is expected to eq false2150 new_file: "foo", format: :pod, existing_repo_files: [], success: false2151 is expected to eq false2152 new_file: "foo", format: :plaintext, existing_repo_files: [], success: false2153 is expected to eq false2154 new_file: "foo", format: :markdown, existing_repo_files: ["foo.md"], success: false2155 is expected to eq false2156 new_file: "foo", format: :markdown, existing_repo_files: ["foO.md"], success: false2157 is expected to eq false2158 new_file: "foO", format: :markdown, existing_repo_files: ["foo.md"], success: false2159 is expected to eq false2160 new_file: "foo", format: :markdown, existing_repo_files: ["foo.mdfoo"], success: true2161 is expected to eq true2162 new_file: "foo", format: :markdown, existing_repo_files: ["foo.markdown"], success: false2163 is expected to eq false2164 new_file: "foo", format: :markdown, existing_repo_files: ["foo.mkd"], success: false2165 is expected to eq false2166 new_file: "foo", format: :markdown, existing_repo_files: ["foo.mkdn"], success: false2167 is expected to eq false2168 new_file: "foo", format: :markdown, existing_repo_files: ["foo.mdown"], success: false2169 is expected to eq false2170 new_file: "foo", format: :markdown, existing_repo_files: ["foo.adoc"], success: false2171 is expected to eq false2172 new_file: "foo", format: :markdown, existing_repo_files: ["foo.asciidoc"], success: false2173 is expected to eq false2174 new_file: "foo", format: :markdown, existing_repo_files: ["foo.org"], success: false2175 is expected to eq false2176 new_file: "foo", format: :markdown, existing_repo_files: ["foo.rdoc"], success: false2177 is expected to eq false2178 new_file: "foo", format: :markdown, existing_repo_files: ["foo.textile"], success: false2179 is expected to eq false2180 new_file: "foo", format: :markdown, existing_repo_files: ["foo.creole"], success: false2181 is expected to eq false2182 new_file: "foo", format: :markdown, existing_repo_files: ["foo.rest"], success: false2183 is expected to eq false2184 new_file: "foo", format: :markdown, existing_repo_files: ["foo.rest.txt"], success: false2185 is expected to eq false2186 new_file: "foo", format: :markdown, existing_repo_files: ["foo.rst"], success: false2187 is expected to eq false2188 new_file: "foo", format: :markdown, existing_repo_files: ["foo.rst.txt"], success: false2189 is expected to eq false2190 new_file: "foo", format: :markdown, existing_repo_files: ["foo.rst.txtfoo"], success: true2191 is expected to eq true2192 new_file: "foo", format: :markdown, existing_repo_files: ["foo.mediawiki"], success: false2193 is expected to eq false2194 new_file: "foo", format: :markdown, existing_repo_files: ["foo.wiki"], success: false2195 is expected to eq false2196 new_file: "foo", format: :markdown, existing_repo_files: ["foo.pod"], success: false2197 is expected to eq false2198 new_file: "foo", format: :markdown, existing_repo_files: ["foo.txt"], success: false2199 is expected to eq false2200 new_file: "foo", format: :markdown, existing_repo_files: ["foo.Md"], success: false2201 is expected to eq false2202 new_file: "foo", format: :markdown, existing_repo_files: ["foo.jpg"], success: true2203 is expected to eq true2204 new_file: "foo", format: :rdoc, existing_repo_files: ["foo.md"], success: false2205 is expected to eq false2206 new_file: "foo", format: :rdoc, existing_repo_files: ["foO.md"], success: false2207 is expected to eq false2208 new_file: "foO", format: :rdoc, existing_repo_files: ["foo.md"], success: false2209 is expected to eq false2210 new_file: "foo", format: :asciidoc, existing_repo_files: ["foo.md"], success: false2211 is expected to eq false2212 new_file: "foo", format: :org, existing_repo_files: ["foo.md"], success: false2213 is expected to eq false2214 new_file: "foo", format: :markdown, existing_repo_files: ["dir/foo.md"], success: true2215 is expected to eq true2216 new_file: "/foo", format: :markdown, existing_repo_files: ["foo.md"], success: false2217 is expected to eq false2218 new_file: "~foo", format: :markdown, existing_repo_files: [], success: true2219 is expected to eq true2220 new_file: "~~~foo", format: :markdown, existing_repo_files: [], success: true2221 is expected to eq true2222 new_file: "./foo", format: :markdown, existing_repo_files: ["foo.md"], success: false2223 is expected to eq false2224 new_file: "../foo", format: :markdown, existing_repo_files: ["foo.md"], success: false2225 is expected to eq false2226 new_file: "../../foo", format: :markdown, existing_repo_files: ["foo.md"], success: false2227 is expected to eq false2228 new_file: "../../foo", format: :markdown, existing_repo_files: ["dir/foo.md"], success: true2229 is expected to eq true2230 new_file: "dir/foo", format: :markdown, existing_repo_files: ["foo.md"], success: true2231 is expected to eq true2232 new_file: "dir/foo", format: :markdown, existing_repo_files: ["dir/foo.md"], success: false2233 is expected to eq false2234 new_file: "dir/foo", format: :markdown, existing_repo_files: ["dir/foo.rdoc"], success: false2235 is expected to eq false2236 new_file: "/dir/foo", format: :markdown, existing_repo_files: ["dir/foo.rdoc"], success: false2237 is expected to eq false2238 new_file: "./dir/foo", format: :markdown, existing_repo_files: ["dir/foo.rdoc"], success: false2239 is expected to eq false2240 new_file: "../dir/foo", format: :markdown, existing_repo_files: ["dir/foo.rdoc"], success: false2241 is expected to eq false2242 new_file: "../dir/../foo", format: :markdown, existing_repo_files: ["dir/foo.rdoc"], success: true2243 is expected to eq true2244 new_file: "../dir/../foo", format: :markdown, existing_repo_files: ["foo.rdoc"], success: false2245 is expected to eq false2246 new_file: "../dir/../dir/foo", format: :markdown, existing_repo_files: ["dir/foo.rdoc"], success: false2247 is expected to eq false2248 new_file: "../dir/../another/foo", format: :markdown, existing_repo_files: ["dir/foo.rdoc"], success: true2249 is expected to eq true2250 new_file: "another/dir/foo", format: :markdown, existing_repo_files: ["dir/foo.md"], success: true2251 is expected to eq true2252 new_file: "foo bar", format: :markdown, existing_repo_files: ["foo-bar.md"], success: false2253 is expected to eq false2254 new_file: "foo bar", format: :markdown, existing_repo_files: ["foo-bar.md"], success: true2255 is expected to eq true2256 new_file: "f\xF6\xF6", format: :markdown, existing_repo_files: ["f��.md"], success: false2257 is expected to eq false2258 #update_page2259 behaves like update_page tests2260 original_title: "test page", original_format: :markdown, updated_title: "new test page", updated_format: :markdown, expected_title: "new test page", expected_path: "new-test-page.md"2261 aggregate_failures2262 original_title: "test page", original_format: :markdown, updated_title: "test page", updated_format: :markdown, expected_title: "test page", expected_path: "test-page.md"2263 aggregate_failures2264 original_title: "test page", original_format: :markdown, updated_title: "test page", updated_format: :asciidoc, expected_title: "test page", expected_path: "test-page.asciidoc"2265 aggregate_failures2266 original_title: "test page", original_format: :markdown, updated_title: "new dir/new test page", updated_format: :markdown, expected_title: "new dir/new test page", expected_path: "new-dir/new-test-page.md"2267 aggregate_failures2268 original_title: "test page", original_format: :markdown, updated_title: "new dir/test page", updated_format: :markdown, expected_title: "new dir/test page", expected_path: "new-dir/test-page.md"2269 aggregate_failures2270 original_title: "test dir/test page", original_format: :markdown, updated_title: "new dir/new test page", updated_format: :markdown, expected_title: "new dir/new test page", expected_path: "new-dir/new-test-page.md"2271 aggregate_failures2272 original_title: "test dir/test page", original_format: :markdown, updated_title: "test dir/test page", updated_format: :markdown, expected_title: "test dir/test page", expected_path: "test-dir/test-page.md"2273 aggregate_failures2274 original_title: "test dir/test page", original_format: :markdown, updated_title: "test dir/test page", updated_format: :asciidoc, expected_title: "test dir/test page", expected_path: "test-dir/test-page.asciidoc"2275 aggregate_failures2276 original_title: "test dir/test page", original_format: :markdown, updated_title: "new test page", updated_format: :markdown, expected_title: "new test page", expected_path: "new-test-page.md"2277 aggregate_failures2278 original_title: "test dir/test page", original_format: :markdown, updated_title: "test page", updated_format: :markdown, expected_title: "test page", expected_path: "test-page.md"2279 aggregate_failures2280 original_title: "test page", original_format: :markdown, updated_title: nil, updated_format: :markdown, expected_title: "test page", expected_path: "test-page.md"2281 aggregate_failures2282 original_title: "test.page", original_format: :markdown, updated_title: nil, updated_format: :markdown, expected_title: "test.page", expected_path: "test.page.md"2283 aggregate_failures2284 original_title: "testpage", original_format: :markdown, updated_title: "./testpage", updated_format: :markdown, expected_title: "testpage", expected_path: "testpage.md"2285 aggregate_failures2286 original_title: "test page", original_format: :markdown, updated_title: "~new test page", updated_format: :asciidoc, expected_title: "~new test page", expected_path: "~new-test-page.asciidoc"2287 aggregate_failures2288 original_title: "test page", original_format: :markdown, updated_title: "~~~new test page", updated_format: :asciidoc, expected_title: "~~~new test page", expected_path: "~~~new-test-page.asciidoc"2289 aggregate_failures2290 original_title: "test page", original_format: :markdown, updated_title: "new test page", updated_format: :asciidoc, expected_title: "new test page", expected_path: "new-test-page.asciidoc"2291 aggregate_failures2292 original_title: "test page", original_format: :markdown, updated_title: "new dir/new test page", updated_format: :asciidoc, expected_title: "new dir/new test page", expected_path: "new-dir/new-test-page.asciidoc"2293 aggregate_failures2294 original_title: "test dir/test page", original_format: :markdown, updated_title: "new dir/new test page", updated_format: :asciidoc, expected_title: "new dir/new test page", expected_path: "new-dir/new-test-page.asciidoc"2295 aggregate_failures2296 original_title: "test dir/test page", original_format: :markdown, updated_title: "new test page", updated_format: :asciidoc, expected_title: "new test page", expected_path: "new-test-page.asciidoc"2297 aggregate_failures2298 original_title: "test page", original_format: :markdown, updated_title: nil, updated_format: :asciidoc, expected_title: "test page", expected_path: "test-page.asciidoc"2299 aggregate_failures2300 original_title: "test dir/test page", original_format: :markdown, updated_title: nil, updated_format: :asciidoc, expected_title: "test dir/test page", expected_path: "test-dir/test-page.asciidoc"2301 aggregate_failures2302 original_title: "test dir/test page", original_format: :markdown, updated_title: nil, updated_format: :markdown, expected_title: "test dir/test page", expected_path: "test-dir/test-page.md"2303 aggregate_failures2304 original_title: "test page", original_format: :markdown, updated_title: "", updated_format: :markdown, expected_title: "test page", expected_path: "test-page.md"2305 aggregate_failures2306 original_title: "test.page", original_format: :markdown, updated_title: "", updated_format: :markdown, expected_title: "test.page", expected_path: "test.page.md"2307 aggregate_failures2308 original_title: "testpage", original_format: :markdown, updated_title: "../testpage", updated_format: :markdown, expected_title: "testpage", expected_path: "testpage.md"2309 aggregate_failures2310 original_title: "dir/testpage", original_format: :markdown, updated_title: "dir/../testpage", updated_format: :markdown, expected_title: "testpage", expected_path: "testpage.md"2311 aggregate_failures2312 original_title: "dir/testpage", original_format: :markdown, updated_title: "./dir/testpage", updated_format: :markdown, expected_title: "dir/testpage", expected_path: "dir/testpage.md"2313 aggregate_failures2314 original_title: "dir/testpage", original_format: :markdown, updated_title: "../dir/testpage", updated_format: :markdown, expected_title: "dir/testpage", expected_path: "dir/testpage.md"2315 aggregate_failures2316 original_title: "dir/testpage", original_format: :markdown, updated_title: "../dir/../testpage", updated_format: :markdown, expected_title: "testpage", expected_path: "testpage.md"2317 aggregate_failures2318 original_title: "dir/testpage", original_format: :markdown, updated_title: "../dir/../dir/testpage", updated_format: :markdown, expected_title: "dir/testpage", expected_path: "dir/testpage.md"2319 aggregate_failures2320 original_title: "dir/testpage", original_format: :markdown, updated_title: "../dir/../another/testpage", updated_format: :markdown, expected_title: "another/testpage", expected_path: "another/testpage.md"2321 aggregate_failures2322 when format is invalid2323 returns false and sets error message2324 when format is not allowed2325 returns false and sets error message2326 when the repository fails to update2327 returns false and sets error message2328 when page path does not have a default extension2329 when format is not different2330 does not change the default extension2331 #delete_page2332 deletes the page2333 sets the correct commit email2334 runs after_wiki_activity callbacks2335 when an error is raised2336 logs the error and returns false2337 #hook_attrs2338 returns a hash with values2339 #default_branch2340 when repository is not created2341 returns the instance default branch2342 when repository is empty2343 returns the instance default branch2344 when repository is not empty2345 returns the repository default branch2346 #create_wiki_repository2347 when repository is not created2348 changes the HEAD reference to the default branch2349 when repository is empty2350 creates the repository with the default branch2351 #preview_slug2352 title: "The Best Thing", file_extension: :md, format: :markdown, expected_slug: "The-Best-Thing"2353 is expected to eq "The-Best-Thing"2354 matches the slug generated by gitaly2355 title: "The Best Thing", file_extension: :txt, format: :plaintext, expected_slug: "The-Best-Thing"2356 is expected to eq "The-Best-Thing"2357 matches the slug generated by gitaly2358 title: "A Subject/Title Here", file_extension: :txt, format: :plaintext, expected_slug: "A-Subject/Title-Here"2359 is expected to eq "A-Subject/Title-Here"2360 matches the slug generated by gitaly2361 title: "A subject", file_extension: :txt, format: :plaintext, expected_slug: "A-subject"2362 is expected to eq "A-subject"2363 matches the slug generated by gitaly2364 title: "A 1/B 2/C 3", file_extension: :txt, format: :plaintext, expected_slug: "A-1/B-2/C-3"2365 is expected to eq "A-1/B-2/C-3"2366 matches the slug generated by gitaly2367 title: "subject/title", file_extension: :txt, format: :plaintext, expected_slug: "subject/title"2368 is expected to eq "subject/title"2369 matches the slug generated by gitaly2370 title: "subject/title.md", file_extension: :txt, format: :plaintext, expected_slug: "subject/title.md"2371 is expected to eq "subject/title.md"2372 matches the slug generated by gitaly2373 title: "foo%2Fbar", file_extension: :txt, format: :plaintext, expected_slug: "foo%2Fbar"2374 is expected to eq "foo%2Fbar"2375 matches the slug generated by gitaly2376 title: "", file_extension: :md, format: :markdown, expected_slug: ".md"2377 is expected to eq ".md"2378 matches the slug generated by gitaly (PENDING: Gitaly cannot generate a slug for an empty title)2379 title: "", file_extension: :txt, format: :plaintext, expected_slug: ".txt"2380 is expected to eq ".txt"2381 matches the slug generated by gitaly (PENDING: Gitaly cannot generate a slug for an empty title)2382 #disk_path2383 returns the repository storage path2384 #create_wiki_repository2385 when a project_wiki_repositories record does not exist2386 creates a new record2387 on a read-only instance2388 does not attempt to create a new record2389 when a project_wiki_repositories record exists2390 does not create a new record in the database2391 #after_wiki_activity2392 updates project activity2393 #after_post_receive2394 updates project activity and expires caches2395 behaves like can housekeep repository2396 with a clean redis state2397 #pushes_since_gc2398 without any pushes2399 returns 02400 with a number of pushes2401 returns the number of pushes2402 #increment_pushes_since_gc2403 increments the number of pushes since the last GC2404 #reset_pushes_since_gc2405 resets the number of pushes since the last GC2406 #pushes_since_gc_redis_shared_state_key2407 returns the proper redis key format2408 #git_garbage_collect_worker_klass2409 defines a git gargabe collect worker2410Commit2411 modules2412 is expected to includes the Mentionable module2413 is expected to includes the Participable module2414 is expected to includes the Referable module2415 is expected to includes the StaticModel module2416 is expected to includes the Presentable module2417 .lazy2418 with project2419 behaves like .lazy checks2420 when the commits are found2421 batches requests for commits2422 maintains ordering2423 does not attempt to replace methods via BatchLoader2424 when not found2425 returns nil as commit2426 with personal snippet2427 behaves like .lazy checks2428 when the commits are found2429 batches requests for commits2430 maintains ordering2431 does not attempt to replace methods via BatchLoader2432 when not found2433 returns nil as commit2434 with project snippet2435 behaves like .lazy checks2436 when the commits are found2437 batches requests for commits2438 maintains ordering2439 does not attempt to replace methods via BatchLoader2440 when not found2441 returns nil as commit2442 .build_from_sidekiq_hash2443 returns a Commit2444 parses date strings into Time instances2445 #diff_refs2446 is equal to itself2447 from a factory2448 is equal to itself2449 #author2450 looks up the author in a case-insensitive way2451 caches the author2452 with a user with an unconfirmed e-mail2453 returns no user2454 using eager loading2455 executes only two SQL queries2456 preloads the authors for Commits matching a user's primary Email2457 preloads the authors for Commits using a User's alternative Email2458 preloads the authors for Commits using a User's private commit Email2459 preloads the authors for Commits using a User's outdated private commit Email2460 sets the author to Nil if an author could not be found for a Commit2461 does not execute SQL queries once the authors are preloaded2462 #committer2463 when committer_email is the user's primary email2464 when the user email is confirmed2465 returns the user2466 when the user email is unconfirmed2467 returns the user according to confirmed argument2468 when committer_email is the user's secondary email2469 when the user email is confirmed2470 returns the user2471 when the user email is unconfirmed2472 does not return the user2473 #to_reference2474 with project2475 returns a String reference to the object2476 supports a cross-project reference2477 with personal snippet2478 returns a String reference to the object2479 supports a cross-snippet reference2480 with project snippet2481 returns a String reference to the object2482 supports a cross-snippet project reference2483 .reference_valid?2484 ref: "1234567", result: true2485 is expected to eq true2486 ref: "123456", result: false2487 is expected to eq false2488 ref: "1", result: false2489 is expected to eq false2490 ref: "0000000000000000000000000000000000000000", result: true2491 is expected to eq true2492 ref: "c1acaa58bbcbc3eafe538cb8274ba387047b69f8", result: true2493 is expected to eq true2494 ref: "H1acaa58bbcbc3eafe538cb8274ba387047b69f8", result: false2495 is expected to eq false2496 ref: nil, result: false2497 is expected to eq false2498 #reference_link_text2499 with project2500 returns a String reference to the object2501 supports a cross-project reference2502 with personal snippet2503 returns a String reference to the object2504 supports a cross-snippet reference2505 with project snippet2506 returns a String reference to the object2507 supports a cross-snippet project reference2508 #title2509 returns no_commit_message when safe_message is blank2510 truncates a message without a newline at natural break to 80 characters2511 truncates a message with a newline before 80 characters at the newline2512 does not truncates a message with a newline after 80 but less 100 characters2513 #full_title2514 returns no_commit_message when safe_message is blank2515 returns entire message if there is no newline2516 returns first line of message if there is a newLine2517 truncates html representation if more than 1KiB2518 description2519 returns no_commit_message when safe_message is blank2520 returns description of commit message if title less than 100 characters2521 returns full commit message if commit title more than 100 characters2522 truncates html representation if more than 1Mib2523 delegation2524 is expected to respond to #message2525 is expected to respond to #authored_date2526 is expected to respond to #committed_date2527 is expected to respond to #committer_email2528 is expected to respond to #author_email2529 is expected to respond to #parents2530 is expected to respond to #date2531 is expected to respond to #diffs2532 is expected to respond to #id2533 behaves like a mentionable2534 generates a descriptive back-reference2535 extracts references from its reference property2536 creates cross-reference notes2537 uses the CachedMarkdownField cache instead of the Mentionable cache2538 when there are cached markdown fields2539 sends in cached markdown fields when appropriate2540 #hook_attrs2541 is expected to be a kind of Hash2542 is expected to include "adds bar folder and branch-test text file to check Repository merged_to_root_ref method"2543 is expected to eq "2016-09-27T14:37:46+00:00"2544 is expected to contain exactly "bar/branch-test.txt"2545 is expected to eq []2546 is expected to eq []2547 #cherry_pick_message2548 of a regular commit2549 is expected to include "\n\n(cherry picked from commit 88790590ed1337ab189bccaa355f068481c90bec)"2550 of a merge commit2551 that is found2552 is expected to include "\n(cherry picked from commit 7681c80b4146c389de0e1b4f5032db303f4e539b)\n\n467dc98f Add new 'videos' directory\n88790590 Upload new video file"2553 that is existing but not found2554 does not include details of the merged commits2555 #reverts_commit?2556 is expected to be falsy2557 commit has no description2558 is expected to be falsy2559 another_commit's description does not revert commit2560 is expected to be falsy2561 another_commit's description reverts commit2562 is expected to be truthy2563 another_commit's description reverts merged merge request2564 is expected to be truthy2565 #participants2566 includes the commit author2567 includes the committer2568 includes the authors of the commit notes2569 #uri_type with Gitaly enabled2570 behaves like #uri_type2571 returns the URI type at the given path2572 returns nil if the path doesn't exists2573 is nil if the path is nil or empty2574 #uri_type with Rugged enabled2575 calls out to the Rugged implementation2576 behaves like #uri_type2577 returns the URI type at the given path2578 returns nil if the path doesn't exists2579 is nil if the path is nil or empty2580 .diff_max_files2581 returns the current settings2582 .diff_max_lines2583 returns the current settings2584 .diff_safe_max_files2585 returns the commit diff max divided by the limit factor of 102586 .diff_safe_max_lines2587 returns the commit diff max divided by the limit factor of 102588 .from_hash2589 with project2590 behaves like returns Commit2591 returns a Commit2592 wraps a Gitlab::Git::Commit2593 stores the correct commit fields2594 with personal snippet2595 behaves like returns Commit2596 returns a Commit2597 wraps a Gitlab::Git::Commit2598 stores the correct commit fields2599 with project snippet2600 behaves like returns Commit2601 returns a Commit2602 wraps a Gitlab::Git::Commit2603 stores the correct commit fields2604 #draft?2605 detects the 'squash! ' prefix2606 detects the 'fixup! ' prefix2607 detects the 'draft: ' prefix2608 detects the '[Draft] ' prefix2609 detects the '(draft) ' prefix2610 detects the 'Draft: ' prefix2611 does not detect a commit just saying 'draft' as draft? == true2612 doesn't detect 'FIXUP!' at the start of the title as a draft2613 doesn't detect 'Draft - ' at the start of the title as a draft2614 doesn't detect 'Wipeout' at the start of the title as a draft2615 doesn't detect 'WIP: ' at the start of the title as a draft2616 doesn't detect '[WIP] ' at the start of the title as a draft2617 doesn't detect 'wip: ' at the start of the title as a draft2618 .valid_hash?2619 checks hash contents2620 checks hash length2621 signed commits2622 returns signature_type properly2623 returns has_signature? properly2624 #has_been_reverted?2625 returns true if the commit has been reverted2626 returns false if the commit has not been reverted2627 containing refs2628 #branches_containing2629 behaves like containing ref names2630 without arguments2631 returns branch names containing the commit2632 with limit argument2633 returns the appropriate amount branch names2634 with tipping refs excluded2635 returns branch names containing the commit without the one with the commit at tip2636 returns the appropriate amount branch names with limit argument2637 #tags_containing2638 behaves like containing ref names2639 without arguments2640 returns branch names containing the commit2641 with limit argument2642 returns the appropriate amount branch names2643 with tipping refs excluded2644 returns branch names containing the commit without the one with the commit at tip2645 returns the appropriate amount branch names with limit argument2646Issues::CreateService2647 behaves like rate limited service2648 .rate_limiter_scoped_and_keyed2649 is set via the rate_limit call2650 #rate_limiter_bypassed2651 is nil by default2652 #execute2653 when rate limiting is in effect2654 when too many requests are sent by one user2655 raises an error2656 creates 1 issue2657 when limit is higher than count of issues being created2658 creates 2 issues2659 #execute2660 when params are invalid2661 returns an error service response2662 when params are valid2663 works if base work item types were not created yet2664 creates the issue with the given params2665 calls NewIssueWorker with correct arguments2666 refreshes the number of open issues2667 moves the issue to the end, in an asynchronous worker2668 schedules a namespace onboarding create action worker2669 when an unauthorized project_id is provided2670 ignores the project_id param and creates issue in the given project2671 authorization2672 when the user is authorized2673 allows the user to create an issue2674 when the user is not authorized2675 does not allow the user to create an issue2676 with milestone2677 deletes milestone issues count cache2678 when the work item type is not allowed to create2679 ignores the type and creates default issue2680 when a build_service is provided2681 uses the provided service to build the issue2682 when skip_system_notes is true2683 does not call Issuable::CommonSystemNotesService2684 when setting a position2685 sets the correct relative position2686 behaves like not an incident issue2687 has not incident as issue type2688 when issue is incident type2689 as reporter2690 calls IncidentManagement::Incidents::CreateEscalationStatusService2691 calls IncidentManagement::TimelineEvents::CreateService.create_incident2692 calls NewIssueWorker with correct arguments2693 behaves like incident issue2694 has incident as issue type2695 when invalid2696 does not apply an incident label prematurely2697 as guest2698 behaves like not an incident issue2699 has not incident as issue type2700 when current user cannot set issue metadata in the project2701 filters out params that cannot be set without the :set_issue_metadata permission2702 can create confidential issues2703 when label belongs to project group2704 assigns group labels2705 when label belongs to different project2706 does not assign label2707 when labels is nil2708 does not assign label2709 when labels is nil and label_ids is present2710 assigns group labels2711 when milestone belongs to different project2712 does not assign milestone2713 when assignee is set2714 invalidates open issues counter for assignees when issue is assigned2715 records the assignee assignment event2716 when duplicate label titles are given2717 assigns the label once2718 when sentry identifier is given2719 does not assign the sentry error2720 user is reporter or above2721 assigns the sentry error2722 executing hooks2723 executes issue hooks2724 when issue is confidential2725 executes confidential issue hooks2726 after_save callback to store_mentions2727 when mentionable attributes change2728 saves mentions2729 when save fails2730 does not call store_mentions2731 issue create service2732 assignees2733 removes assignee when user id is invalid2734 removes assignee when user id is 02735 saves assignee when user id is valid2736 when issuable feature is private2737 removes not authorized assignee when project is Internal2738 removes not authorized assignee when project is Public2739 behaves like issuable record that supports quick actions2740 with labels in command only2741 attaches labels to issuable2742 with labels in params and command2743 attaches all labels to issuable2744 with assignee and milestone in command only2745 assigns and sets milestone to issuable2746 Quick actions2747 with assignee, milestone, and contact in params and command2748 assigns, sets milestone, and sets contact to issuable from command2749 with external_author2750 when CRM contact exists with matching e-mail2751 with permission2752 assigns contact to issue2753 without permission2754 does not assign contact to issue2755 when no CRM contact exists with matching e-mail2756 does not assign contact to issue2757 with alert bot author2758 can apply labels2759 when using promote_to_incident2760 creates an issue with the correct issue type2761 resolving discussions2762 for a single discussion2763 resolves the discussion2764 added a system note to the discussion2765 sets default title and description values if not provided2766 takes params from the request over the default values2767 for a merge request2768 resolves the discussion2769 added a system note to the discussion2770 sets default title and description values if not provided2771 takes params from the request over the default values2772 add related issue2773 ignores related issue if not accessible2774 when user has access to the related issue2775 adds a link to the issue2776 checking spam2777 executes SpamActionService2778Banzai::Filter::References::LabelReferenceFilter2779 requires project context2780 ignores valid references contained inside 'pre' element2781 ignores valid references contained inside 'code' element2782 ignores valid references contained inside 'a' element2783 ignores valid references contained inside 'style' element2784 includes default classes2785 avoids N+1 cached queries2786 includes a data-project attribute2787 includes a data-label attribute2788 includes protocol when :only_path not present2789 does not include protocol when :only_path true2790 links to issue list when :label_url_method is not present2791 links to merge request list when `label_url_method: :project_merge_requests_url`2792 behaves like HTML text with references2793 preserves escaped HTML text and adds valid references2794 preserves escaped HTML text if there are no valid references2795 project that does not exist referenced2796 does not link reference2797 label span element2798 includes default classes2799 includes a style attribute2800 Integer-based references2801 links to a valid reference2802 links with adjacent text2803 ignores invalid label IDs2804 String-based single-word references2805 links to a valid reference2806 links with adjacent text2807 ignores invalid label names2808 String-based single-word references that begin with a digit2809 links to a valid reference2810 links with adjacent text2811 ignores invalid label names2812 String-based single-word references with special characters2813 links to a valid reference2814 does not include trailing punctuation2815 ignores invalid label names2816 String-based multi-word references in quotes2817 links to a valid reference2818 links with adjacent text2819 ignores invalid label names2820 String-based multi-word references that begin with a digit2821 links to a valid reference2822 links with adjacent text2823 ignores invalid label names2824 String-based multi-word references with special characters in quotes2825 links to a valid reference2826 links with adjacent text2827 ignores invalid label names2828 References with html entities2829 links to a valid reference2830 ignores invalid label names and escapes entities2831 consecutive references2832 separated with a comma2833 links to valid references2834 separated with a space2835 links to valid references2836 edge cases2837 gracefully handles non-references matching the pattern2838 referencing a label in a link href2839 links to a valid reference2840 links with adjacent text2841 includes a data-project attribute2842 includes a data-label attribute2843 group label references2844 without project reference2845 links to a valid reference2846 links with adjacent text2847 ignores invalid label names2848 with project reference2849 links to a valid reference2850 links with adjacent text2851 ignores invalid label names2852 cross-project / cross-namespace complete reference2853 links to a valid reference2854 has valid color2855 has valid link text2856 has valid text2857 ignores invalid IDs on the referenced label2858 cross-project / same-namespace complete reference2859 links to a valid reference2860 has valid color2861 has valid link text2862 has valid text2863 ignores invalid IDs on the referenced label2864 cross-project shorthand reference2865 links to a valid reference2866 has valid color2867 has valid link text2868 has valid text2869 ignores invalid IDs on the referenced label2870 cross group label references2871 points to referenced project issues page2872 has valid color2873 has valid link text2874 has valid text2875 ignores invalid IDs on the referenced label2876 when group name has HTML entities2877 escapes the HTML entities2878 cross-project / same-group_label complete reference2879 points to referenced project issues page2880 has valid color2881 has valid link text2882 has valid text2883 ignores invalid IDs on the referenced label2884 same project / same group_label complete reference2885 points to referenced project issues page2886 has valid color2887 has valid link text2888 has valid text2889 ignores invalid IDs on the referenced label2890 same project / same group_label shorthand reference2891 points to referenced project issues page2892 has valid color2893 has valid link text2894 has valid text2895 ignores invalid IDs on the referenced label2896 group context2897 points to the page defined in label_url_method2898 finds labels also in ancestor groups2899 points to referenced project issues page2900 checking N+12901 does not have N+1 per multiple references per project2902 has N+1 for multiple unique project/group references2903Ci::UnlockArtifactsService2904 tag: false2905 #execute2906 when running on a ref before a pipeline2907 unlocks artifacts from older pipelines2908 does not unlock artifacts for tag or branch with same name as ref2909 does not unlock artifacts from newer pipelines2910 does not lock artifacts from old unlocked pipelines2911 does not unlock artifacts from the same pipeline2912 does not unlock artifacts for other refs2913 does not unlock artifacts for child pipeline2914 unlocks job artifact records2915 unlocks pipeline artifact records2916 when running on just the ref2917 unlocks artifacts from older pipelines2918 unlocks artifacts from newer pipelines2919 unlocks artifacts from the same pipeline2920 does not unlock artifacts for tag or branch with same name as ref2921 does not lock artifacts from old unlocked pipelines2922 does not unlock artifacts for other refs2923 unlocks job artifact records2924 unlocks pipeline artifact records2925 #unlock_pipelines_query2926 when running on a ref before a pipeline2927 produces the expected SQL string2928 when running on just the ref2929 produces the expected SQL string2930 #unlock_job_artifacts_query2931 when given a single pipeline ID2932 produces the expected SQL string2933 when given multiple pipeline IDs2934 produces the expected SQL string2935 tag: true2936 #execute2937 when running on a ref before a pipeline2938 unlocks artifacts from older pipelines2939 does not unlock artifacts for tag or branch with same name as ref2940 does not unlock artifacts from newer pipelines2941 does not lock artifacts from old unlocked pipelines2942 does not unlock artifacts from the same pipeline2943 does not unlock artifacts for other refs2944 does not unlock artifacts for child pipeline2945 unlocks job artifact records2946 unlocks pipeline artifact records2947 when running on just the ref2948 unlocks artifacts from older pipelines2949 unlocks artifacts from newer pipelines2950 unlocks artifacts from the same pipeline2951 does not unlock artifacts for tag or branch with same name as ref2952 does not lock artifacts from old unlocked pipelines2953 does not unlock artifacts for other refs2954 unlocks job artifact records2955 unlocks pipeline artifact records2956 #unlock_pipelines_query2957 when running on a ref before a pipeline2958 produces the expected SQL string2959 when running on just the ref2960 produces the expected SQL string2961 #unlock_job_artifacts_query2962 when given a single pipeline ID2963 produces the expected SQL string2964 when given multiple pipeline IDs2965 produces the expected SQL string2966Namespace::PackageSetting2967 relationships2968 is expected to belong to namespace required: false2969 validations2970 is expected to validate that :namespace cannot be empty/falsy2971 #maven_duplicates_allowed2972 is expected to allow :maven_duplicates_allowed to be ‹true›2973 is expected to allow :maven_duplicates_allowed to be ‹false›2974 is expected not to allow :maven_duplicates_allowed to be ‹nil›2975 is expected to allow :generic_duplicates_allowed to be ‹true›2976 is expected to allow :generic_duplicates_allowed to be ‹false›2977 is expected not to allow :generic_duplicates_allowed to be ‹nil›2978 regex values2979 is expected to allow :maven_duplicate_exception_regex to be ‹"SNAPSHOT"›2980 is expected to allow :maven_duplicate_exception_regex to be ‹".*"›2981 is expected to allow :maven_duplicate_exception_regex to be ‹"v.+"›2982 is expected to allow :maven_duplicate_exception_regex to be ‹"v10.1.*"›2983 is expected to allow :maven_duplicate_exception_regex to be ‹"(?:v.+|SNAPSHOT|TEMP)"›2984 is expected not to allow :maven_duplicate_exception_regex to be ‹"["›2985 is expected not to allow :maven_duplicate_exception_regex to be ‹"(?:v.+|SNAPSHOT|TEMP"›2986 is expected to allow :generic_duplicate_exception_regex to be ‹"SNAPSHOT"›2987 is expected to allow :generic_duplicate_exception_regex to be ‹".*"›2988 is expected to allow :generic_duplicate_exception_regex to be ‹"v.+"›2989 is expected to allow :generic_duplicate_exception_regex to be ‹"v10.1.*"›2990 is expected to allow :generic_duplicate_exception_regex to be ‹"(?:v.+|SNAPSHOT|TEMP)"›2991 is expected not to allow :generic_duplicate_exception_regex to be ‹"["›2992 is expected not to allow :generic_duplicate_exception_regex to be ‹"(?:v.+|SNAPSHOT|TEMP"›2993 #duplicates_allowed?2994 package types with package_settings2995 with package_type:maven_package2996 duplicates_allowed: true, duplicate_exception_regex: "", result: true2997 for maven_package2998 is expected to equal true2999 duplicates_allowed: false, duplicate_exception_regex: "", result: false3000 for maven_package3001 is expected to equal false3002 duplicates_allowed: false, duplicate_exception_regex: ".*", result: true3003 for maven_package3004 is expected to equal true3005 duplicates_allowed: false, duplicate_exception_regex: "fo.*", result: true3006 for maven_package3007 is expected to equal true3008 duplicates_allowed: false, duplicate_exception_regex: "be.*", result: true3009 for maven_package3010 is expected to equal true3011 with package_type:generic_package3012 duplicates_allowed: true, duplicate_exception_regex: "", result: true3013 for generic_package3014 is expected to equal true3015 duplicates_allowed: false, duplicate_exception_regex: "", result: false3016 for generic_package3017 is expected to equal false3018 duplicates_allowed: false, duplicate_exception_regex: ".*", result: true3019 for generic_package3020 is expected to equal true3021 duplicates_allowed: false, duplicate_exception_regex: "fo.*", result: true3022 for generic_package3023 is expected to equal true3024 duplicates_allowed: false, duplicate_exception_regex: "be.*", result: true3025 for generic_package3026 is expected to equal true3027 package types without package_settings3028 with package_type:npm_package3029 raises an error3030 with package_type:conan_package3031 raises an error3032 with package_type:nuget_package3033 raises an error3034 with package_type:pypi_package3035 raises an error3036 with package_type:composer_package3037 raises an error3038 with package_type:golang_package3039 raises an error3040 with package_type:debian_package3041 raises an error3042 package forwarding attributes3043 behaves like a cascading namespace setting boolean attribute3044 #maven_package_requests_forwarding3045 when there is no parent3046 and the value is not nil3047 returns the local value3048 and the value is nil3049 returns the application settings value3050 when parent does not lock the attribute3051 and value is not nil3052 returns local setting when present3053 returns the parent value when local value is nil3054 returns the correct dirty value3055 does not return the application setting value when parent value is false3056 and the value is nil3057 cascades to the application settings value3058 when multiple ancestors set a value3059 returns the closest ancestor value3060 when parent locks the attribute3061 returns the parent value3062 does not allow the local value to be saved3063 when the application settings locks the attribute3064 returns the application setting value3065 does not allow the local value to be saved3066 when parent locked the attribute then the application settings locks it3067 returns the application setting value3068 #maven_package_requests_forwarding?3069 aliases the method when the attribute is a boolean3070 #maven_package_requests_forwarding=3071 parent_value: true, current_subgroup_value: nil, new_subgroup_value: true, expected_subgroup_value_after_update: nil3072 validates starting values from before block3073 does not save the value locally when it matches cascaded value3074 when mass assigned3075 does not save the value locally when it matches cascaded value3076 parent_value: true, current_subgroup_value: nil, new_subgroup_value: "true", expected_subgroup_value_after_update: nil3077 validates starting values from before block3078 does not save the value locally when it matches cascaded value3079 when mass assigned3080 does not save the value locally when it matches cascaded value3081 parent_value: true, current_subgroup_value: false, new_subgroup_value: true, expected_subgroup_value_after_update: true3082 validates starting values from before block3083 does not save the value locally when it matches cascaded value3084 when mass assigned3085 does not save the value locally when it matches cascaded value3086 parent_value: true, current_subgroup_value: false, new_subgroup_value: "true", expected_subgroup_value_after_update: true3087 validates starting values from before block3088 does not save the value locally when it matches cascaded value3089 when mass assigned3090 does not save the value locally when it matches cascaded value3091 parent_value: true, current_subgroup_value: true, new_subgroup_value: false, expected_subgroup_value_after_update: false3092 validates starting values from before block3093 does not save the value locally when it matches cascaded value3094 when mass assigned3095 does not save the value locally when it matches cascaded value3096 parent_value: true, current_subgroup_value: true, new_subgroup_value: "false", expected_subgroup_value_after_update: false3097 validates starting values from before block3098 does not save the value locally when it matches cascaded value3099 when mass assigned3100 does not save the value locally when it matches cascaded value3101 parent_value: false, current_subgroup_value: nil, new_subgroup_value: false, expected_subgroup_value_after_update: nil3102 validates starting values from before block3103 does not save the value locally when it matches cascaded value3104 when mass assigned3105 does not save the value locally when it matches cascaded value3106 parent_value: false, current_subgroup_value: nil, new_subgroup_value: true, expected_subgroup_value_after_update: true3107 validates starting values from before block3108 does not save the value locally when it matches cascaded value3109 when mass assigned3110 does not save the value locally when it matches cascaded value3111 parent_value: false, current_subgroup_value: true, new_subgroup_value: false, expected_subgroup_value_after_update: false3112 validates starting values from before block3113 does not save the value locally when it matches cascaded value3114 when mass assigned3115 does not save the value locally when it matches cascaded value3116 parent_value: false, current_subgroup_value: false, new_subgroup_value: true, expected_subgroup_value_after_update: true3117 validates starting values from before block3118 does not save the value locally when it matches cascaded value3119 when mass assigned3120 does not save the value locally when it matches cascaded value3121 #maven_package_requests_forwarding_locked?3122 when attribute is locked by self3123 is not locked by default3124 is locked when including self3125 when parent does not lock the attribute3126 behaves like not locked3127 is not locked by an ancestor3128 is not locked by application setting3129 does not return a locked namespace3130 when parent locks the attribute3131 is locked by an ancestor3132 is not locked by application setting3133 returns a locked namespace settings object3134 when not locked by application settings3135 behaves like not locked3136 is not locked by an ancestor3137 is not locked by application setting3138 does not return a locked namespace3139 when locked by application settings3140 is not locked by an ancestor3141 is locked by application setting3142 does not return a locked namespace3143 #lock_maven_package_requests_forwarding=3144 when parent locks the attribute3145 does not allow the attribute to be saved3146 when parent does not lock the attribute3147 allows the lock to be set when the attribute is not nil3148 does not allow the lock to be saved when the attribute is nil3149 copies the cascaded value when locking the attribute if the local value is nil3150 when application settings locks the attribute3151 does not allow the attribute to be saved3152 when application_settings does not lock the attribute3153 allows the attribute to be saved3154 after update callback3155 clears descendant locks3156 behaves like a cascading namespace setting boolean attribute3157 #pypi_package_requests_forwarding3158 when there is no parent3159 and the value is not nil3160 returns the local value3161 and the value is nil3162 returns the application settings value3163 when parent does not lock the attribute3164 and value is not nil3165 returns local setting when present3166 returns the parent value when local value is nil3167 returns the correct dirty value3168 does not return the application setting value when parent value is false3169 and the value is nil3170 cascades to the application settings value3171 when multiple ancestors set a value3172 returns the closest ancestor value3173 when parent locks the attribute3174 returns the parent value3175 does not allow the local value to be saved3176 when the application settings locks the attribute3177 returns the application setting value3178 does not allow the local value to be saved3179 when parent locked the attribute then the application settings locks it3180 returns the application setting value3181 #pypi_package_requests_forwarding?3182 aliases the method when the attribute is a boolean3183 #pypi_package_requests_forwarding=3184 parent_value: true, current_subgroup_value: nil, new_subgroup_value: true, expected_subgroup_value_after_update: nil3185 validates starting values from before block3186 does not save the value locally when it matches cascaded value3187 when mass assigned3188 does not save the value locally when it matches cascaded value3189 parent_value: true, current_subgroup_value: nil, new_subgroup_value: "true", expected_subgroup_value_after_update: nil3190 validates starting values from before block3191 does not save the value locally when it matches cascaded value3192 when mass assigned3193 does not save the value locally when it matches cascaded value3194 parent_value: true, current_subgroup_value: false, new_subgroup_value: true, expected_subgroup_value_after_update: true3195 validates starting values from before block3196 does not save the value locally when it matches cascaded value3197 when mass assigned3198 does not save the value locally when it matches cascaded value3199 parent_value: true, current_subgroup_value: false, new_subgroup_value: "true", expected_subgroup_value_after_update: true3200 validates starting values from before block3201 does not save the value locally when it matches cascaded value3202 when mass assigned3203 does not save the value locally when it matches cascaded value3204 parent_value: true, current_subgroup_value: true, new_subgroup_value: false, expected_subgroup_value_after_update: false3205 validates starting values from before block3206 does not save the value locally when it matches cascaded value3207 when mass assigned3208 does not save the value locally when it matches cascaded value3209 parent_value: true, current_subgroup_value: true, new_subgroup_value: "false", expected_subgroup_value_after_update: false3210 validates starting values from before block3211 does not save the value locally when it matches cascaded value3212 when mass assigned3213 does not save the value locally when it matches cascaded value3214 parent_value: false, current_subgroup_value: nil, new_subgroup_value: false, expected_subgroup_value_after_update: nil3215 validates starting values from before block3216 does not save the value locally when it matches cascaded value3217 when mass assigned3218 does not save the value locally when it matches cascaded value3219 parent_value: false, current_subgroup_value: nil, new_subgroup_value: true, expected_subgroup_value_after_update: true3220 validates starting values from before block3221 does not save the value locally when it matches cascaded value3222 when mass assigned3223 does not save the value locally when it matches cascaded value3224 parent_value: false, current_subgroup_value: true, new_subgroup_value: false, expected_subgroup_value_after_update: false3225 validates starting values from before block3226 does not save the value locally when it matches cascaded value3227 when mass assigned3228 does not save the value locally when it matches cascaded value3229 parent_value: false, current_subgroup_value: false, new_subgroup_value: true, expected_subgroup_value_after_update: true3230 validates starting values from before block3231 does not save the value locally when it matches cascaded value3232 when mass assigned3233 does not save the value locally when it matches cascaded value3234 #pypi_package_requests_forwarding_locked?3235 when attribute is locked by self3236 is not locked by default3237 is locked when including self3238 when parent does not lock the attribute3239 behaves like not locked3240 is not locked by an ancestor3241 is not locked by application setting3242 does not return a locked namespace3243 when parent locks the attribute3244 is locked by an ancestor3245 is not locked by application setting3246 returns a locked namespace settings object3247 when not locked by application settings3248 behaves like not locked3249 is not locked by an ancestor3250 is not locked by application setting3251 does not return a locked namespace3252 when locked by application settings3253 is not locked by an ancestor3254 is locked by application setting3255 does not return a locked namespace3256 #lock_pypi_package_requests_forwarding=3257 when parent locks the attribute3258 does not allow the attribute to be saved3259 when parent does not lock the attribute3260 allows the lock to be set when the attribute is not nil3261 does not allow the lock to be saved when the attribute is nil3262 copies the cascaded value when locking the attribute if the local value is nil3263 when application settings locks the attribute3264 does not allow the attribute to be saved3265 when application_settings does not lock the attribute3266 allows the attribute to be saved3267 after update callback3268 clears descendant locks3269 behaves like a cascading namespace setting boolean attribute3270 #npm_package_requests_forwarding3271 when there is no parent3272 and the value is not nil3273 returns the local value3274 and the value is nil3275 returns the application settings value3276 when parent does not lock the attribute3277 and value is not nil3278 returns local setting when present3279 returns the parent value when local value is nil3280 returns the correct dirty value3281 does not return the application setting value when parent value is false3282 and the value is nil3283 cascades to the application settings value3284 when multiple ancestors set a value3285 returns the closest ancestor value3286 when parent locks the attribute3287 returns the parent value3288 does not allow the local value to be saved3289 when the application settings locks the attribute3290 returns the application setting value3291 does not allow the local value to be saved3292 when parent locked the attribute then the application settings locks it3293 returns the application setting value3294 #npm_package_requests_forwarding?3295 aliases the method when the attribute is a boolean3296 #npm_package_requests_forwarding=3297 parent_value: true, current_subgroup_value: nil, new_subgroup_value: true, expected_subgroup_value_after_update: nil3298 validates starting values from before block3299 does not save the value locally when it matches cascaded value3300 when mass assigned3301 does not save the value locally when it matches cascaded value3302 parent_value: true, current_subgroup_value: nil, new_subgroup_value: "true", expected_subgroup_value_after_update: nil3303 validates starting values from before block3304 does not save the value locally when it matches cascaded value3305 when mass assigned3306 does not save the value locally when it matches cascaded value3307 parent_value: true, current_subgroup_value: false, new_subgroup_value: true, expected_subgroup_value_after_update: true3308 validates starting values from before block3309 does not save the value locally when it matches cascaded value3310 when mass assigned3311 does not save the value locally when it matches cascaded value3312 parent_value: true, current_subgroup_value: false, new_subgroup_value: "true", expected_subgroup_value_after_update: true3313 validates starting values from before block3314 does not save the value locally when it matches cascaded value3315 when mass assigned3316 does not save the value locally when it matches cascaded value3317 parent_value: true, current_subgroup_value: true, new_subgroup_value: false, expected_subgroup_value_after_update: false3318 validates starting values from before block3319 does not save the value locally when it matches cascaded value3320 when mass assigned3321 does not save the value locally when it matches cascaded value3322 parent_value: true, current_subgroup_value: true, new_subgroup_value: "false", expected_subgroup_value_after_update: false3323 validates starting values from before block3324 does not save the value locally when it matches cascaded value3325 when mass assigned3326 does not save the value locally when it matches cascaded value3327 parent_value: false, current_subgroup_value: nil, new_subgroup_value: false, expected_subgroup_value_after_update: nil3328 validates starting values from before block3329 does not save the value locally when it matches cascaded value3330 when mass assigned3331 does not save the value locally when it matches cascaded value3332 parent_value: false, current_subgroup_value: nil, new_subgroup_value: true, expected_subgroup_value_after_update: true3333 validates starting values from before block3334 does not save the value locally when it matches cascaded value3335 when mass assigned3336 does not save the value locally when it matches cascaded value3337 parent_value: false, current_subgroup_value: true, new_subgroup_value: false, expected_subgroup_value_after_update: false3338 validates starting values from before block3339 does not save the value locally when it matches cascaded value3340 when mass assigned3341 does not save the value locally when it matches cascaded value3342 parent_value: false, current_subgroup_value: false, new_subgroup_value: true, expected_subgroup_value_after_update: true3343 validates starting values from before block3344 does not save the value locally when it matches cascaded value3345 when mass assigned3346 does not save the value locally when it matches cascaded value3347 #npm_package_requests_forwarding_locked?3348 when attribute is locked by self3349 is not locked by default3350 is locked when including self3351 when parent does not lock the attribute3352 behaves like not locked3353 is not locked by an ancestor3354 is not locked by application setting3355 does not return a locked namespace3356 when parent locks the attribute3357 is locked by an ancestor3358 is not locked by application setting3359 returns a locked namespace settings object3360 when not locked by application settings3361 behaves like not locked3362 is not locked by an ancestor3363 is not locked by application setting3364 does not return a locked namespace3365 when locked by application settings3366 is not locked by an ancestor3367 is locked by application setting3368 does not return a locked namespace3369 #lock_npm_package_requests_forwarding=3370 when parent locks the attribute3371 does not allow the attribute to be saved3372 when parent does not lock the attribute3373 allows the lock to be set when the attribute is not nil3374 does not allow the lock to be saved when the attribute is nil3375 copies the cascaded value when locking the attribute if the local value is nil3376 when application settings locks the attribute3377 does not allow the attribute to be saved3378 when application_settings does not lock the attribute3379 allows the attribute to be saved3380 after update callback3381 clears descendant locks3382Ci::Runners::CreateRunnerService#execute3383 # order random3384 with :runner_type param set to group_type3385 when anonymous user3386 behaves like it cannot create a runner3387 runner payload is nil3388 is expected to be error3389 when non-admin user3390 behaves like it cannot create a runner3391 runner payload is nil3392 is expected to be error3393 when group owner3394 behaves like it can create a runner3395 creates a runner of the specified type3396 with default params provided3397 is expected to be success3398 uses default values when none are provided3399 with non-default params provided3400 is expected to be success3401 creates runner with specified values3402 with a nil paused value3403 is expected to be success3404 creates runner with active set to true3405 with no paused value given3406 is expected to be success3407 creates runner with active set to true3408 with missing scope param3409 behaves like it cannot create a runner3410 runner payload is nil3411 is expected to be error3412 when admin user3413 behaves like it cannot create a runner3414 runner payload is nil3415 is expected to be error3416 when admin mode is enabled3417 behaves like it can create a runner3418 creates a runner of the specified type3419 with default params provided3420 is expected to be success3421 uses default values when none are provided3422 with non-default params provided3423 is expected to be success3424 creates runner with specified values3425 with a nil paused value3426 is expected to be success3427 creates runner with active set to true3428 with no paused value given3429 is expected to be success3430 creates runner with active set to true3431 behaves like it can return an error3432 when the runner fails to save3433 returns error message3434 behaves like it cannot create a runner3435 runner payload is nil3436 is expected to be error3437 with :runner_type param set to instance_type3438 when anonymous user3439 behaves like it cannot create a runner3440 runner payload is nil3441 is expected to be error3442 when non-admin user3443 behaves like it cannot create a runner3444 runner payload is nil3445 is expected to be error3446 when admin user3447 behaves like it cannot create a runner3448 runner payload is nil3449 is expected to be error3450 when admin mode is enabled3451 behaves like it can create a runner3452 creates a runner of the specified type3453 with default params provided3454 is expected to be success3455 uses default values when none are provided3456 with non-default params provided3457 is expected to be success3458 creates runner with specified values3459 with a nil paused value3460 is expected to be success3461 creates runner with active set to true3462 with no paused value given3463 is expected to be success3464 creates runner with active set to true3465 behaves like it can return an error3466 when the runner fails to save3467 returns error message3468 behaves like it cannot create a runner3469 runner payload is nil3470 is expected to be error3471 with unexpected scope param specified3472 behaves like it cannot create a runner3473 runner payload is nil3474 is expected to be error3475 when model validation fails3476 returns error message and reason3477 behaves like it cannot create a runner3478 runner payload is nil3479 is expected to be error3480 with :runner_type param set to project_type3481 when anonymous user3482 behaves like it cannot create a runner3483 runner payload is nil3484 is expected to be error3485 when group owner3486 behaves like it can create a runner3487 creates a runner of the specified type3488 with default params provided3489 is expected to be success3490 uses default values when none are provided3491 with non-default params provided3492 is expected to be success3493 creates runner with specified values3494 with a nil paused value3495 is expected to be success3496 creates runner with active set to true3497 with no paused value given3498 is expected to be success3499 creates runner with active set to true3500 with missing scope param3501 behaves like it cannot create a runner3502 runner payload is nil3503 is expected to be error3504 when non-admin user3505 behaves like it cannot create a runner3506 runner payload is nil3507 is expected to be error3508 with project permissions to create runner3509 behaves like it can create a runner3510 creates a runner of the specified type3511 with default params provided3512 is expected to be success3513 uses default values when none are provided3514 with non-default params provided3515 is expected to be success3516 creates runner with specified values3517 with a nil paused value3518 is expected to be success3519 creates runner with active set to true3520 with no paused value given3521 is expected to be success3522 creates runner with active set to true3523 when admin user3524 behaves like it cannot create a runner3525 runner payload is nil3526 is expected to be error3527 when admin mode is enabled3528 behaves like it can create a runner3529 creates a runner of the specified type3530 with default params provided3531 is expected to be success3532 uses default values when none are provided3533 with non-default params provided3534 is expected to be success3535 creates runner with specified values3536 with a nil paused value3537 is expected to be success3538 creates runner with active set to true3539 with no paused value given3540 is expected to be success3541 creates runner with active set to true3542 behaves like it can return an error3543 when the runner fails to save3544 returns error message3545 behaves like it cannot create a runner3546 runner payload is nil3547 is expected to be error3548Gitlab::Database::RenameReservedPathsMigration::V1::RenameProjects3549 #projects_for_paths3550 searches using nested paths3551 includes the correct projects3552 #rename_projects3553 renames each project3554 invalidates the markdown cache of related projects3555 #rename_project3556 renames path & route for the project3557 tracks the rename3558 renames the folders for the project3559 #move_project_folders3560 moves the wiki & the repo3561 does not move the repositories when hashed storage is enabled3562 moves uploads3563 does not move uploads when hashed storage is enabled for attachments3564 moves pages3565 #move_repository3566 moves the repository for a project3567 #revert_renames3568 renames the routes back to the previous values3569 moves the repositories back to their original place3570 doesn't break when the project was renamed3571Gitlab::UrlSanitizer3572 .sanitize3573 input: "http://test.com", output: "http://test.com"3574 is expected to include "repository `http://test.com` not found"3575 input: "http://test.com/", output: "http://test.com/"3576 is expected to include "repository `http://test.com/` not found"3577 input: "http://test.com/path/to/repo.git", output: "http://test.com/path/to/repo.git"3578 is expected to include "repository `http://test.com/path/to/repo.git` not found"3579 input: "http://user@test.com", output: "http://*****@test.com"3580 is expected to include "repository `http://*****@test.com` not found"3581 input: "http://user:pass@test.com", output: "http://*****:*****@test.com"3582 is expected to include "repository `http://*****:*****@test.com` not found"3583 input: "http://user:@test.com", output: "http://*****@test.com"3584 is expected to include "repository `http://*****@test.com` not found"3585 input: "http://:pass@test.com", output: "http://:*****@test.com"3586 is expected to include "repository `http://:*****@test.com` not found"3587 input: "https://test.com", output: "https://test.com"3588 is expected to include "repository `https://test.com` not found"3589 input: "https://test.com/", output: "https://test.com/"3590 is expected to include "repository `https://test.com/` not found"3591 input: "https://test.com/path/to/repo.git", output: "https://test.com/path/to/repo.git"3592 is expected to include "repository `https://test.com/path/to/repo.git` not found"3593 input: "https://user@test.com", output: "https://*****@test.com"3594 is expected to include "repository `https://*****@test.com` not found"3595 input: "https://user:pass@test.com", output: "https://*****:*****@test.com"3596 is expected to include "repository `https://*****:*****@test.com` not found"3597 input: "https://user:@test.com", output: "https://*****@test.com"3598 is expected to include "repository `https://*****@test.com` not found"3599 input: "https://:pass@test.com", output: "https://:*****@test.com"3600 is expected to include "repository `https://:*****@test.com` not found"3601 input: "ssh://test.com", output: "ssh://test.com"3602 is expected to include "repository `ssh://test.com` not found"3603 input: "ssh://test.com/", output: "ssh://test.com/"3604 is expected to include "repository `ssh://test.com/` not found"3605 input: "ssh://test.com/path/to/repo.git", output: "ssh://test.com/path/to/repo.git"3606 is expected to include "repository `ssh://test.com/path/to/repo.git` not found"3607 input: "ssh://user@test.com", output: "ssh://*****@test.com"3608 is expected to include "repository `ssh://*****@test.com` not found"3609 input: "ssh://user:pass@test.com", output: "ssh://*****:*****@test.com"3610 is expected to include "repository `ssh://*****:*****@test.com` not found"3611 input: "ssh://user:@test.com", output: "ssh://*****@test.com"3612 is expected to include "repository `ssh://*****@test.com` not found"3613 input: "ssh://:pass@test.com", output: "ssh://:*****@test.com"3614 is expected to include "repository `ssh://:*****@test.com` not found"3615 input: "git://test.com", output: "git://test.com"3616 is expected to include "repository `git://test.com` not found"3617 input: "git://test.com/", output: "git://test.com/"3618 is expected to include "repository `git://test.com/` not found"3619 input: "git://test.com/path/to/repo.git", output: "git://test.com/path/to/repo.git"3620 is expected to include "repository `git://test.com/path/to/repo.git` not found"3621 input: "git://user@test.com", output: "git://*****@test.com"3622 is expected to include "repository `git://*****@test.com` not found"3623 input: "git://user:pass@test.com", output: "git://*****:*****@test.com"3624 is expected to include "repository `git://*****:*****@test.com` not found"3625 input: "git://user:@test.com", output: "git://*****@test.com"3626 is expected to include "repository `git://*****@test.com` not found"3627 input: "git://:pass@test.com", output: "git://:*****@test.com"3628 is expected to include "repository `git://:*****@test.com` not found"3629 input: "//test.com", output: "//test.com"3630 is expected to include "repository `//test.com` not found"3631 input: "//test.com/", output: "//test.com/"3632 is expected to include "repository `//test.com/` not found"3633 input: "//test.com/path/to/repo.git", output: "//test.com/path/to/repo.git"3634 is expected to include "repository `//test.com/path/to/repo.git` not found"3635 input: "//user@test.com", output: "//*****@test.com"3636 is expected to include "repository `//*****@test.com` not found"3637 input: "//user:pass@test.com", output: "//*****:*****@test.com"3638 is expected to include "repository `//*****:*****@test.com` not found"3639 input: "//user:@test.com", output: "//*****@test.com"3640 is expected to include "repository `//*****@test.com` not found"3641 input: "//:pass@test.com", output: "//:*****@test.com"3642 is expected to include "repository `//:*****@test.com` not found"3643 input: "test.com", output: "test.com"3644 is expected to include "repository `test.com` not found"3645 input: "test.com/", output: "test.com/"3646 is expected to include "repository `test.com/` not found"3647 input: "test.com/path/to/repo.git", output: "test.com/path/to/repo.git"3648 is expected to include "repository `test.com/path/to/repo.git` not found"3649 input: "user@test.com", output: "*****@test.com"3650 is expected to include "repository `*****@test.com` not found"3651 input: "user:pass@test.com", output: "*****:*****@test.com"3652 is expected to include "repository `*****:*****@test.com` not found"3653 input: "user:@test.com", output: "*****@test.com"3654 is expected to include "repository `*****@test.com` not found"3655 input: ":pass@test.com", output: ":*****@test.com"3656 is expected to include "repository `:*****@test.com` not found"3657 input: "user@server:project.git", output: "user@server:project.git"3658 is expected to include "repository `user@server:project.git` not found"3659 input: "user:@server:project.git", output: "user:@server:project.git"3660 is expected to include "repository `user:@server:project.git` not found"3661 input: ":pass@server:project.git", output: ":pass@server:project.git"3662 is expected to include "repository `:pass@server:project.git` not found"3663 input: "user:pass@server:project.git", output: "user:pass@server:project.git"3664 is expected to include "repository `user:pass@server:project.git` not found"3665 input: "ssh://", output: ""3666 is expected to include "repository `` not found"3667 .valid?3668 value: false, url: nil3669 is expected to eq false3670 value: false, url: ""3671 is expected to eq false3672 value: false, url: "123://invalid:url"3673 is expected to eq false3674 value: false, url: "valid@project:url.git"3675 is expected to eq false3676 value: false, url: "valid:pass@project:url.git"3677 is expected to eq false3678 value: false, url: ["test", "array"]3679 is expected to eq false3680 value: true, url: "ssh://example.com"3681 is expected to eq true3682 value: true, url: "ssh://:@example.com"3683 is expected to eq true3684 value: true, url: "ssh://foo@example.com"3685 is expected to eq true3686 value: true, url: "ssh://foo:bar@example.com"3687 is expected to eq true3688 value: true, url: "ssh://foo:bar@example.com/group/group/project.git"3689 is expected to eq true3690 value: true, url: "git://example.com/group/group/project.git"3691 is expected to eq true3692 value: true, url: "git://foo:bar@example.com/group/group/project.git"3693 is expected to eq true3694 value: true, url: "http://foo:bar@example.com/group/group/project.git"3695 is expected to eq true3696 value: true, url: "https://foo:bar@example.com/group/group/project.git"3697 is expected to eq true3698 .valid_web?3699 value: false, url: nil3700 is expected to eq false3701 value: false, url: ""3702 is expected to eq false3703 value: false, url: "123://invalid:url"3704 is expected to eq false3705 value: false, url: "valid@project:url.git"3706 is expected to eq false3707 value: false, url: "valid:pass@project:url.git"3708 is expected to eq false3709 value: false, url: ["test", "array"]3710 is expected to eq false3711 value: false, url: "ssh://example.com"3712 is expected to eq false3713 value: false, url: "ssh://:@example.com"3714 is expected to eq false3715 value: false, url: "ssh://foo@example.com"3716 is expected to eq false3717 value: false, url: "ssh://foo:bar@example.com"3718 is expected to eq false3719 value: false, url: "ssh://foo:bar@example.com/group/group/project.git"3720 is expected to eq false3721 value: false, url: "git://example.com/group/group/project.git"3722 is expected to eq false3723 value: false, url: "git://foo:bar@example.com/group/group/project.git"3724 is expected to eq false3725 value: true, url: "http://foo:bar@example.com/group/group/project.git"3726 is expected to eq true3727 value: true, url: "https://foo:bar@example.com/group/group/project.git"3728 is expected to eq true3729 #sanitized_url3730 credentials in hash3731 username: "foo", password: "bar"3732 is expected to eq "http://example.com"3733 username: "foo", password: ""3734 is expected to eq "http://example.com"3735 username: "foo", password: nil3736 is expected to eq "http://example.com"3737 username: "", password: "bar"3738 is expected to eq "http://example.com"3739 username: "", password: ""3740 is expected to eq "http://example.com"3741 username: "", password: nil3742 is expected to eq "http://example.com"3743 username: nil, password: "bar"3744 is expected to eq "http://example.com"3745 username: nil, password: ""3746 is expected to eq "http://example.com"3747 username: nil, password: nil3748 is expected to eq "http://example.com"3749 credentials in URL3750 userinfo: "foo:bar@"3751 is expected to eq "http://example.com"3752 userinfo: "foo@"3753 is expected to eq "http://example.com"3754 userinfo: ":bar@"3755 is expected to eq "http://example.com"3756 userinfo: ":@"3757 is expected to eq "http://example.com"3758 userinfo: "@"3759 is expected to eq "http://example.com"3760 userinfo: nil3761 is expected to eq "http://example.com"3762 #credentials3763 credentials in hash3764 overrides URL-provided credentials3765 credentials in URL3766 url: "http://foo:bar@example.com", credentials: {:user=>"foo", :password=>"bar"}3767 is expected to eq {:password=>"bar", :user=>"foo"}3768 url: "http://foo:bar:baz@example.com", credentials: {:user=>"foo", :password=>"bar:baz"}3769 is expected to eq {:password=>"bar:baz", :user=>"foo"}3770 url: "http://:bar@example.com", credentials: {:user=>nil, :password=>"bar"}3771 is expected to eq {:password=>"bar", :user=>nil}3772 url: "http://foo:@example.com", credentials: {:user=>"foo", :password=>nil}3773 is expected to eq {:password=>nil, :user=>"foo"}3774 url: "http://foo@example.com", credentials: {:user=>"foo", :password=>nil}3775 is expected to eq {:password=>nil, :user=>"foo"}3776 url: "http://:@example.com", credentials: {:user=>nil, :password=>nil}3777 is expected to eq {:password=>nil, :user=>nil}3778 url: "http://@example.com", credentials: {:user=>nil, :password=>nil}3779 is expected to eq {:password=>nil, :user=>nil}3780 url: "http://example.com", credentials: {:user=>nil, :password=>nil}3781 is expected to eq {:password=>nil, :user=>nil}3782 url: nil, credentials: {:user=>nil, :password=>nil}3783 is expected to eq {:password=>nil, :user=>nil}3784 url: "", credentials: {:user=>nil, :password=>nil}3785 is expected to eq {:password=>nil, :user=>nil}3786 url: "no", credentials: {:user=>nil, :password=>nil}3787 is expected to eq {:password=>nil, :user=>nil}3788 with mixed credentials3789 url: "http://a@example.com", credentials: {:password=>"d"}, result: {:user=>"a", :password=>"d"}3790 is expected to eq {:password=>"d", :user=>"a"}3791 url: "http://a:b@example.com", credentials: {:password=>"d"}, result: {:user=>"a", :password=>"d"}3792 is expected to eq {:password=>"d", :user=>"a"}3793 url: "http://:b@example.com", credentials: {:password=>"d"}, result: {:user=>nil, :password=>"d"}3794 is expected to eq {:password=>"d", :user=>nil}3795 url: "http://a@example.com", credentials: {:user=>"c"}, result: {:user=>"c", :password=>nil}3796 is expected to eq {:password=>nil, :user=>"c"}3797 url: "http://a:b@example.com", credentials: {:user=>"c"}, result: {:user=>"c", :password=>"b"}3798 is expected to eq {:password=>"b", :user=>"c"}3799 url: "http://a:b@example.com", credentials: {:user=>""}, result: {:user=>"a", :password=>"b"}3800 is expected to eq {:password=>"b", :user=>"a"}3801 #user3802 credentials in hash3803 overrides URL-provided user3804 credentials in URL3805 url: "http://foo:bar@example.com", user: "foo"3806 is expected to eq "foo"3807 url: "http://foo:bar:baz@example.com", user: "foo"3808 is expected to eq "foo"3809 url: "http://:bar@example.com", user: nil3810 is expected to eq nil3811 url: "http://foo:@example.com", user: "foo"3812 is expected to eq "foo"3813 url: "http://foo@example.com", user: "foo"3814 is expected to eq "foo"3815 url: "http://:@example.com", user: nil3816 is expected to eq nil3817 url: "http://@example.com", user: nil3818 is expected to eq nil3819 url: "http://example.com", user: nil3820 is expected to eq nil3821 url: nil, user: nil3822 is expected to eq nil3823 url: "", user: nil3824 is expected to eq nil3825 url: "no", user: nil3826 is expected to eq nil3827 #full_url3828 credentials in hash3829 credentials: {:user=>"foo", :password=>"bar"}, userinfo: "foo:bar@"3830 is expected to eq "http://foo:bar@example.com"3831 credentials: {:user=>"foo", :password=>""}, userinfo: "foo@"3832 is expected to eq "http://foo@example.com"3833 credentials: {:user=>"foo", :password=>nil}, userinfo: "foo@"3834 is expected to eq "http://foo@example.com"3835 credentials: {:user=>"", :password=>"bar"}, userinfo: ":bar@"3836 is expected to eq "http://:bar@example.com"3837 credentials: {:user=>"", :password=>""}, userinfo: nil3838 is expected to eq "http://example.com"3839 credentials: {:user=>"", :password=>nil}, userinfo: nil3840 is expected to eq "http://example.com"3841 credentials: {:user=>nil, :password=>"bar"}, userinfo: ":bar@"3842 is expected to eq "http://:bar@example.com"3843 credentials: {:user=>nil, :password=>""}, userinfo: nil3844 is expected to eq "http://example.com"3845 credentials: {:user=>nil, :password=>nil}, userinfo: nil3846 is expected to eq "http://example.com"3847 credentials in URL3848 input: nil, output: ""3849 is expected to eq ""3850 input: "", output: :same3851 is expected to eq ""3852 input: "git@example.com", output: :same3853 is expected to eq "git@example.com"3854 input: "http://example.com", output: :same3855 is expected to eq "http://example.com"3856 input: "http://foo@example.com", output: :same3857 is expected to eq "http://foo@example.com"3858 input: "http://foo:@example.com", output: "http://foo@example.com"3859 is expected to eq "http://foo@example.com"3860 input: "http://:bar@example.com", output: :same3861 is expected to eq "http://:bar@example.com"3862 input: "http://foo:bar@example.com", output: :same3863 is expected to eq "http://foo:bar@example.com"3864 input: "http://foo:g p@example.com", output: "http://foo:g%20p@example.com"3865 is expected to eq "http://foo:g%20p@example.com"3866 input: "http://foo:s/h@example.com", output: "http://foo:s%2Fh@example.com"3867 is expected to eq "http://foo:s%2Fh@example.com"3868 input: "http://t u:a#b@example.com", output: "http://t%20u:a%23b@example.com"3869 is expected to eq "http://t%20u:a%23b@example.com"3870 input: "http://t+u:a#b@example.com", output: "http://t%2Bu:a%23b@example.com"3871 is expected to eq "http://t%2Bu:a%23b@example.com"3872 when credentials contains special chars3873 parses the URL without errors3874MergeRequests::CleanupRefsService3875 .schedule3876 creates a merge request cleanup schedule3877 #execute3878 when merge request is closed3879 when closed 14 days ago3880 behaves like service that cleans up merge request refs3881 creates keep around ref and deletes merge request refs3882 when merge request has no head ref3883 does not fail3884 when merge request has merge ref3885 caches merge ref sha and deletes merge ref3886 when merge ref sha cannot be cached3887 behaves like service that does not clean up merge request refs3888 does not delete merge request refs3889 when keep around ref cannot be created3890 behaves like service that does not clean up merge request refs3891 does not delete merge request refs3892 when a git error is raised3893 Gitlab::Git::Repository::GitError3894 behaves like service that does not clean up merge request refs3895 does not delete merge request refs3896 Gitlab::Git::CommandError3897 behaves like service that does not clean up merge request refs3898 does not delete merge request refs3899 when cleanup schedule fails to update3900 creates keep around ref and deletes merge request refs3901 when merge request is not scheduled to be cleaned up yet3902 behaves like service that does not clean up merge request refs3903 does not delete merge request refs3904 when repository no longer exists3905 does not fail and still mark schedule as complete3906 when closed later than 14 days ago3907 behaves like service that does not clean up merge request refs3908 does not delete merge request refs3909 when merge request is merged3910 when merged 14 days ago3911 behaves like service that cleans up merge request refs3912 creates keep around ref and deletes merge request refs3913 when merge request has no head ref3914 does not fail3915 when merge request has merge ref3916 caches merge ref sha and deletes merge ref3917 when merge ref sha cannot be cached3918 behaves like service that does not clean up merge request refs3919 does not delete merge request refs3920 when keep around ref cannot be created3921 behaves like service that does not clean up merge request refs3922 does not delete merge request refs3923 when a git error is raised3924 Gitlab::Git::Repository::GitError3925 behaves like service that does not clean up merge request refs3926 does not delete merge request refs3927 Gitlab::Git::CommandError3928 behaves like service that does not clean up merge request refs3929 does not delete merge request refs3930 when cleanup schedule fails to update3931 creates keep around ref and deletes merge request refs3932 when merge request is not scheduled to be cleaned up yet3933 behaves like service that does not clean up merge request refs3934 does not delete merge request refs3935 when repository no longer exists3936 does not fail and still mark schedule as complete3937 when merged later than 14 days ago3938 behaves like service that does not clean up merge request refs3939 does not delete merge request refs3940 when merge request is not closed nor merged3941 behaves like service that does not clean up merge request refs3942 does not delete merge request refs3943Gitlab::HealthChecks::Redis3944 # order random3945 ALL_INSTANCE_CHECKS3946 is expected to include Gitlab::HealthChecks::Redis::CacheCheck and Gitlab::HealthChecks::Redis::QueuesCheck3947 contains a check for each redis instance3948 all checks3949 Gitlab::HealthChecks::Redis::CacheCheck3950 #metrics3951 Check is passing3952 is expected to include (have attributes {:name => "redis_cache_ping_success", :value => 1})3953 is expected to include (have attributes {:name => "redis_cache_ping_timeout", :value => 0})3954 is expected to include (have attributes {:name => "redis_cache_ping_latency_seconds", :value => (be >= 0)})3955 Check is misbehaving3956 is expected to include (have attributes {:name => "redis_cache_ping_success", :value => 0})3957 is expected to include (have attributes {:name => "redis_cache_ping_timeout", :value => 0})3958 is expected to include (have attributes {:name => "redis_cache_ping_latency_seconds", :value => (be >= 0)})3959 Check is timeouting3960 is expected to include (have attributes {:name => "redis_cache_ping_success", :value => 0})3961 is expected to include (have attributes {:name => "redis_cache_ping_timeout", :value => 1})3962 is expected to include (have attributes {:name => "redis_cache_ping_latency_seconds", :value => (be >= 0)})3963 #readiness3964 Check returns ok3965 is expected to have attributes {:success => true}3966 Check is misbehaving3967 is expected to have attributes {:message => "unexpected Cache check result: error!", :success => false}3968 Check is timeouting3969 is expected to have attributes {:message => "Cache check timed out", :success => false}3970 Check is raising an unhandled exception3971 is expected to have attributes {:message => "unexpected Cache check result: unexpected error", :success => false}3972 Gitlab::HealthChecks::Redis::DbLoadBalancingCheck3973 #metrics3974 Check is passing3975 is expected to include (have attributes {:name => "redis_db_load_balancing_ping_success", :value => 1})3976 is expected to include (have attributes {:name => "redis_db_load_balancing_ping_timeout", :value => 0})3977 is expected to include (have attributes {:name => "redis_db_load_balancing_ping_latency_seconds", :value => (be >= 0)})3978 Check is misbehaving3979 is expected to include (have attributes {:name => "redis_db_load_balancing_ping_success", :value => 0})3980 is expected to include (have attributes {:name => "redis_db_load_balancing_ping_timeout", :value => 0})3981 is expected to include (have attributes {:name => "redis_db_load_balancing_ping_latency_seconds", :value => (be >= 0)})3982 Check is timeouting3983 is expected to include (have attributes {:name => "redis_db_load_balancing_ping_success", :value => 0})3984 is expected to include (have attributes {:name => "redis_db_load_balancing_ping_timeout", :value => 1})3985 is expected to include (have attributes {:name => "redis_db_load_balancing_ping_latency_seconds", :value => (be >= 0)})3986 #readiness3987 Check returns ok3988 is expected to have attributes {:success => true}3989 Check is misbehaving3990 is expected to have attributes {:message => "unexpected Db_load_balancing check result: error!", :success => false}3991 Check is timeouting3992 is expected to have attributes {:message => "Db_load_balancing check timed out", :success => false}3993 Check is raising an unhandled exception3994 is expected to have attributes {:message => "unexpected Db_load_balancing check result: unexpected error", :success => false}3995 Gitlab::HealthChecks::Redis::FeatureFlagCheck3996 #metrics3997 Check is passing3998 is expected to include (have attributes {:name => "redis_feature_flag_ping_success", :value => 1})3999 is expected to include (have attributes {:name => "redis_feature_flag_ping_timeout", :value => 0})4000 is expected to include (have attributes {:name => "redis_feature_flag_ping_latency_seconds", :value => (be >= 0)})4001 Check is misbehaving4002 is expected to include (have attributes {:name => "redis_feature_flag_ping_success", :value => 0})4003 is expected to include (have attributes {:name => "redis_feature_flag_ping_timeout", :value => 0})4004 is expected to include (have attributes {:name => "redis_feature_flag_ping_latency_seconds", :value => (be >= 0)})4005 Check is timeouting4006 is expected to include (have attributes {:name => "redis_feature_flag_ping_success", :value => 0})4007 is expected to include (have attributes {:name => "redis_feature_flag_ping_timeout", :value => 1})4008 is expected to include (have attributes {:name => "redis_feature_flag_ping_latency_seconds", :value => (be >= 0)})4009 #readiness4010 Check returns ok4011 is expected to have attributes {:success => true}4012 Check is misbehaving4013 is expected to have attributes {:message => "unexpected Feature_flag check result: error!", :success => false}4014 Check is timeouting4015 is expected to have attributes {:message => "Feature_flag check timed out", :success => false}4016 Check is raising an unhandled exception4017 is expected to have attributes {:message => "unexpected Feature_flag check result: unexpected error", :success => false}4018 Gitlab::HealthChecks::Redis::QueuesCheck4019 #metrics4020 Check is passing4021 is expected to include (have attributes {:name => "redis_queues_ping_success", :value => 1})4022 is expected to include (have attributes {:name => "redis_queues_ping_timeout", :value => 0})4023 is expected to include (have attributes {:name => "redis_queues_ping_latency_seconds", :value => (be >= 0)})4024 Check is misbehaving4025 is expected to include (have attributes {:name => "redis_queues_ping_success", :value => 0})4026 is expected to include (have attributes {:name => "redis_queues_ping_timeout", :value => 0})4027 is expected to include (have attributes {:name => "redis_queues_ping_latency_seconds", :value => (be >= 0)})4028 Check is timeouting4029 is expected to include (have attributes {:name => "redis_queues_ping_success", :value => 0})4030 is expected to include (have attributes {:name => "redis_queues_ping_timeout", :value => 1})4031 is expected to include (have attributes {:name => "redis_queues_ping_latency_seconds", :value => (be >= 0)})4032 #readiness4033 Check returns ok4034 is expected to have attributes {:success => true}4035 Check is misbehaving4036 is expected to have attributes {:message => "unexpected Queues check result: error!", :success => false}4037 Check is timeouting4038 is expected to have attributes {:message => "Queues check timed out", :success => false}4039 Check is raising an unhandled exception4040 is expected to have attributes {:message => "unexpected Queues check result: unexpected error", :success => false}4041 Gitlab::HealthChecks::Redis::RateLimitingCheck4042 #metrics4043 Check is passing4044 is expected to include (have attributes {:name => "redis_rate_limiting_ping_success", :value => 1})4045 is expected to include (have attributes {:name => "redis_rate_limiting_ping_timeout", :value => 0})4046 is expected to include (have attributes {:name => "redis_rate_limiting_ping_latency_seconds", :value => (be >= 0)})4047 Check is misbehaving4048 is expected to include (have attributes {:name => "redis_rate_limiting_ping_success", :value => 0})4049 is expected to include (have attributes {:name => "redis_rate_limiting_ping_timeout", :value => 0})4050 is expected to include (have attributes {:name => "redis_rate_limiting_ping_latency_seconds", :value => (be >= 0)})4051 Check is timeouting4052 is expected to include (have attributes {:name => "redis_rate_limiting_ping_success", :value => 0})4053 is expected to include (have attributes {:name => "redis_rate_limiting_ping_timeout", :value => 1})4054 is expected to include (have attributes {:name => "redis_rate_limiting_ping_latency_seconds", :value => (be >= 0)})4055 #readiness4056 Check returns ok4057 is expected to have attributes {:success => true}4058 Check is misbehaving4059 is expected to have attributes {:message => "unexpected Rate_limiting check result: error!", :success => false}4060 Check is timeouting4061 is expected to have attributes {:message => "Rate_limiting check timed out", :success => false}4062 Check is raising an unhandled exception4063 is expected to have attributes {:message => "unexpected Rate_limiting check result: unexpected error", :success => false}4064 Gitlab::HealthChecks::Redis::RepositoryCacheCheck4065 #metrics4066 Check is passing4067 is expected to include (have attributes {:name => "redis_repository_cache_ping_success", :value => 1})4068 is expected to include (have attributes {:name => "redis_repository_cache_ping_timeout", :value => 0})4069 is expected to include (have attributes {:name => "redis_repository_cache_ping_latency_seconds", :value => (be >= 0)})4070 Check is misbehaving4071 is expected to include (have attributes {:name => "redis_repository_cache_ping_success", :value => 0})4072 is expected to include (have attributes {:name => "redis_repository_cache_ping_timeout", :value => 0})4073 is expected to include (have attributes {:name => "redis_repository_cache_ping_latency_seconds", :value => (be >= 0)})4074 Check is timeouting4075 is expected to include (have attributes {:name => "redis_repository_cache_ping_success", :value => 0})4076 is expected to include (have attributes {:name => "redis_repository_cache_ping_timeout", :value => 1})4077 is expected to include (have attributes {:name => "redis_repository_cache_ping_latency_seconds", :value => (be >= 0)})4078 #readiness4079 Check returns ok4080 is expected to have attributes {:success => true}4081 Check is misbehaving4082 is expected to have attributes {:message => "unexpected Repository_cache check result: error!", :success => false}4083 Check is timeouting4084 is expected to have attributes {:message => "Repository_cache check timed out", :success => false}4085 Check is raising an unhandled exception4086 is expected to have attributes {:message => "unexpected Repository_cache check result: unexpected error", :success => false}4087 Gitlab::HealthChecks::Redis::SessionsCheck4088 #metrics4089 Check is passing4090 is expected to include (have attributes {:name => "redis_sessions_ping_success", :value => 1})4091 is expected to include (have attributes {:name => "redis_sessions_ping_timeout", :value => 0})4092 is expected to include (have attributes {:name => "redis_sessions_ping_latency_seconds", :value => (be >= 0)})4093 Check is misbehaving4094 is expected to include (have attributes {:name => "redis_sessions_ping_success", :value => 0})4095 is expected to include (have attributes {:name => "redis_sessions_ping_timeout", :value => 0})4096 is expected to include (have attributes {:name => "redis_sessions_ping_latency_seconds", :value => (be >= 0)})4097 Check is timeouting4098 is expected to include (have attributes {:name => "redis_sessions_ping_success", :value => 0})4099 is expected to include (have attributes {:name => "redis_sessions_ping_timeout", :value => 1})4100 is expected to include (have attributes {:name => "redis_sessions_ping_latency_seconds", :value => (be >= 0)})4101 #readiness4102 Check returns ok4103 is expected to have attributes {:success => true}4104 Check is misbehaving4105 is expected to have attributes {:message => "unexpected Sessions check result: error!", :success => false}4106 Check is timeouting4107 is expected to have attributes {:message => "Sessions check timed out", :success => false}4108 Check is raising an unhandled exception4109 is expected to have attributes {:message => "unexpected Sessions check result: unexpected error", :success => false}4110 Gitlab::HealthChecks::Redis::SharedStateCheck4111 #metrics4112 Check is passing4113 is expected to include (have attributes {:name => "redis_shared_state_ping_success", :value => 1})4114 is expected to include (have attributes {:name => "redis_shared_state_ping_timeout", :value => 0})4115 is expected to include (have attributes {:name => "redis_shared_state_ping_latency_seconds", :value => (be >= 0)})4116 Check is misbehaving4117 is expected to include (have attributes {:name => "redis_shared_state_ping_success", :value => 0})4118 is expected to include (have attributes {:name => "redis_shared_state_ping_timeout", :value => 0})4119 is expected to include (have attributes {:name => "redis_shared_state_ping_latency_seconds", :value => (be >= 0)})4120 Check is timeouting4121 is expected to include (have attributes {:name => "redis_shared_state_ping_success", :value => 0})4122 is expected to include (have attributes {:name => "redis_shared_state_ping_timeout", :value => 1})4123 is expected to include (have attributes {:name => "redis_shared_state_ping_latency_seconds", :value => (be >= 0)})4124 #readiness4125 Check returns ok4126 is expected to have attributes {:success => true}4127 Check is misbehaving4128 is expected to have attributes {:message => "unexpected Shared_state check result: error!", :success => false}4129 Check is timeouting4130 is expected to have attributes {:message => "Shared_state check timed out", :success => false}4131 Check is raising an unhandled exception4132 is expected to have attributes {:message => "unexpected Shared_state check result: unexpected error", :success => false}4133 Gitlab::HealthChecks::Redis::TraceChunksCheck4134 #metrics4135 Check is passing4136 is expected to include (have attributes {:name => "redis_trace_chunks_ping_success", :value => 1})4137 is expected to include (have attributes {:name => "redis_trace_chunks_ping_timeout", :value => 0})4138 is expected to include (have attributes {:name => "redis_trace_chunks_ping_latency_seconds", :value => (be >= 0)})4139 Check is misbehaving4140 is expected to include (have attributes {:name => "redis_trace_chunks_ping_success", :value => 0})4141 is expected to include (have attributes {:name => "redis_trace_chunks_ping_timeout", :value => 0})4142 is expected to include (have attributes {:name => "redis_trace_chunks_ping_latency_seconds", :value => (be >= 0)})4143 Check is timeouting4144 is expected to include (have attributes {:name => "redis_trace_chunks_ping_success", :value => 0})4145 is expected to include (have attributes {:name => "redis_trace_chunks_ping_timeout", :value => 1})4146 is expected to include (have attributes {:name => "redis_trace_chunks_ping_latency_seconds", :value => (be >= 0)})4147 #readiness4148 Check returns ok4149 is expected to have attributes {:success => true}4150 Check is misbehaving4151 is expected to have attributes {:message => "unexpected Trace_chunks check result: error!", :success => false}4152 Check is timeouting4153 is expected to have attributes {:message => "Trace_chunks check timed out", :success => false}4154 Check is raising an unhandled exception4155 is expected to have attributes {:message => "unexpected Trace_chunks check result: unexpected error", :success => false}4156 Gitlab::HealthChecks::Redis::ChatCheck4157 #metrics4158 Check is passing4159 is expected to include (have attributes {:name => "redis_chat_ping_success", :value => 1})4160 is expected to include (have attributes {:name => "redis_chat_ping_timeout", :value => 0})4161 is expected to include (have attributes {:name => "redis_chat_ping_latency_seconds", :value => (be >= 0)})4162 Check is misbehaving4163 is expected to include (have attributes {:name => "redis_chat_ping_success", :value => 0})4164 is expected to include (have attributes {:name => "redis_chat_ping_timeout", :value => 0})4165 is expected to include (have attributes {:name => "redis_chat_ping_latency_seconds", :value => (be >= 0)})4166 Check is timeouting4167 is expected to include (have attributes {:name => "redis_chat_ping_success", :value => 0})4168 is expected to include (have attributes {:name => "redis_chat_ping_timeout", :value => 1})4169 is expected to include (have attributes {:name => "redis_chat_ping_latency_seconds", :value => (be >= 0)})4170 #readiness4171 Check returns ok4172 is expected to have attributes {:success => true}4173 Check is misbehaving4174 is expected to have attributes {:message => "unexpected Chat check result: error!", :success => false}4175 Check is timeouting4176 is expected to have attributes {:message => "Chat check timed out", :success => false}4177 Check is raising an unhandled exception4178 is expected to have attributes {:message => "unexpected Chat check result: unexpected error", :success => false}4179Every integration4180 apple_app_store4181 secret fields4182 uses type: 'password' for all secret fields4183 defines non-empty titles and help texts for all secret fields4184 asana4185 secret fields4186 uses type: 'password' for all secret fields4187 defines non-empty titles and help texts for all secret fields4188 assembla4189 secret fields4190 uses type: 'password' for all secret fields4191 defines non-empty titles and help texts for all secret fields4192 bamboo4193 secret fields4194 uses type: 'password' for all secret fields4195 defines non-empty titles and help texts for all secret fields4196 bugzilla4197 secret fields4198 uses type: 'password' for all secret fields4199 defines non-empty titles and help texts for all secret fields4200 buildkite4201 secret fields4202 uses type: 'password' for all secret fields4203 defines non-empty titles and help texts for all secret fields4204 campfire4205 secret fields4206 uses type: 'password' for all secret fields4207 defines non-empty titles and help texts for all secret fields4208 clickup4209 secret fields4210 uses type: 'password' for all secret fields4211 defines non-empty titles and help texts for all secret fields4212 confluence4213 secret fields4214 uses type: 'password' for all secret fields4215 defines non-empty titles and help texts for all secret fields4216 custom_issue_tracker4217 secret fields4218 uses type: 'password' for all secret fields4219 defines non-empty titles and help texts for all secret fields4220 datadog4221 secret fields4222 uses type: 'password' for all secret fields4223 defines non-empty titles and help texts for all secret fields4224 discord4225 secret fields4226 uses type: 'password' for all secret fields4227 defines non-empty titles and help texts for all secret fields4228 drone_ci4229 secret fields4230 uses type: 'password' for all secret fields4231 defines non-empty titles and help texts for all secret fields4232 emails_on_push4233 secret fields4234 uses type: 'password' for all secret fields4235 defines non-empty titles and help texts for all secret fields4236 ewm4237 secret fields4238 uses type: 'password' for all secret fields4239 defines non-empty titles and help texts for all secret fields4240 external_wiki4241 secret fields4242 uses type: 'password' for all secret fields4243 defines non-empty titles and help texts for all secret fields4244 github4245 secret fields4246 uses type: 'password' for all secret fields4247 defines non-empty titles and help texts for all secret fields4248 gitlab_slack_application4249 secret fields4250 uses type: 'password' for all secret fields4251 defines non-empty titles and help texts for all secret fields4252 google_play4253 secret fields4254 uses type: 'password' for all secret fields4255 defines non-empty titles and help texts for all secret fields4256 hangouts_chat4257 secret fields4258 uses type: 'password' for all secret fields4259 defines non-empty titles and help texts for all secret fields4260 harbor4261 secret fields4262 uses type: 'password' for all secret fields4263 defines non-empty titles and help texts for all secret fields4264 irker4265 secret fields4266 uses type: 'password' for all secret fields4267 defines non-empty titles and help texts for all secret fields4268 jenkins4269 secret fields4270 uses type: 'password' for all secret fields4271 defines non-empty titles and help texts for all secret fields4272 jira4273 secret fields4274 uses type: 'password' for all secret fields4275 defines non-empty titles and help texts for all secret fields4276 mattermost4277 secret fields4278 uses type: 'password' for all secret fields4279 defines non-empty titles and help texts for all secret fields4280 mattermost_slash_commands4281 secret fields4282 uses type: 'password' for all secret fields4283 defines non-empty titles and help texts for all secret fields4284 microsoft_teams4285 secret fields4286 uses type: 'password' for all secret fields4287 defines non-empty titles and help texts for all secret fields4288 mock_ci4289 secret fields4290 uses type: 'password' for all secret fields4291 defines non-empty titles and help texts for all secret fields4292 mock_monitoring4293 secret fields4294 uses type: 'password' for all secret fields4295 defines non-empty titles and help texts for all secret fields4296 packagist4297 secret fields4298 uses type: 'password' for all secret fields4299 defines non-empty titles and help texts for all secret fields4300 pipelines_email4301 secret fields4302 uses type: 'password' for all secret fields4303 defines non-empty titles and help texts for all secret fields4304 pivotaltracker4305 secret fields4306 uses type: 'password' for all secret fields4307 defines non-empty titles and help texts for all secret fields4308 prometheus4309 secret fields4310 uses type: 'password' for all secret fields4311 defines non-empty titles and help texts for all secret fields4312 pumble4313 secret fields4314 uses type: 'password' for all secret fields4315 defines non-empty titles and help texts for all secret fields4316 pushover4317 secret fields4318 uses type: 'password' for all secret fields4319 defines non-empty titles and help texts for all secret fields4320 redmine4321 secret fields4322 uses type: 'password' for all secret fields4323 defines non-empty titles and help texts for all secret fields4324 shimo4325 secret fields4326 uses type: 'password' for all secret fields4327 defines non-empty titles and help texts for all secret fields4328 slack4329 secret fields4330 uses type: 'password' for all secret fields4331 defines non-empty titles and help texts for all secret fields4332 slack_slash_commands4333 secret fields4334 uses type: 'password' for all secret fields4335 defines non-empty titles and help texts for all secret fields4336 squash_tm4337 secret fields4338 uses type: 'password' for all secret fields4339 defines non-empty titles and help texts for all secret fields4340 teamcity4341 secret fields4342 uses type: 'password' for all secret fields4343 defines non-empty titles and help texts for all secret fields4344 unify_circuit4345 secret fields4346 uses type: 'password' for all secret fields4347 defines non-empty titles and help texts for all secret fields4348 webex_teams4349 secret fields4350 uses type: 'password' for all secret fields4351 defines non-empty titles and help texts for all secret fields4352 youtrack4353 secret fields4354 uses type: 'password' for all secret fields4355 defines non-empty titles and help texts for all secret fields4356 zentao4357 secret fields4358 uses type: 'password' for all secret fields4359 defines non-empty titles and help texts for all secret fields4360AlertManagement::Alert4361 associations4362 is expected to belong to project required: false4363 is expected to belong to issue optional: true4364 is expected to belong to prometheus_alert optional: true4365 is expected to belong to environment optional: true4366 is expected to have many assignees through alert_assignees4367 is expected to have many notes inverse_of => noteable4368 is expected to have many ordered_notes class_name => Note inverse_of => noteable4369 is expected to have many user_mentions class_name => AlertManagement::AlertUserMention inverse_of => alert4370 validations4371 is expected to validate that :title cannot be empty/falsy4372 is expected to validate that :events cannot be empty/falsy4373 is expected to validate that :severity cannot be empty/falsy4374 is expected to validate that :status cannot be empty/falsy4375 is expected to validate that :started_at cannot be empty/falsy4376 is expected to validate that the length of :title is at most 2004377 is expected to validate that the length of :description is at most 10004378 is expected to validate that the length of :service is at most 1004379 is expected to validate that the length of :monitoring_tool is at most 1004380 fingerprint4381 adding an alert with the same fingerprint4382 same project, various states4383 existing_status_event: :resolve, new_status: :triggered, valid: true4384 is expected to be valid4385 existing_status_event: :resolve, new_status: :acknowledged, valid: true4386 is expected to be valid4387 existing_status_event: :resolve, new_status: :ignored, valid: true4388 is expected to be valid4389 existing_status_event: :resolve, new_status: :resolved, valid: true4390 is expected to be valid4391 existing_status_event: :trigger, new_status: :triggered, valid: false4392 is expected to be invalid4393 existing_status_event: :trigger, new_status: :acknowledged, valid: false4394 is expected to be invalid4395 existing_status_event: :trigger, new_status: :ignored, valid: false4396 is expected to be invalid4397 existing_status_event: :trigger, new_status: :resolved, valid: true4398 is expected to be valid4399 existing_status_event: :acknowledge, new_status: :triggered, valid: false4400 is expected to be invalid4401 existing_status_event: :acknowledge, new_status: :acknowledged, valid: false4402 is expected to be invalid4403 existing_status_event: :acknowledge, new_status: :ignored, valid: false4404 is expected to be invalid4405 existing_status_event: :acknowledge, new_status: :resolved, valid: true4406 is expected to be valid4407 existing_status_event: :ignore, new_status: :triggered, valid: false4408 is expected to be invalid4409 existing_status_event: :ignore, new_status: :acknowledged, valid: false4410 is expected to be invalid4411 existing_status_event: :ignore, new_status: :ignored, valid: false4412 is expected to be invalid4413 existing_status_event: :ignore, new_status: :resolved, valid: true4414 is expected to be valid4415 different project4416 is expected to be valid4417 hosts4418 over 255 total chars4419 is expected not to be valid4420 under 255 chars4421 is expected to be valid4422 nested array4423 is expected not to be valid4424 enums4425 is expected to define :severity as an enum backed by an integer with values ‹{critical: 0, high: 1, medium: 2, low: 3, info: 4, unknown: 5}›4426 scopes4427 .for_iid4428 is expected to contain exactly #<AlertManagement::Alert id:1 namespace241/project-519^alert#1>4429 .for_fingerprint4430 is expected to contain exactly #<AlertManagement::Alert id:1 namespace241/project-519^alert#1>4431 .for_environment4432 is expected to contain exactly #<AlertManagement::Alert id:1 namespace241/project-519^alert#1>4433 .for_assignee_username4434 when matching assignee_username4435 is expected to contain exactly #<AlertManagement::Alert id:1 namespace241/project-519^alert#1>4436 when unknown assignee_username4437 is expected to be empty4438 with empty assignee_username4439 is expected to be empty4440 .order_severity_with_open_prometheus_alert4441 is expected to eq [#<AlertManagement::Alert id:8 namespace244/project-522^alert#2>, #<AlertManagement::Alert id:9 namespace244/project-522^alert#3>]4442 .counts_by_project_id4443 is expected to eq {538=>2, 539=>2}4444 .not_resolved4445 is expected to contain exactly #<AlertManagement::Alert id:2 namespace241/project-519^alert#2>, #<AlertManagement::Alert id:1 namespace241/project-519^alert#1>, and #<AlertManagement::Alert id:4 namespace242/project-520^alert#2>4446 behaves like a model including Escalatable4447 validations4448 is expected to validate that :status cannot be empty/falsy4449 when status is triggered4450 when resolved_at is blank4451 is expected to be valid4452 when resolved_at is present4453 is expected to be invalid4454 when status is acknowledged4455 when resolved_at is blank4456 is expected to be valid4457 when resolved_at is present4458 is expected to be invalid4459 when status is resolved4460 when resolved_at is blank4461 is expected to be invalid4462 when resolved_at is present4463 is expected to be valid4464 when status is ignored4465 when resolved_at is blank4466 is expected to be valid4467 when resolved_at is present4468 is expected to be invalid4469 scopes4470 .order_status4471 descending4472 is expected to eq [#<AlertManagement::Alert id:10 namespace245/project-523^alert#1>, #<AlertManagement::Alert id:11 nam...namespace247/project-525^alert#1>, #<AlertManagement::Alert id:13 namespace248/project-526^alert#1>]4473 ascending4474 is expected to eq [#<AlertManagement::Alert id:13 namespace248/project-526^alert#1>, #<AlertManagement::Alert id:12 nam...namespace246/project-524^alert#1>, #<AlertManagement::Alert id:10 namespace245/project-523^alert#1>]4475 .open4476 is expected to contain exactly #<AlertManagement::Alert id:11 namespace246/project-524^alert#1> and #<AlertManagement::Alert id:10 namespace245/project-523^alert#1>4477 .status_value4478 status: :triggered, status_value: 04479 returns status value by its name4480 status: :acknowledged, status_value: 14481 returns status value by its name4482 status: :resolved, status_value: 24483 returns status value by its name4484 status: :ignored, status_value: 34485 returns status value by its name4486 status: :unknown, status_value: nil4487 returns status value by its name4488 .status_name4489 raw_status: 0, status: :triggered4490 returns status name by its values4491 raw_status: 1, status: :acknowledged4492 returns status name by its values4493 raw_status: 2, status: :resolved4494 returns status name by its values4495 raw_status: 3, status: :ignored4496 returns status name by its values4497 raw_status: -1, status: nil4498 returns status name by its values4499 .open_status?4500 status: :triggered, is_open_status: true4501 returns true when the status is open status4502 status: :acknowledged, is_open_status: true4503 returns true when the status is open status4504 status: :resolved, is_open_status: false4505 returns true when the status is open status4506 status: :ignored, is_open_status: false4507 returns true when the status is open status4508 status: nil, is_open_status: false4509 returns true when the status is open status4510 #trigger4511 when escalatable is in triggered state4512 does not change the escalatable status4513 when escalatable is not in triggered state4514 changes the escalatable status to triggered4515 resets resolved at4516 #acknowledge4517 changes the escalatable status to acknowledged4518 resets ended at4519 #resolve4520 when escalatable is already resolved4521 does not change the escalatable status4522 when escalatable is not resolved4523 changes escalatable status to "resolved"4524 #ignore4525 changes the escalatable status to ignored4526 resets ended at4527 #status_event_for4528 for_status: :triggered, event: :trigger4529 returns event by status name4530 for_status: "triggered", event: :trigger4531 returns event by status name4532 for_status: :acknowledged, event: :acknowledge4533 returns event by status name4534 for_status: "acknowledged", event: :acknowledge4535 returns event by status name4536 for_status: :resolved, event: :resolve4537 returns event by status name4538 for_status: "resolved", event: :resolve4539 returns event by status name4540 for_status: :ignored, event: :ignore4541 returns event by status name4542 for_status: "ignored", event: :ignore4543 returns event by status name4544 for_status: :unknown, event: nil4545 returns event by status name4546 for_status: nil, event: nil4547 returns event by status name4548 for_status: "", event: nil4549 returns event by status name4550 for_status: 1, event: nil4551 returns event by status name4552 #open?4553 returns true when the status is open status4554 .counts_by_status4555 is expected to eq {:acknowledged=>1, :ignored=>1, :resolved=>1, :triggered=>1}4556 .find_unresolved_alert4557 is expected to eq #<AlertManagement::Alert id:16 namespace241/project-519^alert#4>4558 .last_prometheus_alert_by_project_id4559 returns the latest alert for each project4560 .search4561 does not contain search string4562 is expected to be empty4563 title includes query4564 is expected to contain exactly #<AlertManagement::Alert id:1 namespace241/project-519^alert#1>4565 description includes query4566 is expected to contain exactly #<AlertManagement::Alert id:1 namespace241/project-519^alert#1>4567 service includes query4568 is expected to contain exactly #<AlertManagement::Alert id:1 namespace241/project-519^alert#1>4569 monitoring tool includes query4570 is expected to contain exactly #<AlertManagement::Alert id:1 namespace241/project-519^alert#1>4571 .reference_pattern4572 is expected to match "gitlab-org/gitlab^alert#123"4573 .link_reference_pattern4574 is expected to match "http://localhost/namespace241/project-519/-/alert_management/1/details"4575 is expected not to match "http://localhost/gitlab-org/gitlab/alert_management/123"4576 is expected not to match "http://localhost/gitlab-org/gitlab/issues/123"4577 is expected not to match "gitlab-org/gitlab/-/alert_management/123"4578 .reference_valid?4579 ref: "123456", result: true4580 is expected to eq true4581 ref: "1", result: true4582 is expected to eq true4583 ref: "-1", result: false4584 is expected to eq false4585 ref: nil, result: false4586 is expected to eq false4587 ref: "123456891012345678901234567890", result: false4588 is expected to eq false4589 #to_reference4590 is expected to eq "^alert#1"4591 #register_new_event!4592 increments the events count by 14593 #resolved_at4594 is expected to eq 2023-06-02 06:36:31.763513000 +00004595 #resolved_at=4596 sets ended_at4597Namespace::RootStorageStatistics4598 is expected to belong to namespace required: false4599 is expected to have one route through namespace4600 is expected to delegate #all_projects to the #namespace object4601 scopes4602 .for_namespace_ids4603 returns only requested namespaces4604 #recalculate!4605 with project statistics4606 behaves like project data refresh4607 aggregates project statistics4608 aggregates container_repositories_size and storage_size4609 works when there are no projects4610 behaves like does not include personal snippets4611 is expected not to receive from_personal_snippets(*(any args)) 0 times4612 with subgroups4613 behaves like project data refresh4614 aggregates project statistics4615 aggregates container_repositories_size and storage_size4616 works when there are no projects4617 behaves like does not include personal snippets4618 is expected not to receive from_personal_snippets(*(any args)) 0 times4619 with a group namespace4620 aggregates namespace statistics4621 works when there are no namespace statistics4622 with a personal namespace4623 does not aggregate namespace statistics4624 behaves like project data refresh4625 aggregates project statistics4626 aggregates container_repositories_size and storage_size4627 works when there are no projects4628 when user has personal snippets4629 aggregates personal and project snippets size4630 when personal snippets do not have statistics4631 does not raise any error4632 with forks of projects4633 aggregates total private forks size4634 aggregates total public forks size4635 aggregates total internal forks size4636 aggregates multiple forks4637 aggregates only forks in the namespace4638 aggregates forks in subgroups4639 aggregates forks along with total storage size4640 sets the public forks storage size back to zero4641 sets the private forks storage size back to zero4642 sets the internal forks storage size back to zero4643Discussion4644 .lazy_find4645 batches requests4646 .build4647 returns a discussion of the right type4648 .build_collection4649 returns an array of discussions of the right type4650 authorization4651 delegates to the first note4652 #cache_key4653 returns the cache key4654 when discussion is resolved4655 returns the cache key with resolved at4656 #to_global_id4657 with a single DiffNote discussion4658 returns GID on Discussion class4659 with multiple DiffNotes discussion4660 returns GID on Discussion class4661 with discussions on issue4662 with a single Note4663 returns GID on Discussion class4664 with multiple Notes4665 returns GID on Discussion class4666 with system notes4667 returns GID on Discussion class4668TrendingProject4669 .refresh!4670 populates the trending projects table4671 removes existing rows before populating the table4672 stores the project IDs for every trending project4673 does not store projects that fall out of the trending time range4674 stores only public projects4675Integrations::HangoutsChat4676 behaves like chat integration4677 Associations4678 is expected to belong to project required: false4679 Validations4680 when integration is active4681 is expected to validate that :webhook cannot be empty/falsy4682 behaves like issue tracker integration URL attribute4683 is expected to allow :webhook to be ‹"https://example.com"›4684 is expected not to allow :webhook to be ‹"example.com"›4685 is expected not to allow :webhook to be ‹"ftp://example.com"›4686 is expected not to allow :webhook to be ‹"herp-and-derp"›4687 when integration is inactive4688 is expected not to validate that :webhook cannot be empty/falsy4689 .supported_events4690 does not support deployment_events4691 #execute4692 with push events4693 behaves like triggered Hangouts Chat integration4694 calls Hangouts Chat API4695 with default branch4696 when only default branch are to be notified4697 behaves like triggered Hangouts Chat integration4698 calls Hangouts Chat API4699 when only protected branches are to be notified4700 behaves like untriggered Hangouts Chat integration4701 does not call Hangouts Chat API4702 when default and protected branches are to be notified4703 behaves like triggered Hangouts Chat integration4704 calls Hangouts Chat API4705 when all branches are to be notified4706 behaves like triggered Hangouts Chat integration4707 calls Hangouts Chat API4708 with protected branch4709 when only default branch are to be notified4710 behaves like untriggered Hangouts Chat integration4711 does not call Hangouts Chat API4712 when only protected branches are to be notified4713 behaves like triggered Hangouts Chat integration4714 calls Hangouts Chat API4715 when default and protected branches are to be notified4716 behaves like triggered Hangouts Chat integration4717 calls Hangouts Chat API4718 when all branches are to be notified4719 behaves like triggered Hangouts Chat integration4720 calls Hangouts Chat API4721 with neither default nor protected branch4722 when only default branch are to be notified4723 behaves like untriggered Hangouts Chat integration4724 does not call Hangouts Chat API4725 when only protected branches are to be notified4726 behaves like untriggered Hangouts Chat integration4727 does not call Hangouts Chat API4728 when default and protected branches are to be notified4729 behaves like untriggered Hangouts Chat integration4730 does not call Hangouts Chat API4731 when all branches are to be notified4732 behaves like triggered Hangouts Chat integration4733 calls Hangouts Chat API4734 with issue events4735 behaves like triggered Hangouts Chat integration4736 calls Hangouts Chat API4737 with merge events4738 behaves like triggered Hangouts Chat integration4739 calls Hangouts Chat API4740 with wiki page events4741 behaves like triggered Hangouts Chat integration4742 calls Hangouts Chat API4743 with note events4744 with commit comment4745 behaves like triggered Hangouts Chat integration4746 calls Hangouts Chat API4747 with merge request comment4748 behaves like triggered Hangouts Chat integration4749 calls Hangouts Chat API4750 with issue comment4751 behaves like triggered Hangouts Chat integration4752 calls Hangouts Chat API4753 with snippet comment4754 behaves like triggered Hangouts Chat integration4755 calls Hangouts Chat API4756 with pipeline events4757 with failed pipeline4758 behaves like triggered Hangouts Chat integration4759 calls Hangouts Chat API4760 with succeeded pipeline4761 with default notify_only_broken_pipelines4762 does not call Hangouts Chat API4763 when notify_only_broken_pipelines is false4764 behaves like triggered Hangouts Chat integration4765 calls Hangouts Chat API4766 with default branch4767 when only default branch are to be notified4768 behaves like triggered Hangouts Chat integration4769 calls Hangouts Chat API4770 when only protected branches are to be notified4771 behaves like untriggered Hangouts Chat integration4772 does not call Hangouts Chat API4773 when default and protected branches are to be notified4774 behaves like triggered Hangouts Chat integration4775 calls Hangouts Chat API4776 when all branches are to be notified4777 behaves like triggered Hangouts Chat integration4778 calls Hangouts Chat API4779 with protected branch4780 when only default branch are to be notified4781 behaves like untriggered Hangouts Chat integration4782 does not call Hangouts Chat API4783 when only protected branches are to be notified4784 behaves like triggered Hangouts Chat integration4785 calls Hangouts Chat API4786 when default and protected branches are to be notified4787 behaves like triggered Hangouts Chat integration4788 calls Hangouts Chat API4789 when all branches are to be notified4790 behaves like triggered Hangouts Chat integration4791 calls Hangouts Chat API4792 with neither default nor protected branch4793 when only default branch are to be notified4794 behaves like untriggered Hangouts Chat integration4795 does not call Hangouts Chat API4796 when only protected branches are to be notified4797 behaves like untriggered Hangouts Chat integration4798 does not call Hangouts Chat API4799 when default and protected branches are to be notified4800 behaves like untriggered Hangouts Chat integration4801 does not call Hangouts Chat API4802 when all branches are to be notified4803 behaves like triggered Hangouts Chat integration4804 calls Hangouts Chat API4805 deployment events4806 behaves like untriggered Hangouts Chat integration4807 does not call Hangouts Chat API4808 #execute4809 with push events4810 adds thread key for push events4811 with issue events4812 adds thread key for issue events4813 with merge events4814 adds thread key for merge events4815 with wiki page events4816 adds thread key for wiki page events4817 with pipeline events4818 adds thread key for pipeline events4819 Note events4820 when commit comment event executed4821 adds thread key4822 when merge request comment event executed4823 adds thread key4824 when issue comment event executed4825 adds thread key4826 when snippet comment event executed4827 adds thread key4828Gitlab::UsageDataCounters::MergeRequestActivityUniqueCounter4829 .track_mr_diffs_action4830 behaves like a tracked merge request unique event4831 is expected to change result by 14832 .track_mr_diffs_single_file_action4833 behaves like a tracked merge request unique event4834 is expected to change result by 14835 behaves like a tracked merge request unique event4836 is expected to change result by 14837 .track_create_mr_action4838 logs to Snowplow4839 behaves like a tracked merge request unique event4840 is expected to change result by 14841 behaves like a tracked merge request unique event4842 is expected to change result by 14843 .track_close_mr_action4844 behaves like a tracked merge request unique event4845 is expected to change result by 14846 .track_merge_mr_action4847 behaves like a tracked merge request unique event4848 is expected to change result by 14849 .track_reopen_mr_action4850 behaves like a tracked merge request unique event4851 is expected to change result by 14852 .track_approve_mr_action4853 behaves like a tracked merge request unique event4854 is expected to change result by 14855 behaves like Snowplow event tracking with RedisHLL context4856 behaves like Snowplow event tracking4857 is emitted4858 .track_unapprove_mr_action4859 behaves like a tracked merge request unique event4860 is expected to change result by 14861 .track_resolve_thread_action4862 behaves like a tracked merge request unique event4863 is expected to change result by 14864 .track_unresolve_thread_action4865 behaves like a tracked merge request unique event4866 is expected to change result by 14867 .track_title_edit_action4868 behaves like a tracked merge request unique event4869 is expected to change result by 14870 .track_description_edit_action4871 behaves like a tracked merge request unique event4872 is expected to change result by 14873 .track_create_comment_action4874 behaves like a tracked merge request unique event4875 is expected to change result by 14876 when the note is multiline diff note4877 behaves like a tracked merge request unique event4878 is expected to change result by 14879 .track_edit_comment_action4880 behaves like a tracked merge request unique event4881 is expected to change result by 14882 when the note is multiline diff note4883 behaves like a tracked merge request unique event4884 is expected to change result by 14885 .track_remove_comment_action4886 behaves like a tracked merge request unique event4887 is expected to change result by 14888 when the note is multiline diff note4889 behaves like a tracked merge request unique event4890 is expected to change result by 14891 .track_create_review_note_action4892 behaves like a tracked merge request unique event4893 is expected to change result by 14894 .track_publish_review_action4895 behaves like a tracked merge request unique event4896 is expected to change result by 14897 .track_add_suggestion_action4898 behaves like a tracked merge request unique event4899 is expected to change result by 14900 behaves like a tracked merge request unique event4901 is expected to change result by 14902 .track_apply_suggestion_action4903 behaves like a tracked merge request unique event4904 is expected to change result by 14905 behaves like a tracked merge request unique event4906 is expected to change result by 14907 .track_users_assigned_to_mr4908 behaves like a tracked merge request unique event4909 is expected to change result by 14910 .track_marked_as_draft_action4911 behaves like a tracked merge request unique event4912 is expected to change result by 14913 .track_unmarked_as_draft_action4914 behaves like a tracked merge request unique event4915 is expected to change result by 14916 .track_task_item_status_changed4917 behaves like a tracked merge request unique event4918 is expected to change result by 14919 .track_users_review_requested4920 behaves like a tracked merge request unique event4921 is expected to change result by 14922 .track_approval_rule_added_action4923 behaves like a tracked merge request unique event4924 is expected to change result by 14925 .track_approval_rule_edited_action4926 behaves like a tracked merge request unique event4927 is expected to change result by 14928 .track_approval_rule_deleted_action4929 behaves like a tracked merge request unique event4930 is expected to change result by 14931 .track_mr_create_from_issue4932 behaves like a tracked merge request unique event4933 is expected to change result by 14934 .track_discussion_locked_action4935 behaves like a tracked merge request unique event4936 is expected to change result by 14937 .track_discussion_unlocked_action4938 behaves like a tracked merge request unique event4939 is expected to change result by 14940 .track_time_estimate_changed_action4941 behaves like a tracked merge request unique event4942 is expected to change result by 14943 .track_time_spent_changed_action4944 behaves like a tracked merge request unique event4945 is expected to change result by 14946 .track_assignees_changed_action4947 behaves like a tracked merge request unique event4948 is expected to change result by 14949 .track_reviewers_changed_action4950 behaves like a tracked merge request unique event4951 is expected to change result by 14952 .track_mr_including_ci_config4953 when merge request includes a ci config change4954 behaves like a tracked merge request unique event4955 is expected to change result by 14956 when merge request does not include any ci config change4957 behaves like not tracked merge request unique event4958 is expected not to receive track_event(*(any args)) 0 times4959 .track_milestone_changed_action4960 behaves like a tracked merge request unique event4961 is expected to change result by 14962 .track_labels_changed_action4963 behaves like a tracked merge request unique event4964 is expected to change result by 14965 .track_loading_conflict_ui_action4966 behaves like a tracked merge request unique event4967 is expected to change result by 14968 .track_resolve_conflict_action4969 behaves like a tracked merge request unique event4970 is expected to change result by 14971 .track_resolve_thread_in_issue_action4972 behaves like a tracked merge request unique event4973 is expected to change result by 14974PipelineSerializer4975 # order random4976 #represent_status4977 when represents only status4978 serializes only status4979 #represent4980 when used without pagination4981 created a not paginated serializer4982 when a single object is being serialized4983 serializers the pipeline object4984 when multiple objects are being serialized4985 serializers the array of pipelines4986 when used with pagination4987 created a paginated serializer4988 when resource is not paginatable4989 when a single pipeline object is being serialized4990 raises error4991 when resource is paginatable relation4992 when a single pipeline object is present in relation4993 serializes pipeline relation4994 when a multiple pipeline objects are being serialized4995 serializes appropriate number of objects4996 appends relevant headers4997 when there are pipelines for merge requests4998 includes merge requests information4999 preloads related merge requests5000 number of queries when preloaded5001 with the same ref5002 verifies number of queries5003 with different refs5004 verifies number of queries5005 with triggered pipelines5006 verifies number of queries5007 with build environments5008 executes one query to fetch all related environments5009 with scheduled and manual builds5010 sends at most one metadata query for each type of build5011Gitlab::Database::WithLockRetries5012 #run5013 requires block5014 when DISABLE_LOCK_RETRIES is set5015 executes the passed block without retrying5016 when lock retry is enabled5017 lock_fiber5018 acquires lock successfully5019 after 3 iterations5020 behaves like retriable exclusive lock on `projects`5021 succeeds executing the given block5022 setting the idle transaction timeout5023 when there is no outer transaction: disable_ddl_transaction! is set in the migration5024 does not disable the idle transaction timeout5025 when there is outer transaction: disable_ddl_transaction! is not set in the migration5026 disables the idle transaction timeout so the code can sleep and retry5027 after the retries are exhausted5028 when there is no outer transaction: disable_ddl_transaction! is set in the migration5029 does not disable the lock_timeout5030 when there is outer transaction: disable_ddl_transaction! is not set in the migration5031 disables the lock_timeout5032 after the retries, without setting lock_timeout5033 behaves like retriable exclusive lock on `projects`5034 succeeds executing the given block5035 after the retries, when requested to raise an error5036 raises an error instead of waiting indefinitely for the lock5037 when statement timeout is reached5038 raises QueryCanceled error5039 restore local database variables5040 is expected not to change `connection.execute("SHOW lock_timeout").to_a`5041 is expected not to change `connection.execute("SHOW idle_in_transaction_session_timeout").to_a`5042 casting durations correctly5043 executes `SET LOCAL lock_timeout` using the configured timeout value in milliseconds5044 calls `sleep` after the first iteration fails, using the configured sleep time5045 Stop using subtransactions - allow_savepoints: false5046 prevents running inside already open transaction5047 does not raise the error if not inside open transaction5048TodoPolicy5049 own_todo5050 user: user1, todo: todo1, allowed: true5051 behaves like grants the expected permissions5052 is expected to be allowed :read_todo5053 user: user2, todo: todo2, allowed: true5054 behaves like grants the expected permissions5055 is expected to be allowed :read_todo5056 user: user1, todo: todo2, allowed: false5057 behaves like grants the expected permissions5058 is expected to be disallowed :read_todo5059 user: user1, todo: todo3, allowed: false5060 behaves like grants the expected permissions5061 is expected to be disallowed :read_todo5062 user: user2, todo: todo1, allowed: false5063 behaves like grants the expected permissions5064 is expected to be disallowed :read_todo5065 user: user2, todo: todo4, allowed: false5066 behaves like grants the expected permissions5067 is expected to be disallowed :read_todo5068 user: user3, todo: todo1, allowed: false5069 behaves like grants the expected permissions5070 is expected to be disallowed :read_todo5071 user: user3, todo: todo2, allowed: false5072 behaves like grants the expected permissions5073 is expected to be disallowed :read_todo5074 user: user3, todo: todo3, allowed: false5075 behaves like grants the expected permissions5076 is expected to be disallowed :read_todo5077 user: user3, todo: todo4, allowed: false5078 behaves like grants the expected permissions5079 is expected to be disallowed :read_todo5080 user: user2, todo: todo3, allowed: false5081 behaves like grants the expected permissions5082 is expected to be disallowed :read_todo5083 read_note5084 user: reporter, todo: no_note_todo1, allowed: true5085 behaves like grants the expected permissions5086 is expected to be allowed :read_todo5087 behaves like grants the expected permissions5088 is expected to be allowed :update_todo5089 user: reporter, todo: note_todo1, allowed: true5090 behaves like grants the expected permissions5091 is expected to be allowed :read_todo5092 behaves like grants the expected permissions5093 is expected to be allowed :update_todo5094 user: reporter, todo: internal_note_todo1, allowed: true5095 behaves like grants the expected permissions5096 is expected to be allowed :read_todo5097 behaves like grants the expected permissions5098 is expected to be allowed :update_todo5099 user: guest, todo: no_note_todo2, allowed: true5100 behaves like grants the expected permissions5101 is expected to be allowed :read_todo5102 behaves like grants the expected permissions5103 is expected to be allowed :update_todo5104 user: guest, todo: note_todo2, allowed: true5105 behaves like grants the expected permissions5106 is expected to be allowed :read_todo5107 behaves like grants the expected permissions5108 is expected to be allowed :update_todo5109 user: guest, todo: internal_note_todo2, allowed: false5110 behaves like grants the expected permissions5111 is expected to be disallowed :read_todo5112 behaves like grants the expected permissions5113 is expected to be disallowed :update_todo5114 user: non_member, todo: no_note_todo3, allowed: false5115 behaves like grants the expected permissions5116 is expected to be disallowed :read_todo5117 behaves like grants the expected permissions5118 is expected to be disallowed :update_todo5119 user: non_member, todo: note_todo3, allowed: false5120 behaves like grants the expected permissions5121 is expected to be disallowed :read_todo5122 behaves like grants the expected permissions5123 is expected to be disallowed :update_todo5124 user: non_member, todo: internal_note_todo3, allowed: false5125 behaves like grants the expected permissions5126 is expected to be disallowed :read_todo5127 behaves like grants the expected permissions5128 is expected to be disallowed :update_todo5129Ci::BuildRunnerSession5130 is expected to belong to build required: false5131 is expected to validate that :build cannot be empty/falsy5132 is expected to validate that :url cannot be empty/falsy, producing a custom validation error on failure5133 url validation of local web hook address5134 with allow_local_requests_from_web_hooks_and_services? stubbed5135 as returning true5136 creates a new session5137 as returning false5138 does not create a new session5139 nested attribute assignment5140 creates a new session5141 updates session with new attributes5142 #terminal_specification5143 returns terminal.gitlab.com protocol5144 returns a wss url5145 returns empty hash if no url5146 returns url with appended query if url has query5147 when url is present5148 returns ca_pem nil if empty certificate5149 adds Authorization header if authorization is present5150 #service_specification5151 returns service proxy url5152 returns default service proxy websocket subprotocol5153 returns empty hash if no url5154 returns url with appended query if url has query5155 when port is not present5156 uses the default port name5157 when the service is not present5158 uses the service name "build" as default5159 when url is present5160 returns ca_pem nil if empty certificate5161 adds Authorization header if authorization is present5162 when subprotocol is present5163 returns the new subprotocol5164 partitioning5165 assigns the same partition id as the one that build has (PENDING: Skipping partitioning tests until `ci_builds` is partitioned)5166Deployments::CreateForBuildService5167 #execute5168 with a deployment job5169 creates a deployment record5170 when creation failure occures5171 trackes the exception5172 when the corresponding environment does not exist5173 does not create a deployment record5174 with a teardown job5175 does not create a deployment record5176 with a normal job5177 does not create a deployment record5178 with a bridge5179 does not create a deployment record5180 when build has environment attribute5181 returns a deployment object with environment5182 when environment has deployment platform5183 sets the cluster and deployment_cluster5184 when a custom namespace is given5185 when cluster is managed5186 does not set the custom namespace5187 when cluster is not managed5188 sets the custom namespace5189 when build already has deployment5190 returns the persisted deployment5191 when build does not start environment5192 action: "stop"5193 returns nothing5194 action: "prepare"5195 returns nothing5196 action: "verify"5197 returns nothing5198 action: "access"5199 returns nothing5200 when build does not have environment attribute5201 returns nothing5202Timelog5203 is expected to belong to project required: false5204 is expected to belong to issue required: false5205 is expected to belong to merge_request required: false5206 is expected to be valid5207 is expected to validate that :time_spent cannot be empty/falsy5208 is expected to validate that :user cannot be empty/falsy5209 is expected to validate that the length of :summary is at most 2555210 is expected not to be nil5211 validation5212 is invalid if issue_id and merge_request_id are missing5213 is invalid if issue_id and merge_request_id are set5214 is valid if only issue_id is set5215 is valid if only merge_request_id is set5216 when importing5217 is valid if issue_id and merge_request_id are missing5218 scopes5219 .in_group5220 return timelogs created for group issues and merge requests5221 .for_user5222 return timelogs created by user5223 .in_project5224 returns timelogs created for project issues and merge requests5225 .at_or_after5226 returns timelogs at the time limit5227 returns timelogs after given time5228 .at_or_before5229 returns timelogs at the time limit5230 returns timelogs before given time5231 hooks5232 .set_project5233 populates project with issuable project5234 sorting5235 .sort_by_field5236 sorts timelogs by time spent in ascending order5237 sorts timelogs by time spent in descending order5238 sorts timelogs by spent at in ascending order5239 sorts timelogs by spent at in descending order5240Banzai::ReferenceParser::CommitRangeParser5241 #nodes_visible_to_user5242 when the link has a data-project attribute5243 includes the link if can_read_reference? returns true5244 excludes the link if can_read_reference? returns false5245 behaves like referenced feature visibility5246 when feature is disabled5247 does not create reference5248 when feature is enabled only for team members5249 does not create reference for non member5250 creates reference for member5251 when feature is enabled5252 creates reference5253 when the link does not have a data-project attribute5254 returns the nodes5255 #referenced_by5256 when the link has a data-project attribute5257 when the link as a data-commit-range attribute5258 returns an Array of commit ranges5259 returns an empty Array when the commit range could not be found5260 when the link does not have a data-commit-range attribute5261 returns an empty Array5262 when the link does not have a data-project attribute5263 returns an empty Array5264 #commit_range_ids_per_project5265 returns a Hash containing range IDs per project5266 does not add a project when the data-commit-range attribute is empty5267 #find_ranges5268 returns an Array of range objects5269 skips ranges that could not be found5270 #find_object5271 when the range has valid commits5272 returns the commit range5273 when the range does not have any valid commits5274 returns nil5275 group context5276 returns nil5277 when checking commits ranges on another projects5278 behaves like no project N+1 queries5279 avoids N+1 queries in #nodes_visible_to_user5280Gitlab::Email::Handler::CreateNoteOnIssuableHandler5281 behaves like reply processing shared examples5282 when the user could not be found5283 raises a UserNotFoundError5284 when the user is not authorized to the project5285 raises a ProjectNotFound5286 behaves like note handler shared examples5287 when the noteable could not be found5288 raises a NoteableNotFoundError5289 when the note could not be saved5290 raises an InvalidNoteError5291 because the note was update commands only5292 and current user cannot update noteable5293 does not raise an error5294 and current user can update noteable5295 does not raise an error5296 when the note contains quick actions5297 and current user cannot update the noteable5298 only executes the commands that the user can perform5299 and current user can update noteable5300 posts a note and updates the noteable5301 when the reply is blank5302 allows email to only have quoted text5303 when discussion is locked5304 behaves like checks permissions on noteable examples5305 when user has access5306 creates a comment5307 when user does not have access5308 raises UserNotAuthorizedError5309 when everything is fine5310 adds all attachments5311 when the service desk5312 is enabled5313 when issues are enabled for everyone5314 creates a comment5315 when quick actions are present5316 when author is a normal user5317 extracted the quick actions5318 when issues are protected members only5319 creates a comment5320 when issues are disabled5321 does not create a comment5322 when the recipient address does not include a mail key5323 raises an UnknownIncomingEmail5324 when issue is confidential5325 behaves like checks permissions on noteable examples5326 when user has access5327 creates a comment5328 when user does not have access5329 raises UserNotAuthorizedError5330Gitlab::Redis::Queues5331 .config_file_name5332 when there is no config file anywhere5333 is expected to be nil5334 .store5335 with old format5336 behaves like redis store5337 instantiates Redis::Store5338 with the namespace5339 uses specified namespace5340 with new format5341 behaves like redis store5342 instantiates Redis::Store5343 with the namespace5344 uses specified namespace5345 .params5346 withstands mutation5347 when url contains unix socket reference5348 with old format5349 returns path key instead5350 with new format5351 returns path key instead5352 when url is host based5353 with old format5354 returns hash with host, port, db, and password5355 with new format5356 rails_env: "development", host: "development-host"5357 returns hash with host, port, db, and password5358 rails_env: "test", host: "test-host"5359 returns hash with host, port, db, and password5360 rails_env: "production", host: "production-host"5361 returns hash with host, port, db, and password5362 with redis cluster format5363 rails_env: "development", host: "development-master"5364 returns hash with cluster and password5365 rails_env: "test", host: "test-master"5366 returns hash with cluster and password5367 rails_env: "production", host: "production-master"5368 returns hash with cluster and password5369 .url5370 withstands mutation5371 when yml file with env variable5372 reads redis url from env variable5373 .version5374 returns a version5375 .with5376 when running on single-threaded runtime5377 instantiates a connection pool with size 55378 when running on multi-threaded runtime5379 instantiates a connection pool with a size based on the concurrency of the worker5380 when there is no config at all5381 can run an empty block5382 #db5383 with old format5384 returns the correct db5385 with new format5386 returns the correct db5387 with cluster-mode5388 returns the correct db5389 #sentinels5390 when sentinels are defined5391 rails_env: "development", hosts: ["development-replica1", "development-replica2"]5392 returns an array of hashes with host and port keys5393 rails_env: "test", hosts: ["test-replica1", "test-replica2"]5394 returns an array of hashes with host and port keys5395 rails_env: "production", hosts: ["production-replica1", "production-replica2"]5396 returns an array of hashes with host and port keys5397 when sentinels are not defined5398 returns nil5399 when cluster is defined5400 returns nil5401 #sentinels?5402 when sentinels are defined5403 returns true5404 when sentinels are not defined5405 is expected to eq nil5406 when cluster is defined5407 returns false5408 #raw_config_hash5409 returns old-style single url config in a hash5410 returns cluster config without url key in a hash5411 #fetch_config5412 raises an exception when the config file contains invalid yaml5413 when redis.yml exists5414 uses config/redis.yml5415 when no config file exsits5416 returns nil5417 when resque.yml exists5418 returns the config from resque.yml5419 #raw_config_hash5420 when the config url is present5421 sets the configured url5422Gitlab::Prometheus::Queries::AdditionalMetricsDeploymentQuery5423 queries using specific time5424 metrics query context5425 project has Kubernetes service5426 when user configured kubernetes from CI/CD > Clusters5427 query context contains kube_namespace5428 behaves like query context containing environment slug and filter5429 contains ci_environment_slug5430 contains environment filter5431 project without Kubernetes service5432 query context contains empty kube_namespace5433 behaves like query context containing environment slug and filter5434 contains ci_environment_slug5435 contains environment filter5436 with one group where two metrics is found5437 when some queries return results5438 return group data only for queries with results5439 with two groups with one metric each5440 when both queries return results5441 return group data both queries5442 when one query returns result5443 return group data only for query with results5444Branches::DeleteMergedService5445 #execute5446 deletes a branch that was merged5447 keeps branch that is unmerged5448 keeps "master"5449 keeps protected branches5450 keeps wildcard protected branches5451 ignores protected tags5452 user without rights5453 cannot execute5454 open merge requests5455 does not delete branches from open merge requests5456 #async_execute5457 calls DeleteMergedBranchesWorker async5458Ci::ArchiveTraceService#execute5459 when job is finished5460 creates an archived trace5461 integration hooks5462 is expected not to raise Exception5463 when trace is already archived5464 ignores an exception5465 does not create an archived trace5466 when live trace chunks still exist5467 removes the trace chunks5468 when associated data does not exist5469 removes the trace artifact and builds a new one5470 when the job is out of archival attempts5471 skips archiving5472 leaves a warning message in sidekiq log5473 job has archive and chunks5474 removes trace chunks5475 archive is not completed5476 cleanups any stale archive data5477 when the archival process is backed off5478 skips archiving5479 leaves a warning message in sidekiq log5480 when job is running5481 increments Prometheus counter, sends crash report to Sentry and ignore an error for continuing to archive5482 #batch_execute5483 archives multiple traces5484 processes traces independently5485 when timeout is reached5486 stops executing traces5487 when loop limit is reached5488 skips archiving5489 stops executing traces5490IncidentManagement::ProcessAlertWorkerV25491 # order random5492 #perform5493 with valid alert5494 behaves like creates issue successfully5495 creates an issue5496 updates AlertManagement::Alert#issue_id5497 does not write a warning to log5498 behaves like an idempotent worker5499 is labeled as idempotent5500 performs multiple times sequentially without raising an exception5501 does not create a second issue5502 when alert cannot be updated5503 updates AlertManagement::Alert#issue_id5504 logs a warning5505 prometheus alert5506 behaves like creates issue successfully5507 creates an issue5508 updates AlertManagement::Alert#issue_id5509 does not write a warning to log5510 behaves like an idempotent worker5511 is labeled as idempotent5512 performs multiple times sequentially without raising an exception5513 does not create a second issue5514 with invalid alert5515 does not create issues5516UploadService5517 File service5518 for valid gif file5519 is expected to have key :alt5520 is expected to have key :url5521 is expected to have value "banana_sample"5522 is expected to match "banana_sample.gif"5523 for valid png file5524 is expected to have key :alt5525 is expected to have key :url5526 is expected to have value "dk"5527 is expected to match "dk.png"5528 for valid jpg file5529 is expected to have key :alt5530 is expected to have key :url5531 is expected to have value "rails_sample"5532 is expected to match "rails_sample.jpg"5533 for txt file5534 is expected to have key :alt5535 is expected to have key :url5536 is expected to have value "doc_sample.txt"5537 is expected to match "doc_sample.txt"5538 for too large a file5539 is expected to eq {}5540 #override_max_attachment_size5541 allows the upload5542 disallows the upload5543Projects::ContainerRepository::DeleteTagsService5544 #execute5545 without permissions5546 is expected to include {:status => :error}5547 with permissions5548 behaves like supporting fast delete5549 when the registry supports fast delete5550 behaves like calling the correct delete tags service5551 is expected to include {:status => :success}5552 behaves like logging a success response5553 logs an info message5554 with an error service response5555 is expected to include {:status => :error}5556 behaves like logging an error response5557 logs an error message5558 behaves like handling invalid params5559 with invalid params5560 when no params are specified5561 is expected to include {:status => :error}5562 with empty tags5563 is expected to include {:status => :error}5564 with the real service5565 is expected to include {:status => :success}5566 behaves like logging a success response5567 logs an info message5568 with a timeout error5569 is expected to include {:status => :error, :message => "error while deleting tags"}5570 behaves like logging an error response5571 logs an error message5572 when the registry does not support fast delete5573 behaves like calling the correct delete tags service5574 is expected to include {:status => :success}5575 behaves like logging a success response5576 logs an info message5577 with an error service response5578 is expected to include {:status => :error}5579 behaves like logging an error response5580 logs an error message5581 behaves like handling invalid params5582 with invalid params5583 when no params are specified5584 is expected to include {:status => :error}5585 with empty tags5586 is expected to include {:status => :error}5587 when the repository is importing5588 migration_state: "default", called_by_policy: false, error_expected: false5589 returns an error response if expected5590 migration_state: "default", called_by_policy: true, error_expected: false5591 returns an error response if expected5592 migration_state: "pre_importing", called_by_policy: false, error_expected: false5593 returns an error response if expected5594 migration_state: "pre_importing", called_by_policy: true, error_expected: true5595 returns an error response if expected5596 migration_state: "pre_import_done", called_by_policy: false, error_expected: false5597 returns an error response if expected5598 migration_state: "pre_import_done", called_by_policy: true, error_expected: true5599 returns an error response if expected5600 migration_state: "importing", called_by_policy: false, error_expected: true5601 returns an error response if expected5602 migration_state: "importing", called_by_policy: true, error_expected: true5603 returns an error response if expected5604 migration_state: "import_done", called_by_policy: false, error_expected: false5605 returns an error response if expected5606 migration_state: "import_done", called_by_policy: true, error_expected: false5607 returns an error response if expected5608 migration_state: "import_aborted", called_by_policy: false, error_expected: false5609 returns an error response if expected5610 migration_state: "import_aborted", called_by_policy: true, error_expected: false5611 returns an error response if expected5612 migration_state: "import_skipped", called_by_policy: false, error_expected: false5613 returns an error response if expected5614 migration_state: "import_skipped", called_by_policy: true, error_expected: false5615 returns an error response if expected5616 without user5617 when not run by a cleanup policy5618 is expected to include {:status => :error}5619 when run by a cleanup policy5620 behaves like supporting fast delete5621 when the registry supports fast delete5622 behaves like calling the correct delete tags service5623 is expected to include {:status => :success}5624 behaves like logging a success response5625 logs an info message5626 with an error service response5627 is expected to include {:status => :error}5628 behaves like logging an error response5629 logs an error message5630 behaves like handling invalid params5631 with invalid params5632 when no params are specified5633 is expected to include {:status => :error}5634 with empty tags5635 is expected to include {:status => :error}5636 with the real service5637 is expected to include {:status => :success}5638 behaves like logging a success response5639 logs an info message5640 with a timeout error5641 is expected to include {:status => :error, :message => "error while deleting tags"}5642 behaves like logging an error response5643 logs an error message5644Mutations::MergeRequests::SetReviewers5645 #resolve5646 does not change reviewers if the merge_request is not accessible to the reviewers5647 returns an operational error if the merge_request is not accessible to the reviewers5648 when the user does not have permissions5649 behaves like permission level for merge request mutation is correctly verified5650 when the user is not a project member5651 behaves like when the user does not have access to the resource5652 raises an error5653 even if assigned to the merge request5654 does not modify merge request5655 even if reviewer of the merge request5656 raises an error5657 even if author of the merge request5658 raises an error5659 when the user is a project member5660 with guest role5661 behaves like when the user does not have access to the resource5662 raises an error5663 even if assigned to the merge request5664 does not modify merge request5665 even if reviewer of the merge request5666 raises an error5667 even if author of the merge request5668 raises an error5669 with reporter role5670 behaves like when the user does not have access to the resource5671 raises an error5672 even if assigned to the merge request5673 does not modify merge request5674 even if reviewer of the merge request5675 raises an error5676 even if author of the merge request5677 raises an error5678 when the user can update the merge_request5679 replaces the reviewer5680 returns errors when merge_request could not be updated5681 when passing an empty reviewer list5682 removes all reviewers5683 when passing "append" as true5684 is a NO-OP in FOSS5685 when passing "remove" as true5686 removes named reviewer5687 does not remove unnamed reviewer5688Gitlab::ProcessSupervisor5689 #supervise5690 while supervised processes are alive5691 does not invoke callback5692 when a supervised process dies5693 triggers callback with the dead PIDs and adds new PIDs to supervised PIDs5694 deduplicates PIDs returned from callback5695 accepts single PID returned from callback5696 but supervisor has entered shutdown5697 does not trigger callback again5698 signal handling5699 termination signals5700 when TERM results in timely shutdown of processes5701 forwards them to observed processes without waiting for grace period to expire5702 when TERM does not result in timely shutdown of processes5703 issues a KILL signal after the grace period expires5704 forwarded signals5705 forwards given signals to the observed processes5706 #shutdown5707 when supervisor is supervising processes5708 when supervisor is alive5709 signals TERM then KILL to all supervised processes5710 stops the supervisor5711 when supervisor has already shut down5712 does nothing5713 when supervisor never started5714 does nothing5715Ci::Sources::Pipeline5716 is expected to belong to project required: false5717 is expected to belong to pipeline required: false5718 is expected to belong to build class_name => Ci::Build required: false inverse_of => sourced_pipelines5719 is expected to belong to source_project class_name => ::Project required: false5720 is expected to belong to source_job required: false5721 is expected to belong to source_bridge required: false5722 is expected to belong to source_pipeline required: false5723 is expected to validate that :project cannot be empty/falsy5724 is expected to validate that :pipeline cannot be empty/falsy5725 is expected to validate that :source_project cannot be empty/falsy5726 is expected to validate that :source_job cannot be empty/falsy5727 is expected to validate that :source_pipeline cannot be empty/falsy5728 loose foreign key on ci_sources_pipelines.source_project_id5729 behaves like cleanup by a loose foreign key5730 cleans up (delete or nullify) the model5731 loose foreign key on ci_sources_pipelines.project_id5732 behaves like cleanup by a loose foreign key5733 cleans up (delete or nullify) the model5734 partitioning5735 assigns partition_id and source_partition_id from pipeline and source_job (PENDING: Skipping partitioning tests until `ci_builds` is partitioned)5736Ci::StagePresenter5737 #latest_ordered_statuses5738 behaves like preloaded associations for CI status5739 preloads project5740 preloads build pipeline5741 preloads build tags5742 preloads build artifacts archive5743 preloads build artifacts metadata5744 #retried_ordered_statuses5745 behaves like preloaded associations for CI status5746 preloads project5747 preloads build pipeline5748 preloads build tags5749 preloads build artifacts archive5750 preloads build artifacts metadata5751Resolvers::WorkItemsResolver5752 is expected to have nullable GraphQL type WorkItemConnection5753 with a project5754 #resolve5755 finds all items5756 filters by state5757 returns items user can see5758 batches queries that only include IIDs5759 finds a specific item with iids5760 finds multiple items with iids5761 finds only the items within the project we are looking at5762 when searching items5763 behaves like graphql query for searching issuables5764 uses search optimization5765 filters issuables by title5766 filters issuables by description5767 with in param5768 generates an error if param search is missing5769 filters issuables by title and description5770 filters issuables by description only5771 filters issuables by title only5772 sorting5773 when sorting by created5774 sorts items ascending5775 sorts items descending5776 when sorting by title5777 sorts items ascending5778 sorts items descending5779 when passing a non existent, batch loaded project5780 returns nil without breaking5781gitlab:packages:events namespace rake task5782 generate_unique5783 excludes guest events5784 includes `maven` scope5785 includes `npm` scope5786 includes `conan` scope5787 includes `nuget` scope5788 includes `pypi` scope5789 includes `composer` scope5790 includes `generic` scope5791 includes `golang` scope5792 includes `debian` scope5793 includes `rubygems` scope5794 includes `helm` scope5795 includes `terraform_module` scope5796 includes `rpm` scope5797 includes `ml_model` scope5798 includes `container` scope5799 includes `tag` scope5800 includes `dependency_proxy` scope5801 excludes some event types5802 generate_counts5803 includes `maven` scope5804 includes `npm` scope5805 includes `conan` scope5806 includes `nuget` scope5807 includes `pypi` scope5808 includes `composer` scope5809 includes `generic` scope5810 includes `golang` scope5811 includes `debian` scope5812 includes `rubygems` scope5813 includes `helm` scope5814 includes `terraform_module` scope5815 includes `rpm` scope5816 includes `ml_model` scope5817 includes `container` scope5818 includes `tag` scope5819 includes `dependency_proxy` scope5820 excludes some event types5821Gitlab::Diff::LinesUnfolder5822 position requires a middle expansion and new match lines5823 old_line is an invalid number5824 fails gracefully5825 blob lines5826 returns the extracted blob lines correctly5827 diff lines5828 return merge of blob lines with diff lines correctly5829 merged lines have correct line codes5830 position requires a middle expansion and no top match line5831 blob lines5832 returns the extracted blob lines correctly5833 diff lines5834 return merge of blob lines with diff lines correctly5835 merged lines have correct line codes5836 position requires a middle expansion and no bottom match line5837 blob lines5838 returns the extracted blob lines correctly5839 diff lines5840 return merge of blob lines with diff lines correctly5841 merged lines have correct line codes5842 position requires a short top expansion5843 blob lines5844 returns the extracted blob lines correctly5845 diff lines5846 return merge of blob lines with diff lines correctly5847 merged lines have correct line codes5848 position sits between two match lines (no expasion needed)5849 diff lines5850 returns nil5851 position requires bottom expansion and new match lines5852 blob lines5853 returns the extracted blob lines correctly5854 diff lines5855 return merge of blob lines with diff lines correctly5856 merged lines have correct line codes5857 position requires bottom expansion and no new match line5858 blob lines5859 returns the extracted blob lines correctly5860 diff lines5861 return merge of blob lines with diff lines correctly5862 merged lines have correct line codes5863 positioned on an image5864 diff file is not text5865 returns nil5866 diff file is text5867 returns nil5868TimeboxesHelper5869 #timebox_date_range5870 milestone5871 is expected to be nil5872 is expected to eq "expires on Jun 3, 2023"5873 is expected to eq "expired on Jun 1, 2023"5874 is expected to eq "starts on Jun 3, 2023"5875 is expected to eq "started on Jun 1, 2023"5876 is expected to eq "Jun 1, 2023–Jun 3, 2023"5877 #group_milestone_route5878 when in subgroup5879 generates correct url despite assigned @group5880 #recent_releases_with_counts5881 returns releases with counts5882 #milestone_status_string5883 milestone: lazy { milestone_expired }, status: "Expired"5884 returns status string5885 milestone: lazy { milestone_closed }, status: "Closed"5886 returns status string5887 milestone: lazy { milestone_closed_and_expired }, status: "Closed"5888 returns status string5889 milestone: lazy { milestone_upcoming }, status: "Upcoming"5890 returns status string5891 milestone: lazy { milestone_open }, status: "Open"5892 returns status string5893 #milestone_badge_variant5894 milestone: lazy { milestone_expired }, variant: :warning5895 returns badge variant5896 milestone: lazy { milestone_closed }, variant: :danger5897 returns badge variant5898 milestone: lazy { milestone_closed_and_expired }, variant: :danger5899 returns badge variant5900 milestone: lazy { milestone_upcoming }, variant: :neutral5901 returns badge variant5902 milestone: lazy { milestone_open }, variant: :success5903 returns badge variant5904Integrations::Test::ProjectService5905 #execute5906 without event specified5907 tests the integration with default data5908 with Integrations::PipelinesEmail5909 behaves like tests for integration with pipeline data5910 tests the integration with pipeline data5911 with event specified5912 event not supported by integration5913 returns error message5914 push5915 executes integration5916 tag_push5917 executes integration5918 note5919 returns error message if not enough data5920 executes integration5921 issue5922 behaves like a test of an integration that operates on issues5923 returns error message if not enough data5924 executes integration5925 confidential_issue5926 behaves like a test of an integration that operates on issues5927 returns error message if not enough data5928 executes integration5929 merge_request5930 returns error message if not enough data5931 executes integration5932 deployment5933 returns error message if not enough data5934 executes integration5935 pipeline5936 returns error message if not enough data5937 executes integration5938 wiki_page5939 returns error message if wiki disabled5940 returns error message if not enough data5941 executes integration5942Gitlab::Sanitizers::Exif5943 #batch_clean5944 filters only jpg/tiff images by filename5945 with image uploads5946 processes all uploads if range ID is not set5947 processes only uploads in the selected range5948 processes only uploads for the selected uploader5949 processes only uploads created since specified date5950 pauses if sleep_time is set5951 #clean5952 no dry run5953 removes exif from the image5954 ignores image without exif5955 raises an error if the exiftool fails with an error5956 for files that do not have the correct MIME type5957 cleans only jpg/tiff images with the correct mime types5958 dry run5959 doesn't change the image5960 #clean_existing_path5961 no dry run5962 removes exif from the image5963 ignores image without exif5964 raises an error if the exiftool fails with an error5965 for files that do not have the correct MIME type from file5966 cleans only jpg/tiff images with the correct mime types5967 skip_unallowed_types is false5968 for files that do not have the correct MIME type from input content5969 raises an error if not jpg/tiff images with the correct mime types5970 for files that do not have the correct MIME type from input content5971 raises an error if not jpg/tiff images with the correct mime types5972 skip_unallowed_types is true5973 for files that do not have the correct MIME type from input content5974 cleans only jpg/tiff images with the correct mime types5975 for files that do not have the correct MIME type from input content5976 cleans only jpg/tiff images with the correct mime types5977 dry run5978 doesn't change the image5979 #extra_tags5980 returns a list of keys for exif file5981 returns an empty list for file with only whitelisted and ignored tags5982Sidebars::Menu5983 #all_active_routes5984 gathers all active routes of items and the current menu5985 #serialize_for_super_sidebar5986 returns a tree-like structure of itself and all menu items5987 returns pill data if defined5988 #serialize_as_menu_item_args5989 returns hash of title, link, active_routes, container_html_options5990 #render?5991 when the menus has no items5992 returns false5993 when menu has a partial5994 returns true5995 when the menu has items5996 returns true5997 when menu items are NilMenuItem5998 returns false5999 #has_items?6000 returns true when there are regular menu items6001 returns true when there are nil menu items6002 #has_renderable_items?6003 returns true when there are regular menu items6004 returns false when there are nil menu items6005 returns true when there are both regular and nil menu items6006 #renderable_items6007 returns only regular menu items6008 #insert_element_before6009 adds element before the specific element class6010 does not add nil elements6011 when reference element does not exist6012 adds the element to the top of the list6013 #insert_element_after6014 adds element after the specific element class6015 does not add nil elements6016 when reference element does not exist6017 adds the element to the end of the list6018 #replace_placeholder6019 when a NilMenuItem reference element exists6020 replaces the reference element with the provided item6021 when a MenuItem reference element exists6022 does not replace the reference element and adds to the end of the list6023 when reference element does not exist6024 adds the element to the end of the list6025 #remove_element6026 removes specific element6027 does not remove nil elements6028 #container_html_options6029 when menu can be rendered6030 when menu has renderable items6031 contains the special class6032 when menu already has other classes6033 appends special class6034 when menu does not have renderable items6035 does not contain the special class6036 when menu cannot be rendered6037 does not contain special class6038 #link6039 returns first visible menu item link6040 returns nil if there are no visible menu items6041Ci::Lint::ResultSerializer6042 when config is invalid6043 returns expected validity6044 returns job data6045 behaves like matches schema6046 is expected to match schema "entities/lint_result_entity"6047 when config is valid6048 returns expected validity6049 returns job data6050 behaves like matches schema6051 is expected to match schema "entities/lint_result_entity"6052 when dry run is enabled6053 returns expected validity6054 returns job data6055 behaves like matches schema6056 is expected to match schema "entities/lint_result_entity"6057 when only is not nil in the yaml6058 when only: is hash6059 renders only:refs as hash6060 behaves like matches schema6061 is expected to match schema "entities/lint_result_entity"6062 when only is an array of strings in the yaml6063 renders only: list as hash6064 behaves like matches schema6065 is expected to match schema "entities/lint_result_entity"6066 when except is not nil in the yaml6067 when except: is hash6068 renders except as hash6069 behaves like matches schema6070 is expected to match schema "entities/lint_result_entity"6071 when except is an array of strings in the yaml6072 renders only: list as hash6073 behaves like matches schema6074 is expected to match schema "entities/lint_result_entity"6075 with minimal job configuration6076 renders the job with defaults6077 behaves like matches schema6078 is expected to match schema "entities/lint_result_entity"6079 with environment defined6080 when formatted as a hash in yaml6081 renders the environment as a string6082 behaves like matches schema6083 is expected to match schema "entities/lint_result_entity"6084 when formatted as a string in yaml6085 renders the environment as a string6086 behaves like matches schema6087 is expected to match schema "entities/lint_result_entity"6088 when script values are formatted as arrays in the yaml6089 renders the scripts as arrays6090 behaves like matches schema6091 is expected to match schema "entities/lint_result_entity"6092Gitlab::Database::Migrations::TimeoutHelpers6093 # order random6094 #disable_statement_timeout6095-- transaction_open?()6096 -> 0.0002s6097 disables statement timeouts to current transaction only6098 with real environment6099-- execute("SET statement_timeout TO '20000'")6100 -> 0.0015s6101-- execute("SHOW statement_timeout")6102 -> 0.0010s6103-- transaction_open?()6104 -> 0.0001s6105-- execute("SET LOCAL statement_timeout TO 0")6106 -> 0.0015s6107-- execute("SHOW statement_timeout")6108 -> 0.0009s6109-- execute("SHOW statement_timeout")6110 -> 0.0008s6111-- execute("RESET statement_timeout")6112 -> 0.0008s6113 defines statement to 0 only for current transaction6114 when passing a blocks6115-- execute("SET statement_timeout TO '20000'")6116 -> 0.0067s6117 disables statement timeouts on session level and executes the block6118 with real environment6119-- execute("SET statement_timeout TO '20000'")6120 -> 0.0066s6121-- execute("SET statement_timeout TO '20000'")6122 -> 0.0013s6123-- execute("SHOW statement_timeout")6124 -> 0.0009s6125-- execute("SET statement_timeout TO 0")6126 -> 0.0009s6127-- execute("SHOW statement_timeout")6128 -> 0.0015s6129-- execute("SHOW statement_timeout")6130 -> 0.0008s6131-- execute("RESET statement_timeout")6132 -> 0.0008s6133-- execute("RESET statement_timeout")6134 -> 0.0009s6135-- execute("RESET statement_timeout")6136 -> 0.0009s6137 defines statement to 0 for any code run inside the block6138 when the statement_timeout is already disabled6139 yields control without disabling the timeout or resetting6140LfsFileLock6141 is expected to belong to project required: false6142 is expected to belong to user required: false6143 is expected to validate that :project_id cannot be empty/falsy6144 is expected to validate that :user_id cannot be empty/falsy6145 is expected to validate that :path cannot be empty/falsy6146 #can_be_unlocked_by?6147 when it's forced6148 can be unlocked by the author6149 can be unlocked by a maintainer6150 can't be unlocked by other user6151 when it isn't forced6152 can be unlocked by the author6153 can't be unlocked by a maintainer6154 can't be unlocked by other user6155Gitlab::GlRepository::RepoType6156 #<Gitlab::GlRepository::RepoType:0x00007fcf03dd26e0>6157 knows its type6158 checks if repository path is valid6159 behaves like a repo type6160 #identifier_for_container6161 is expected to eq "project-914"6162 #path_suffix6163 is expected to eq ""6164 #repository_for6165 finds the repository for the repo type6166 returns nil when container is nil6167 #<Gitlab::GlRepository::RepoType:0x00007fcf03ff0c10>6168 knows its type6169 checks if repository path is valid6170 behaves like a repo type6171 #identifier_for_container6172 is expected to eq "wiki-914"6173 #path_suffix6174 is expected to eq ".wiki"6175 #repository_for6176 finds the repository for the repo type6177 returns nil when container is nil6178 #<Gitlab::GlRepository::RepoType:0x00007fcf04721598>6179 when PersonalSnippet6180 knows its type6181 checks if repository path is valid6182 behaves like a repo type6183 #identifier_for_container6184 is expected to eq "snippet-12"6185 #path_suffix6186 is expected to eq ""6187 #repository_for6188 finds the repository for the repo type6189 returns nil when container is nil6190 when ProjectSnippet6191 knows its type6192 checks if repository path is valid6193 behaves like a repo type6194 #identifier_for_container6195 is expected to eq "snippet-13"6196 #path_suffix6197 is expected to eq ""6198 #repository_for6199 finds the repository for the repo type6200 returns nil when container is nil6201 #<Gitlab::GlRepository::RepoType:0x00007fcf049fa990>6202 uses the design access checker6203 knows its type6204 checks if repository path is valid6205 behaves like a repo type6206 #identifier_for_container6207 is expected to eq "design-1"6208 #path_suffix6209 is expected to eq ".design"6210 #repository_for6211 finds the repository for the repo type6212 returns nil when container is nil6213 .project_for6214 returns a project6215 .repository_for6216 returns a DesignManagement::GitRepository when a project is passed6217Gitlab::Ci::Build::Context::Global6218 #variables6219 is expected to be an instance of Gitlab::Ci::Variables::Collection6220 behaves like variables collection6221 is expected to include {"CI_COMMIT_REF_NAME" => "master"}6222 is expected to include {"CI_PIPELINE_IID" => "1"}6223 is expected to include {"CI_PROJECT_PATH" => "namespace583/project-929"}6224 is expected not to have key "CI_JOB_NAME"6225 with passed yaml variables6226 is expected to include {"SUPPORTED" => "parsed"}6227 #variables_hash6228 is expected to be an instance of ActiveSupport::HashWithIndifferentAccess6229 behaves like variables collection6230 is expected to include {"CI_COMMIT_REF_NAME" => "master"}6231 is expected to include {"CI_PIPELINE_IID" => "1"}6232 is expected to include {"CI_PROJECT_PATH" => "namespace589/project-935"}6233 is expected not to have key "CI_JOB_NAME"6234 with passed yaml variables6235 is expected to include {"SUPPORTED" => "parsed"}6236clearing redis cache6237 # order random6238 clearing set caches6239 repository set6240 behaves like clears the cache6241 is expected to change `redis_keys.size` by -16242 reactive cache set6243 behaves like clears the cache6244 is expected to change `redis_keys.size` by -16245 clearing pipeline status cache6246 behaves like clears the cache6247 is expected to change `redis_keys.size` by -1624800_deprecations6249 # order random6250 Rails deprecations6251 when catching deprecation warnings6252DEPRECATION WARNING: ABC will be removed (called from block (3 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/initializers/00_deprecations_spec.rb:40)6253 logs them to Gitlab::DeprecationJsonLogger6254 logs them to stderr6255 when in production environment6256 does not log them to Gitlab::DeprecationJsonLogger6257 does not log them to stderr6258 when GITLAB_LOG_DEPRECATIONS is set6259 logs them to Gitlab::DeprecationJsonLogger6260 does not log them to stderr6261 when catching disallowed warnings6262 raises ActiveSupport::DeprecationException6263 when in production environment6264 does not raise ActiveSupport::DeprecationException6265 when GITLAB_LOG_DEPRECATIONS is set6266 does not raise ActiveSupport::DeprecationException6267 configuring ActiveSupport::Deprecation.disallowed_warnings6268 sets disallowed warnings6269 when in production environment6270 does not set disallowed warnings6271 when GITLAB_LOG_DEPRECATIONS is set6272 does not set disallowed warnings6273 Ruby deprecations6274 when catching deprecations through Kernel#warn6275ABC gem is deprecated and will be removed6276 logs them to Gitlab::DeprecationJsonLogger6277 logs them to stderr6278 when in production environment6279ABC gem is deprecated and will be removed6280 does not log them to Gitlab::DeprecationJsonLogger6281 logs them to stderr6282 when GITLAB_LOG_DEPRECATIONS is set6283ABC gem is deprecated and will be removed6284 logs them to Gitlab::DeprecationJsonLogger6285 logs them to stderr6286 when other messages from Kernel#warn6287Sure is hot today6288 does not log them to Gitlab::DeprecationJsonLogger6289 logs them to stderr6290MergeRequestSerializer6291 widget merge request serialization6292 matches issue json schema6293 sidebar merge request serialization6294 matches merge_request_sidebar json schema6295 sidebar_extras merge request serialization6296 matches merge_request_sidebar_extras json schema6297 basic merge request serialization6298 matches basic merge request json schema6299 noteable merge request serialization6300 matches noteable merge request json schema6301 when merge_request is locked6302 matches noteable merge request json schema6303 when project is archived6304 matches noteable merge request json schema6305 poll cached widget merge request serialization6306 matches basic merge request json schema6307 poll widget merge request serialization6308 matches basic merge request json schema6309 no serializer6310 falls back to the widget entity6311Ci::PersistentRef6312 cleans up persistent refs after pipeline finished6313 #exist?6314 when a persistent ref does not exist6315 is expected to eq false6316 when a persistent ref exists6317 is expected to eq true6318 #create6319 when a persistent ref does not exist6320 creates a persistent ref6321 when sha does not exist in the repository6322 fails to create a persistent ref6323 when a persistent ref already exists6324 overwrites a persistent ref6325 #delete6326 when a persistent ref exists6327 deletes the ref6328 when a persistent ref does not exist6329 does not raise an error6330Ci::ArchiveTracesCronWorker6331 when a job succeeded6332 batch_execute service6333 behaves like archives trace6334 is expected to be exist6335 when the job finished recently6336 behaves like does not archive trace6337 is expected to be nil6338 when a trace had already been archived6339 continues to archive live traces6340 when an unexpected exception happened during archiving6341 puts a log6342 when a job was cancelled6343 behaves like archives trace6344 is expected to be exist6345 when a job is running6346 behaves like does not archive trace6347 is expected to be nil6348PersonalSnippet6349 #embeddable?6350 returns true when snippet is public6351 returns true when snippet is public6352 returns true when snippet is public6353 behaves like model with repository6354 container class includes HasRepository6355 #commits_by6356 retrieves several commits from the repository by oid6357 #web_url6358 when given the only_path option6359 when only_path is false6360 returns the full web URL for this repo6361 when only_path is true6362 returns the relative web URL for this repo6363 when only_path is nil6364 returns the full web URL for this repo6365 when not given the only_path option6366 returns the full web URL for this repo6367 #url_to_repo6368 returns the SSH URL to the repository6369 #ssh_url_to_repo6370 returns the SSH URL to the repository6371 #http_url_to_repo6372 returns the HTTP URL to the repository6373 #repository6374 returns valid repo6375 uses the same container6376 #storage6377 returns valid storage6378 #full_path6379 returns valid full_path6380 #lfs_enabled?6381 returns the expected value6382 #empty_repo?6383 when the repo does not exist6384 returns true6385 when the repo exists6386 returns the empty state of the repository6387 #valid_repo?6388 is expected to equal false6389 is expected to equal true6390 #repository_exists?6391 is expected to equal false6392 is expected to equal true6393 #repo_exists?6394 is expected to equal false6395 is expected to equal true6396 #root_ref6397 is expected to equal true6398 is expected to equal false6399 is expected to equal false6400 Respond to6401 is expected to respond to #base_dir6402 is expected to respond to #disk_path6403 is expected to respond to #gitlab_shell6404 #change_head6405 delegates #change_head to repository6406 #after_repository_change_head6407 calls #reload_default_branch6408 #parent_user6409 returns the snippet author6410Gitlab::Ci::Pipeline::Chain::Seed6411 #perform!6412 allocates next IID6413 ensures ci_ref6414 sets the seeds in the command object6415 when no ref policy is specified6416 correctly fabricates stages and builds6417 when refs policy is specified6418 returns pipeline seed with jobs only assigned to master6419 when source policy is specified6420 returns pipeline seed with jobs only assigned to schedules6421 when kubernetes policy is specified6422 when kubernetes is active6423 when user configured kubernetes from CI/CD > Clusters6424 returns seeds for kubernetes dependent job6425 when kubernetes is not active6426 does not return seeds for kubernetes dependent job6427 when variables policy is specified6428 returns stage seeds only when variables expression is truthy6429 when there is seeds_block6430 does not execute the block6431 #root_variables6432 sends root variable with overridden by rules6433 #rule_variables6434 correctly parses rule variables6435 N+1 queries6436 avoids N+1 queries when calculating variables of jobs6437Gitlab::Ci::Variables::Collection::Item6438 .new6439 when unknown keyword is specified6440 raises error6441 when required keywords are not specified6442 raises error6443 behaves like creates variable6444 saves given value6445 when it's nil6446 behaves like creates variable6447 saves given value6448 when it's an empty string6449 behaves like creates variable6450 saves given value6451 when provided value is not a string6452 when it's 16453 behaves like raises error for invalid type6454 is expected to raise ArgumentError with message matching /`VAR` must be of type String or nil value, while it was:/6455 when it's false6456 behaves like raises error for invalid type6457 is expected to raise ArgumentError with message matching /`VAR` must be of type String or nil value, while it was:/6458 when it's []6459 behaves like raises error for invalid type6460 is expected to raise ArgumentError with message matching /`VAR` must be of type String or nil value, while it was:/6461 when it's {}6462 behaves like raises error for invalid type6463 is expected to raise ArgumentError with message matching /`VAR` must be of type String or nil value, while it was:/6464 when it's #<Object:0x00007fcee4c42038>6465 behaves like raises error for invalid type6466 is expected to raise ArgumentError with message matching /`VAR` must be of type String or nil value, while it was:/6467 .possible_var_reference?6468 table tests6469 empty value6470 is expected to eq false6471 normal value6472 is expected to eq false6473 simple expansions6474 is expected to eq true6475 complex expansions6476 is expected to eq true6477 complex expansions for Windows6478 is expected to eq true6479 #depends_on6480 table tests6481 no variable references6482 contains referenced variable names6483 simple variable reference6484 contains referenced variable names6485 complex expansion6486 contains referenced variable names6487 complex expansion in raw variable6488 contains referenced variable names6489 complex expansions for Windows6490 contains referenced variable names6491 .fabricate6492 supports using a hash6493 supports using a hash with stringified values6494 supports using an active record resource6495 supports using another collection item6496 #==6497 compares a hash representation of a variable6498 #[]6499 behaves like a hash accessor6500 #raw?6501 returns false when :raw is not specified6502 when :raw is specified as true6503 returns true6504 #to_runner_variable6505 when variable is not a file-related6506 returns a runner-compatible hash representation6507 when variable is file-related6508 appends file description component6509 when variable is raw6510 does not export raw value when it is false6511 exports raw value when it is true6512 when referencing a variable6513 #depends_on contains names of dependencies6514 when assigned the raw attribute6515 retains a true raw attribute6516 does not retain a false raw attribute6517create_tokens6518 ensure acknowledged secrets in any installations6519 does not allow to add a new secret without a proper handling6520 setting secret keys6521 when none of the secrets exist6522 generates different hashes for secret_key_base, otp_key_base, and db_key_base6523 generates an RSA key for openid_connect_signing_key6524 warns about the secrets to add to secrets.yml6525 writes the secrets to secrets.yml6526 does not write a .secret file6527 when the other secrets all exist6528 when secret_key_base exists in the environment and secrets.yml6529 does not issue a warning6530 uses the environment variable6531 does not update secrets.yml6532 when secret_key_base and otp_key_base exist6533 does not write any files6534 sets the keys to the values from the environment and secrets.yml6535 deletes the .secret file6536 when secret_key_base and otp_key_base do not exist6537 uses the file secret6538 keeps the other secrets as they were6539 warns about the missing secrets6540 deletes the .secret file6541 when rotated_encrypted_settings_key_base does not exist6542 does not warn about the missing secrets6543 does not update secrets.yml6544 when db_key_base is blank but exists in secrets.yml6545 warns about updating db_key_base6546 warns about the blank value existing in secrets.yml and exits6547 does not update secrets.yml6548Gitlab::Conflict::FileCollection6549 #files6550 returns an array of Conflict::Files6551 #cache6552 specifies a custom namespace with the merge request commit ids6553 #can_be_resolved_in_ui?6554 returns true if conflicts for this collection can be resolved in the UI6555 returns false if conflicts for this collection can't be resolved in the UI6556 caches the result6557 #default_commit_message6558 matches the format of the git CLI commit message6559gitlab:refresh_project_statistics_build_artifacts_size rake task6560 enqueuing build artifacts size statistics refresh for given list of project IDs6561 when given a remote CSV file6562 behaves like recalculates project statistics successfully6563 enqueues the projects for refresh6564 inserts refreshes in batches with a sleep6565 behaves like raises error for invalid header6566 returns an error message6567 when given a local CSV file6568 behaves like recalculates project statistics successfully6569 enqueues the projects for refresh6570 inserts refreshes in batches with a sleep6571 behaves like raises error for invalid header6572 returns an error message6573Network::Graph6574 #initialize6575 has initialized6576 when disable_network_graph_note_counts is disabled6577 initializes the notes hash6578 #commits6579 returns a list of commits6580 sorts commits by commit date (descending)6581 sorts children before parents for commits with the same timestamp6582NamespaceSettings::UpdateService6583 #execute6584 group has no namespace_settings6585 builds out a new namespace_settings record6586 group has a namespace_settings6587 doesn't create a new namespace_setting record6588 updating :default_branch_name6589 changes settings6590 updating :resource_access_token_creation_allowed6591 when user is a group owner6592 changes settings6593 when user is not a group owner6594 does not change settings6595 returns the group owner error6596 validating settings param for root group6597 setting_key: :prevent_sharing_groups_outside_hierarchy, setting_changes_from: false, setting_changes_to: true6598 when user is not a group owner6599 does not change settings6600 returns the group owner error6601 with a subgroup6602 does not change settings6603 when user is a group owner6604 changes settings6605 setting_key: :new_user_signups_cap, setting_changes_from: nil, setting_changes_to: 1006606 when user is not a group owner6607 does not change settings6608 returns the group owner error6609 with a subgroup6610 does not change settings6611 when user is a group owner6612 changes settings6613gitlab:incoming_email:secret rake tasks6614 # order random6615 write6616 creates encrypted file from stdin6617 displays error when key does not exist6618 displays error when write directory does not exist6619somevalue shows a warning when content is invalid6620 edit6621# password: '123'6622# user: 'gitlab-incoming@gmail.com'6623 creates encrypted file6624 displays error when key does not exist6625 displays error when key is changed6626 displays error when write directory does not exist6627somevalue shows a warning when content is invalid6628 displays error when $EDITOR is not set6629 :show6630 displays error when file does not exist6631 displays error when key does not exist6632 displays error when key is changed6633 outputs the unencrypted content when present6634Projects::MoveDeployKeysProjectsService6635 #execute6636 moves the user's deploy keys from one project to another6637 does not link existent deploy_keys in the current project6638 rollbacks changes if transaction fails6639 when remove_remaining_elements is false6640 does not remove remaining deploy keys projects6641 when SHA256 fingerprint is missing6642 moves the user's deploy keys from one project to another6643Ci::JobArtifacts::TrackArtifactReportService6644 # order random6645 #execute6646 when pipeline has test reports6647 tracks the test event using HLLRedisCounter6648 when pipeline does not have test reports6649 does not track the test event6650 does not track the coverage test event6651 when a single user started multiple pipelines with test reports6652 tracks all pipelines using HLLRedisCounter by one user_id for the test event6653 when multiple users started multiple pipelines with test reports6654 tracks all pipelines using HLLRedisCounter by multiple users for test reports6655 when pipeline has coverage test reports6656 tracks the coverage test event using HLLRedisCounter6657 when a single user started multiple pipelines with coverage reports6658 tracks all pipelines using HLLRedisCounter by one user_id for the coverage test event6659 when multiple users started multiple pipelines with coverage test reports6660 tracks all pipelines using HLLRedisCounter by multiple users for coverage test reports6661Mutations::ReleaseAssetLinks::Update6662 #ready?6663 when link_type is included as an argument but is passed nil6664 raises a validation error6665 #resolve6666 when the current user has access to update the link6667 name6668 when a new name is provided6669 updates the name6670 behaves like no changes to the link except for the6671 does not change other link properties6672 with protected tag6673 when user has access to the protected tag6674 does not have errors6675 when user does not have access to the protected tag6676 raises a resource access error6677 when nil is provided6678 behaves like validation error with messages6679 returns the updated link as nil6680 returns a validation error6681 url6682 when a new URL is provided6683 updates the url6684 behaves like no changes to the link except for the6685 does not change other link properties6686 when nil is provided6687 behaves like validation error with messages6688 returns the updated link as nil6689 returns a validation error6690 filepath6691 when a new filepath is provided6692 updates the filepath6693 behaves like no changes to the link except for the6694 does not change other link properties6695 when nil is provided6696 updates the filepath to nil6697 link_type6698 when a new link type is provided6699 updates the link type6700 behaves like no changes to the link except for the6701 does not change other link properties6702 when the current user does not have access to update the link6703 raises an error6704 when the link doesn't exist6705 raises an error6706VersionCheckHelper6707 #show_version_check?6708 return conditions6709 enabled: false, consent: false, is_admin: false, result: false6710 returns correct results6711 enabled: false, consent: false, is_admin: true, result: false6712 returns correct results6713 enabled: false, consent: true, is_admin: false, result: false6714 returns correct results6715 enabled: false, consent: true, is_admin: true, result: false6716 returns correct results6717 enabled: true, consent: false, is_admin: false, result: false6718 returns correct results6719 enabled: true, consent: false, is_admin: true, result: true6720 returns correct results6721 enabled: true, consent: true, is_admin: false, result: false6722 returns correct results6723 enabled: true, consent: true, is_admin: true, result: false6724 returns correct results6725 #gitlab_version_check6726 returns an instance of the VersionCheck class6727 #show_security_patch_upgrade_alert?6728 return conditions6729 show_version_check: false, gitlab_version_check: nil, result: false6730 returns correct results6731 show_version_check: false, gitlab_version_check: {"severity"=>"success"}, result: false6732 returns correct results6733 show_version_check: false, gitlab_version_check: {"severity"=>"danger"}, result: false6734 returns correct results6735 show_version_check: false, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>"some text"}, result: false6736 returns correct results6737 show_version_check: false, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>"false"}, result: false6738 returns correct results6739 show_version_check: false, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>false}, result: false6740 returns correct results6741 show_version_check: false, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>"true"}, result: false6742 returns correct results6743 show_version_check: false, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>true}, result: false6744 returns correct results6745 show_version_check: true, gitlab_version_check: nil, result: false6746 returns correct results6747 show_version_check: true, gitlab_version_check: {"severity"=>"success"}, result: nil6748 returns correct results6749 show_version_check: true, gitlab_version_check: {"severity"=>"danger"}, result: nil6750 returns correct results6751 show_version_check: true, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>"some text"}, result: nil6752 returns correct results6753 show_version_check: true, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>"false"}, result: false6754 returns correct results6755 show_version_check: true, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>false}, result: false6756 returns correct results6757 show_version_check: true, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>"true"}, result: true6758 returns correct results6759 show_version_check: true, gitlab_version_check: {"severity"=>"danger", "critical_vulnerability"=>true}, result: true6760 returns correct results6761 #link_to_version6762 for a pre-release6763 links to commit sha6764 for a normal release6765 links to version tag6766import:github rake tasks6767 # order random6768 :import6769 when importing a single project6770 when all inputs are correct6771This will import GitHub github_user/repo into GitLab user785/project_name as Sidney Jones14996772Permission checks are ignored. Press any key to continue.6773Starting the import (this could take a while)6774Import finished. Timings: 0.001007 0.000000 0.001007 ( 0.001005)6775 imports a repository6776 when project path is invalid6777Project path must be: namespace(s)/project_name6778 aborts with an error6779 when user is not found6780 aborts with an error6781 when github repo is not found6782 aborts with an error6783 when namespace to import repo into does not exists6784This will import GitHub github_user/repo into GitLab unknown_namespace_path/project_name as Sidney Jones15036785Permission checks are ignored. Press any key to continue.6786Starting the import (this could take a while)6787 aborts with an error6788 when importing multiple projects6789 when user enters github repo id that exists6790ID: 1 Name: github_user/repo6791ID? This will import GitHub github_user/repo into GitLab user790/project_name as Sidney Jones15046792Permission checks are ignored. Press any key to continue.6793Starting the import (this could take a while)6794Import finished. Timings: 0.000933 0.000000 0.000933 ( 0.000929)6795 imports a repository6796 when user enters github repo id that does not exists6797ID: 1 Name: github_user/repo6798ID? aborts with an error6799MergeRequestAssignee6800 associations6801 is expected to belong to merge_request class_name => MergeRequest required: false6802 is expected to belong to assignee class_name => User required: false6803 validations6804 is expected to validate that :assignee is case-sensitively unique within the scope of :merge_request_id6805 scopes6806 in_projects6807 returns issue assignees for given project6808Organizations::Organization6809 # order random6810 #id6811 when organization is default6812 has id 16813 when organization is not default6814 does not have id 16815 when using scopes6816 .without_default6817 excludes default organization6818 includes other organizations organization6819 associations6820 is expected to have many namespaces6821 is expected to have many groups6822 validations6823 is expected to validate that :name cannot be empty/falsy6824 is expected to validate that the length of :name is at most 2556825 #name6826 when organization is default6827 returns Default6828 #destroy6829 when trying to delete the default organization6830 returns false6831 when trying to delete a non-default organization6832 returns true6833 #destroy!6834 when trying to delete the default organization6835 raises an error6836 when trying to delete a non-default organization6837 does not raise error6838 #default?6839 when organization is default6840 returns true6841 when organization is not default6842 returns false6843NamespaceStatistics6844 is expected to belong to namespace required: false6845 is expected to validate that :namespace cannot be empty/falsy6846 #refresh!6847 when database is read_only6848 does not save the object6849 when namespace belong to a user6850 does not save the object6851 when invalid option is passed6852 does not update any column6853 behaves like creates the namespace statistics6854 is expected to receive save!(*(any args)) 1 time6855 when no option is passed6856 updates the dependency proxy size6857 behaves like creates the namespace statistics6858 is expected to receive save!(*(any args)) 1 time6859 when dependency_proxy_size option is passed6860 updates the dependency proxy size6861 behaves like creates the namespace statistics6862 is expected to receive save!(*(any args)) 1 time6863 #update_storage_size6864 sets storage_size to the dependency_proxy_size6865 #update_dependency_proxy_size6866 updates the dependency proxy size6867 when namespace does not belong to a group6868 does not update the dependency proxy size6869 before saving statistics6870 updates storage size6871 after saving statistics6872 when storage_size is not updated6873 does not enqueue the job to update root storage statistics6874 when storage_size is updated6875 enqueues the job to update root storage statistics6876 when namespace does not belong to a group6877 does not enqueue the job to update root storage statistics6878 when other columns are updated6879 does not enqueue the job to update root storage statistics6880 after destroy statistics6881 enqueues the job to update root storage statistics6882 when namespace belongs to a group6883 does not enqueue the job to update root storage statistics6884Gitlab::Metrics::MethodCall6885 #measure6886 measures the performance of the supplied block6887 when measurement is above threshold6888 metric is not a NullMetric6889 observes the performance of the supplied block6890 when measurement is below threshold6891 does not observe the performance6892 #above_threshold?6893 returns false when the total call time is not above the threshold6894 returns true when the total call time is above the threshold6895 #call_count6896 without any method calls6897 returns 06898 with method calls6899 returns the number of method calls6900 #cpu_time6901 without timings6902 returns 0.06903 with timings6904 returns the total CPU time6905 #real_time6906 without timings6907 returns 0.06908 with timings6909 returns the total real time6910Gitlab::Instrumentation::RedisInterceptor6911 read and write6912 setup: [], command: [:set, "foo", "bar"], expect_write: 9, expect_read: 26913 counts bytes read and written6914 setup: [[:set, "foobar", 1000]], command: [:incr, "foobar"], expect_write: 10, expect_read: 46915 counts bytes read and written6916 setup: [], command: [:hgetall, "foobar"], expect_write: 13, expect_read: 06917 counts bytes read and written6918 setup: [[:hset, "myhash", "field", "hello world"]], command: [:hgetall, "myhash"], expect_write: 13, expect_read: 166919 counts bytes read and written6920 setup: [[:set, "foo", "barbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbar"]], command: [:get, "foo"], expect_write: 6, expect_read: 3006921 counts bytes read and written6922 setup: [[:zadd, "myset", 0, "foo"], [:zadd, "myset", 1, "bar"]], command: [:zrange, "myset", 0, -1, "withscores"], expect_write: 24, expect_read: 86923 counts bytes read and written6924 counting6925 counts successful requests6926 counts successful pipelined requests6927 when encountering exceptions6928 generic exception6929 counts exception6930 moved redirection6931 counts exception6932 ask redirection6933 counts exception6934 in production environment6935 counts disallowed cross-slot requests6936 does not count allowed cross-slot requests6937 does not count allowed non-cross-slot requests6938 skips count for non-cross-slot requests6939 without active RequestStore6940 still runs cross-slot validation6941 latency6942 commands in the apdex6943 command: [:get, "foobar"]6944 measures requests we want in the apdex6945 command: ["GET", "foobar"]6946 measures requests we want in the apdex6947 with pipelined commands6948 measures requests that do not have blocking commands6949 raises error when keys are not from the same slot6950 commands not in the apdex6951 setup: [["rpush", "foobar", 1]], command: ["brpop", "foobar", 0]6952 skips requests we do not want in the apdex6953 setup: [["rpush", "foobar", 1]], command: ["blpop", "foobar", 0]6954 skips requests we do not want in the apdex6955 setup: [["rpush", "{abc}foobar", 1]], command: ["brpoplpush", "{abc}foobar", "{abc}bazqux", 0]6956 skips requests we do not want in the apdex6957 setup: [["rpush", "{abc}foobar", 1]], command: ["brpoplpush", "{abc}foobar", "{abc}bazqux", 0]6958 skips requests we do not want in the apdex6959 setup: [["zadd", "foobar", 1, "a"]], command: ["bzpopmin", "foobar", 0]6960 skips requests we do not want in the apdex6961 setup: [["zadd", "foobar", 1, "a"]], command: ["bzpopmax", "foobar", 0]6962 skips requests we do not want in the apdex6963 setup: [["xadd", "mystream", 1, "myfield", "mydata"]], command: ["xread", "block", 1, "streams", "mystream", "0-0"]6964 skips requests we do not want in the apdex6965 setup: [["xadd", "foobar", 1, "myfield", "mydata"], ["xgroup", "create", "foobar", "mygroup", 0]], command: ["xreadgroup", "group", "mygroup", "myconsumer", "block", 1, "streams", "foobar", "0-0"]6966 skips requests we do not want in the apdex6967 setup: [], command: ["command"]6968 skips requests we do not want in the apdex6969 with pipelined commands6970 skips requests that have blocking commands6971Gitlab::GithubImport::Importer::IssueImporter6972 .import_if_issue6973 imports an issuable if it is a regular issue6974 does not import the issuable if it is a pull request6975 #execute6976 when :issues_full_test_search is disabled6977 creates the issue and assignees but does not update search data6978 when :issues_full_text_search feature is enabled6979 creates the issue and assignees and updates_search_data6980 #create_issue6981 creates issues with a work item type id6982 produces a valid Issue6983 returns the ID of the created issue6984 when the issue author could be found6985 creates the issue with the found author as the issue author6986 when the issue author could not be found6987 creates the issue with the project creator as the issue author6988 when the import fails due to a foreign key error6989 does not raise any errors6990 #create_assignees6991 inserts the issue assignees in bulk6992Gitlab::Cleanup::OrphanJobArtifactFiles6993 passes on dry_run6994 errors when invalid niceness is given6995 passes correct arguments to ionice6996 finds job artifacts on disk6997 does not find pipeline artifacts on disk6998 stops when limit is reached6999 cleans even if batch is not full7000 cleans in batches7001Gitlab::Ci::JwtV27002 is expected to be a kind of Gitlab::Ci::Jwt7003 #payload7004 has correct values for the standard JWT attributes7005 includes user identities when enabled7006 does not include user identities when disabled7007 when given an aud7008 uses that aud in the payload7009 custom claims7010 runner_id7011 is the ID of the runner executing the job7012 when build is not associated with a runner7013 is nil7014 runner_environment7015 when runner is gitlab-hosted7016 is gitlab-hosted7017 when runner is self-hosted7018 is self-hosted7019 when build is not associated with a runner7020 is nil7021 sha7022 is the commit revision the project is built for7023Gitlab::Ci::RunnerReleases7024 caching behavior7025 when request results in timeout7026 behaves like requests that follow cache status7027 almost 5 seconds later7028 returns cached releases7029 after 5 seconds7030 checks new releases7031 behaves like a service implementing exponential backoff7032 performs exponential backoff on requests7033 behaves like a service implementing exponential backoff7034 performs exponential backoff on requests7035 when response is nil7036 behaves like requests that follow cache status7037 almost 5 seconds later7038 returns cached releases7039 after 5 seconds7040 checks new releases7041 behaves like a service implementing exponential backoff7042 performs exponential backoff on requests7043 when response is not nil7044 behaves like requests that follow cache status7045 almost 1 day later7046 returns cached releases7047 after 1 day7048 checks new releases7049 #releases7050 when response is nil7051 returns nil7052 when response is not nil7053 returns parsed and sorted Gitlab::VersionInfo objects7054 when fetching runner releases is disabled7055 returns nil7056 when response contains unexpected input type7057 is expected to be nil7058 when response contains unexpected input array7059 is expected to be nil7060 #releases_by_minor7061 when response is nil7062 returns nil7063 when response is not nil7064 returns parsed and grouped Gitlab::VersionInfo objects7065 when fetching runner releases is disabled7066 returns nil7067 when response contains unexpected input type7068 is expected to be nil7069 when response contains unexpected input array7070 is expected to be nil7071 #enabled?7072 is expected to be enabled7073 when fetching runner releases is disabled7074 is expected not to be enabled7075Gitlab::Ci::Config::Entry::Ports7076 when configuration is valid7077 #valid?7078 is valid7079 #value7080 returns valid array7081 when configuration is invalid7082 #valid?7083 is invalid7084 when any of the ports7085 have the same name7086 #valid?7087 is invalid7088 have the same port7089 #valid?7090 is invalid7091BulkUpdateIntegrationService7092 works with batch as an ActiveRecord::Relation7093 works with batch as an array of ActiveRecord objects7094 with inherited integration7095 updates the integration7096 does not change the created_at timestamp7097 sets the updated_at timestamp to the current time7098 with integration with data fields7099 updates the data fields from the integration7100 does not change the created_at timestamp7101 sets the updated_at timestamp to the current time7102 with different foreign key of data_fields7103 works with batch as an array of ActiveRecord objects7104LooseForeignKeys::DeletedRecord7105 class methods7106 .load_batch_for_table7107 loads records and orders them by creation date7108 supports configurable batch size7109 .mark_records_processed7110 updates all records7111 .reschedule7112 reschedules all records7113 .increment_attempts7114 increaments the cleanup_attempts column7115 sliding_list partitioning7116 next_partition_if callback7117 when the partition is empty7118 is expected to eq false7119 when the partition has records7120 is expected to eq false7121 when the first record of the partition is older than PARTITION_DURATION7122 is expected to eq true7123 detach_partition_if callback7124 when the partition contains unprocessed records7125 is expected to eq false7126 when the partition contains only processed records7127 is expected to eq true7128 the behavior of the strategy7129 moves records to new partitions as time passes7130Resolvers::UserNotesCountResolver7131 #resolve7132 is expected to have nullable GraphQL type Int7133 when counting notes from an issue7134 when counting notes from a public issue7135 returns the number of non-system notes for the issue7136 when a user has permission to view notes7137 returns the number of notes for the issue7138 when a user does not have permission to view notes7139 generates an error7140 when counting notes from a merge request7141 when counting notes from a public merge request7142 returns the number of non-system notes for the merge request7143 when a user has permission to view notes7144 returns the number of notes for the merge request7145 when a user does not have permission to view notes7146 generates an error7147ErrorTracking::ListProjectsService7148 #execute7149 with authorized user7150 set model attributes to new values7151 uses new api_url and token7152 masked param token7153 with the current api host7154 uses database token7155 with a new api host7156 returns an error7157 resets the token7158 with invalid url7159 returns error7160 when list_sentry_projects returns projects7161 returns the projects7162 with unauthorized user7163 returns error7164 with error tracking disabled7165 ignores enabled flag7166 error_tracking_setting is nil7167 builds a new error_tracking_setting7168Gitlab::GithubImport::Importer::Events::CrossReferenced7169 with Issue7170 behaves like import cross-referenced event7171 when referenced in other issue7172 creates expected note7173 when referenced in pull request7174 creates expected note7175 when referenced in out of project issue/pull_request7176 does not create expected note7177 with MergeRequest7178 behaves like import cross-referenced event7179 when referenced in other issue7180 creates expected note7181 when referenced in pull request7182 creates expected note7183 when referenced in out of project issue/pull_request7184 does not create expected note7185Gitlab::Jira::Dvcs7186 .encode_slash7187 replaces slash character7188 ignores path without slash7189 .decode_slash7190 replaces slash character7191 ignores path without slash7192 .encode_project_name7193 root group7194 returns project path7195 nested group7196 returns encoded project full path7197 .restore_full_path7198 project name is an encoded full path7199 returns decoded project path7200 project name is not an encoded full path7201 assumes project belongs to root namespace and returns full project path based on passed in namespace7202Ci::TestFailureHistoryService7203 #execute7204 when pipeline has failed builds with test reports7205 creates unit test failures records7206 assigns partition_id to Ci::UnitTestFailure7207 when pipeline is not for the default branch7208 does not persist data7209 when test failure data have already been persisted with the same exact attributes7210 does not fail but does not persist new data7211 when number of failed unit tests exceed the limit7212 does not persist data7213 when number of failed unit tests across multiple builds exceed the limit7214 does not persist data7215 when test failure data have duplicates within the same payload (happens when the JUnit report has duplicate unit test names but have different failures)7216 does not fail but does not persist duplicate data7217 when pipeline has no failed builds with test reports7218 does not persist data7219 #should_track_failures?7220 when feature flag is enabled and pipeline ref is the default branch7221 is expected to eq true7222 when pipeline is not equal to the project default branch7223 is expected to eq false7224 when total number of builds with failed tests exceeds the max number of trackable failures7225 is expected to eq false7226 #async7227 when service should track failures7228 enqueues the worker when #perform_if_needed is called7229 when service should not track failures7230 does not enqueue the worker when #perform_if_needed is called7231projects/pipelines/show7232 when pipeline has errors7233 shows errors7234 does not render the pipeline tabs7235 renders the pipeline editor button with correct link for users who can view7236 renders the pipeline editor button with correct link for users who can not view7237 when pipeline is valid7238 does not show errors7239 renders the pipeline tabs7240MergeRequests::AddSpentTimeService7241 #execute7242 creates a new timelog with the specified duration and summary7243 creates a system note with the time added7244 saves usage data7245 is more efficient than using the full update-service7246 when duration is nil7247 does not create a timelog with the specified duration7248TokenAuthenticatableStrategies::Base7249 #token_fields7250 includes the token field7251 with expires_at option7252 includes the token_expires_at field7253 #format_token7254 returns the origin token7255 when format_with_prefix option is provided7256 with symbol7257 returns a formatted token from the format_with_prefix option7258 with something else7259 raise not implemented7260 .fabricate7261 when digest stragegy is specified7262 fabricates digest strategy object7263 when encrypted strategy is specified7264 fabricates encrypted strategy object7265 when no strategy is specified7266 fabricates insecure strategy object7267 when incompatible options are provided7268 raises an error7269Sidebars::UserSettings::Menus::GpgKeysMenu7270 # order random7271 behaves like User settings menu #render? method7272 #render?7273 when user is logged in7274 renders7275 when user is not logged in7276 does not render7277 behaves like User settings menu7278 does not contain any sub menu7279 renders the correct link7280 renders the correct title7281 renders the correct icon7282 defines correct active route7283UsersStarProjectsFinder7284 #execute7285 as same user7286 is expected to contain exactly #<UsersStarProject id: 2, project_id: 1012, user_id: 1405, created_at: "2023-06-02 06:43:46.182005000 +0000", updated_at: "2023-06-02 06:43:46.182005000 +0000"> and #<UsersStarProject id: 1, project_id: 1012, user_id: 1403, created_at: "2023-06-02 06:43:46.085620000 +0000", updated_at: "2023-06-02 06:43:46.085620000 +0000">7287 as other user7288 is expected to contain exactly #<UsersStarProject id: 4, project_id: 1013, user_id: 1407, created_at: "2023-06-02 06:43:46.772019000 +0000", updated_at: "2023-06-02 06:43:46.772019000 +0000">7289 as no user7290 is expected to contain exactly #<UsersStarProject id: 7, project_id: 1014, user_id: 1412, created_at: "2023-06-02 06:43:47.479548000 +0000", updated_at: "2023-06-02 06:43:47.479548000 +0000">7291 with active users only7292 ignores stars of non-active users7293Gitlab::Email::Message::InProductMarketing::Team7294 public methods7295 series: 07296 returns value for series7297 #progress7298 on gitlab.com7299 is expected to include "This is email 2 of 4 in the Team series"7300 not on gitlab.com7301 is expected to include "This is email 2 of 4 in the Team series" and "http://localhost/-/profile/notifications"7302 series: 17303 returns value for series7304 #progress7305 on gitlab.com7306 is expected to include "This is email 3 of 4 in the Team series"7307 not on gitlab.com7308 is expected to include "This is email 3 of 4 in the Team series" and "http://localhost/-/profile/notifications"7309 with series 27310 returns value for series7311 #progress7312 on gitlab.com7313 is expected to include "This is email 4 of 4 in the Team series"7314 not on gitlab.com7315 is expected to include "This is email 4 of 4 in the Team series" and "http://localhost/-/profile/notifications"7316layouts/terms7317 behaves like a layout which reflects the application theme setting7318 as a themed layout7319 when no theme is explicitly selected7320 renders with the default theme7321 when user is authenticated & has selected a specific theme7322 chosen_theme: #<struct Gitlab::Themes::Theme id=1, name="Indigo", css_class="ui-indigo", css_filename="theme_indigo", primary_color="#292961">7323 renders with the Indigo theme7324 chosen_theme: #<struct Gitlab::Themes::Theme id=6, name="Light Indigo", css_class="ui-light-indigo", css_filename="theme_light_indigo", primary_color="#4b4ba3">7325 renders with the Light Indigo theme7326 chosen_theme: #<struct Gitlab::Themes::Theme id=4, name="Blue", css_class="ui-blue", css_filename="theme_blue", primary_color="#1a3652">7327 renders with the Blue theme7328 chosen_theme: #<struct Gitlab::Themes::Theme id=7, name="Light Blue", css_class="ui-light-blue", css_filename="theme_light_blue", primary_color="#2261a1">7329 renders with the Light Blue theme7330 chosen_theme: #<struct Gitlab::Themes::Theme id=5, name="Green", css_class="ui-green", css_filename="theme_green", primary_color="#0d4524">7331 renders with the Green theme7332 chosen_theme: #<struct Gitlab::Themes::Theme id=8, name="Light Green", css_class="ui-light-green", css_filename="theme_light_green", primary_color="#156b39">7333 renders with the Light Green theme7334 chosen_theme: #<struct Gitlab::Themes::Theme id=9, name="Red", css_class="ui-red", css_filename="theme_red", primary_color="#691a16">7335 renders with the Red theme7336 chosen_theme: #<struct Gitlab::Themes::Theme id=10, name="Light Red", css_class="ui-light-red", css_filename="theme_light_red", primary_color="#a62e21">7337 renders with the Light Red theme7338 chosen_theme: #<struct Gitlab::Themes::Theme id=2, name="Gray", css_class="ui-gray", css_filename="theme_gray", primary_color="#303030">7339 renders with the Gray theme7340 chosen_theme: #<struct Gitlab::Themes::Theme id=3, name="Light Gray", css_class="ui-light-gray", css_filename="theme_light_gray", primary_color="#666">7341 renders with the Light Gray theme7342 chosen_theme: #<struct Gitlab::Themes::Theme id=11, name="Dark Mode (alpha)", css_class="gl-dark", css_filename=nil, primary_color="#303030">7343 renders with the Dark Mode (alpha) theme7344Admin::AbuseReportDetailsEntity7345 # order random7346 #as_json7347 exposes correct attributes7348 correctly exposes `user`7349 correctly exposes `reporter`7350 correctly exposes `report`7351 users plan7352 does not include the plan7353 when on .com7354 includes the plan7355 users credit card7356 when the user has no verified credit card7357 does not expose the credit card7358 when the user does have a verified credit card7359 exposes the credit card7360 when on ee7361 includes the path to the admin card matches page7362Board7363 relationships7364 is expected to belong to project required: false7365 is expected to have many lists order => {:list_type=>:asc, :position=>:asc} dependent => delete_all inverse_of => board7366 is expected to have many destroyable_lists order => {:list_type=>:asc, :position=>:asc} inverse_of => board7367 validations7368 is expected to validate that :name cannot be empty/falsy7369 is expected to validate that :project cannot be empty/falsy7370 constants7371 is expected to be a kind of Integer7372 #order_by_name_asc7373 returns in case-insensitive alphabetical order and then by ascending id7374 #first_board7375 return the first case-insensitive alphabetical board as a relation7376 raises an error when find is done on a non-existent record7377 #disabled_for?7378 for group board7379 behaves like board disabled_for?7380 when current user cannot create non backlog issues7381 is expected to eq true7382 when user can create backlog issues7383 is expected to eq false7384 when block_issue_repositioning is enabled7385 is expected to eq true7386 for project board7387 behaves like board disabled_for?7388 when current user cannot create non backlog issues7389 is expected to eq true7390 when user can create backlog issues7391 is expected to eq false7392 when block_issue_repositioning is enabled7393 is expected to eq true7394Users::DismissProjectCalloutService7395 #execute7396 sets the project_id7397 behaves like dismissing user callout7398 creates a new user callout7399 returns a user callout7400 sets the dismissed_at attribute to current time7401 updates an existing callout dismissed_at time7402 does not update an invalid record with dismissed_at time7403Tooling::Mappings::GraphqlBaseTypeMappings7404 # order random7405 #filename_to_class_name7406 returns the correct class name7407 #types_hierarchies7408 when no types are implementing other types7409 returns nothing7410 when types are implementing other types7411 when FOSS7412 returns only FOSS types7413 when EE7414 returns the correct children types7415 when JH7416 returns the correct children types7417 #filename_to_spec_filename7418 when the spec file exists7419 returns the correct spec filename7420 when the spec file does not exist7421 returns nil7422 #execute7423 when no GraphQL files were changed7424 does not change the output file7425 when some GraphQL files were changed7426 when none of those GraphQL types are included in other GraphQL types7427 does not change the output file7428 when the GraphQL types are included in other GraphQL types7429 writes the correct specs in the output7430 #filter_files7431 when no files were changed7432 returns an empty array7433 when GraphQL files were changed7434 returns the path to the GraphQL files7435 when files are deleted7436 returns an empty array7437Gitlab::Email::IncomingEmail7438 # order random7439 behaves like common email methods7440 behaves like enabled? method for email7441 value: false, address: nil, result: false7442 is expected to eq false7443 value: false, address: "replies+%{key}@example.com", result: false7444 is expected to eq false7445 value: true, address: nil, result: false7446 is expected to eq false7447 value: true, address: "replies+%{key}@example.com", result: true7448 is expected to eq true7449 behaves like supports_wildcard? method for email7450 when address contains the wildcard placeholder7451 confirms that wildcard is supported7452 when address doesn't contain the wildcard placeholder7453 returns that wildcard is not supported7454 when address is nil7455 returns that wildcard is not supported7456 behaves like key_from_fallback_message_id method for email7457 returns reply key7458 behaves like supports_issue_creation? method for email7459 enabled_value: false, supports_wildcard_value: false, result: false7460 is expected to eq false7461 enabled_value: false, supports_wildcard_value: true, result: false7462 is expected to eq false7463 enabled_value: true, supports_wildcard_value: false, result: false7464 is expected to eq false7465 enabled_value: true, supports_wildcard_value: true, result: true7466 is expected to eq true7467 behaves like reply_address method for email7468 returns the address with an interpolated reply key7469 behaves like unsubscribe_address method for email7470 returns the address with interpolated reply key and unsubscribe suffix7471 behaves like scan_fallback_references method for email7472 returns reply key7473 self.key_from_address7474 returns reply key7475 does not match emails with extra bits7476 when a custom wildcard address is used7477 finds key if email matches address pattern7478Namespaces::ProcessSyncEventsWorker7479 is labeled as idempotent7480 performs multiple times sequentially without raising an exception7481 deduplication7482 has the `until_executed` deduplicate strategy7483 has the option to reschedule once if deduplicated and a TTL of 1 minute7484 expect the job to enqueue itself again if there was more items to be processed7485 #perform7486 consumes all sync events7487 syncs namespace hierarchy traversal ids7488 logs the service result7489Todos::AllowedTargetFilterService7490 #execute7491 with reporter user7492 behaves like allowed Todos filter7493 is expected to contain exactly #<Todo id: 50, user_id: 1441, project_id: 1020, target_id: 100, target_type: "MergeRequest", author_i...-02 06:44:02.746003825 +0000", commit_id: nil, group_id: nil, resolved_by_action: nil, note_id: nil>, #<Todo id: 42, user_id: 1441, project_id: 1020, target_id: 184, target_type: "Issue", author_id: 1438...-02 06:44:02.083572007 +0000", commit_id: nil, group_id: nil, resolved_by_action: nil, note_id: nil>, #<Todo id: 44, user_id: 1441, project_id: 1020, target_id: 185, target_type: "Issue", author_id: 1438...-02 06:44:02.198865916 +0000", commit_id: nil, group_id: nil, resolved_by_action: nil, note_id: nil>, #<Todo id: 45, user_id: 1441, project_id: 1020, target_id: 184, target_type: "Issue", author_id: 1438...-02 06:44:02.247238341 +0000", commit_id: nil, group_id: nil, resolved_by_action: nil, note_id: 203>, and #<Todo id: 47, user_id: 1441, project_id: 1020, target_id: 1, target_type: "DesignManagement::Design"...-02 06:44:02.376324759 +0000", commit_id: nil, group_id: nil, resolved_by_action: nil, note_id: nil>7494 with guest user7495 behaves like allowed Todos filter7496 is expected to contain exactly #<Todo id: 42, user_id: 1441, project_id: 1020, target_id: 184, target_type: "Issue", author_id: 1438...-02 06:44:02.083572007 +0000", commit_id: nil, group_id: nil, resolved_by_action: nil, note_id: nil> and #<Todo id: 47, user_id: 1441, project_id: 1020, target_id: 1, target_type: "DesignManagement::Design"...-02 06:44:02.376324759 +0000", commit_id: nil, group_id: nil, resolved_by_action: nil, note_id: nil>7497 with a non-member user7498 behaves like allowed Todos filter7499 is expected to contain exactly7500NoteDiffFile7501 associations7502 is expected to belong to diff_note required: false7503 validations7504 is expected to validate that :diff_note cannot be empty/falsy7505 .referencing_sha7506 finds note diff files by project and sha7507 excludes note diff files with the wrong project7508 excludes note diff files with the wrong sha7509Gitlab::Prometheus::QueryVariables7510 .call7511 is expected to include {:ci_environment_slug => "environment14"}7512 is expected to include {:ci_project_name => "Project-1060 Name"}7513 is expected to include {:ci_project_namespace => "Sidney Jones1689"}7514 is expected to include {:ci_project_path => "namespace705/project-1060"}7515 is expected to include {:ci_environment_name => "environment14"}7516 is expected to include {:environment_filter => "container_name!=\"POD\",environment=\"environment14\""}7517 without deployment platform7518 is expected to include {:kube_namespace => ""}7519 with deployment platform7520 with project cluster7521 is expected to include {:kube_namespace => "project-1060-1026-environment14"}7522 with group cluster7523 is expected to include {:kube_namespace => "project-1060-1026-environment14"}7524 __range7525 when start_time and end_time are present7526 is expected to include {:__range => "28800s"}7527 when start_time and end_time are not present7528 is expected to include {:__range => nil}7529 when end_time is not present7530 is expected to include {:__range => nil}7531 when start_time is not present7532 is expected to include {:__range => nil}7533IssueAssignee7534 associations7535 is expected to belong to issue class_name => Issue required: false7536 is expected to belong to assignee class_name => User required: false7537 validations7538 is expected to validate that :assignee is case-sensitively unique within the scope of :issue_id7539 scopes7540 in_projects7541 returns issue assignees for given project7542 on_issues7543 returns issue assignees for given issues7544SystemNotes::BaseService7545 #noteable7546 is expected to eq #<Double (anonymous)>7547 returns nil if no arguments are given7548 #project7549 is expected to eq #<Double (anonymous)>7550 returns nil if no arguments are given7551 #author7552 is expected to eq #<Double (anonymous)>7553 returns nil if no arguments are given7554Packages::Go::Module7555 #path_valid?7556 with root path7557 with major version 07558 returns true7559 with major version 17560 returns true7561 with major version 27562 returns false7563 with path ./v27564 with major version 07565 returns false7566 with major version 17567 returns false7568 with major version 27569 returns true7570 #gomod_valid?7571 with good gomod7572 returns true7573 with bad gomod7574 returns false7575 with empty gomod7576 returns false7577Gitlab::Config::Entry::Validatable7578 .validator7579 returns validator7580 returns only one validator to mitigate leaks7581 when validating entry instance7582 when attribute is valid7583 instance of validator is valid7584 when attribute is not valid7585 instance of validator is invalid7586Gitlab::Sourcegraph7587 .feature_conditional?7588 when feature is enabled globally7589 is expected to be falsey7590 when feature is enabled only to a resource7591 is expected to be truthy7592 .feature_available?7593 when feature is enabled globally7594 is expected to be truthy7595 when feature is enabled only to a resource7596 is expected to be truthy7597 when feature is disabled7598 is expected to be falsey7599 .feature_enabled?7600 when feature is enabled globally7601 is expected to be truthy7602 when feature is enabled only to a resource7603 for the same resource7604 is expected to be truthy7605 for a different resource7606 is expected to be falsey7607Sidebars::Projects::Menus::MonitorMenu7608 #render?7609 monitor_level: enabled, render: true7610 renders when expected to7611 monitor_level: disabled, render: false7612 renders when expected to7613 when menu does not have any renderable menu items7614 returns false7615 when menu has menu items7616 returns true7617 #title7618 returns "Monitor"7619 #extra_container_html_options7620 returns "shortcuts-monitor"7621 Menu items7622 Error Tracking7623 behaves like access rights checks7624 is expected not to be nil7625 when the user does not have access7626 is expected to be nil7627 Alert Management7628 behaves like access rights checks7629 is expected not to be nil7630 when the user does not have access7631 is expected to be nil7632 Incidents7633 behaves like access rights checks7634 is expected not to be nil7635 when the user does not have access7636 is expected to be nil7637Gitlab::Database::Migrations::Observers::QueryStatistics7638 #before7639 with pgss available7640 resets pg_stat_statements7641 without pgss available7642 executes nothing7643 #record7644 with pgss available7645 fetches data from pg_stat_statements and stores on the observation7646 without pgss available7647 executes nothing7648API::Entities::Ml::Mlflow::Run7649 # order random7650 presents params correctly7651 presents metrics correctly7652 presents the metrics7653 has run key7654 presents the params7655 has the id7656 when candidate has no metrics7657 returns empty data7658 when candidate has no params7659 data is empty7660Resolvers::BlobsResolver7661 .resolver_complexity7662 adds one per path being resolved7663 #resolve7664 when unauthorized7665 generates an error7666 when authorized7667 using no filter7668 returns nothing7669 using paths filter7670 returns the specified blobs for HEAD7671 specifying a non-existent blob7672 returns nothing7673 specifying a different ref7674 returns the specified blobs for that ref7675 when specifying HEAD ref7676 returns the specified blobs for HEAD7677 when specifying an invalid ref7678 raises an ArgumentError7679 when passing an empty ref7680 raises an ArgumentError7681UpdateHighestRoleWorker7682 #perform7683 when user is not found7684 does not update or deletes any highest role7685 when user is found7686 when user is active and not internal7687 when user highest role exists7688 updates the highest role for the user7689 when user highest role does not exist7690 creates the highest role for the user7691 when user is either inactive or internal7692 additional_attributes: {:state=>"blocked"}7693 deletes highest role7694 additional_attributes: {:user_type=>:alert_bot}7695 deletes highest role7696 when user highest role does not exist7697 does not delete a highest role7698Gitlab::Database::Count::ExactCountStrategy7699 #count7700 counts all models7701 returns default value if count times out7702Users::MergeRequestInteraction7703 declarative policy delegation7704 delegates to the merge request7705 #can_merge?7706 when the user cannot merge7707 is expected not to be can merge7708 when the user can merge7709 is expected to be can merge7710 #can_update?7711 when the user cannot update the MR7712 is expected not to be can update7713 when the user can update the MR7714 is expected to be can update7715 #review_state7716 when the user has not been asked to review the MR7717 is expected to be nil7718 implies not reviewed7719 when the user has been asked to review the MR7720 implies not reviewed7721 when the user has provided a review7722 is expected to eq "reviewed"7723 implies reviewed7724 #approved?7725 when the user has not approved the MR7726 is expected not to be approved7727 when the user has approved the MR7728 is expected to be approved7729Mutations::Environments::Delete7730 # order random7731 #resolve7732 when destroying the environment succeeds7733 returns no errors7734 deletes the environment7735 when the mutation is not authorized7736 returns errors7737 when destroying the environment fails7738 returns errors7739 when user is reporter who does not have permission to access the environment7740 raises an error7741Packages::Debian::CleanupDanglingPackageFilesWorker7742 # order random7743 #perform7744 when debian_packages flag is disabled7745 does nothing7746 with mocked service returning success7747 calls MarkPackageFilesForDestructionService7748 with mocked service returning error7749 ignore error7750 when the service raises an error7751 logs exception7752 with valid parameters7753 behaves like an idempotent worker7754 is labeled as idempotent7755 performs multiple times sequentially without raising an exception7756 mark dangling package files as pending destruction7757Mutations::Issues::Move7758 #resolve7759 raises an error if the resource is not accessible to the user7760 when user does not have permissions7761 returns error message7762 when user has sufficient permissions7763 moves issue7764Gitlab::GithubImport::MilestoneFinder7765 #id_for7766 with a cache in place7767 returns the milestone ID of the given issuable7768 returns nil for an empty cache key7769 returns nil for an issuable with a non-existing milestone7770 without a cache in place7771 returns nil7772 #build_cache7773 builds the cache of all project milestones7774 #cache_key_for7775 returns the cache key for an IID7776API::Helpers::Authentication7777 class methods7778 .authenticate_with7779 sets namespace_inheritable :authentication to correctly when body is empty7780 sets namespace_inheritable :authentication to correctly when body is not empty7781 helper methods7782 #token_from_namespace_inheritable7783 with no allowed authentication strategies7784 behaves like an anonymous request7785 returns nil7786 with no located credentials7787 behaves like an anonymous request7788 returns nil7789 with one set of located credentials7790 when the credentials contain a valid token7791 behaves like an authenticated request7792 returns the token7793 when the credentials do not contain a valid token7794 behaves like an unauthorized request7795 behaves like stops early7796 calls #unauthorized!7797 with multiple located credentials7798 behaves like stops early7799 calls #bad_request!7800 when a resolver raises UnauthorizedError7801 behaves like an unauthorized request7802 behaves like stops early7803 calls #unauthorized!7804 #access_token_from_namespace_inheritable7805 returns #token_from_namespace_inheritable if it is a personal access token7806 returns nil if #token_from_namespace_inheritable is not a personal access token7807 #ci_build_from_namespace_inheritable7808 returns #token_from_namespace_inheritable if it is a ci build7809 returns nil if #token_from_namespace_inheritable is not a ci build7810 #user_from_namespace_inheritable7811 returns #token_from_namespace_inheritable if it is a deploy token7812 returns #token_from_namespace_inheritable.user if the token is not a deploy token7813 falls back to #find_user_from_warden if #token_from_namespace_inheritable.user is nil7814 falls back to #find_user_from_warden if #token_from_namespace_inheritable is nil7815LooseForeignKeys::ProcessDeletedRecordsService7816 # order random7817-- create_table(:_test_loose_fk_parent_table_1)7818 -> 0.0027s7819-- create_table(:_test_loose_fk_parent_table_2)7820 -> 0.0027s7821-- create_table(:_test_loose_fk_child_table_1_1)7822 -> 0.0023s7823-- create_table(:_test_loose_fk_child_table_1_2)7824 -> 0.0022s7825-- create_table(:_test_loose_fk_child_table_2_1)7826 -> 0.0020s7827-- execute("CREATE TRIGGER _test_loose_fk_parent_table_1_loose_fk_trigger AFTER DELETE ON _test_loose_fk_parent_table_1 REFERENCING OLD TABLE AS old_table FOR EACH STATEMENT EXECUTE FUNCTION insert_into_loose_foreign_keys_deleted_records();")7828 -> 0.0010s7829-- execute("CREATE TRIGGER _test_loose_fk_parent_table_2_loose_fk_trigger AFTER DELETE ON _test_loose_fk_parent_table_2 REFERENCING OLD TABLE AS old_table FOR EACH STATEMENT EXECUTE FUNCTION insert_into_loose_foreign_keys_deleted_records();")7830 -> 0.0008s7831 #execute7832 cleans up all rows7833 returns stats for records cleaned up7834 records the Apdex as success: true7835 records the error rate as error: false7836 when the amount of records to clean up exceeds BATCH_SIZE7837 cleans up everything over multiple batches7838 when the amount of records to clean up exceeds the total MAX_DELETES7839 cleans up MAX_DELETES and leaves the rest for the next run7840 records the Apdex as success: false7841 when cleanup raises an error7842 records the error rate as error: true and does not increment apdex7843-- drop_table(:_test_loose_fk_parent_table_1)7844 -> 0.0020s7845-- drop_table(:_test_loose_fk_parent_table_2)7846 -> 0.0016s7847-- drop_table(:_test_loose_fk_child_table_1_1)7848 -> 0.0015s7849-- drop_table(:_test_loose_fk_child_table_1_2)7850 -> 0.0019s7851-- drop_table(:_test_loose_fk_child_table_2_1)7852 -> 0.0026s7853Groups::AutoDevopsService#execute7854 when user does not have enough privileges7855 raises exception7856 when user has enough privileges7857 updates group auto devops enabled accordingly7858 when group has projects7859 reflects changes on projects7860 when group has subgroups7861 reflects changes on subgroups7862 when subgroups have projects7863 reflects changes on projects7864Projects::AllMergeRequestsCountService7865 behaves like a counter caching service7866 #count7867 caches the count7868 #refresh_cache7869 refreshes the cache7870 #delete_cache7871 removes the cache7872 #uncached_count7873 does not cache the count7874 #count7875 returns the number of all merge requests7876Groups::GroupLinks::UpdateService#execute7877 updates existing link7878 updates project permissions7879 executes UserProjectAccessChangedService7880 with only param not requiring authorization refresh7881 does not execute UserProjectAccessChangedService7882Gitlab::GithubImport::Importer::PullRequests::AllMergedByImporter7883 # order random7884 is expected to includes the Gitlab::GithubImport::ParallelScheduling module7885 #collection_method7886 is expected to eq :pull_requests_merged_by7887 #each_object_to_import7888 fetches the merged pull requests data7889 skips cached merge requests7890 #id_for_already_imported_cache7891 is expected to eq 17892 #sidekiq_worker_class7893 is expected to eq Gitlab::GithubImport::PullRequests::ImportMergedByWorker7894 #importer_class7895 is expected to eq Gitlab::GithubImport::Importer::PullRequests::MergedByImporter7896 #representation_class7897 is expected to eq Gitlab::GithubImport::Representation::PullRequest7898PagesDomainVerificationCronWorker7899 #perform7900 does nothing if the database is read-only7901 enqueues a PagesDomainVerificationWorker for domains needing verification7902 behaves like a pages cronjob scheduling jobs with context7903 schedules the renewal with a context7904 with RequestStore enabled7905 does not cause extra queries for multiple domains7906Ci::VariablesFinder7907 for a project7908 #initialize7909 without key filter7910 raises an error7911 #execute7912 with key filter7913 returns var17914 with key and environment_scope filter7915 returns var27916 for a group7917 #initialize7918 without key filter7919 raises an error7920 #execute7921 with key filter7922 returns var17923 with key and environment_scope filter7924 returns var27925Ci::DagPipelineEntity7926 #as_json7927 when pipeline is empty7928 contains stages7929 behaves like matches schema7930 matches schema7931 when pipeline has jobs7932 contains 3 stages7933 behaves like matches schema7934 matches schema7935 when pipeline has parallel jobs, DAG needs and GenericCommitStatus7936 performs the smallest number of queries7937 contains all the data7938 behaves like matches schema7939 matches schema7940Gitlab::Ci::YamlProcessor::FeatureFlags7941 when the actor is set7942 checks the feature flag using the given actor7943 returns the value of the block7944 restores the existing actor if any7945 restores the actor to nil after the block7946 when feature flag is checked outside the "with_actor" block7947 when yaml_processor_feature_flag_corectness is used7948 raises an error on dev/test environment7949 when on production7950 checks the feature flag without actor7951 when yaml_processor_feature_flag_corectness is not used7952 checks the feature flag without actor7953 when actor is explicitly nil7954 checks the feature flag without actor7955ImportIssuesCsvWorker7956 #perform7957 calls #execute on Issues::ImportCsvService and destroys upload7958 behaves like an idempotent worker7959 is labeled as idempotent7960 performs multiple times sequentially without raising an exception7961Pajamas::SpinnerComponent7962 class7963 has the correct custom class7964 color7965 by default7966 is dark7967 set to light7968 is light7969 inline7970 by default7971 renders a div7972 set to true7973 renders a span7974 label7975 by default7976 has "Loading" as aria-label7977 when set to something else7978 has a custom aria-label7979 size7980 has the correct size class7981Gitlab::Graphs::Commits7982 #commit_per_day7983 when range is only commits from today7984 is expected to eq 27985 when range is only commits from today7986 #commit_per_day7987 is expected to eq 27988 #duration7989 is expected to eq 07990 with commits from yesterday and today7991 #commit_per_day7992 is expected to eq 1.07993 #duration7994 is expected to eq 17995Gitlab::BranchPushMergeCommitAnalyzer7996 #get_merge_commit7997 returns correct merge commit SHA for each commit7998 when one parent has two children7999 returns correct merge commit SHA for each commit8000 when relevant_commit_ids is provided8001 returns correct merge commit8002Users::KeysCountService8003 behaves like a counter caching service8004 #count8005 caches the count8006 #refresh_cache8007 refreshes the cache8008 #delete_cache8009 removes the cache8010 #uncached_count8011 does not cache the count8012 #count8013 returns the number of SSH keys as an Integer8014 does not count signing keys8015 #uncached_count8016 returns the number of SSH keys8017 #cache_key8018 returns the cache key8019Ci::PrometheusMetrics::ObserveHistogramsService8020 with empty data8021 does not raise errors8022 observes metrics successfully8023 increments the metrics8024 returns an empty body and status code8025 with unknown histograms8026 raises ActiveRecord::RecordNotFound error8027Groups::MergeRequestsCountService8028 #relation_for_count8029 uses the MergeRequestsFinder to scope merge requests8030 behaves like a counter caching service with threshold8031 when cache is empty8032 refreshes cache if value over threshold8033 does not refresh cache if value under threshold8034 when cached count is under the threshold value8035 does not refresh cache8036 when cached count is over the threshold value8037 does not refresh cache8038Types::GroupMemberType8039 is expected to expose permissions using Types::PermissionTypes::Group8040 is expected to eq "GroupMember"8041 is expected to require graphql authorizations :read_group8042 has the expected fields8043ProjectCacheWorker8044 #perform8045 with a non-existing project8046 does nothing8047 with an existing project without a repository8048 updates statistics but does not refresh the method cashes8049 with an existing project8050 refreshes the method caches8051 with statistics disabled8052 does not update the project statistics8053 with statistics8054 updates the project statistics8055 with plain readme8056 refreshes the method caches8057 #update_statistics8058 when a lease could not be obtained8059 does not update the project statistics8060 when a lease could be obtained8061 updates the project statistics twice8062 behaves like an idempotent worker8063 is labeled as idempotent8064 performs multiple times sequentially without raising an exception8065 calls Projects::UpdateStatisticsService service twice8066Packages::Rpm::Metadatum8067 # order random8068 validations8069 is expected to validate that :package cannot be empty/falsy8070 is expected to validate that :epoch cannot be empty/falsy8071 is expected to validate that :release cannot be empty/falsy8072 is expected to validate that :summary cannot be empty/falsy8073 is expected to validate that :description cannot be empty/falsy8074 is expected to validate that :arch cannot be empty/falsy8075 is expected to validate that :epoch looks like an integer greater than or equal to 08076 is expected to validate that the length of :release is at most 1288077 is expected to validate that the length of :summary is at most 10008078 is expected to validate that the length of :description is at most 50008079 is expected to validate that the length of :arch is at most 2558080 is expected to validate that the length of :license is at most 10008081 is expected to validate that the length of :url is at most 10008082 #rpm_package_type8083 will not allow a package with a different package_type8084 relationships8085 is expected to belong to package required: false8086Gitlab::Zentao::Query8087 #issues8088 when params are empty8089 fills default params8090 when params contain valid options8091 fills params with standard of ZenTao8092 when params contain invalid options8093 fills default params with standard of ZenTao8094 #issue8095 returns issue object by client8096RuboCop::Cop::FeatureFlagUsage8097 # order random8098 when calling Feature.disabled?8099 registers offence8100 registers offence when called with type parameter8101 registers offence when called under global namespace8102 when calling Feature.enabled?8103 registers offence8104 registers offence when called with type parameter8105 registers offence when called under global namespace8106Gitlab::Database::PostgresConstraint8107 # order random8108 #valid8109 excludes invalid constraints8110 #not_including_column8111 only matches constraints not including the given column8112 #including_column8113 only matches constraints on the given column8114 #check_constraints8115 finds check constraints for the table8116 includes columns for the check constraints8117 #primary_or_unique_constraints8118 finds primary and unique constraints8119 #unique_constraints8120 finds the unique constraints for the table8121 #by_table_identifier8122 includes all constraints on the table8123 throws an error if the format is incorrect8124 #primary_key_constraints8125 finds the primary key constraint for the table8126 finds the columns in the primary key constraint8127projects/environments/terminal8128 when environment has external URL8129 shows external URL button8130 when environment does not have external URL8131 shows external URL button8132MergeRequests::ResolveTodosAfterApprovalWorker8133 calls TodoService#resolve_todos_for_target8134 behaves like subscribes to event8135 consumes the published event8136 behaves like an idempotent worker8137 is labeled as idempotent8138 performs multiple times sequentially without raising an exception8139 when the user does not exist8140 behaves like when object does not exist8141 logs and does not call TodoService#resolve_todos_for_target8142 when the merge request does not exist8143 behaves like when object does not exist8144 logs and does not call TodoService#resolve_todos_for_target8145Gitlab::GithubImport::Stage::ImportPullRequestsReviewsWorker8146 #import8147 imports all the pull request reviews8148shared/snippets/_snippet.html.haml8149 snippet with statistics8150 renders correct file count and tooltip8151 renders correct file count and tooltip when file_count is 18152 does not render file count when file count is 08153 snippet without statistics8154 does not render file count if statistics are not present8155Subscriptions::IssuableUpdated8156 is expected to have graphql arguments :issuable_id8157 is expected to eq Types::IssuableType8158 #resolve8159 initial subscription8160 returns nil8161 when user is unauthorized8162 raises an exception8163 when issue does not exist8164 raises an exception8165 subscription updates8166 returns the resolved object8167 when user is unauthorized8168 unsubscribes the user8169BulkImports::Projects::Pipelines::CommitNotesPipeline8170 # order random8171 #run8172 imports ci pipeline notes into destination project8173Ci::CompareAccessibilityReportsService8174 #execute8175 when head pipeline has accessibility reports8176 returns status and data8177 when base and head pipelines have accessibility reports8178 returns status and data8179Gitlab::GithubImport::Importer::CollaboratorsImporter8180 # order random8181 #sequential_import8182 imports each collaborator in sequence8183 #parallel?8184 when parallel option is true8185 is expected to be parallel8186 when parallel option is false8187 is expected not to be parallel8188 #parallel_import8189 imports each collaborator in parallel8190 when collaborator is already imported8191 doesn't run importer on it8192 #each_object_to_import8193 yields every direct collaborator who is not an outside collaborator to the supplied block8194 when a collaborator has been already imported8195 does not yield anything8196 #execute8197 when running in parallel mode8198 imports collaborators in parallel8199 when running in sequential mode8200 imports collaborators in sequence8201 #id_for_already_imported_cache8202 returns the ID of the given note8203Gitlab::UsageDataNonSqlMetrics8204 #add_metric8205 computes the metric value for given metric8206 .count8207 returns default value for count8208 .distinct_count8209 returns default value for distinct count8210 .estimate_batch_distinct_count8211 returns default value for estimate_batch_distinct_count8212 .sum8213 returns default value for sum8214 .histogram8215 returns default value for histogram8216 min/max methods8217 model: User(id: integer, email: string, encrypted_password: string, reset_password_token: string, reset_password_sent_at: datetime, remember_created_at: datetime, sign_in_count: integer, current_sign_in_at: datetime, last_sign_in_at: datetime, current_sign_in_ip: string, last_sign_in_ip: string, created_at: datetime, updated_at: datetime, name: string, admin: boolean, projects_limit: integer, failed_attempts: integer, locked_at: datetime, username: string, can_create_group: boolean, can_create_team: boolean, state: string, color_scheme_id: integer, password_expires_at: datetime, created_by_id: integer, last_credential_check_at: datetime, avatar: string, confirmation_token: string, confirmed_at: datetime, confirmation_sent_at: datetime, unconfirmed_email: string, hide_no_ssh_key: boolean, admin_email_unsubscribed_at: datetime, notification_email: string, hide_no_password: boolean, password_automatically_set: boolean, encrypted_otp_secret: string, encrypted_otp_secret_iv: string, encrypted_otp_secret_salt: string, otp_required_for_login: boolean, otp_backup_codes: text, public_email: string, dashboard: integer, project_view: integer, consumed_timestep: integer, layout: integer, hide_project_limit: boolean, note: text, unlock_token: string, otp_grace_period_started_at: datetime, external: boolean, incoming_email_token: string, auditor: boolean, require_two_factor_authentication_from_group: boolean, two_factor_grace_period: integer, last_activity_on: date, notified_of_own_activity: boolean, preferred_language: string, email_opted_in: boolean, email_opted_in_ip: string, email_opted_in_source_id: integer, email_opted_in_at: datetime, theme_id: integer, accepted_term_id: integer, feed_token: string, private_profile: boolean, roadmap_layout: integer, include_private_contributions: boolean, commit_email: string, group_view: integer, managing_group_id: integer, first_name: string, last_name: string, static_object_token: string, role: integer, user_type: integer, static_object_token_encrypted: text, otp_secret_expires_at: datetime_with_timezone, onboarding_in_progress: boolean, otp_secret: ), result: nil8218 returns nil8219 model: Issue(id: integer, title: string, author_id: integer, project_id: integer, created_at: datetime, updated_at: datetime, description: text, milestone_id: integer, iid: integer, updated_by_id: integer, weight: integer, confidential: boolean, due_date: date, moved_to_id: integer, lock_version: integer, title_html: text, description_html: text, time_estimate: integer, relative_position: integer, service_desk_reply_to: string, cached_markdown_version: integer, last_edited_at: datetime, last_edited_by_id: integer, discussion_locked: boolean, closed_at: datetime_with_timezone, closed_by_id: integer, state_id: integer, duplicated_to_id: integer, promoted_to_epic_id: integer, health_status: integer, external_key: string, sprint_id: integer, issue_type: integer, blocking_issues_count: integer, upvotes_count: integer, work_item_type_id: integer, namespace_id: integer, start_date: date), result: nil8220 returns nil8221 model: Deployment(id: integer, iid: integer, project_id: integer, environment_id: integer, ref: string, tag: boolean, sha: string, user_id: integer, deployable_type: string, created_at: datetime, updated_at: datetime, on_stop: string, status: integer, finished_at: datetime_with_timezone, cluster_id: integer, deployable_id: integer, archived: boolean), result: nil8222 returns nil8223 model: Project(id: integer, name: string, path: string, description: text, created_at: datetime, updated_at: datetime, creator_id: integer, namespace_id: integer, last_activity_at: datetime, import_url: string, visibility_level: integer, archived: boolean, avatar: string, merge_requests_template: text, star_count: integer, merge_requests_rebase_enabled: boolean, import_type: string, import_source: string, approvals_before_merge: integer, reset_approvals_on_push: boolean, merge_requests_ff_only_enabled: boolean, issues_template: text, mirror: boolean, mirror_last_update_at: datetime, mirror_last_successful_update_at: datetime, mirror_user_id: integer, shared_runners_enabled: boolean, runners_token: string, build_allow_git_fetch: boolean, build_timeout: integer, mirror_trigger_builds: boolean, pending_delete: boolean, public_builds: boolean, last_repository_check_failed: boolean, last_repository_check_at: datetime, only_allow_merge_if_pipeline_succeeds: boolean, has_external_issue_tracker: boolean, repository_storage: string, repository_read_only: boolean, request_access_enabled: boolean, has_external_wiki: boolean, ci_config_path: string, lfs_enabled: boolean, description_html: text, only_allow_merge_if_all_discussions_are_resolved: boolean, repository_size_limit: integer, printing_merge_request_link_enabled: boolean, auto_cancel_pending_pipelines: integer, service_desk_enabled: boolean, cached_markdown_version: integer, delete_error: text, last_repository_updated_at: datetime, disable_overriding_approvers_per_merge_request: boolean, storage_version: integer, resolve_outdated_diff_discussions: boolean, remote_mirror_available_overridden: boolean, only_mirror_protected_branches: boolean, pull_mirror_available_overridden: boolean, jobs_cache_index: integer, external_authorization_classification_label: string, mirror_overwrites_diverged_branches: boolean, pages_https_only: boolean, external_webhook_token: string, packages_enabled: boolean, merge_requests_author_approval: boolean, pool_repository_id: integer, runners_token_encrypted: string, bfg_object_map: string, detected_repository_languages: boolean, merge_requests_disable_committers_approval: boolean, require_password_to_approve: boolean, emails_disabled: boolean, max_pages_size: integer, max_artifacts_size: integer, pull_mirror_branch_prefix: string, remove_source_branch_after_merge: boolean, marked_for_deletion_at: date, marked_for_deletion_by_user_id: integer, autoclose_referenced_issues: boolean, suggestion_commit_message: string, project_namespace_id: integer, hidden: boolean), result: nil8224 returns nil8225Gitlab::ImportExport::AvatarRestorer8226 does not break if there is just a directory8227 with avatar8228 restores a project avatar8229 saves the avatar into the project8230Gitlab::Bullet::Exclusions8231 #execute8232 with preferred method of path and method name8233 behaves like loads exclusion results8234 is expected to match [["_path_", "_method_"]]8235 with file pattern8236 behaves like loads exclusion results8237 is expected to match [["_file_pattern_"]]8238 with file name and line range8239 behaves like loads exclusion results8240 is expected to match [["file_name.rb", 5..10]]8241 without exclusions8242 behaves like loads exclusion results8243 is expected to match [[]]8244 without exclusions key in config8245 behaves like loads exclusion results8246 is expected to match []8247 when config file does not exist8248 provides an empty array for exclusions8249 with a Symbol8250 raises an exception8251 #validate_paths!8252 when validating scenarios8253 when using paths with method name8254 when source file for exclusion exists8255 is expected not to raise Exception8256 when source file for exclusion does not exist8257 is expected to raise RuntimeError8258 when using path only8259 when source file for exclusion exists8260 is expected not to raise Exception8261 when source file for exclusion does not exist8262 is expected to raise RuntimeError8263 when path_with_method is false for a file pattern8264 is expected not to raise Exception8265Ci::ChangeVariableService8266 #execute8267 when creating a variable8268 persists a variable8269 when updating a variable8270 updates a variable8271 when the variable does not exist8272 raises a record not found error8273 when destroying a variable8274 destroys a variable8275 when the variable does not exist8276 raises a record not found error8277Gitlab::SidekiqLogging::JSONFormatter8278 with a Hash8279 properly formats timestamps into ISO 8601 form8280 removes jobstr from the hash8281 does not modify the input hash8282 job arguments8283 properly flattens arguments to a String8284 when the arguments are bigger than the maximum allowed8285 keeps args from the front until they exceed the limit8286 when the job has non-integer arguments8287 only allows permitted non-integer arguments through8288 when the job has a non-integer value for retry8289 retry_in_job: 3, retry_in_logs: 38290 logs as the correct integer8291 retry_in_job: true, retry_in_logs: 258292 logs as the correct integer8293 retry_in_job: false, retry_in_logs: 08294 logs as the correct integer8295 retry_in_job: nil, retry_in_logs: 08296 logs as the correct integer8297 retry_in_job: "string", retry_in_logs: -18298 logs as the correct integer8299 with a String8300 accepts strings with no changes8301Gitlab::GithubImport::Stage::ImportPullRequestsReviewRequestsWorker8302 # order random8303 #import8304 imports all PR review requests8305Types::WorkItems::Widgets::CurrentUserTodosType8306 # order random8307 exposes the expected fields8308Gitlab::Slug::Path8309 # order random8310 #to_s8311 presents with a cleaned slug8312 #generate8313 yields a slug name when given name8314 yields a slug james when given james.atom@bond.com8315 yields a slug foobar-- when given --foobar--8316 yields a slug foo_bar-- when given --foo_bar--8317 yields a slug foo_bar-- when given --foo$^&_bar--8318 yields a slug john when given john@doe.com8319 yields a slug johngitlab-ETC when given -john+gitlab-ETC%.git@gmail.com8320 yields a slug this.is when given this.is.git.atom.8321 yields a slug blank when given #$%^.8322 yields a slug blank when given ---.git#$.atom%@atom^.8323 yields a slug gitlab--hey when given --gitlab--hey.git#$.atom%@atom^.8324Gitlab::LanguageDetection8325 #languages8326 returns the language names8327 #insertions8328 only includes new languages8329 #updates8330 updates the share of languages8331 does not include languages to be removed8332 when silent writes occur8333 doesn't include them in the result8334 #deletions8335 lists undetected languages8336Gitlab::Usage::Metrics::Instrumentations::CountUsersWithMlCandidatesMetric8337 # order random8338 behaves like a correct instrumented metric value and query8339 behaves like a correct instrumented metric value8340 has correct value8341 behaves like a correct instrumented metric query8342 has correct generate query8343Gitlab::Database::LoadBalancing::Logger8344 # order random8345 excludes context8346 behaves like a json logger8347 formats strings8348 formats hashes8349Gitlab::GitalyClient::StorageSettings8350 #initialize8351 when the storage contains no path8352 raises an error8353 when the argument isn't a hash8354 raises an error8355 when the storage is valid8356 raises no error8357 .gitaly_address8358 when the storage settings have no gitaly address but one is requested8359 raises an error8360 when the storage settings have a gitaly address and one is requested8361 returns the setting value8362 when the storage settings have a gitaly address keyed symbolically8363 raises no error8364 when the storage settings have a gitaly address keyed with a string8365 raises no error8366 .disk_access_denied?8367 when Rugged is enabled8368 returns false8369 when Rugged is disabled8370 returns true8371Gitlab::FeatureCategories8372 #valid?8373 returns true if category is known8374 #get!8375 is expected to eq "foo"8376 when category does not exist8377 is expected to raise RuntimeError8378 when on production8379 is expected to eq "unknown"8380 #from_request8381 returns category from request when valid, otherwise returns nil8382 when request is not verified8383 returns nil8384 #categories8385 returns a set of the given categories8386 .load_from_yaml8387 creates FeatureCategories from feature_categories.yml file8388 .default8389 returns a memoization of load_from_yaml8390RuboCop::Cop::Migration::UpdateColumnInBatches8391 # order random8392 outside of a migration8393 does not register any offenses8394 when in a post migration8395 behaves like a migration file with no spec file8396 registers an offense when using update_column_in_batches8397 behaves like a migration file with a spec file8398 does not register any offenses8399 EE migrations8400 when in a migration8401 behaves like a migration file with no spec file8402 registers an offense when using update_column_in_batches8403 behaves like a migration file with a spec file8404 does not register any offenses8405 when in a post migration8406 behaves like a migration file with no spec file8407 registers an offense when using update_column_in_batches8408 behaves like a migration file with a spec file8409 does not register any offenses8410 when in migration8411 behaves like a migration file with no spec file8412 registers an offense when using update_column_in_batches8413 behaves like a migration file with a spec file8414 does not register any offenses8415Gitlab::Email::Message::InProductMarketing::Trial8416 public methods8417 series: 08418 returns value for series8419 #progress8420 on gitlab.com8421 is expected to eq "This is email 2 of 4 in the Trial series."8422 not on gitlab.com8423 is expected to include "This is email 2 of 4 in the Trial series" and "http://localhost/-/profile/notifications"8424 series: 18425 returns value for series8426 #progress8427 on gitlab.com8428 is expected to eq "This is email 3 of 4 in the Trial series."8429 not on gitlab.com8430 is expected to include "This is email 3 of 4 in the Trial series" and "http://localhost/-/profile/notifications"8431 series: 28432 returns value for series8433 #progress8434 on gitlab.com8435 is expected to eq "This is email 4 of 4 in the Trial series."8436 not on gitlab.com8437 is expected to include "This is email 4 of 4 in the Trial series" and "http://localhost/-/profile/notifications"8438Gitlab::Graphql::Pagination::OffsetActiveRecordRelationConnection8439 subclasses from GraphQL::Relay::RelationConnection8440 behaves like a connection with collection methods8441 responds to to_a8442 responds to size8443 responds to map8444 responds to include?8445 responds to empty?8446 behaves like a redactable connection8447 no redactor set8448 contains the unwanted item8449 does not redact more than once8450 redactor is set8451 does not contain the unwanted item8452 does not redact more than once8453AutoMergeProcessWorker8454 #perform8455 when merge request is found8456 executes AutoMergeService8457 when merge request is not found8458 does not execute AutoMergeService8459Gitlab::GithubGistsImport::ImportGistWorker8460 # order random8461 #perform8462 when success8463 imports gist8464 when failure8465 when importer raised an error8466 raises an error8467 when importer returns error8468 tracks and logs error8469 persists failure8470 .sidekiq_retries_exhausted8471 persists failure8472 sends snowplow event8473 notifies the JobWaiter8474 when not all arguments are given8475 does not notify the JobWaiter8476TimelogPolicy8477 #rules8478 when user is anonymus8479 prevents adimistration of timelog8480 when user is the author of the timelog8481 allows adimistration of timelog8482 when user is not the author of the timelog but maintainer of the project8483 allows adimistration of timelog8484 when user is not the timelog's author, not a maintainer but an administrator8485 allows adimistration of timelog8486 when user is not the author of the timelog nor a maintainer of the project nor an administrator8487 prevents adimistration of timelog8488projects/pipeline_schedules/_pipeline_schedule8489 taking ownership of schedule8490 when non-owner is signed in8491 non-owner can take ownership of pipeline8492 when owner is signed in8493 owner cannot take ownership of pipeline8494Gitlab::Database::ConnectionTimer8495 .starting_now8496 when the configured interval is positive8497 randomizes the interval of the created timer8498 when the configured interval is not positive8499 sets the interval of the created timer to nil8500 .expired?8501 when the interval is positive8502 when the interval has elapsed8503 returns true8504 when the interval has not elapsed8505 returns false8506 when the interval is not positive8507 when the interval has elapsed8508 returns false8509 when the interval has not elapsed8510 returns false8511 when the interval is nil8512 returns false8513 .reset!8514 updates the timer clock value8515Gitlab::Memory::Jemalloc8516 when jemalloc is loaded8517 with JSON format8518 .stats8519 returns stats JSON8520 .dump_stats8521 writes stats JSON file8522 with text format8523 .stats8524 returns a text report8525 .dump_stats8526 writes stats text file8527 with unsupported format8528 .stats8529 raises an error8530 .dump_stats8531 raises an error8532 when jemalloc is not loaded8533 .stats8534 returns empty string8535 .dump_stats8536 does nothing8537WorkItems::Widgets::StartAndDueDateService::UpdateService8538 #before_update_callback8539 when start and due date params are present8540 correctly sets date values8541 when date params are not present8542 does not change work item date values8543 when work item had both date values already set8544 when one of the two params is null8545 sets only one date to null8546 when widget does not exist in new type8547 sets both dates to null8548Terraform::StatesFinder8549 #execute8550 is expected to contain exactly #<Terraform::State id: 1, project_id: 1109, created_at: "2023-06-02 06:45:31.022184679 +0000", update...dfef3747", name: "state-1", versioning_enabled: true, deleted_at: nil, activerecord_lock_version: 0> and #<Terraform::State id: 2, project_id: 1109, created_at: "2023-06-02 06:45:31.029011398 +0000", update...16f22eb1", name: "state-2", versioning_enabled: true, deleted_at: nil, activerecord_lock_version: 0>8551 user does not have permission8552 is expected to be empty8553 filtering by name8554 name does not match8555 is expected to be empty8556 name does match8557 is expected to contain exactly #<Terraform::State id: 1, project_id: 1109, created_at: "2023-06-02 06:45:31.022184679 +0000", update...dfef3747", name: "state-1", versioning_enabled: true, deleted_at: nil, activerecord_lock_version: 0>8558Gitlab::Checks::ForcePush8559 .force_push?8560 when the repo is empty8561 returns false8562 when new rev is a descendant of old rev8563 returns false8564 when new rev is not a descendant of old rev8565 returns true8566Gitlab::GithubImport::Importer::PullRequests::ReviewRequestsImporter8567 # order random8568 #parallel_import8569 schedule import for each merge request reviewers8570 when merge request is already processed8571 doesn't schedule import this merge request reviewers8572 #sequential_import8573 imports each project merge request reviewers8574 when merge request is already processed8575 doesn't import this merge request reviewers8576Gitlab::Database::Migrations::ReestablishedConnectionStack8577 #with_restored_connection_stack8578 main8579 behaves like reconfigures connection stack8580 does restore connection hierarchy (PENDING: Skipping because none of the extra databases [:ci, :main_clusterwide, :embedding, :geo] are setup)8581 does keep original connection handler (PENDING: Skipping because none of the extra databases [:ci, :main_clusterwide, :embedding, :geo] are setup)8582PagesDomains::RetryAcmeOrderService8583 clears auto_ssl_failed8584 schedules renewal worker and publish PagesDomainUpdatedEvent event8585 doesn't schedule renewal worker if Let's Encrypt integration is not enabled8586 doesn't schedule renewal worker if auto ssl has not failed yet8587RuboCop::Cop::Performance::ActiveRecordSubtransactionMethods8588 # order random8589 when the method uses a subtransaction8590 method: :safe_ensure_unique8591 registers an offense8592 method: :safe_find_or_create_by8593 registers an offense8594 method: :safe_find_or_create_by!8595 registers an offense8596 method: :with_fast_read_statement_timeout8597 registers an offense8598 method: :create_or_find_by8599 registers an offense8600 method: :create_or_find_by!8601 registers an offense8602Mutations::Achievements::Delete8603 # order random8604 is expected to require graphql authorizations :admin_achievement8605 #resolve8606 when the user does not have permission8607 raises an error8608 when the user has permission8609 deletes the achievement8610 when the params are invalid8611 returns the validation error8612BulkImports::Common::Rest::GetBadgesQuery8613 .to_h8614 when entity is group8615 when source id is present8616 returns correct query using source id and page info8617 when source id is missing8618 returns correct query using source full path8619 when entity is project8620 when source id is present8621 returns correct query using source id and page info8622 when source id is missing8623 returns correct query using source full path8624Gitlab::Pages8625 .verify_api_request8626 returns false if fails to validate the JWT8627 returns the decoded JWT8628 .access_control_is_forced?8629 access_control_is_enabled: false, access_control_is_forced: false, result: false8630 is expected to eq false8631 access_control_is_enabled: false, access_control_is_forced: true, result: false8632 is expected to eq false8633 access_control_is_enabled: true, access_control_is_forced: false, result: false8634 is expected to eq false8635 access_control_is_enabled: true, access_control_is_forced: true, result: true8636 is expected to eq true8637SnippetUserMention8638 associations8639 is expected to belong to snippet required: false8640 is expected to belong to note required: false8641 behaves like has user mentions8642 #has_mentions?8643 when no mentions8644 returns false8645 when mentioned_users_ids not null8646 returns true8647 when mentioned projects8648 returns true8649 when mentioned groups8650 returns true8651Ci::Queue::PendingBuildsStrategy8652 # order random8653 builds_for_group_runner8654 returns builds ordered by build ID8655DescriptionVersion8656 associations8657 is expected to belong to issue required: false8658 is expected to belong to merge_request required: false8659 validations8660 exactly_one_issuable8661 issue_id: nil, merge_request_id: 1, valid?: true8662 is expected to eq true8663 issue_id: 1, merge_request_id: nil, valid?: true8664 is expected to eq true8665 issue_id: nil, merge_request_id: nil, valid?: false8666 is expected to eq false8667 issue_id: 1, merge_request_id: 1, valid?: false8668 is expected to eq false8669RuboCop::Cop::Scalability::BulkPerformWithContext8670 # order random8671 does not add an offence for specs8672 does not add an offense for scheduling on the CiDatabaseWorker8673 does not add an offense for scheduling on the BackgroundMigrationWorker8674 adds an offense when calling bulk_perform_async8675 adds an offense when calling bulk_perform_in8676 does not add an offense for migrations8677Ci::Runners::ReconcileExistingRunnerVersionsCronWorker8678 #perform8679 when scheduled by cronjob8680 reschedules itself8681 when self-scheduled8682 is labeled as idempotent8683 performs multiple times sequentially without raising an exception8684 executes the service8685 logs the service result8686RuboCop::Cop::Rake::Require8687 # order random8688 registers an offenses for require methods8689 does not register offense when require task related files8690 does not register offense inside a block definition8691 does not register offense inside `task` definition8692 does not register offense inside a method definition8693BulkImports::ImportsFinder8694 #execute8695 returns a list of imports associated with user8696 when status is specified8697 returns a list of import entities filtered by status8698 when invalid status is specified8699 does not filter entities by status8700 when order is specifed8701 when order is specified as asc8702 returns entities sorted ascending8703 when order is specified as desc8704 returns entities sorted descending8705Analytics::UsageTrends::CountJobTriggerWorker8706 behaves like an idempotent worker8707 is labeled as idempotent8708 performs multiple times sequentially without raising an exception8709 triggers a job for each measurement identifiers8710 triggers CounterJobWorker jobs8711Gitlab::UsageDataCounters::ProductivityAnalyticsCounter8712 behaves like a redis usage counter8713 .count(views)8714 increments the ProductivityAnalytics views counter by 18715 .read(views)8716 returns the total number of views events8717 behaves like a redis usage counter with totals8718 totals8719 can report all totals8720 unknown events8721 cannot increment8722 cannot read8723Achievements::DestroyService8724 # order random8725 #execute8726 when user does not have permission8727 returns an error8728 when user has permission8729 deletes the achievement8730MergeRequests::Mergeability::CheckDraftStatusService8731 #execute8732 when the merge request is a draft8733 returns a check result with status failed8734 when the merge request is not a draft8735 returns a check result with status success8736 #skip?8737 returns false8738 #cacheable?8739 returns false8740Gitlab::Ci::Config::Header::Spec8741 # order random8742 when spec contains unknown keywords8743 fails validations8744 returns the value8745 when spec contains default values for inputs8746 passes validations8747 returns the value8748 when spec contains a required value8749 parses the config correctly8750Gitlab::Ci::Config::Entry::Caches8751 #valid?8752 with an empty hash as cache8753 is valid8754 when configuration is valid with a single cache8755 is valid8756 when configuration is valid with multiple caches8757 is valid8758 when configuration is not a Hash or Array8759 is invalid8760 when entry values contain more than four caches8761 is invalid8762Projects::ClusterAgentsHelper8763 #js_cluster_agent_details_data8764 is expected to match {:agent_name=>"agent-name", :project_path=>"namespace797/project-1155", :activity_empty_state_image=>#<RSpec::Mocks::ArgumentMatchers::KindOf:0x00007fcf05659808 @klass=String>, :empty_state_svg_path=>#<RSpec::Mocks::ArgumentMatchers::KindOf:0x00007fcf05659718 @klass=String>, :can_admin_vulnerability=>"true", :kas_address=>"wss://kas.example.com", :kas_version=>#<Gitlab::VersionInfo:0x00007fcf056580c0 @major=16, @minor=1, @patch=1, @suffix_s="", @suffix=[]>, :can_admin_cluster=>"false"}8765 user has admin cluster permissions8766 displays that the user can admin cluster8767Gitlab::BitbucketServerImport::Stage::ImportLfsObjectsWorker8768 # order random8769 behaves like Gitlab::BitbucketServerImport::StageMethods8770 .sidekiq_retries_exhausted8771 tracks the import failure8772 #perform8773 when the import succeeds8774 schedules the next stage8775Types::ErrorTracking::SentryErrorCollectionType8776 is expected to eq "SentryErrorCollection"8777 is expected to require graphql authorizations :read_sentry_issue8778 exposes the expected fields8779 errors field8780 returns errors8781Banzai::Pipeline::BroadcastMessagePipeline8782 allows `a` elements8783 is expected to eq "<p><a>Link</a></p>"8784 allows `br` elements8785 is expected to eq "<p>Hello<br>World</p>"8786Net::HTTPResponse patch header read timeout8787 .each_response_header8788 with Net::BufferedIO8789 does not forward start time to the socket8790 when the response contains many consecutive spaces8791 has no regex backtracking issues8792 with Gitlab::BufferedIo8793 forwards start time to the socket8794 when the response contains an infinite number of headers8795 raises a timeout error8796RuboCop::Cop::Graphql::GraphqlNamePosition8797 # order random8798 does not add an offense for classes that only call graphql_name8799 does not add an offense for classes that have no call to graphql_name8800 adds an offense when graphql_name is not on the first line8801X509Helper8802 #x509_subject8803 with uppercase DN8804 returns the attributes on any case search8805 with lowercase DN8806 returns the attributes on any case search8807 with comma within DN8808 returns the attributes on any case search8809 with mal formed DN8810 returns nil on any case search8811Gitlab::Ci::ProjectConfig::Source8812 # order random8813 #source8814 is expected to raise NotImplementedError8815 #internal_include_prepended?8816 is expected to eq false8817 #content8818 is expected to raise NotImplementedError8819admin/application_settings/network.html.haml8820 # order random8821 for Projects API rate limit8822 renders the `projects_api_rate_limit_unauthenticated` field8823ErrorTracking::Collector::SentryAuthParser8824 .parse8825 returns correct value for public_key8826 with empty headers8827 fails with exception8828 with missing sentry_key8829 returns empty value for public_key8830BitbucketServer::Collection8831 #current_page8832 returns 18833 #prev_page8834 returns nil8835 #next_page8836 returns 28837TestReportsComparerEntity8838 #as_json8839 when head and base reports include two test suites8840 when the status of head report is success8841 contains correct compared test reports details8842 when the status of head report is failed8843 contains correct compared test reports details8844 when the status of head report is resolved8845 contains correct compared test reports details8846countries8847 # order random8848 configures locals to EN8849 initialises Taiwan with custom country name8850 initialises Ukraine with custom country name8851Gitlab::Cache::Metrics8852 # order random8853 #observe_cache_generation8854 updates histogram metric8855 #increment_cache_hit8856 increments number of hits8857 #increment_cache_miss8858 increments number of misses8859Types::ContainerRepositoryTagsSortEnum8860 is expected to eq "ContainerRepositoryTagSort"8861 exposes all the existing issue sort values8862API::Validations::Validators::ProjectPortable8863 valid portable8864 does not raise a validation error8865 empty params8866 raises a validation error8867 not portable8868 raises a validation error8869UnnestedInFilters::Dsl8870 #exists?8871 when there is no record in the database with given filters8872 is expected to be falsey8873 when there is a record in the database with given filters8874 is expected to be truthy8875Integrations::SlackEventService8876 # order random8877 #execute8878 queues a worker and returns success response8879 when event a url verification request8880 executes the service instead of queueing a worker and returns success response8881 when event is unknown8882 raises an error8883Sidebars::Projects::SuperSidebarMenus::PlanMenu8884 # order random8885 has title and sprite_icon8886 defines list of NilMenuItem placeholders8887Prometheus::CleanupMultiprocDirService8888 #execute8889 when `multiprocess_files_dir` is defined8890 removes old metrics8891 when `multiprocess_files_dir` is not defined8892 does not remove any files8893CodequalityReportsComparerSerializer8894 #to_json8895 when base report has error and head has a different error8896 matches the schema8897 when base report has no error and head has errors8898 matches the schema8899Types::Packages::Helm::MetadataType8900 is expected to eq "PackageHelmMetadataType"8901 includes helm json fields8902Gitlab::Ci::Reports::Security::Link8903 #initialize8904 when all params are given8905 initializes an instance8906 #to_hash8907 returns expected hash8908Security::JobsFinder8909 is an abstract class that does not permit instantiation8910 .allowed_job_types8911 must be implemented by child classes8912Types::LabelType8913 has the correct fields8914 is expected to require graphql authorizations :read_label8915Serverless::DomainEntity8916 #as_json8917 has an id8918 has a domain8919Graphql::FieldSelection8920 can report on the paths that are selected8921 can serialize a field selection nicely8922Types::WorkItems::WidgetTypeEnum8923 is expected to eq "WorkItemWidgetType"8924 exposes all the existing widget type values8925Types::IssuableStateEnum8926 is expected to eq "IssuableState"8927 behaves like issuable state8928 exposes all the existing issuable states8929Gitlab::MarkdownCache::FieldData8930 translates a markdown field name into a html field name8931 #key?8932 is expected to be falsy8933Gitlab::Usage::Metrics::NamesSuggestions::RelationParsers::WhereConstraints8934 # order random8935 #accept8936 builds correct constraints description8937help/show8938 Markdown rendering8939 renders Markdown8940Ci::Lint::ResultEntity8941 #represent8942 serializes with lint result entity8943Evidences::IssueEntity8944 exposes the expected fields8945ProjectMirrorEntity8946 exposes project-specific elements8947Integrations::HarborSerializers::TagSerializer8948 represents Integrations::HarborSerializers::TagEntity entities8949Types::WorkItems::Widgets::HierarchyType8950 exposes the expected fields8951Evidences::ReleaseSerializer8952 represents an Evidence::ReleaseEntity entity8953ProjectMirrorSerializer8954 represents ProjectMirror entities8955Gitlab::Saas8956 .canary_toggle_com_url8957 is expected to eq "https://next.gitlab.com"8958Gitlab::GitalyClient::Util8959 .repository8960 creates a Gitaly::Repository with the given data8961Knapsack report was generated. Preview:8962{8963 "spec/models/group_spec.rb": 233.69731731899998,8964 "spec/models/project_wiki_spec.rb": 99.62161839900006,8965 "spec/models/commit_spec.rb": 32.60644044500009,8966 "spec/services/issues/create_service_spec.rb": 39.34614551699997,8967 "spec/lib/banzai/filter/references/label_reference_filter_spec.rb": 39.22068872199998,8968 "spec/services/ci/unlock_artifacts_service_spec.rb": 45.556558598999914,8969 "spec/models/namespace/package_setting_spec.rb": 19.195682780000084,8970 "spec/services/ci/runners/create_runner_service_spec.rb": 25.762314941,8971 "spec/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_projects_spec.rb": 18.332993009000006,8972 "spec/lib/gitlab/url_sanitizer_spec.rb": 4.638801575999992,8973 "spec/services/merge_requests/cleanup_refs_service_spec.rb": 29.004548367999973,8974 "spec/lib/gitlab/health_checks/redis_spec.rb": 6.029789492999953,8975 "spec/models/integrations/every_integration_spec.rb": 3.1505959099999927,8976 "spec/models/alert_management/alert_spec.rb": 7.420035561999953,8977 "spec/models/namespace/root_storage_statistics_spec.rb": 19.68466682799999,8978 "spec/models/discussion_spec.rb": 24.702926272000013,8979 "spec/models/trending_project_spec.rb": 22.27587741000002,8980 "spec/models/integrations/hangouts_chat_spec.rb": 11.811309080000001,8981 "spec/lib/gitlab/usage_data_counters/merge_request_activity_unique_counter_spec.rb": 8.816809889999945,8982 "spec/serializers/pipeline_serializer_spec.rb": 18.69952816,8983 "spec/lib/gitlab/database/with_lock_retries_spec.rb": 15.13220383800001,8984 "spec/policies/todo_policy_spec.rb": 10.299440085000015,8985 "spec/models/ci/build_runner_session_spec.rb": 13.025832938999883,8986 "spec/services/deployments/create_for_build_service_spec.rb": 11.72591221200014,8987 "spec/models/timelog_spec.rb": 14.207652967000058,8988 "spec/lib/banzai/reference_parser/commit_range_parser_spec.rb": 12.942466682000031,8989 "spec/lib/gitlab/email/handler/create_note_on_issuable_handler_spec.rb": 11.596550284000159,8990 "spec/lib/gitlab/redis/queues_spec.rb": 1.9826423650001743,8991 "spec/lib/gitlab/prometheus/queries/additional_metrics_deployment_query_spec.rb": 11.455055653999807,8992 "spec/services/branches/delete_merged_service_spec.rb": 10.516492429999971,8993 "spec/services/ci/archive_trace_service_spec.rb": 8.911635205000039,8994 "spec/workers/incident_management/process_alert_worker_v2_spec.rb": 7.17713654399995,8995 "spec/services/upload_service_spec.rb": 6.943286971000134,8996 "spec/services/projects/container_repository/delete_tags_service_spec.rb": 6.113926247000109,8997 "spec/graphql/mutations/merge_requests/set_reviewers_spec.rb": 9.257693631999928,8998 "spec/lib/gitlab/process_supervisor_spec.rb": 9.595299079999904,8999 "spec/models/ci/sources/pipeline_spec.rb": 5.413508387000093,9000 "spec/presenters/ci/stage_presenter_spec.rb": 6.034070518000135,9001 "spec/graphql/resolvers/work_items_resolver_spec.rb": 5.286149401000102,9002 "spec/tasks/gitlab/packages/events_rake_spec.rb": 2.51226726699997,9003 "spec/lib/gitlab/diff/lines_unfolder_spec.rb": 7.157240122000076,9004 "spec/helpers/timeboxes_helper_spec.rb": 4.821524279999949,9005 "spec/services/integrations/test/project_service_spec.rb": 4.25971720199982,9006 "spec/lib/gitlab/sanitizers/exif_spec.rb": 5.587039963000052,9007 "spec/lib/sidebars/menu_spec.rb": 1.625337922999961,9008 "spec/serializers/ci/lint/result_serializer_spec.rb": 3.690285941999946,9009 "spec/lib/gitlab/database/migrations/timeout_helpers_spec.rb": 3.083850280999968,9010 "spec/models/lfs_file_lock_spec.rb": 3.103121306000048,9011 "spec/lib/gitlab/gl_repository/repo_type_spec.rb": 2.0727729750001345,9012 "spec/lib/gitlab/ci/build/context/global_spec.rb": 5.308020487000022,9013 "spec/tasks/cache_rake_spec.rb": 1.976912400999936,9014 "spec/initializers/00_deprecations_spec.rb": 0.9616334169998026,9015 "spec/serializers/merge_request_serializer_spec.rb": 4.480796864000013,9016 "spec/models/ci/persistent_ref_spec.rb": 6.108524277000015,9017 "spec/workers/ci/archive_traces_cron_worker_spec.rb": 3.701318297999933,9018 "spec/models/personal_snippet_spec.rb": 1.9777841509999234,9019 "spec/lib/gitlab/ci/pipeline/chain/seed_spec.rb": 3.7189167129999987,9020 "spec/lib/gitlab/ci/variables/collection/item_spec.rb": 1.3736409800001184,9021 "spec/initializers/secret_token_spec.rb": 1.6308349919997909,9022 "spec/lib/gitlab/conflict/file_collection_spec.rb": 5.829156620000049,9023 "spec/tasks/gitlab/refresh_project_statistics_build_artifacts_size_rake_spec.rb": 1.6944666150000103,9024 "spec/models/network/graph_spec.rb": 6.026243868000165,9025 "spec/services/namespace_settings/update_service_spec.rb": 4.55628684300018,9026 "spec/tasks/gitlab/incoming_email_rake_spec.rb": 2.225574415999972,9027 "spec/services/projects/move_deploy_keys_projects_service_spec.rb": 3.781295187000069,9028 "spec/services/ci/job_artifacts/track_artifact_report_service_spec.rb": 2.038650794999967,9029 "spec/graphql/mutations/release_asset_links/update_spec.rb": 3.409321034999948,9030 "spec/helpers/version_check_helper_spec.rb": 2.572874603999935,9031 "spec/tasks/import_rake_spec.rb": 2.90578653700004,9032 "spec/models/merge_request_assignee_spec.rb": 5.45862967700009,9033 "spec/models/organizations/organization_spec.rb": 0.7667459090000648,9034 "spec/models/namespace_statistics_spec.rb": 1.1993186949998744,9035 "spec/lib/gitlab/metrics/method_call_spec.rb": 0.5680065910000849,9036 "spec/lib/gitlab/instrumentation/redis_interceptor_spec.rb": 1.1443455799999356,9037 "spec/lib/gitlab/github_import/importer/issue_importer_spec.rb": 4.258241572000088,9038 "spec/lib/gitlab/cleanup/orphan_job_artifact_files_spec.rb": 1.6644730830000753,9039 "spec/lib/gitlab/ci/jwt_v2_spec.rb": 1.1476042179999695,9040 "spec/lib/gitlab/ci/runner_releases_spec.rb": 1.0630704509999305,9041 "spec/lib/gitlab/ci/config/entry/ports_spec.rb": 0.350572037999882,9042 "spec/services/bulk_update_integration_service_spec.rb": 1.8457421349999095,9043 "spec/models/loose_foreign_keys/deleted_record_spec.rb": 0.9473530410000421,9044 "spec/graphql/resolvers/user_notes_count_resolver_spec.rb": 2.993761134000124,9045 "spec/services/error_tracking/list_projects_service_spec.rb": 2.8451401929999065,9046 "spec/lib/gitlab/github_import/importer/events/cross_referenced_spec.rb": 2.3903270129999328,9047 "spec/lib/gitlab/jira/dvcs_spec.rb": 1.516694292000011,9048 "spec/services/ci/test_failure_history_service_spec.rb": 2.1860764360001212,9049 "spec/views/projects/pipelines/show.html.haml_spec.rb": 2.293301177999865,9050 "spec/services/merge_requests/add_spent_time_service_spec.rb": 2.6372240379998857,9051 "spec/models/concerns/token_authenticatable_strategies/base_spec.rb": 1.2807089039999937,9052 "spec/lib/sidebars/user_settings/menus/gpg_keys_menu_spec.rb": 0.48464851299991096,9053 "spec/finders/users_star_projects_finder_spec.rb": 2.972500880000098,9054 "spec/lib/gitlab/email/message/in_product_marketing/team_spec.rb": 0.5323252700000012,9055 "spec/views/layouts/terms.html.haml_spec.rb": 2.1288097719998405,9056 "spec/serializers/admin/abuse_report_details_entity_spec.rb": 2.7420862040000884,9057 "spec/models/board_spec.rb": 2.4835473489999913,9058 "spec/services/users/dismiss_project_callout_service_spec.rb": 0.7772781670000768,9059 "spec/tooling/lib/tooling/mappings/graphql_base_type_mappings_spec.rb": 0.7001548950001961,9060 "spec/lib/gitlab/email/incoming_email_spec.rb": 0.7702817079998567,9061 "spec/workers/namespaces/process_sync_events_worker_spec.rb": 2.724927455999932,9062 "spec/services/todos/allowed_target_filter_service_spec.rb": 2.636573684000041,9063 "spec/models/note_diff_file_spec.rb": 3.0509141550001004,9064 "spec/lib/gitlab/prometheus/query_variables_spec.rb": 2.892450060000101,9065 "spec/models/issue_assignee_spec.rb": 2.941336655999976,9066 "spec/services/system_notes/base_service_spec.rb": 0.4116023999999925,9067 "spec/models/packages/go/module_spec.rb": 2.4320539989998906,9068 "spec/lib/gitlab/config/entry/validatable_spec.rb": 0.3362189090000811,9069 "spec/lib/gitlab/sourcegraph_spec.rb": 0.6645985980001115,9070 "spec/lib/sidebars/projects/menus/monitor_menu_spec.rb": 1.1991594379999242,9071 "spec/lib/gitlab/database/migrations/observers/query_statistics_spec.rb": 0.3231738089998544,9072 "spec/lib/api/entities/ml/mlflow/run_spec.rb": 1.120357045999981,9073 "spec/graphql/resolvers/blobs_resolver_spec.rb": 1.959170112000038,9074 "spec/workers/update_highest_role_worker_spec.rb": 1.267301439999983,9075 "spec/lib/gitlab/database/count/exact_count_strategy_spec.rb": 1.9651706259999173,9076 "spec/models/users/merge_request_interaction_spec.rb": 2.0213580120000643,9077 "spec/graphql/mutations/environments/delete_spec.rb": 1.089004708999937,9078 "spec/workers/packages/debian/cleanup_dangling_package_files_worker_spec.rb": 1.0186470250000639,9079 "spec/graphql/mutations/issues/move_spec.rb": 2.043981889999941,9080 "spec/lib/gitlab/github_import/milestone_finder_spec.rb": 0.7336571620000996,9081 "spec/lib/api/helpers/authentication_spec.rb": 1.3975408999999672,9082 "spec/services/loose_foreign_keys/process_deleted_records_service_spec.rb": 1.6923599720000766,9083 "spec/services/groups/auto_devops_service_spec.rb": 1.767523385000004,9084 "spec/services/projects/all_merge_requests_count_service_spec.rb": 0.9758833589999085,9085 "spec/services/groups/group_links/update_service_spec.rb": 2.011687322999933,9086 "spec/lib/gitlab/github_import/importer/pull_requests/all_merged_by_importer_spec.rb": 0.8751567790000081,9087 "spec/workers/pages_domain_verification_cron_worker_spec.rb": 2.528664003999893,9088 "spec/finders/ci/variables_finder_spec.rb": 1.9327213399999437,9089 "spec/serializers/ci/dag_pipeline_entity_spec.rb": 1.639331638000158,9090 "spec/lib/gitlab/ci/yaml_processor/feature_flags_spec.rb": 0.518663270999923,9091 "spec/workers/import_issues_csv_worker_spec.rb": 1.3102589489999446,9092 "spec/components/pajamas/spinner_component_spec.rb": 0.46918478699990374,9093 "spec/lib/gitlab/graphs/commits_spec.rb": 1.8154138109998712,9094 "spec/lib/gitlab/branch_push_merge_commit_analyzer_spec.rb": 2.4596180500000173,9095 "spec/services/users/keys_count_service_spec.rb": 1.335130964999962,9096 "spec/services/ci/prometheus_metrics/observe_histograms_service_spec.rb": 1.8316039490000549,9097 "spec/services/groups/merge_requests_count_service_spec.rb": 1.5536757249999482,9098 "spec/graphql/types/group_member_type_spec.rb": 0.32688214899985724,9099 "spec/workers/project_cache_worker_spec.rb": 1.616795748999948,9100 "spec/models/packages/rpm/metadatum_spec.rb": 0.6746270270000423,9101 "spec/lib/gitlab/zentao/query_spec.rb": 1.671604564000063,9102 "spec/rubocop/cop/feature_flag_usage_spec.rb": 0.4890086649998011,9103 "spec/lib/gitlab/database/postgres_constraint_spec.rb": 0.8923949269999412,9104 "spec/views/projects/environments/terminal.html.haml_spec.rb": 3.616039652999916,9105 "spec/workers/merge_requests/resolve_todos_after_approval_worker_spec.rb": 1.3538172940000095,9106 "spec/workers/gitlab/github_import/stage/import_pull_requests_reviews_worker_spec.rb": 0.5552342179998959,9107 "spec/views/shared/snippets/_snippet.html.haml_spec.rb": 0.7028273739999804,9108 "spec/graphql/subscriptions/issuable_updated_spec.rb": 0.9598988910001935,9109 "spec/lib/bulk_imports/projects/pipelines/commit_notes_pipeline_spec.rb": 0.8972649259999343,9110 "spec/services/ci/compare_accessibility_reports_service_spec.rb": 1.963850776000072,9111 "spec/lib/gitlab/github_import/importer/collaborators_importer_spec.rb": 0.5992031450000468,9112 "spec/lib/gitlab/usage_data_non_sql_metrics_spec.rb": 0.5217617910000172,9113 "spec/lib/gitlab/import_export/avatar_restorer_spec.rb": 1.2470131139998557,9114 "spec/lib/gitlab/bullet/exclusions_spec.rb": 0.595648323999967,9115 "spec/services/ci/change_variable_service_spec.rb": 1.2773314400001254,9116 "spec/lib/gitlab/sidekiq_logging/json_formatter_spec.rb": 0.5828174260000196,9117 "spec/workers/gitlab/github_import/stage/import_pull_requests_review_requests_worker_spec.rb": 0.2327885279999009,9118 "spec/graphql/types/work_items/widgets/current_user_todos_type_spec.rb": 0.2381798379999509,9119 "spec/lib/gitlab/slug/path_spec.rb": 0.6268870419999075,9120 "spec/lib/gitlab/language_detection_spec.rb": 1.1155705159999343,9121 "spec/lib/gitlab/usage/metrics/instrumentations/count_users_with_ml_candidates_metric_spec.rb": 1.3327385559998675,9122 "spec/lib/gitlab/database/load_balancing/logger_spec.rb": 0.30288220199986426,9123 "spec/lib/gitlab/gitaly_client/storage_settings_spec.rb": 0.5138233920001767,9124 "spec/lib/gitlab/feature_categories_spec.rb": 0.5071164629998748,9125 "spec/rubocop/cop/migration/update_column_in_batches_spec.rb": 0.5218180410001878,9126 "spec/lib/gitlab/email/message/in_product_marketing/trial_spec.rb": 0.4418893790000311,9127 "spec/lib/gitlab/graphql/pagination/offset_active_record_relation_connection_spec.rb": 0.6348188109998318,9128 "spec/workers/auto_merge_process_worker_spec.rb": 1.19895161799991,9129 "spec/workers/gitlab/github_gists_import/import_gist_worker_spec.rb": 0.679780547000064,9130 "spec/policies/timelog_policy_spec.rb": 1.064024302000007,9131 "spec/views/projects/pipeline_schedules/_pipeline_schedule.html.haml_spec.rb": 1.348468984000192,9132 "spec/lib/gitlab/database/connection_timer_spec.rb": 0.4902027639998323,9133 "spec/lib/gitlab/memory/jemalloc_spec.rb": 0.4894843839999794,9134 "spec/services/work_items/widgets/start_and_due_date_service/update_service_spec.rb": 0.8228044640000007,9135 "spec/finders/terraform/states_finder_spec.rb": 0.8661689989999104,9136 "spec/lib/gitlab/checks/force_push_spec.rb": 0.9391001430001324,9137 "spec/lib/gitlab/github_import/importer/pull_requests/review_requests_importer_spec.rb": 0.9475737810000737,9138 "spec/lib/gitlab/database/migrations/reestablished_connection_stack_spec.rb": 0.29779462300007253,9139 "spec/services/pages_domains/retry_acme_order_service_spec.rb": 0.652390448999995,9140 "spec/rubocop/cop/performance/active_record_subtransaction_methods_spec.rb": 0.4343867399998089,9141 "spec/graphql/mutations/achievements/delete_spec.rb": 0.8595797699999821,9142 "spec/lib/bulk_imports/common/rest/get_badges_query_spec.rb": 0.7523641790000966,9143 "spec/lib/gitlab/pages_spec.rb": 0.38980296399995495,9144 "spec/models/user_mentions/snippet_user_mention_spec.rb": 0.3805242249998173,9145 "spec/services/ci/queue/pending_builds_strategy_spec.rb": 0.8475359009999011,9146 "spec/models/description_version_spec.rb": 0.39662108300012733,9147 "spec/rubocop/cop/scalability/bulk_perform_with_context_spec.rb": 0.41868281100005333,9148 "spec/workers/ci/runners/reconcile_existing_runner_versions_cron_worker_spec.rb": 0.36822297599997,9149 "spec/rubocop/cop/rake/require_spec.rb": 0.36084255600007964,9150 "spec/finders/bulk_imports/imports_finder_spec.rb": 0.4801606050000373,9151 "spec/workers/analytics/usage_trends/count_job_trigger_worker_spec.rb": 0.5582150180000554,9152 "spec/lib/gitlab/usage_data_counters/productivity_analytics_counter_spec.rb": 0.35567035700000815,9153 "spec/services/achievements/destroy_service_spec.rb": 0.6087976429998889,9154 "spec/services/merge_requests/mergeability/check_draft_status_service_spec.rb": 0.3769998749999104,9155 "spec/lib/gitlab/ci/config/header/spec_spec.rb": 0.3827550850000989,9156 "spec/lib/gitlab/ci/config/entry/caches_spec.rb": 0.45260514699998566,9157 "spec/helpers/projects/cluster_agents_helper_spec.rb": 0.6709417580000263,9158 "spec/workers/gitlab/bitbucket_server_import/stage/import_lfs_objects_worker_spec.rb": 0.49616698399995585,9159 "spec/graphql/types/error_tracking/sentry_error_collection_type_spec.rb": 0.3434746279999672,9160 "spec/lib/banzai/pipeline/broadcast_message_pipeline_spec.rb": 0.589204824999797,9161 "spec/initializers/net_http_response_patch_spec.rb": 0.4446615990000282,9162 "spec/rubocop/cop/graphql/graphql_name_position_spec.rb": 0.30899847199998476,9163 "spec/helpers/x509_helper_spec.rb": 0.3171154409999417,9164 "spec/lib/gitlab/ci/project_config/source_spec.rb": 0.3022942019999846,9165 "spec/views/admin/application_settings/network.html.haml_spec.rb": 0.624103790999925,9166 "spec/lib/error_tracking/collector/sentry_auth_parser_spec.rb": 0.2984024519998911,9167 "spec/lib/bitbucket_server/collection_spec.rb": 0.3224088389999906,9168 "spec/serializers/test_reports_comparer_entity_spec.rb": 0.2938487830001577,9169 "spec/initializers/countries_spec.rb": 0.29680223199989086,9170 "spec/lib/gitlab/cache/metrics_spec.rb": 0.30513998200012793,9171 "spec/graphql/types/container_respository_tags_sort_enum_spec.rb": 0.2600752250000369,9172 "spec/lib/api/validations/validators/project_portable_spec.rb": 0.33626321799988546,9173 "spec/lib/unnested_in_filters/dsl_spec.rb": 0.3976686329999666,9174 "spec/services/integrations/slack_event_service_spec.rb": 0.3353920990000461,9175 "spec/lib/sidebars/projects/super_sidebar_menus/plan_menu_spec.rb": 0.2774897140000121,9176 "spec/lib/prometheus/cleanup_multiproc_dir_service_spec.rb": 0.2826160240001627,9177 "spec/serializers/codequality_reports_comparer_serializer_spec.rb": 0.2794303440000476,9178 "spec/graphql/types/packages/helm/metadata_type_spec.rb": 0.2564338760000737,9179 "spec/lib/gitlab/ci/reports/security/link_spec.rb": 0.26345962499999587,9180 "spec/finders/security/jobs_finder_spec.rb": 0.256310276000022,9181 "spec/graphql/types/label_type_spec.rb": 0.25766263700006675,9182 "spec/serializers/serverless/domain_entity_spec.rb": 0.29047766300004696,9183 "spec/support_specs/graphql/field_selection_spec.rb": 0.26583370499997727,9184 "spec/graphql/types/work_items/widget_type_enum_spec.rb": 0.280983304000074,9185 "spec/graphql/types/issuable_state_enum_spec.rb": 0.28993386299998747,9186 "spec/lib/gitlab/markdown_cache/field_data_spec.rb": 0.3045384419999664,9187 "spec/lib/gitlab/usage/metrics/names_suggestions/relation_parsers/where_constraints_spec.rb": 0.24513026699992224,9188 "spec/views/help/show.html.haml_spec.rb": 0.2659603449999395,9189 "spec/serializers/ci/lint/result_entity_spec.rb": 0.27539688499996373,9190 "spec/serializers/evidences/issue_entity_spec.rb": 0.25523017699993034,9191 "spec/serializers/project_mirror_entity_spec.rb": 0.24660398700007136,9192 "spec/serializers/integrations/harbor_serializers/tag_serializer_spec.rb": 0.23502682799994545,9193 "spec/graphql/types/work_items/widgets/hierarchy_type_spec.rb": 0.23364322799989168,9194 "spec/serializers/evidences/release_serializer_spec.rb": 0.24722158699978536,9195 "spec/serializers/project_mirror_serializer_spec.rb": 0.25285237599996435,9196 "spec/lib/gitlab/saas_spec.rb": 0.24382950699987305,9197 "spec/lib/gitlab/gitaly_client/util_spec.rb": 0.25139085599994369198}9199Knapsack global time execution for tests: 19m 20s9200Pending: (Failures listed here are expected and do not affect your suite's status)9201 1) ProjectWiki behaves like wiki model #preview_slug title: "", file_extension: :md, format: :markdown, expected_slug: ".md" matches the slug generated by gitaly9202 # Gitaly cannot generate a slug for an empty title9203 # ./spec/support/shared_examples/models/wiki_shared_examples.rb:10039204 2) ProjectWiki behaves like wiki model #preview_slug title: "", file_extension: :txt, format: :plaintext, expected_slug: ".txt" matches the slug generated by gitaly9205 # Gitaly cannot generate a slug for an empty title9206 # ./spec/support/shared_examples/models/wiki_shared_examples.rb:10039207 3) Ci::BuildRunnerSession partitioning assigns the same partition id as the one that build has9208 # Skipping partitioning tests until `ci_builds` is partitioned9209 Failure/Error: skip 'Skipping partitioning tests until `ci_builds` is partitioned'9210 RSpec::Core::Pending::SkipDeclaredInExample9211 # ./spec/support/helpers/models/ci/partitioning_testing/rspec_hooks.rb:8:in `block (2 levels) in <top (required)>'9212 # ./spec/support/fast_quarantine.rb:23:in `block (2 levels) in <top (required)>'9213 # ./spec/support/database/prevent_cross_joins.rb:108:in `block (3 levels) in <top (required)>'9214 # ./spec/support/database/prevent_cross_joins.rb:62:in `with_cross_joins_prevented'9215 # ./spec/support/database/prevent_cross_joins.rb:108:in `block (2 levels) in <top (required)>'9216 4) Ci::Sources::Pipeline partitioning assigns partition_id and source_partition_id from pipeline and source_job9217 # Skipping partitioning tests until `ci_builds` is partitioned9218 Failure/Error: skip 'Skipping partitioning tests until `ci_builds` is partitioned'9219 RSpec::Core::Pending::SkipDeclaredInExample9220 # ./spec/support/helpers/models/ci/partitioning_testing/rspec_hooks.rb:8:in `block (2 levels) in <top (required)>'9221 # ./spec/support/fast_quarantine.rb:23:in `block (2 levels) in <top (required)>'9222 # ./spec/support/database/prevent_cross_joins.rb:108:in `block (3 levels) in <top (required)>'9223 # ./spec/support/database/prevent_cross_joins.rb:62:in `with_cross_joins_prevented'9224 # ./spec/support/database/prevent_cross_joins.rb:108:in `block (2 levels) in <top (required)>'9225 5) Gitlab::Database::Migrations::ReestablishedConnectionStack#with_restored_connection_stack main behaves like reconfigures connection stack does restore connection hierarchy9226 # Skipping because none of the extra databases [:ci, :main_clusterwide, :embedding, :geo] are setup9227 # ./spec/lib/gitlab/database/migrations/reestablished_connection_stack_spec.rb:179228 6) Gitlab::Database::Migrations::ReestablishedConnectionStack#with_restored_connection_stack main behaves like reconfigures connection stack does keep original connection handler9229 # Skipping because none of the extra databases [:ci, :main_clusterwide, :embedding, :geo] are setup9230 # ./spec/lib/gitlab/database/migrations/reestablished_connection_stack_spec.rb:429231Finished in 19 minutes 22 seconds (files took 49.48 seconds to load)92324066 examples, 0 failures, 6 pending9233Randomized with seed 633489234[TEST PROF INFO] Time spent in factories: 11:14.524 (57.63% of total time)9235RSpec exited with 0.9236No examples to retry, congrats!9238Not uploading cache ruby-gems-debian-bullseye-ruby-3.0-16 due to policy9240Uploading artifacts...9241coverage/: found 5 matching artifact files and directories 9242crystalball/: found 2 matching artifact files and directories 9243WARNING: deprecations/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 9244knapsack/: found 4 matching artifact files and directories 9245WARNING: query_recorder/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 9246rspec/: found 16 matching artifact files and directories 9247WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 9248log/*.log: found 14 matching artifact files and directories 9249WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4400964271/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com9250WARNING: Retrying... context=artifacts-uploader error=request redirected9251Uploading artifacts as "archive" to coordinator... 201 Created id=4400964271 responseStatus=201 Created token=64_DBzFC9252Uploading artifacts...9253rspec/rspec-*.xml: found 1 matching artifact files and directories 9254WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4400964271/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com9255WARNING: Retrying... context=artifacts-uploader error=request redirected9256Uploading artifacts as "junit" to coordinator... 201 Created id=4400964271 responseStatus=201 Created token=64_DBzFC9258Job succeeded