rspec unit pg12 3/20
Passed Started
by
@ntepluhina

Natalia Tepluhina
1Running with gitlab-runner 14.3.0-rc1 (ed15bfbf)2 on docker-auto-scale-com 1d6b581d3 feature flags: FF_USE_FASTZIP:true6Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.31-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36 ...7Starting service postgres:12 ...8Pulling docker image postgres:12 ...9Using docker image sha256:91d892a67245e889ee058993bb08077e9980b16e08991c8b172adadee015594f for postgres:12 with digest postgres@sha256:5afbf72bfdb224f9ad3b29dd570747b4752ab2e81e9c25145847004f8a350e60 ...10Starting service redis:5.0-alpine ...11Pulling docker image redis:5.0-alpine ...12Using docker image sha256:a0a8ec67111be1ffa9ee627aa0ef080c8281aba0f31a4a67f2b550f8e1e0b022 for redis:5.0-alpine with digest redis@sha256:fea243676a4d2d67f5990ddcbd4a56db9423b7f25e55758491e39988efc1cfbe ...13Waiting for services to be up and running...14Authenticating with credentials from job payload (GitLab Registry)15Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.31-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36 ...16Using docker image sha256:4cc2f63f50a93772721d8b8586f6fe8c920262e1302e0e8b6c12a1040960cfab for registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.31-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:eef05654d1ff5d68556b37c53250a692ec3a5fa299726f5bd1cbb4738b738976 ...18Running on runner-1d6b581d-project-278964-concurrent-0 via runner-1d6b581d-gsrm-1632302494-50e93f21...20$ eval "$CI_PRE_CLONE_SCRIPT"21Downloading archived master...22Connecting to storage.googleapis.com (172.217.193.128:443)23saving to '/tmp/gitlab.tar.gz'24gitlab.tar.gz 61% |******************* | 212M 0:00:00 ETA25gitlab.tar.gz 100% |********************************| 346M 0:00:00 ETA26'/tmp/gitlab.tar.gz' saved27Extracting tarball into /builds/gitlab-org/gitlab...28Fetching changes with git depth set to 20...29Reinitialized existing Git repository in /builds/gitlab-org/gitlab/.git/30Created fresh repository.31remote: Enumerating objects: 153, done. 32remote: Counting objects: 100% (131/131), done. 33remote: Compressing objects: 100% (47/47), done. 34remote: Total 57 (delta 41), reused 18 (delta 8), pack-reused 0 36 * [new ref] 2459b1529cac1ac0ad101b0164c2a64d868d8db8 -> refs/pipelines/37511528137 * [new branch] master -> origin/master38Checking out 2459b152 as master...39Skipping Git submodules setup41Checking cache for ruby-gems-v1-4...42Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/ruby-gems-v1-4 43Successfully extracted cache44Checking cache for gitaly-ruby-gems-v1-4...45Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/gitaly-ruby-gems-v1-4 46Successfully extracted cache48Downloading artifacts for compile-test-assets (1612163134)...49Downloading artifacts from coordinator... ok id=1612163134 responseStatus=200 OK token=qFixL5uF50Downloading artifacts for retrieve-tests-metadata (1612163145)...51Downloading artifacts from coordinator... ok id=1612163145 responseStatus=200 OK token=TZTMsZuv52Downloading artifacts for setup-test-env (1612163139)...53Downloading artifacts from coordinator... ok id=1612163139 responseStatus=200 OK token=pjMJYLcz55Using docker image sha256:4cc2f63f50a93772721d8b8586f6fe8c920262e1302e0e8b6c12a1040960cfab for registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.31-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:eef05654d1ff5d68556b37c53250a692ec3a5fa299726f5bd1cbb4738b738976 ...56$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb57$ export GOPATH=$CI_PROJECT_DIR/.go58$ mkdir -p $GOPATH59$ source scripts/utils.sh60$ source scripts/prepare_build.sh61Bundler version 2.1.462production:development63Settings are listed in order of priority. The top value will be used.64path65Set for the current user (/root/.bundle/config): "/builds/gitlab-org/gitlab/vendor"66clean67Set for the current user (/root/.bundle/config): "true"68without69Set via BUNDLE_WITHOUT: [:production, :development]70install_flags71Set via BUNDLE_INSTALL_FLAGS: "--jobs=$(nproc) --retry=3 --quiet"72$ bundle install --jobs=$(nproc) --retry=3 --quiet && bundle check73The Gemfile's dependencies are satisfied74==> 'bundle install --jobs=$(nproc) --retry=3 --quiet && bundle check' succeeded in 2 seconds.75$ bundle pristine pg76Installing pg 1.2.3 with native extensions77==> 'bundle pristine pg' succeeded in 11 seconds.78$ setup_db_user_only79CREATE ROLE80GRANT81==> 'setup_db_user_only' succeeded in 0 seconds.82$ bundle exec rake db:drop db:create db:structure:load db:migrate gitlab:db:setup_ee83Dropped database 'gitlabhq_test'84Created database 'gitlabhq_test'85DEPRECATION WARNING: Using `bin/rails db:structure:load` is deprecated and will be removed in Rails 6.2. Configure the format using `config.active_record.schema_format = :sql` to use `structure.sql` and run `bin/rails db:schema:load` instead. (called from load at /builds/gitlab-org/gitlab/vendor/ruby/2.7.0/bin/rake:23)86Dropped database 'gitlabhq_geo_test'87Created database 'gitlabhq_geo_test'88==> 'bundle exec rake db:drop db:create db:structure:load db:migrate gitlab:db:setup_ee' succeeded in 117 seconds.89$ run_timed_command "gem install knapsack --no-document"90$ gem install knapsack --no-document91Successfully installed knapsack-4.0.0921 gem installed93==> 'gem install knapsack --no-document' succeeded in 1 seconds.94$ run_timed_command "scripts/gitaly-test-spawn"95$ scripts/gitaly-test-spawn96Settings are listed in order of priority. The top value will be used.97jobs98Set for your local app (/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/.bundle/config): 499retry100Set for your local app (/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/.bundle/config): 3101path102Set for your local app (/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/.bundle/config): "/builds/gitlab-org/gitlab/vendor/gitaly-ruby"103deployment104Set for your local app (/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/.bundle/config): true105without106Set for your local app (/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/.bundle/config): [:production, :development]107Set via BUNDLE_WITHOUT: [:production, :development]108app_config109Set via BUNDLE_APP_CONFIG: "/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/.bundle"110gemfile111Set via BUNDLE_GEMFILE: "/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/Gemfile"112Don't run Bundler as root. Bundler can ask for sudo if it is needed, and113installing your bundle as root will break this application for all non-root114users on this machine.115Using abstract_type 0.0.7116Using concurrent-ruby 1.1.9117Using i18n 1.8.10118Using minitest 5.14.4119Using tzinfo 2.0.4120Using zeitwerk 2.4.2121Using activesupport 6.1.3.2122Using builder 3.2.4123Using erubi 1.10.0124Using mini_portile2 2.5.1125Using racc 1.5.2126Using nokogiri 1.11.7 (x86_64-linux)127Using rails-dom-testing 2.0.3128Using crass 1.0.6129Using loofah 2.10.0130Using rails-html-sanitizer 1.3.0131Using actionview 6.1.3.2132Using rack 2.2.3133Using rack-test 1.1.0134Using actionpack 6.1.3.2135Using ice_nine 0.11.2136Using thread_safe 0.3.6137Using memoizable 0.4.2138Using adamantium 0.2.0139Using public_suffix 4.0.6140Using addressable 2.7.0141Using ast 2.4.1142Using binding_ninja 0.2.3143Using bundler 2.1.4144Using charlock_holmes 0.7.7145Using coderay 1.1.2146Using equalizer 0.0.11147Using concord 0.1.5148Using diff-lcs 1.3149Using dotenv 2.7.6150Using escape_utils 1.2.1151Using factory_bot 5.0.2152Using multipart-post 2.1.1153Using faraday 1.0.1154Using ffi 1.15.3155Using json 2.5.1156Using gemojione 3.3.0157Using mini_mime 1.0.2158Using rugged 1.1.0159Using github-linguist 7.12.1160Using github-markup 1.7.0161Using mime-types-data 3.2020.1104162Using mime-types 3.3.1163Using gitlab-gollum-rugged_adapter 0.4.4.4.gitlab.1164Using rouge 3.26.0165Using nokogumbo 1.5.0166Using sanitize 4.6.6167Using stringex 2.8.5168Using gitlab-gollum-lib 4.2.7.10.gitlab.1169Using google-protobuf 3.17.3 (x86_64-linux)170Using googleapis-common-protos-types 1.1.0171Using grpc 1.30.2 (x86_64-linux)172Using opentracing 0.5.0173Using thrift 0.14.1174Using jaeger-client 1.1.0175Using pg_query 2.1.0176Using redis 4.2.5177Using gitlab-labkit 0.20.0178Using gitlab-markup 1.7.1179Using grpc-tools 1.30.2180Using sawyer 0.8.2181Using octokit 4.20.0182Using reverse_markdown 1.4.0183Using thor 1.1.0184Using licensee 9.14.1185Using method_source 0.9.2186Using msgpack 1.3.3187Using optimist 3.0.1188Using parallel 1.19.2189Using parser 2.7.2.0190Using procto 0.0.3191Using unparser 0.4.7192Using proc_to_ast 0.1.0193Using pry 0.12.2194Using rainbow 3.0.0195Using rbtrace 0.4.14196Using rdoc 6.3.2197Using regexp_parser 1.8.1198Using rexml 3.2.4199Using rspec-support 3.8.0200Using rspec-core 3.8.0201Using rspec-expectations 3.8.3202Using rspec-mocks 3.8.0203Using rspec 3.8.0204Using rspec-parameterized 0.4.2205Using rubocop-ast 0.2.0206Using ruby-progressbar 1.10.1207Using unicode-display_width 1.7.0208Using rubocop 0.86.0209Using sentry-raven 3.0.4210Using timecop 0.9.1211Bundle complete! 21 Gemfile dependencies, 96 gems now installed.212Gems in the groups production and development were not installed.213Bundled gems are installed into `/builds/gitlab-org/gitlab/vendor/gitaly-ruby`214Checking gitaly-ruby Gemfile...215Checking gitaly-ruby bundle...216The Gemfile's dependencies are satisfied217Trying to connect to gitaly: ................................................. OK218Trying to connect to gitaly2: ..................................................................... OK219Trying to connect to praefect: ......... OK220==> 'scripts/gitaly-test-spawn' succeeded in 15 seconds.221$ source ./scripts/rspec_helpers.sh222$ rspec_paralellized_job "--tag ~quarantine --tag ~geo --tag ~level:migration"223KNAPSACK_TEST_FILE_PATTERN: spec/{bin,channels,config,db,dependencies,elastic,elastic_integration,experiments,factories,finders,frontend,graphql,haml_lint,helpers,initializers,javascripts,lib,models,policies,presenters,rack_servers,replicators,routing,rubocop,serializers,services,sidekiq,spam,support_specs,tasks,uploaders,validators,views,workers,tooling}{,/**/}*_spec.rb224Knapsack node specs:225spec/services/notification_service_spec.rb226spec/lib/gitlab/background_migration/backfill_snippet_repositories_spec.rb227spec/models/clusters/applications/elastic_stack_spec.rb228spec/lib/gitlab/background_migration/user_mentions/create_resource_user_mention_spec.rb229spec/models/clusters/applications/runner_spec.rb230spec/models/members/project_member_spec.rb231spec/services/projects/container_repository/cleanup_tags_service_spec.rb232spec/models/integration_spec.rb233spec/lib/gitlab/background_migration/set_null_external_diff_store_to_local_value_spec.rb234spec/services/ci/retry_pipeline_service_spec.rb235spec/services/projects/destroy_service_spec.rb236spec/finders/releases_finder_spec.rb237spec/services/verify_pages_domain_service_spec.rb238spec/lib/gitlab/database/migrations/background_migration_helpers_spec.rb239spec/lib/gitlab/ci/pipeline/expression/statement_spec.rb240spec/uploaders/packages/package_file_uploader_spec.rb241spec/models/concerns/routable_spec.rb242spec/models/concerns/integrations/has_data_fields_spec.rb243spec/models/concerns/cache_markdown_field_spec.rb244spec/helpers/gitlab_routing_helper_spec.rb245spec/lib/gitlab/background_migration/move_container_registry_enabled_to_project_feature_spec.rb246spec/services/projects/update_repository_storage_service_spec.rb247spec/uploaders/workers/object_storage/migrate_uploads_worker_spec.rb248spec/models/packages/debian/group_distribution_spec.rb249spec/serializers/environment_serializer_spec.rb250spec/models/concerns/token_authenticatable_spec.rb251spec/lib/gitlab/json_cache_spec.rb252spec/lib/gitlab/ci/status/external/factory_spec.rb253spec/lib/gitlab/gitaly_client_spec.rb254spec/graphql/features/authorization_spec.rb255spec/policies/group_member_policy_spec.rb256spec/models/clusters/integrations/prometheus_spec.rb257spec/lib/gitlab/metrics_spec.rb258spec/lib/banzai/filter/issuable_state_filter_spec.rb259spec/graphql/mutations/discussions/toggle_resolve_spec.rb260spec/services/lfs/file_transformer_spec.rb261spec/policies/design_management/design_policy_spec.rb262spec/models/snippet_repository_spec.rb263spec/models/bulk_imports/entity_spec.rb264spec/services/merge_requests/add_todo_when_build_fails_service_spec.rb265spec/graphql/mutations/releases/create_spec.rb266spec/lib/gitlab/template/gitlab_ci_yml_template_spec.rb267spec/uploaders/ci/pipeline_artifact_uploader_spec.rb268spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb269spec/services/discussions/update_diff_position_service_spec.rb270spec/graphql/types/base_field_spec.rb271spec/lib/gitlab/database/load_balancing/sidekiq_server_middleware_spec.rb272spec/services/suggestions/create_service_spec.rb273spec/models/personal_access_token_spec.rb274spec/lib/gitlab/background_migration/backfill_upvotes_count_on_issues_spec.rb275spec/lib/gitlab/search/recent_merge_requests_spec.rb276spec/presenters/ci/stage_presenter_spec.rb277spec/lib/gitlab/gitaly_client/operation_service_spec.rb278spec/lib/gitlab/sidekiq_config/worker_router_spec.rb279spec/services/milestones/promote_service_spec.rb280spec/graphql/resolvers/project_milestones_resolver_spec.rb281spec/graphql/resolvers/design_management/designs_resolver_spec.rb282spec/models/integrations/redmine_spec.rb283spec/helpers/sorting_helper_spec.rb284spec/views/ci/status/_badge.html.haml_spec.rb285spec/services/draft_notes/create_service_spec.rb286spec/services/clusters/applications/prometheus_update_service_spec.rb287spec/models/fork_network_spec.rb288spec/lib/gitlab/background_migration/backfill_projects_with_coverage_spec.rb289spec/models/state_note_spec.rb290spec/lib/gitlab/api_authentication/token_locator_spec.rb291spec/lib/gitlab/ci/build/policy/refs_spec.rb292spec/models/board_group_recent_visit_spec.rb293spec/services/ci/play_manual_stage_service_spec.rb294spec/lib/gitlab/ci/reports/security/vulnerability_reports_comparer_spec.rb295spec/lib/banzai/filter/table_of_contents_filter_spec.rb296spec/lib/gitlab/ci/config/entry/include_spec.rb297spec/services/users/create_service_spec.rb298spec/lib/gitlab/slash_commands/run_spec.rb299spec/lib/gitlab/analytics/cycle_analytics/stage_events/code_stage_start_spec.rb300spec/lib/gitlab/ci/reports/accessibility_reports_spec.rb301spec/services/clusters/applications/upgrade_service_spec.rb302spec/models/wiki_page/slug_spec.rb303spec/lib/sidebars/projects/menus/packages_registries_menu_spec.rb304spec/models/ci/resource_spec.rb305spec/models/packages/debian/group_distribution_key_spec.rb306spec/helpers/nav_helper_spec.rb307spec/lib/gitlab/ci/config/entry/prefix_spec.rb308spec/lib/banzai/filter/inline_metrics_filter_spec.rb309spec/policies/board_policy_spec.rb310spec/models/packages/maven/metadatum_spec.rb311spec/services/bulk_imports/relation_export_service_spec.rb312spec/lib/grafana/time_window_spec.rb313spec/services/incident_management/pager_duty/process_webhook_service_spec.rb314spec/services/todos/destroy/confidential_issue_service_spec.rb315spec/models/lfs_download_object_spec.rb316spec/lib/gitlab/metrics/subscribers/rails_cache_spec.rb317spec/services/feature_flags/create_service_spec.rb318spec/helpers/keyset_helper_spec.rb319spec/services/metrics/dashboard/pod_dashboard_service_spec.rb320spec/services/container_expiration_policies/cleanup_service_spec.rb321spec/lib/gitlab/ci/templates/Verify/load_performance_testing_gitlab_ci_yaml_spec.rb322spec/services/deployments/update_service_spec.rb323spec/lib/banzai/reference_parser/alert_parser_spec.rb324spec/lib/gitlab/slash_commands/presenters/deploy_spec.rb325spec/tooling/rspec_flaky/flaky_example_spec.rb326spec/services/merge_requests/reload_merge_head_diff_service_spec.rb327spec/services/commits/tag_service_spec.rb328spec/rubocop/cop/sidekiq_load_balancing/worker_data_consistency_with_deduplication_spec.rb329spec/lib/grafana/validator_spec.rb330spec/services/service_response_spec.rb331spec/lib/api/helpers/packages_helpers_spec.rb332spec/finders/merge_requests/by_approvals_finder_spec.rb333spec/models/concerns/ci/artifactable_spec.rb334spec/services/search/snippet_service_spec.rb335spec/lib/gitlab/background_migration/cleanup_concurrent_schema_change_spec.rb336spec/models/context_commits_diff_spec.rb337spec/services/repositories/destroy_rollback_service_spec.rb338spec/rubocop/cop/migration/add_limit_to_text_columns_spec.rb339spec/services/metrics/dashboard/panel_preview_service_spec.rb340spec/models/integrations/asana_spec.rb341spec/serializers/test_suite_summary_entity_spec.rb342spec/finders/protected_branches_finder_spec.rb343spec/services/metrics/dashboard/gitlab_alert_embed_service_spec.rb344spec/lib/banzai/filter/asset_proxy_filter_spec.rb345spec/services/clusters/kubernetes_spec.rb346spec/graphql/types/base_object_spec.rb347spec/finders/users_star_projects_finder_spec.rb348spec/workers/clusters/applications/activate_service_worker_spec.rb349spec/lib/gitlab/kubernetes/namespace_spec.rb350spec/models/integrations/chat_message/wiki_page_message_spec.rb351spec/workers/reactive_caching_worker_spec.rb352spec/lib/gitlab/web_ide/config/entry/terminal_spec.rb353spec/lib/gitlab/ci/config/entry/kubernetes_spec.rb354spec/workers/jira_connect/sync_branch_worker_spec.rb355spec/workers/propagate_integration_project_worker_spec.rb356spec/lib/gitlab/usage_data_non_sql_metrics_spec.rb357spec/models/snippet_input_action_collection_spec.rb358spec/tasks/gettext_rake_spec.rb359spec/lib/gitlab/background_migration/remove_duplicate_vulnerabilities_findings_spec.rb360spec/models/system_note_metadata_spec.rb361spec/lib/gitlab/git/user_spec.rb362spec/services/milestones/issues_count_service_spec.rb363spec/services/releases/create_evidence_service_spec.rb364spec/presenters/instance_clusterable_presenter_spec.rb365spec/models/badges/project_badge_spec.rb366spec/presenters/gitlab/blame_presenter_spec.rb367spec/graphql/mutations/issues/set_subscription_spec.rb368spec/lib/gitlab/ci/pipeline/chain/create_spec.rb369spec/lib/gitlab/git/raw_diff_change_spec.rb370spec/workers/create_pipeline_worker_spec.rb371spec/models/clusters/agents/implicit_authorization_spec.rb372spec/graphql/types/timelog_type_spec.rb373spec/services/base_count_service_spec.rb374spec/lib/gitlab/checks/lfs_check_spec.rb375spec/tooling/rspec_flaky/report_spec.rb376spec/lib/gitlab/usage_data_counters/source_code_counter_spec.rb377spec/rubocop/cop/performance/active_record_subtransactions_spec.rb378spec/lib/gitlab/manifest_import/metadata_spec.rb379spec/lib/gitlab/ci/status/pipeline/delayed_spec.rb380spec/lib/gitlab/suggestions/commit_message_spec.rb381spec/serializers/merge_request_for_pipeline_entity_spec.rb382spec/policies/resource_label_event_policy_spec.rb383spec/lib/gitlab/dependency_linker/gemspec_linker_spec.rb384spec/models/gpg_key_subkey_spec.rb385spec/services/protected_tags/update_service_spec.rb386spec/helpers/projects/terraform_helper_spec.rb387spec/services/users/dismiss_group_callout_service_spec.rb388spec/lib/gitlab/data_builder/deployment_spec.rb389spec/lib/gitlab/pagination/keyset_spec.rb390spec/helpers/blame_helper_spec.rb391spec/lib/gitlab/background_migration/reset_merge_status_spec.rb392spec/lib/gitlab/cross_project_access/check_collection_spec.rb393spec/lib/gitlab/content_security_policy/config_loader_spec.rb394spec/policies/packages/package_policy_spec.rb395spec/lib/gitlab/utils/gzip_spec.rb396spec/lib/gitlab/rate_limit_helpers_spec.rb397spec/lib/gitlab/auth/saml/auth_hash_spec.rb398spec/lib/generators/gitlab/snowplow_event_definition_generator_spec.rb399spec/lib/gitlab/etag_caching/router/graphql_spec.rb400spec/lib/gitlab/avatar_cache_spec.rb401spec/lib/gitlab/github_import/object_counter_spec.rb402spec/lib/gitlab/prometheus/queries/deployment_query_spec.rb403spec/workers/run_pipeline_schedule_worker_spec.rb404spec/experiments/new_project_readme_content_experiment_spec.rb405spec/lib/gitlab/import_export/uploads_saver_spec.rb406spec/services/bulk_imports/file_decompression_service_spec.rb407spec/lib/gitlab/ci/build/artifacts/expire_in_parser_spec.rb408spec/graphql/features/feature_flag_spec.rb409spec/workers/deployments/drop_older_deployments_worker_spec.rb410spec/workers/hashed_storage/rollbacker_worker_spec.rb411spec/lib/gitlab/noteable_metadata_spec.rb412spec/graphql/types/design_management/design_type_spec.rb413spec/graphql/mutations/alert_management/http_integration/destroy_spec.rb414spec/models/blob_viewer/go_mod_spec.rb415spec/models/instance_metadata_spec.rb416spec/workers/pages_domain_removal_cron_worker_spec.rb417spec/tasks/gitlab/terraform/migrate_rake_spec.rb418spec/lib/gitlab/ci/reports/codequality_reports_spec.rb419spec/lib/gitlab/utils/log_limited_array_spec.rb420spec/lib/bulk_imports/pipeline/runner_spec.rb421spec/workers/build_hooks_worker_spec.rb422spec/services/ci/compare_codequality_reports_service_spec.rb423spec/lib/gitlab/bullet_spec.rb424spec/rubocop/cop/graphql/authorize_types_spec.rb425spec/models/cycle_analytics/project_level_stage_adapter_spec.rb426spec/graphql/mutations/alert_management/http_integration/create_spec.rb427spec/lib/gitlab/database/async_indexes/index_creator_spec.rb428spec/workers/web_hook_worker_spec.rb429spec/lib/gitlab/sidekiq_versioning/middleware_spec.rb430spec/services/auth/dependency_proxy_authentication_service_spec.rb431spec/lib/gitlab/slash_commands/presenters/issue_search_spec.rb432spec/lib/gitlab/word_diff/positions_counter_spec.rb433spec/services/projects/destroy_rollback_service_spec.rb434spec/views/admin/sessions/two_factor.html.haml_spec.rb435spec/models/chat_team_spec.rb436spec/rubocop/cop/usage_data/distinct_count_by_large_foreign_key_spec.rb437spec/views/projects/imports/new.html.haml_spec.rb438spec/tasks/gitlab/lfs/check_rake_spec.rb439spec/validators/json_schema_validator_spec.rb440spec/models/concerns/from_except_spec.rb441spec/support_specs/helpers/active_record/query_recorder_spec.rb442spec/rubocop/cop/gitlab/duplicate_spec_location_spec.rb443spec/serializers/build_trace_entity_spec.rb444spec/lib/gitlab/diff/parallel_diff_spec.rb445spec/workers/concerns/limited_capacity/job_tracker_spec.rb446spec/lib/gitlab/faraday/error_callback_spec.rb447spec/services/ci/disable_user_pipeline_schedules_service_spec.rb448spec/services/notes/render_service_spec.rb449spec/lib/gitlab/graphql/timeout_spec.rb450spec/lib/gitlab/word_diff/segments/newline_spec.rb451spec/serializers/entity_request_spec.rb452spec/initializers/rails_asset_host_spec.rb453spec/initializers/6_validations_spec.rb454spec/lib/gitlab/search/found_wiki_page_spec.rb455spec/models/experiment_user_spec.rb456spec/helpers/enable_search_settings_helper_spec.rb457spec/graphql/types/tree/type_enum_spec.rb458spec/lib/product_analytics/tracker_spec.rb459spec/lib/api/entities/snippets/repository_storage_move_spec.rb460spec/lib/api/validations/validators/git_ref_spec.rb461spec/models/synthetic_note_spec.rb462spec/workers/disallow_two_factor_for_group_worker_spec.rb463spec/lib/gitlab/sidekiq_status/server_middleware_spec.rb464spec/lib/gitlab/metrics/dashboard/stages/track_panel_type_spec.rb465spec/lib/api/entities/nuget/package_metadata_catalog_entry_spec.rb466spec/graphql/types/packages/package_dependency_link_type_spec.rb467spec/lib/gitlab/database/consistency_spec.rb468spec/graphql/types/alert_management/severity_enum_spec.rb469spec/graphql/types/packages/nuget/metadatum_type_spec.rb470spec/lib/gitlab/elasticsearch/logs/pods_spec.rb471spec/workers/expire_build_artifacts_worker_spec.rb472spec/graphql/types/jira_import_type_spec.rb473spec/models/concerns/feature_gate_spec.rb474spec/graphql/types/container_expiration_policy_older_than_enum_spec.rb475spec/lib/gitlab/usage/metrics/names_suggestions/relation_parsers/joins_spec.rb476spec/lib/gitlab/sidekiq_status/client_middleware_spec.rb477Filter specs:478Running specs:479Running all node tests without filter480spec/services/notification_service_spec.rb481spec/lib/gitlab/background_migration/backfill_snippet_repositories_spec.rb482spec/models/clusters/applications/elastic_stack_spec.rb483spec/lib/gitlab/background_migration/user_mentions/create_resource_user_mention_spec.rb484spec/models/clusters/applications/runner_spec.rb485spec/models/members/project_member_spec.rb486spec/services/projects/container_repository/cleanup_tags_service_spec.rb487spec/models/integration_spec.rb488spec/lib/gitlab/background_migration/set_null_external_diff_store_to_local_value_spec.rb489spec/services/ci/retry_pipeline_service_spec.rb490spec/services/projects/destroy_service_spec.rb491spec/finders/releases_finder_spec.rb492spec/services/verify_pages_domain_service_spec.rb493spec/lib/gitlab/database/migrations/background_migration_helpers_spec.rb494spec/lib/gitlab/ci/pipeline/expression/statement_spec.rb495spec/uploaders/packages/package_file_uploader_spec.rb496spec/models/concerns/routable_spec.rb497spec/models/concerns/integrations/has_data_fields_spec.rb498spec/models/concerns/cache_markdown_field_spec.rb499spec/helpers/gitlab_routing_helper_spec.rb500spec/lib/gitlab/background_migration/move_container_registry_enabled_to_project_feature_spec.rb501spec/services/projects/update_repository_storage_service_spec.rb502spec/uploaders/workers/object_storage/migrate_uploads_worker_spec.rb503spec/models/packages/debian/group_distribution_spec.rb504spec/serializers/environment_serializer_spec.rb505spec/models/concerns/token_authenticatable_spec.rb506spec/lib/gitlab/json_cache_spec.rb507spec/lib/gitlab/ci/status/external/factory_spec.rb508spec/lib/gitlab/gitaly_client_spec.rb509spec/graphql/features/authorization_spec.rb510spec/policies/group_member_policy_spec.rb511spec/models/clusters/integrations/prometheus_spec.rb512spec/lib/gitlab/metrics_spec.rb513spec/lib/banzai/filter/issuable_state_filter_spec.rb514spec/graphql/mutations/discussions/toggle_resolve_spec.rb515spec/services/lfs/file_transformer_spec.rb516spec/policies/design_management/design_policy_spec.rb517spec/models/snippet_repository_spec.rb518spec/models/bulk_imports/entity_spec.rb519spec/services/merge_requests/add_todo_when_build_fails_service_spec.rb520spec/graphql/mutations/releases/create_spec.rb521spec/lib/gitlab/template/gitlab_ci_yml_template_spec.rb522spec/uploaders/ci/pipeline_artifact_uploader_spec.rb523spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb524spec/services/discussions/update_diff_position_service_spec.rb525spec/graphql/types/base_field_spec.rb526spec/lib/gitlab/database/load_balancing/sidekiq_server_middleware_spec.rb527spec/services/suggestions/create_service_spec.rb528spec/models/personal_access_token_spec.rb529spec/lib/gitlab/background_migration/backfill_upvotes_count_on_issues_spec.rb530spec/lib/gitlab/search/recent_merge_requests_spec.rb531spec/presenters/ci/stage_presenter_spec.rb532spec/lib/gitlab/gitaly_client/operation_service_spec.rb533spec/lib/gitlab/sidekiq_config/worker_router_spec.rb534spec/services/milestones/promote_service_spec.rb535spec/graphql/resolvers/project_milestones_resolver_spec.rb536spec/graphql/resolvers/design_management/designs_resolver_spec.rb537spec/models/integrations/redmine_spec.rb538spec/helpers/sorting_helper_spec.rb539spec/views/ci/status/_badge.html.haml_spec.rb540spec/services/draft_notes/create_service_spec.rb541spec/services/clusters/applications/prometheus_update_service_spec.rb542spec/models/fork_network_spec.rb543spec/lib/gitlab/background_migration/backfill_projects_with_coverage_spec.rb544spec/models/state_note_spec.rb545spec/lib/gitlab/api_authentication/token_locator_spec.rb546spec/lib/gitlab/ci/build/policy/refs_spec.rb547spec/models/board_group_recent_visit_spec.rb548spec/services/ci/play_manual_stage_service_spec.rb549spec/lib/gitlab/ci/reports/security/vulnerability_reports_comparer_spec.rb550spec/lib/banzai/filter/table_of_contents_filter_spec.rb551spec/lib/gitlab/ci/config/entry/include_spec.rb552spec/services/users/create_service_spec.rb553spec/lib/gitlab/slash_commands/run_spec.rb554spec/lib/gitlab/analytics/cycle_analytics/stage_events/code_stage_start_spec.rb555spec/lib/gitlab/ci/reports/accessibility_reports_spec.rb556spec/services/clusters/applications/upgrade_service_spec.rb557spec/models/wiki_page/slug_spec.rb558spec/lib/sidebars/projects/menus/packages_registries_menu_spec.rb559spec/models/ci/resource_spec.rb560spec/models/packages/debian/group_distribution_key_spec.rb561spec/helpers/nav_helper_spec.rb562spec/lib/gitlab/ci/config/entry/prefix_spec.rb563spec/lib/banzai/filter/inline_metrics_filter_spec.rb564spec/policies/board_policy_spec.rb565spec/models/packages/maven/metadatum_spec.rb566spec/services/bulk_imports/relation_export_service_spec.rb567spec/lib/grafana/time_window_spec.rb568spec/services/incident_management/pager_duty/process_webhook_service_spec.rb569spec/services/todos/destroy/confidential_issue_service_spec.rb570spec/models/lfs_download_object_spec.rb571spec/lib/gitlab/metrics/subscribers/rails_cache_spec.rb572spec/services/feature_flags/create_service_spec.rb573spec/helpers/keyset_helper_spec.rb574spec/services/metrics/dashboard/pod_dashboard_service_spec.rb575spec/services/container_expiration_policies/cleanup_service_spec.rb576spec/lib/gitlab/ci/templates/Verify/load_performance_testing_gitlab_ci_yaml_spec.rb577spec/services/deployments/update_service_spec.rb578spec/lib/banzai/reference_parser/alert_parser_spec.rb579spec/lib/gitlab/slash_commands/presenters/deploy_spec.rb580spec/tooling/rspec_flaky/flaky_example_spec.rb581spec/services/merge_requests/reload_merge_head_diff_service_spec.rb582spec/services/commits/tag_service_spec.rb583spec/rubocop/cop/sidekiq_load_balancing/worker_data_consistency_with_deduplication_spec.rb584spec/lib/grafana/validator_spec.rb585spec/services/service_response_spec.rb586spec/lib/api/helpers/packages_helpers_spec.rb587spec/finders/merge_requests/by_approvals_finder_spec.rb588spec/models/concerns/ci/artifactable_spec.rb589spec/services/search/snippet_service_spec.rb590spec/lib/gitlab/background_migration/cleanup_concurrent_schema_change_spec.rb591spec/models/context_commits_diff_spec.rb592spec/services/repositories/destroy_rollback_service_spec.rb593spec/rubocop/cop/migration/add_limit_to_text_columns_spec.rb594spec/services/metrics/dashboard/panel_preview_service_spec.rb595spec/models/integrations/asana_spec.rb596spec/serializers/test_suite_summary_entity_spec.rb597spec/finders/protected_branches_finder_spec.rb598spec/services/metrics/dashboard/gitlab_alert_embed_service_spec.rb599spec/lib/banzai/filter/asset_proxy_filter_spec.rb600spec/services/clusters/kubernetes_spec.rb601spec/graphql/types/base_object_spec.rb602spec/finders/users_star_projects_finder_spec.rb603spec/workers/clusters/applications/activate_service_worker_spec.rb604spec/lib/gitlab/kubernetes/namespace_spec.rb605spec/models/integrations/chat_message/wiki_page_message_spec.rb606spec/workers/reactive_caching_worker_spec.rb607spec/lib/gitlab/web_ide/config/entry/terminal_spec.rb608spec/lib/gitlab/ci/config/entry/kubernetes_spec.rb609spec/workers/jira_connect/sync_branch_worker_spec.rb610spec/workers/propagate_integration_project_worker_spec.rb611spec/lib/gitlab/usage_data_non_sql_metrics_spec.rb612spec/models/snippet_input_action_collection_spec.rb613spec/tasks/gettext_rake_spec.rb614spec/lib/gitlab/background_migration/remove_duplicate_vulnerabilities_findings_spec.rb615spec/models/system_note_metadata_spec.rb616spec/lib/gitlab/git/user_spec.rb617spec/services/milestones/issues_count_service_spec.rb618spec/services/releases/create_evidence_service_spec.rb619spec/presenters/instance_clusterable_presenter_spec.rb620spec/models/badges/project_badge_spec.rb621spec/presenters/gitlab/blame_presenter_spec.rb622spec/graphql/mutations/issues/set_subscription_spec.rb623spec/lib/gitlab/ci/pipeline/chain/create_spec.rb624spec/lib/gitlab/git/raw_diff_change_spec.rb625spec/workers/create_pipeline_worker_spec.rb626spec/models/clusters/agents/implicit_authorization_spec.rb627spec/graphql/types/timelog_type_spec.rb628spec/services/base_count_service_spec.rb629spec/lib/gitlab/checks/lfs_check_spec.rb630spec/tooling/rspec_flaky/report_spec.rb631spec/lib/gitlab/usage_data_counters/source_code_counter_spec.rb632spec/rubocop/cop/performance/active_record_subtransactions_spec.rb633spec/lib/gitlab/manifest_import/metadata_spec.rb634spec/lib/gitlab/ci/status/pipeline/delayed_spec.rb635spec/lib/gitlab/suggestions/commit_message_spec.rb636spec/serializers/merge_request_for_pipeline_entity_spec.rb637spec/policies/resource_label_event_policy_spec.rb638spec/lib/gitlab/dependency_linker/gemspec_linker_spec.rb639spec/models/gpg_key_subkey_spec.rb640spec/services/protected_tags/update_service_spec.rb641spec/helpers/projects/terraform_helper_spec.rb642spec/services/users/dismiss_group_callout_service_spec.rb643spec/lib/gitlab/data_builder/deployment_spec.rb644spec/lib/gitlab/pagination/keyset_spec.rb645spec/helpers/blame_helper_spec.rb646spec/lib/gitlab/background_migration/reset_merge_status_spec.rb647spec/lib/gitlab/cross_project_access/check_collection_spec.rb648spec/lib/gitlab/content_security_policy/config_loader_spec.rb649spec/policies/packages/package_policy_spec.rb650spec/lib/gitlab/utils/gzip_spec.rb651spec/lib/gitlab/rate_limit_helpers_spec.rb652spec/lib/gitlab/auth/saml/auth_hash_spec.rb653spec/lib/generators/gitlab/snowplow_event_definition_generator_spec.rb654spec/lib/gitlab/etag_caching/router/graphql_spec.rb655spec/lib/gitlab/avatar_cache_spec.rb656spec/lib/gitlab/github_import/object_counter_spec.rb657spec/lib/gitlab/prometheus/queries/deployment_query_spec.rb658spec/workers/run_pipeline_schedule_worker_spec.rb659spec/experiments/new_project_readme_content_experiment_spec.rb660spec/lib/gitlab/import_export/uploads_saver_spec.rb661spec/services/bulk_imports/file_decompression_service_spec.rb662spec/lib/gitlab/ci/build/artifacts/expire_in_parser_spec.rb663spec/graphql/features/feature_flag_spec.rb664spec/workers/deployments/drop_older_deployments_worker_spec.rb665spec/workers/hashed_storage/rollbacker_worker_spec.rb666spec/lib/gitlab/noteable_metadata_spec.rb667spec/graphql/types/design_management/design_type_spec.rb668spec/graphql/mutations/alert_management/http_integration/destroy_spec.rb669spec/models/blob_viewer/go_mod_spec.rb670spec/models/instance_metadata_spec.rb671spec/workers/pages_domain_removal_cron_worker_spec.rb672spec/tasks/gitlab/terraform/migrate_rake_spec.rb673spec/lib/gitlab/ci/reports/codequality_reports_spec.rb674spec/lib/gitlab/utils/log_limited_array_spec.rb675spec/lib/bulk_imports/pipeline/runner_spec.rb676spec/workers/build_hooks_worker_spec.rb677spec/services/ci/compare_codequality_reports_service_spec.rb678spec/lib/gitlab/bullet_spec.rb679spec/rubocop/cop/graphql/authorize_types_spec.rb680spec/models/cycle_analytics/project_level_stage_adapter_spec.rb681spec/graphql/mutations/alert_management/http_integration/create_spec.rb682spec/lib/gitlab/database/async_indexes/index_creator_spec.rb683spec/workers/web_hook_worker_spec.rb684spec/lib/gitlab/sidekiq_versioning/middleware_spec.rb685spec/services/auth/dependency_proxy_authentication_service_spec.rb686spec/lib/gitlab/slash_commands/presenters/issue_search_spec.rb687spec/lib/gitlab/word_diff/positions_counter_spec.rb688spec/services/projects/destroy_rollback_service_spec.rb689spec/views/admin/sessions/two_factor.html.haml_spec.rb690spec/models/chat_team_spec.rb691spec/rubocop/cop/usage_data/distinct_count_by_large_foreign_key_spec.rb692spec/views/projects/imports/new.html.haml_spec.rb693spec/tasks/gitlab/lfs/check_rake_spec.rb694spec/validators/json_schema_validator_spec.rb695spec/models/concerns/from_except_spec.rb696spec/support_specs/helpers/active_record/query_recorder_spec.rb697spec/rubocop/cop/gitlab/duplicate_spec_location_spec.rbKnapsack report generator started!698Run options: exclude {:quarantine=>true, :geo=>true, :level=>"migration"}699==> /builds/gitlab-org/gitlab/tmp/tests/gitlab-test_bare set up in 0.041699137 seconds...700Test environment set up in 0.687071948 seconds701NotificationService702 #async703 returns an Async object with the correct parent704 when receiving a public method705 schedules a MailScheduler::NotificationServiceWorker706 when receiving a private method707 raises NoMethodError708 when receiving a non-existent method709 raises NoMethodError710 Keys711 #new_key712 sends email to key owner713 never emails the ghost user714 does not send email to key owner715 GpgKeys716 #new_gpg_key717 sends email to key owner718 never emails the ghost user719 does not send email to key owner720 AccessToken721 #access_token_about_to_expire722 sends email to the token owner723 #access_token_expired724 sends email to the token owner725 when user is not allowed to receive notifications726 does not send email to the token owner727 SSH Keys728 #ssh_key_expired729 sends email to the token owner730 when user is not allowed to receive notifications731 does not send email to the token owner732 #ssh_key_expiring_soon733 sends email to the token owner734 when user is not allowed to receive notifications735 does not send email to the token owner736 #unknown_sign_in737 sends email to the user738 #disabled_two_factor739 sends email to the user740 Notes741 issue note742 issue_email_participants743 behaves like no participants are notified744 does not send the email745 behaves like notification with exact metric events746 adds metric event747 do exist and note not confidential748 sends the email749 behaves like notification with exact metric events750 adds metric event751 do exist and note is confidential752 behaves like no participants are notified753 does not send the email754 behaves like notification with exact metric events755 adds metric event756 #new_note757 filters out "mentioned in" notes758 with users759 sends emails to recipients760 emails the note author if they've opted into notifications about their activity761 behaves like project emails are disabled762 sends no emails with project emails disabled763 sends emails to someone764 participating765 by note766 is expected not to have enqueued job767 in project that belongs to a group768 which is a top-level group769 behaves like new note notifications770 sends notifications771 behaves like project emails are disabled772 sends no emails with project emails disabled773 sends emails to someone774 which is a subgroup775 overrides child objects with global level776 behaves like new note notifications777 sends notifications778 confidential issue note779 filters out users that can not read the issue780 on project that belongs to subgroup781 when user is group guest member782 does not email guest user783 issue note mention784 #new_note785 notifies the team members786 notifies parent group members with mention level787 filters out "mentioned in" notes788 behaves like project emails are disabled789 sends no emails with project emails disabled790 sends emails to someone791 project snippet note792 #new_note793 notifies the team members794 personal snippet note795 #new_note796 notifies the participants797 commit note798 #new_note, #perform_enqueued_jobs799 is expected to eq 0800 is expected to eq 0801 is expected to eq 0802 behaves like project emails are disabled803 sends no emails with project emails disabled804 sends emails to someone805 merge request diff note806 #new_note807 records sent notifications808 behaves like project emails are disabled809 sends no emails with project emails disabled810 sends emails to someone811 design diff note812 design management is enabled813 sends new note notifications814 design management is disabled815 does not notify anyone816 #send_new_release_notifications817 when release author is blocked818 does not send any notification819 when release author is a ghost820 does not send any notification821 when recipients for a new release exist822 calls new_release_email for each relevant recipient823 Participating project notification settings have priority over group and global settings if available824 custom on group825 does not send an email to user1 when a new issue is created and new_issue is set to nil826 does not send an email to user1 when a new issue is created and new_issue is set to true827 watch on group828 does not send an email829 custom on global, global on group830 does not send an email831 watch on global, global on group832 does not send an email833 Issues834 #new_issue835 notifies the expected users836 is expected to eq 0837 properly prioritizes notification reason838 adds "assigned" reason for assignees if any839 emails any mentioned users with the mention level840 emails the author if they've opted into notifications about their activity841 doesn't email the author if they haven't opted into notifications about their activity842 emails subscribers of the issue's labels843 adds "subscribed" reason to subscriber emails844 behaves like project emails are disabled845 sends no emails with project emails disabled846 sends emails to someone847 confidential issues848 emails subscribers of the issue's labels that can read the issue849 when the author is not allowed to trigger notifications850 because they are blocked851 does not send any notification852 because they are a ghost853 does not send any notification854 #new_mentions_in_issue855 sends no emails when no new mentions are present856 emails new mentions with a watch level higher than mention857 does not email new mentions with a watch level equal to or less than mention858 emails new mentions despite being unsubscribed859 sends the proper notification reason header860 behaves like project emails are disabled861 sends no emails with project emails disabled862 sends emails to someone863 where current_user is blocked864 does not send any notification865 where current_user is a ghost866 does not send any notification867 #reassigned_issue868 emails new assignee869 adds "assigned" reason for new assignee870 emails previous assignee even if they have the "on mention" notif level871 emails new assignee even if they have the "on mention" notif level872 does not email new assignee if they are the current user873 behaves like participating notifications874 behaves like participating by note notification875 emails the participant876 for subgroups877 emails the participant878 behaves like participating by author notification879 emails the participant880 behaves like participating by assignee notification881 emails the participant882 behaves like project emails are disabled883 sends no emails with project emails disabled884 sends emails to someone885 #relabeled_issue886 emails the current user if they've opted into notifications about their activity887 doesn't email the current user if they haven't opted into notifications about their activity888 doesn't send email to anyone but subscribers of the given labels889 doesn't send multiple email when a user is subscribed to multiple given labels890 behaves like project emails are disabled891 sends no emails with project emails disabled892 sends emails to someone893 confidential issues894 emails subscribers of the issue's labels that can read the issue895 #removed_milestone_issue897 behaves like altered milestone notification on issue898 sends the email to the correct people899 behaves like project emails are disabled900 sends no emails with project emails disabled901 sends emails to someone902 confidential issues903 emails subscribers of the issue's milestone that can read the issue904 #changed_milestone_issue906 behaves like altered milestone notification on issue907 sends the email to the correct people908 behaves like project emails are disabled909 sends no emails with project emails disabled910 sends emails to someone911 confidential issues912 emails subscribers of the issue's milestone that can read the issue913 #close_issue914 sends email to issue assignee and issue author915 adds "subscribed" reason to subscriber emails916 behaves like participating notifications917 behaves like participating by note notification918 emails the participant919 for subgroups920 emails the participant921 behaves like participating by author notification922 emails the participant923 behaves like participating by assignee notification924 emails the participant925 behaves like project emails are disabled926 sends no emails with project emails disabled927 sends emails to someone928 #reopen_issue929 sends email to issue notification recipients930 behaves like participating notifications931 behaves like participating by note notification932 emails the participant933 for subgroups934 emails the participant935 behaves like participating by author notification936 emails the participant937 behaves like participating by assignee notification938 emails the participant939 behaves like project emails are disabled940 sends no emails with project emails disabled941 sends emails to someone942 #issue_moved943 sends email to issue notification recipients944 behaves like participating notifications945 behaves like participating by note notification946 emails the participant947 for subgroups948 emails the participant949 behaves like participating by author notification950 emails the participant951 behaves like participating by assignee notification952 emails the participant953 behaves like project emails are disabled954 sends no emails with project emails disabled955 sends emails to someone956 #issue_cloned957 sends email to issue notification recipients958 behaves like participating notifications959 behaves like participating by note notification960 emails the participant961 for subgroups962 emails the participant963 behaves like participating by author notification964 emails the participant965 behaves like participating by assignee notification966 emails the participant967 behaves like project emails are disabled968 sends no emails with project emails disabled969 sends emails to someone970 #issue_due971 sends email to issue notification recipients, excluding watchers972 sends the email from the author973 behaves like participating notifications974 behaves like participating by note notification975 emails the participant976 for subgroups977 emails the participant978 behaves like participating by author notification979 emails the participant980 behaves like participating by assignee notification981 emails the participant982 behaves like project emails are disabled983 sends no emails with project emails disabled984 sends emails to someone985 Merge Requests986 #new_merge_request987 is expected to eq 0988 adds "assigned" reason for assignee, if any989 emails any mentioned users with the mention level990 emails the author if they've opted into notifications about their activity991 doesn't email the author if they haven't opted into notifications about their activity992 emails subscribers of the merge request's labels993 behaves like project emails are disabled994 sends no emails with project emails disabled995 sends emails to someone996 participating997 behaves like participating by assignee notification998 emails the participant999 behaves like participating by note notification1000 emails the participant1001 for subgroups1002 emails the participant1003 by author1004 is expected to eq 01005 when the author is not allowed to trigger notifications1006 because they are blocked1007 behaves like is not able to send notifications1008 does not send any notification1009 because they are a ghost1010 behaves like is not able to send notifications1011 does not send any notification1012 #new_mentions_in_merge_request1013 sends no emails when no new mentions are present1014 emails new mentions with a watch level higher than mention1015 does not email new mentions with a watch level equal to or less than mention1016 emails new mentions despite being unsubscribed1017 sends the proper notification reason header1018 behaves like project emails are disabled1019 sends no emails with project emails disabled1020 sends emails to someone1021 where current_user is blocked1022 does not send any notification1023 where current_user is a ghost1024 does not send any notification1025 #reassigned_merge_request1026 is expected to eq 01027 adds "assigned" reason for new assignee1028 behaves like participating notifications1029 behaves like participating by note notification1030 emails the participant1031 for subgroups1032 emails the participant1033 behaves like participating by author notification1034 emails the participant1035 behaves like participating by assignee notification1036 emails the participant1037 behaves like project emails are disabled1038 sends no emails with project emails disabled1039 sends emails to someone1040 #changed_reviewer_of_merge_request1041 sends emails to relevant users only1042 adds "review requested" reason for new reviewer1043 participating notifications with reviewers1044 behaves like participating notifications1045 behaves like participating by note notification1046 emails the participant1047 for subgroups1048 emails the participant1049 behaves like participating by author notification1050 emails the participant1051 behaves like participating by assignee notification1052 emails the participant1053 behaves like participating by reviewer notification1054 emails the participant1055 behaves like project emails are disabled1056 sends no emails with project emails disabled1057 sends emails to someone1058 #change_in_merge_request_draft_status1059 sends emails to relevant users only1060 behaves like participating notifications1061 behaves like participating by note notification1062 emails the participant1063 for subgroups1064 emails the participant1065 behaves like participating by author notification1066 emails the participant1067 behaves like participating by assignee notification1068 emails the participant1069 behaves like project emails are disabled1070 sends no emails with project emails disabled1071 sends emails to someone1072 #push_to_merge_request1073 is expected to eq 01074 behaves like participating notifications1075 behaves like participating by note notification1076 emails the participant1077 for subgroups1078 emails the participant1079 behaves like participating by author notification1080 emails the participant1081 behaves like participating by assignee notification1082 emails the participant1083 behaves like project emails are disabled1084 sends no emails with project emails disabled1085 sends emails to someone1086 #relabel_merge_request1087 doesn't send email to anyone but subscribers of the given labels1088 behaves like project emails are disabled1089 sends no emails with project emails disabled1090 sends emails to someone1091 #removed_milestone_merge_request1092 behaves like altered milestone notification on merge request1093 sends the email to the correct people1094 behaves like project emails are disabled1095 sends no emails with project emails disabled1096 sends emails to someone1097 #changed_milestone_merge_request1098 behaves like altered milestone notification on merge request1099 sends the email to the correct people1100 behaves like project emails are disabled1101 sends no emails with project emails disabled1102 sends emails to someone1103 #merge_request_unmergeable1104 sends email to merge request author1105 behaves like project emails are disabled1106 sends no emails with project emails disabled1107 sends emails to someone1108 when merge_when_pipeline_succeeds is true1109 sends email to merge request author and merge_user1110 #closed_merge_request1111 is expected to eq 01112 behaves like participating notifications1113 behaves like participating by note notification1114 emails the participant1115 for subgroups1116 emails the participant1117 behaves like participating by author notification1118 emails the participant1119 behaves like participating by assignee notification1120 emails the participant1121 behaves like project emails are disabled1122 sends no emails with project emails disabled1123 sends emails to someone1124 #merged_merge_request1125 is expected to eq 01126 notifies the merger when the pipeline succeeds is true1127 does not notify the merger when the pipeline succeeds is false1128 notifies the merger when the pipeline succeeds is false but they've opted into notifications about their activity1129 behaves like participating notifications1130 behaves like participating by note notification1131 emails the participant1132 for subgroups1133 emails the participant1134 behaves like participating by author notification1135 emails the participant1136 behaves like participating by assignee notification1137 emails the participant1138 behaves like project emails are disabled1139 sends no emails with project emails disabled1140 sends emails to someone1141 #reopen_merge_request1142 is expected to eq 01143 behaves like participating notifications1144 behaves like participating by note notification1145 emails the participant1146 for subgroups1147 emails the participant1148 behaves like participating by author notification1149 emails the participant1150 behaves like participating by assignee notification1151 emails the participant1152 behaves like project emails are disabled1153 sends no emails with project emails disabled1154 sends emails to someone1155 #resolve_all_discussions1156 is expected to eq 01157 behaves like participating notifications1158 behaves like participating by note notification1159 emails the participant1160 for subgroups1161 emails the participant1162 behaves like participating by author notification1163 emails the participant1164 behaves like participating by assignee notification1165 emails the participant1166 behaves like project emails are disabled1167 sends no emails with project emails disabled1168 sends emails to someone1169 #merge_when_pipeline_succeeds1170 send notification that merge will happen when pipeline succeeds1171 does not send notification if the custom event is disabled1172 sends notification to participants even if the custom event is disabled1173 behaves like participating notifications1174 behaves like participating by note notification1175 emails the participant1176 for subgroups1177 emails the participant1178 behaves like participating by author notification1179 emails the participant1180 behaves like participating by assignee notification1181 emails the participant1182 behaves like project emails are disabled1183 sends no emails with project emails disabled1184 sends emails to someone1185 #review_requested_of_merge_request1186 sends email to reviewer1187 adds "review requested" reason for new reviewer1188 behaves like project emails are disabled1189 sends no emails with project emails disabled1190 sends emails to someone1191 Projects1192 #project_was_moved1193 when notifications are disabled1194 does not send a notification1195 with users at both project and group level1196 notifies the expected users1197 behaves like project emails are disabled1198 sends no emails with project emails disabled1199 sends emails to someone1200 users not having access to the new location1201 does not send email1202 user with notifications disabled1203 #project_exported1204 is expected to be empty1205 #project_not_exported1206 is expected to be empty1207 user with notifications enabled1208 #project_exported1209 is expected to eq 11210 behaves like project emails are disabled1211 sends no emails with project emails disabled1212 sends emails to someone1213 #project_not_exported1214 is expected to eq 11215 behaves like project emails are disabled1216 sends no emails with project emails disabled1217 sends emails to someone1218 #invite_member_reminder1219 calls the Notify.invite_member_reminder method with the right params1220 sends exactly one email1221 #new_instance_access_request1222 sends notification only to a maximum of ten most recently active instance admins1223 #user_admin_rejection1224 sends the user a rejection email1225 #user_deactivated1226 sends the user an email1227 GroupMember1228 #new_access_request1229 recipients1230 sends notification only to group owners1231 behaves like group emails are disabled1232 sends no emails with group emails disabled1233 sends emails to someone1234 behaves like sends notification only to a maximum of ten, most recently active group owners1235 limit notification emails1236 sends notification only to a maximum of ten, most recently active group owners1237 #decline_group_invite1238 is expected to change `ActionMailer::Base.deliveries.size` by 11239 #new_group_member1240 sends a notification1241 when notifications are disabled1242 does not send a notification1243 behaves like group emails are disabled1244 sends no emails with group emails disabled1245 sends emails to someone1246 #updated_group_member_expiration1247 emails the user that their group membership expiry has changed1248 ProjectMember1249 #new_access_request1250 for a project in a user namespace1251 recipients1252 sends notification only to project maintainers1253 behaves like project emails are disabled1254 sends no emails with project emails disabled1255 sends emails to someone1256 behaves like sends notification only to a maximum of ten, most recently active project maintainers1257 limit notification emails1258 sends notification only to a maximum of ten, most recently active project maintainers1259 for a project in a group1260 when the project has no maintainers1261 when the group has at least one owner1262 recipients1263 sends notifications to the group owners1264 behaves like sends notification only to a maximum of ten, most recently active group owners1265 limit notification emails1266 sends notification only to a maximum of ten, most recently active group owners1267 when the group does not have any owners1268 recipients1269 does not send any notifications1270 when the project has maintainers1271 recipients1272 sends notifications only to project maintainers1273 behaves like sends notification only to a maximum of ten, most recently active project maintainers1274 limit notification emails1275 sends notification only to a maximum of ten, most recently active project maintainers1276 #decline_project_invite1277 is expected to change `ActionMailer::Base.deliveries.size` by 11278 #new_project_member1279 is expected to eq 11280 behaves like project emails are disabled1281 sends no emails with project emails disabled1282 sends emails to someone1283 when notifications are disabled1284 is expected to be empty1285 guest user in private project1286 filters out guests when new note is created1287 filters out guests when new merge request is created1288 filters out guests when merge request is closed1289 filters out guests when merge request is reopened1290 filters out guests when merge request is merged1291 Pipelines1292 #pipeline_finished1293 with a successful pipeline1294 when the creator has default settings1295 notifies nobody1296 when the creator has watch set1297 notifies nobody1298 when the creator has custom notifications, but without any set1299 notifies nobody1300 when the creator has custom notifications disabled1301 notifies nobody1302 when the creator has custom notifications enabled1303 emails only the creator1304 behaves like project emails are disabled1305 sends no emails with project emails disabled1306 sends emails to someone1307 when the creator has group notification email set1308 sends to group notification email1309 with a failed pipeline1310 when the creator has no custom notification set1311 emails only the creator1312 behaves like project emails are disabled1313 sends no emails with project emails disabled1314 sends emails to someone1315 when the creator has group notification email set1316 sends to group notification email1317 when the creator has watch set1318 emails only the creator1319 when the creator has custom notifications, but without any set1320 emails only the creator1321 when the creator has custom notifications disabled1322 notifies nobody1323 when the creator has custom notifications set1324 emails only the creator1325 when the creator has no read_build access1326 does not send emails1327 with a fixed pipeline1328 when the creator has no custom notification set1329 emails only the creator1330 behaves like project emails are disabled1331 sends no emails with project emails disabled1332 sends emails to someone1333 when the creator has group notification email set1334 sends to group notification email1335 when the creator has watch set1336 emails only the creator1337 when the creator has custom notifications, but without any set1338 emails only the creator1339 when the creator has custom notifications disabled1340 notifies nobody1341 when the creator has custom notifications set1342 emails only the creator1343 Pages domains1344 #pages_domain_enabled1345 emails current watching maintainers1346 emails nobody if the project is missing1347 behaves like project emails are disabled1348 sends no emails with project emails disabled1349 sends emails to someone1350 #pages_domain_disabled1351 emails current watching maintainers1352 emails nobody if the project is missing1353 behaves like project emails are disabled1354 sends no emails with project emails disabled1355 sends emails to someone1356 #pages_domain_verification_succeeded1357 emails current watching maintainers1358 emails nobody if the project is missing1359 behaves like project emails are disabled1360 sends no emails with project emails disabled1361 sends emails to someone1362 #pages_domain_verification_failed1363 emails current watching maintainers1364 emails nobody if the project is missing1365 behaves like project emails are disabled1366 sends no emails with project emails disabled1367 sends emails to someone1368 #pages_domain_auto_ssl_failed1369 emails current watching maintainers1370 emails nobody if the project is missing1371 behaves like project emails are disabled1372 sends no emails with project emails disabled1373 sends emails to someone1374 Auto DevOps notifications1375 #autodevops_disabled1376 emails project owner and user that triggered the pipeline1377 behaves like project emails are disabled1378 sends no emails with project emails disabled1379 sends emails to someone1380 Repository cleanup1381 #repository_cleanup_success1382 emails the specified user only1383 behaves like project emails are disabled1384 sends no emails with project emails disabled1385 sends emails to someone1386 #repository_cleanup_failure1387 emails the specified user only1388 behaves like project emails are disabled1389 sends no emails with project emails disabled1390 sends emails to someone1391 Remote mirror notifications1392 #remote_mirror_update_failed1393 emails current watching maintainers1394 behaves like project emails are disabled1395 sends no emails with project emails disabled1396 sends emails to someone1397 with external authorization service1398 sends email when the service is not enabled1399 when the service is enabled1400 does not send an email1401 with admin user1402 when admin mode is enabled1403 still delivers email to admins1404 when admin mode is disabled1405 does not send an email1406 #prometheus_alerts_fired1407 sends the email to owners and masters1408 behaves like project emails are disabled1409 sends no emails with project emails disabled1410 sends emails to someone1411 #new_review1412 sends emails1413 behaves like project emails are disabled1414 sends no emails with project emails disabled1415 sends emails to someone1416Clusters::Applications::ElasticStack1417 is expected to belong to cluster required:1418 is expected to validate that :cluster cannot be empty/falsy1419 #can_uninstall?1420 calls allowed_to_uninstall?1421 #name1422 is .application_name1423 is recorded in Clusters::Cluster::APPLICATIONS1424 .association_name1425 is expected to eq :application_elastic_stack1426 #helm_command_module1427 helm_major_version: 2, expected_helm_command_module: Gitlab::Kubernetes::Helm::V21428 is expected to eq Gitlab::Kubernetes::Helm::V21429 helm_major_version: 3, expected_helm_command_module: Gitlab::Kubernetes::Helm::V31430 is expected to eq Gitlab::Kubernetes::Helm::V31431 #status_states1432 returns a hash of state values1433 returns an integer for installed state value1434 .available1435 is expected to contain exactly #<Clusters::Applications::ElasticStack id: 1, created_at: "2021-09-22 10:29:11.609209851 +0000", upda...21-09-22 10:29:11.609209851 +0000", cluster_id: 12, status: 3, version: "3.0.0", status_reason: nil> and #<Clusters::Applications::ElasticStack id: 2, created_at: "2021-09-22 10:29:12.448656606 +0000", upda...21-09-22 10:29:12.448656606 +0000", cluster_id: 18, status: 5, version: "3.0.0", status_reason: nil>1436 status state machine1437 #make_installing1438 is installing1439 #make_installed1440 is installed1441 does not update the helm version1442 the cluster has no helm installed1443 runs without errors1444 application is updating1445 is updated1446 does not update the helm version1447 the cluster has no helm installed1448 runs without errors1449 #make_errored1450 is errored1451 application is updating1452 is update_errored1453 application is uninstalling1454 is uninstall_errored1455 #make_externally_installed1456 is installed1457 helm record does not exist1458 does not create a helm record1459 helm record exists1460 does not update helm version1461 application is updated1462 is installed1463 application is errored1464 is installed1465 clears #status_reason1466 #make_externally_uninstalled1467 is uninstalled1468 application is updated1469 is uninstalled1470 application is errored1471 is uninstalled1472 clears #status_reason1473 #make_scheduled1474 is scheduled1475 when installed1476 is scheduled1477 when was errored1478 clears #status_reason1479 when was updated_errored1480 clears #status_reason1481 when was uninstall_errored1482 clears #status_reason1483 #make_uninstalling1484 is uninstalling1485 #available?1486 trait: :not_installable, available: false1487 is expected not to be available1488 trait: :installable, available: false1489 is expected not to be available1490 trait: :scheduled, available: false1491 is expected not to be available1492 trait: :installing, available: false1493 is expected not to be available1494 trait: :installed, available: true1495 is expected to be available1496 trait: :updating, available: false1497 is expected not to be available1498 trait: :updated, available: true1499 is expected to be available1500 trait: :errored, available: false1501 is expected not to be available1502 trait: :update_errored, available: false1503 is expected not to be available1504 trait: :uninstalling, available: false1505 is expected not to be available1506 trait: :uninstall_errored, available: false1507 is expected not to be available1508 trait: :uninstalled, available: false1509 is expected not to be available1510 trait: :timed_out, available: false1511 is expected not to be available1512 trait: :externally_installed, available: true1513 is expected to be available1514 update_available?1515 version is not the same as VERSION1516 is expected to be truthy1517 version is the same as VERSION1518 is expected to be falsey1519 #make_installed1520 sets the correct version of the application1521 application is updating1522 updates the version of the application1523 #make_externally_installed1524 sets to a special version1525 #uninstall_command1526 is expected to be an instance of Gitlab::Kubernetes::Helm::V3::DeleteCommand1527 has files1528 is rbac1529 on a non rbac enabled cluster1530 is expected not to be rbac1531 #files1532 does not include cert files1533 when cluster does not have helm installed1534 does not include cert files1535 cluster.integration_elastic_stack state synchronization1536 after_destroy1537 disables the corresponding integration1538 on install1539 enables the corresponding integration1540 on uninstall1541 disables the corresponding integration1542 #install_command1543 is expected to be an instance of Gitlab::Kubernetes::Helm::V3::InstallCommand1544 is initialized with elastic stack arguments1545 within values.yaml1546 contains the disabled index lifecycle management1547 contains daily indices with respective template1548 on a non rbac enabled cluster1549 is expected not to be rbac1550 on versions older than 21551 includes a preinstall script1552 on versions older than 31553 includes a preinstall script1554 application failed to install previously1555 is initialized with the locked version1556 #chart_above_v2?1557 on v1.9.01558 is expected to be falsy1559 on v2.0.01560 is expected to be truthy1561 #chart_above_v3?1562 on v1.9.01563 is expected to be falsy1564 on v3.0.01565 is expected to be truthy1566 #uninstall_command1567 is expected to be an instance of Gitlab::Kubernetes::Helm::V3::DeleteCommand1568 is initialized with elastic stack arguments1569 specifies a post delete command to remove custom resource definitions1570 behaves like cluster-based #elasticsearch_client1571 #elasticsearch_client1572 cluster is nil1573 returns nil1574 cluster doesn't have kubeclient1575 returns nil1576 cluster has kubeclient1577 creates proxy elasticsearch_client1578 copies proxy_url, options and headers from kube client to elasticsearch_client1579 when cluster is not reachable1580 returns nil1581 when timeout is provided1582 sets timeout in elasticsearch_client1583Clusters::Applications::Runner1584 is expected to belong to cluster required:1585 is expected to validate that :cluster cannot be empty/falsy1586 is expected to belong to runner required:1587 #can_uninstall?1588 calls allowed_to_uninstall?1589 #name1590 is .application_name1591 is recorded in Clusters::Cluster::APPLICATIONS1592 .association_name1593 is expected to eq :application_runner1594 #helm_command_module1595 helm_major_version: 2, expected_helm_command_module: Gitlab::Kubernetes::Helm::V21596 is expected to eq Gitlab::Kubernetes::Helm::V21597 helm_major_version: 3, expected_helm_command_module: Gitlab::Kubernetes::Helm::V31598 is expected to eq Gitlab::Kubernetes::Helm::V31599 #status_states1600 returns a hash of state values1601 returns an integer for installed state value1602 .available1603 is expected to contain exactly #<Clusters::Applications::Runner id: 1, cluster_id: 354, runner_id: 1, status: 3, created_at: "2021-0..._at: "2021-09-22 10:30:00.633715601 +0000", version: "0.31.0", status_reason: nil, privileged: true> and #<Clusters::Applications::Runner id: 2, cluster_id: 360, runner_id: 2, status: 5, created_at: "2021-0..._at: "2021-09-22 10:30:01.417645337 +0000", version: "0.31.0", status_reason: nil, privileged: true>1604 status state machine1605 #make_installing1606 is installing1607 #make_installed1608 is installed1609 does not update the helm version1610 the cluster has no helm installed1611 runs without errors1612 application is updating1613 is updated1614 does not update the helm version1615 the cluster has no helm installed1616 runs without errors1617 #make_errored1618 is errored1619 application is updating1620 is update_errored1621 application is uninstalling1622 is uninstall_errored1623 #make_externally_installed1624 is installed1625 helm record does not exist1626 does not create a helm record1627 helm record exists1628 does not update helm version1629 application is updated1630 is installed1631 application is errored1632 is installed1633 clears #status_reason1634 #make_externally_uninstalled1635 is uninstalled1636 application is updated1637 is uninstalled1638 application is errored1639 is uninstalled1640 clears #status_reason1641 #make_scheduled1642 is scheduled1643 when installed1644 is scheduled1645 when was errored1646 clears #status_reason1647 when was updated_errored1648 clears #status_reason1649 when was uninstall_errored1650 clears #status_reason1651 #make_uninstalling1652 is uninstalling1653 #available?1654 trait: :not_installable, available: false1655 is expected not to be available1656 trait: :installable, available: false1657 is expected not to be available1658 trait: :scheduled, available: false1659 is expected not to be available1660 trait: :installing, available: false1661 is expected not to be available1662 trait: :installed, available: true1663 is expected to be available1664 trait: :updating, available: false1665 is expected not to be available1666 trait: :updated, available: true1667 is expected to be available1668 trait: :errored, available: false1669 is expected not to be available1670 trait: :update_errored, available: false1671 is expected not to be available1672 trait: :uninstalling, available: false1673 is expected not to be available1674 trait: :uninstall_errored, available: false1675 is expected not to be available1676 trait: :uninstalled, available: false1677 is expected not to be available1678 trait: :timed_out, available: false1679 is expected not to be available1680 trait: :externally_installed, available: true1681 is expected to be available1682 update_available?1683 version is not the same as VERSION1684 is expected to be truthy1685 version is the same as VERSION1686 is expected to be falsey1687 #make_installed1688 sets the correct version of the application1689 application is updating1690 updates the version of the application1691 #make_externally_installed1692 sets to a special version1693 #uninstall_command1694 is expected to be an instance of Gitlab::Kubernetes::Helm::V3::DeleteCommand1695 has files1696 is rbac1697 on a non rbac enabled cluster1698 is expected not to be rbac1699 #files1700 does not include cert files1701 when cluster does not have helm installed1702 does not include cert files1703 #status1704 sets a default status1705 #can_uninstall?1706 is expected to be truthy1707 #install_command1708 is expected to be an instance of Gitlab::Kubernetes::Helm::V3::InstallCommand1709 is initialized with 4 arguments1710 on a non rbac enabled cluster1711 is expected not to be rbac1712 application failed to install previously1713 is initialized with the locked version1714 #files1715 includes runner valid values1716 without a runner1717 project cluster1718 creates a runner1719 uses the new runner token1720 creates a project runner1721 group cluster1722 creates a runner1723 uses the new runner token1724 creates a group runner1725 instance cluster1726 creates a runner1727 uses the new runner token1728 creates an instance runner1729 with duplicated values on vendor/runner/values.yaml1730 overwrites values.yaml1731 #prepare_uninstall1732 pauses associated runner1733 #make_uninstalling!1734 calls prepare_uninstall1735 #post_uninstall1736 destroys its runner1737ProjectMember1738 associations1739 is expected to belong to project required:1740 validations1741 is expected to allow :source_type to be ‹"Project"›1742 is expected not to allow :source_type to be ‹"project"›1743 is expected to validate that :access_level is either ‹10›, ‹20›, ‹30›, or ‹40›1744 delegations1745 is expected to delegate #namespace_id to the #project object1746 .access_level_roles1747 returns Gitlab::Access.options1748 #real_source_type1749 is expected to eq "Project"1750 #destroy1751 creates an expired event when left due to expiry1752 creates a left event when left due to leave1753 for an orphaned member1754 does not raise an error1755 .import_team1756 is expected to be truthy1757 project 2 should get user 1 as developer. user_2 should not be changed1758 is expected to include #<User id:1446 @user1123>1759 is expected to include #<User id:1451 @user1126>1760 is expected to be truthy1761 is expected to be truthy1762 project 1 should not be changed1763 is expected to include #<User id:1462 @user1131>1764 is expected not to include #<User id:1467 @user1134>1765 .add_users_to_projects1766 adds the given users to the given projects1767 .truncate_teams1768 is expected to be empty1769 is expected to be empty1770 behaves like members notifications1771 #after_create1772 sends email to user1773 #after_update1774 calls NotificationService.update_project_member1775 does not send an email when the access level has not changed1776 #accept_request1777 calls NotificationService.new_project_member1778 #accept_invite!1779 calls NotificationService.accept_project_invite1780 #decline_invite!1781 calls NotificationService.decline_project_invite1782 access levels1783 with parent group1784 behaves like inherited access level as a member of entity1785 with root parent_entity developer member1786 is allowed to be a maintainer of the entity1787 is not allowed to be a reporter of the entity1788 is allowed to change to be a developer of the entity1789 is not allowed to change to be a guest of the entity1790 shows an error if the member can't be updated1791 allows changing the level from a non existing member1792 with parent group and a subgroup1793 behaves like inherited access level as a member of entity1794 with root parent_entity developer member1795 is allowed to be a maintainer of the entity1796 is not allowed to be a reporter of the entity1797 is allowed to change to be a developer of the entity1798 is not allowed to change to be a guest of the entity1799 shows an error if the member can't be updated1800 allows changing the level from a non existing member1801 refreshing project_authorizations1802 when the source project of the project member is destroyed1803 refreshes the authorization of user to the project in the group1804 refreshes the authorization without calling AuthorizedProjectUpdate::ProjectRecalculatePerUserService1805 when the user of the project member is destroyed1806 refreshes the authorization of user to the project in the group1807 refreshes the authorization without calling UserProjectAccessChangedService1808 when importing1809 does not refresh1810 authorization refresh on addition/updation/deletion1811 on create1812 changes access level1813 behaves like calls AuthorizedProjectUpdate::ProjectRecalculatePerUserService to recalculate authorizations1814 calls AuthorizedProjectUpdate::ProjectRecalculatePerUserService1815 behaves like calls AuthorizedProjectUpdate::UserRefreshFromReplicaWorker with a delay to update project authorizations1816 calls AuthorizedProjectUpdate::UserRefreshFromReplicaWorker1817 on update1818 changes access level1819 behaves like calls AuthorizedProjectUpdate::ProjectRecalculatePerUserService to recalculate authorizations1820 calls AuthorizedProjectUpdate::ProjectRecalculatePerUserService1821 behaves like calls AuthorizedProjectUpdate::UserRefreshFromReplicaWorker with a delay to update project authorizations1822 calls AuthorizedProjectUpdate::UserRefreshFromReplicaWorker1823 on destroy1824 changes access level1825 behaves like calls AuthorizedProjectUpdate::ProjectRecalculatePerUserService to recalculate authorizations1826 calls AuthorizedProjectUpdate::ProjectRecalculatePerUserService1827 behaves like calls AuthorizedProjectUpdate::UserRefreshFromReplicaWorker with a delay to update project authorizations1828 calls AuthorizedProjectUpdate::UserRefreshFromReplicaWorker1829 when the feature flag `specialized_service_for_project_member_auth_refresh` is disabled1830 on create1831 changes access level1832 behaves like calls UserProjectAccessChangedService to recalculate authorizations1833 calls UserProjectAccessChangedService1834 on update1835 changes access level1836 behaves like calls UserProjectAccessChangedService to recalculate authorizations1837 calls UserProjectAccessChangedService1838 on destroy1839 changes access level1840 behaves like calls UserProjectAccessChangedService to recalculate authorizations1841 calls UserProjectAccessChangedService1842Projects::ContainerRepository::CleanupTagsService1843 #execute1844 caching1845 caches the created_at values1846 with cached values1847 uses them1848 with container_registry_expiration_policies_caching enabled for the project1849 behaves like reading and removing tags1850 when no params are specified1851 does not remove anything1852 when regex matching everything is specified1853 behaves like removes all matches1854 does remove all tags except latest1855 with deprecated name_regex param1856 behaves like removes all matches1857 does remove all tags except latest1858 with invalid regular expressions1859 when name_regex_delete is invalid1860 behaves like handling an invalid regex1861 keeps all tags1862 is expected to eq {:message=>"invalid regex", :status=>:error}1863 calls error tracking service1864 when name_regex is invalid1865 behaves like handling an invalid regex1866 keeps all tags1867 is expected to eq {:message=>"invalid regex", :status=>:error}1868 calls error tracking service1869 when name_regex_keep is invalid1870 behaves like handling an invalid regex1871 keeps all tags1872 is expected to eq {:message=>"invalid regex", :status=>:error}1873 calls error tracking service1874 when delete regex matching specific tags is used1875 does remove C and D1876 with overriding allow regex1877 does not remove C1878 with name_regex_delete overriding deprecated name_regex1879 does not remove C1880 with allow regex value1881 does not remove B*1882 when keeping only N tags1883 sorts tags by date1884 when not keeping N tags1885 does not sort tags by date1886 when removing keeping only 31887 does remove B* and C as they are the oldest1888 when removing older than 1 day1889 does remove B* and C as they are older than 1 day1890 when combining all parameters1891 does remove B* and C1892 when running a container_expiration_policy1893 with valid container_expiration_policy param1894 succeeds without a user1895 without container_expiration_policy param1896 fails1897 truncating the tags list1898 feature_flag_enabled: false, max_list_size: 10, delete_tags_service_status: :success, expected_status: :success, expected_truncated: false1899 behaves like returning the response1900 returns the response1901 feature_flag_enabled: false, max_list_size: 10, delete_tags_service_status: :error, expected_status: :error, expected_truncated: false1902 behaves like returning the response1903 returns the response1904 feature_flag_enabled: false, max_list_size: 3, delete_tags_service_status: :success, expected_status: :success, expected_truncated: false1905 behaves like returning the response1906 returns the response1907 feature_flag_enabled: false, max_list_size: 3, delete_tags_service_status: :error, expected_status: :error, expected_truncated: false1908 behaves like returning the response1909 returns the response1910 feature_flag_enabled: false, max_list_size: 0, delete_tags_service_status: :success, expected_status: :success, expected_truncated: false1911 behaves like returning the response1912 returns the response1913 feature_flag_enabled: false, max_list_size: 0, delete_tags_service_status: :error, expected_status: :error, expected_truncated: false1914 behaves like returning the response1915 returns the response1916 feature_flag_enabled: true, max_list_size: 10, delete_tags_service_status: :success, expected_status: :success, expected_truncated: false1917 behaves like returning the response1918 returns the response1919 feature_flag_enabled: true, max_list_size: 10, delete_tags_service_status: :error, expected_status: :error, expected_truncated: false1920 behaves like returning the response1921 returns the response1922 feature_flag_enabled: true, max_list_size: 3, delete_tags_service_status: :success, expected_status: :error, expected_truncated: true1923 behaves like returning the response1924 returns the response1925 feature_flag_enabled: true, max_list_size: 3, delete_tags_service_status: :error, expected_status: :error, expected_truncated: true1926 behaves like returning the response1927 returns the response1928 feature_flag_enabled: true, max_list_size: 0, delete_tags_service_status: :success, expected_status: :success, expected_truncated: false1929 behaves like returning the response1930 returns the response1931 feature_flag_enabled: true, max_list_size: 0, delete_tags_service_status: :error, expected_status: :error, expected_truncated: false1932 behaves like returning the response1933 returns the response1934 with container_registry_expiration_policies_caching disabled1935 behaves like reading and removing tags1936 when no params are specified1937 does not remove anything1938 when regex matching everything is specified1939 behaves like removes all matches1940 does remove all tags except latest1941 with deprecated name_regex param1942 behaves like removes all matches1943 does remove all tags except latest1944 with invalid regular expressions1945 when name_regex_delete is invalid1946 behaves like handling an invalid regex1947 keeps all tags1948 is expected to eq {:message=>"invalid regex", :status=>:error}1949 calls error tracking service1950 when name_regex is invalid1951 behaves like handling an invalid regex1952 keeps all tags1953 is expected to eq {:message=>"invalid regex", :status=>:error}1954 calls error tracking service1955 when name_regex_keep is invalid1956 behaves like handling an invalid regex1957 keeps all tags1958 is expected to eq {:message=>"invalid regex", :status=>:error}1959 calls error tracking service1960 when delete regex matching specific tags is used1961 does remove C and D1962 with overriding allow regex1963 does not remove C1964 with name_regex_delete overriding deprecated name_regex1965 does not remove C1966 with allow regex value1967 does not remove B*1968 when keeping only N tags1969 sorts tags by date1970 when not keeping N tags1971 does not sort tags by date1972 when removing keeping only 31973 does remove B* and C as they are the oldest1974 when removing older than 1 day1975 does remove B* and C as they are older than 1 day1976 when combining all parameters1977 does remove B* and C1978 when running a container_expiration_policy1979 with valid container_expiration_policy param1980 succeeds without a user1981 without container_expiration_policy param1982 fails1983 truncating the tags list1984 feature_flag_enabled: false, max_list_size: 10, delete_tags_service_status: :success, expected_status: :success, expected_truncated: false1985 behaves like returning the response1986 returns the response1987 feature_flag_enabled: false, max_list_size: 10, delete_tags_service_status: :error, expected_status: :error, expected_truncated: false1988 behaves like returning the response1989 returns the response1990 feature_flag_enabled: false, max_list_size: 3, delete_tags_service_status: :success, expected_status: :success, expected_truncated: false1991 behaves like returning the response1992 returns the response1993 feature_flag_enabled: false, max_list_size: 3, delete_tags_service_status: :error, expected_status: :error, expected_truncated: false1994 behaves like returning the response1995 returns the response1996 feature_flag_enabled: false, max_list_size: 0, delete_tags_service_status: :success, expected_status: :success, expected_truncated: false1997 behaves like returning the response1998 returns the response1999 feature_flag_enabled: false, max_list_size: 0, delete_tags_service_status: :error, expected_status: :error, expected_truncated: false2000 behaves like returning the response2001 returns the response2002 feature_flag_enabled: true, max_list_size: 10, delete_tags_service_status: :success, expected_status: :success, expected_truncated: false2003 behaves like returning the response2004 returns the response2005 feature_flag_enabled: true, max_list_size: 10, delete_tags_service_status: :error, expected_status: :error, expected_truncated: false2006 behaves like returning the response2007 returns the response2008 feature_flag_enabled: true, max_list_size: 3, delete_tags_service_status: :success, expected_status: :error, expected_truncated: true2009 behaves like returning the response2010 returns the response2011 feature_flag_enabled: true, max_list_size: 3, delete_tags_service_status: :error, expected_status: :error, expected_truncated: true2012 behaves like returning the response2013 returns the response2014 feature_flag_enabled: true, max_list_size: 0, delete_tags_service_status: :success, expected_status: :success, expected_truncated: false2015 behaves like returning the response2016 returns the response2017 feature_flag_enabled: true, max_list_size: 0, delete_tags_service_status: :error, expected_status: :error, expected_truncated: false2018 behaves like returning the response2019 returns the response2020 with container_registry_expiration_policies_caching not enabled for the project2021 behaves like reading and removing tags2022 when no params are specified2023 does not remove anything2024 when regex matching everything is specified2025 behaves like removes all matches2026 does remove all tags except latest2027 with deprecated name_regex param2028 behaves like removes all matches2029 does remove all tags except latest2030 with invalid regular expressions2031 when name_regex_delete is invalid2032 behaves like handling an invalid regex2033 keeps all tags2034 is expected to eq {:message=>"invalid regex", :status=>:error}2035 calls error tracking service2036 when name_regex is invalid2037 behaves like handling an invalid regex2038 keeps all tags2039 is expected to eq {:message=>"invalid regex", :status=>:error}2040 calls error tracking service2041 when name_regex_keep is invalid2042 behaves like handling an invalid regex2043 keeps all tags2044 is expected to eq {:message=>"invalid regex", :status=>:error}2045 calls error tracking service2046 when delete regex matching specific tags is used2047 does remove C and D2048 with overriding allow regex2049 does not remove C2050 with name_regex_delete overriding deprecated name_regex2051 does not remove C2052 with allow regex value2053 does not remove B*2054 when keeping only N tags2055 sorts tags by date2056 when not keeping N tags2057 does not sort tags by date2058 when removing keeping only 32059 does remove B* and C as they are the oldest2060 when removing older than 1 day2061 does remove B* and C as they are older than 1 day2062 when combining all parameters2063 does remove B* and C2064 when running a container_expiration_policy2065 with valid container_expiration_policy param2066 succeeds without a user2067 without container_expiration_policy param2068 fails2069 truncating the tags list2070 feature_flag_enabled: false, max_list_size: 10, delete_tags_service_status: :success, expected_status: :success, expected_truncated: false2071 behaves like returning the response2072 returns the response2073 feature_flag_enabled: false, max_list_size: 10, delete_tags_service_status: :error, expected_status: :error, expected_truncated: false2074 behaves like returning the response2075 returns the response2076 feature_flag_enabled: false, max_list_size: 3, delete_tags_service_status: :success, expected_status: :success, expected_truncated: false2077 behaves like returning the response2078 returns the response2079 feature_flag_enabled: false, max_list_size: 3, delete_tags_service_status: :error, expected_status: :error, expected_truncated: false2080 behaves like returning the response2081 returns the response2082 feature_flag_enabled: false, max_list_size: 0, delete_tags_service_status: :success, expected_status: :success, expected_truncated: false2083 behaves like returning the response2084 returns the response2085 feature_flag_enabled: false, max_list_size: 0, delete_tags_service_status: :error, expected_status: :error, expected_truncated: false2086 behaves like returning the response2087 returns the response2088 feature_flag_enabled: true, max_list_size: 10, delete_tags_service_status: :success, expected_status: :success, expected_truncated: false2089 behaves like returning the response2090 returns the response2091 feature_flag_enabled: true, max_list_size: 10, delete_tags_service_status: :error, expected_status: :error, expected_truncated: false2092 behaves like returning the response2093 returns the response2094 feature_flag_enabled: true, max_list_size: 3, delete_tags_service_status: :success, expected_status: :error, expected_truncated: true2095 behaves like returning the response2096 returns the response2097 feature_flag_enabled: true, max_list_size: 3, delete_tags_service_status: :error, expected_status: :error, expected_truncated: true2098 behaves like returning the response2099 returns the response2100 feature_flag_enabled: true, max_list_size: 0, delete_tags_service_status: :success, expected_status: :success, expected_truncated: false2101 behaves like returning the response2102 returns the response2103 feature_flag_enabled: true, max_list_size: 0, delete_tags_service_status: :error, expected_status: :error, expected_truncated: false2104 behaves like returning the response2105 returns the response2106Integration2107 Associations2108 is expected to belong to project required: inverse_of => integrations2109 is expected to belong to group required: inverse_of => integrations2110 is expected to have one service_hook inverse_of => integration2111 is expected to have one issue_tracker_data class_name => Integrations::IssueTrackerData inverse_of => integration2112 is expected to have one jira_tracker_data class_name => Integrations::JiraTrackerData inverse_of => integration2113 is expected to have one open_project_tracker_data class_name => Integrations::OpenProjectTrackerData inverse_of => integration2114 validations2115 is expected to validate that :type cannot be empty/falsy2116 is expected to validate that :type is neither ‹"Integrations::BaseChatNotification"›, ‹"Integrations::BaseCi"›, ‹"Integrations::BaseIssueTracker"›, ‹"Integrations::BaseMonitoring"›, nor ‹"Integrations::BaseSlashCommands"›2117 project_id: 1, group_id: nil, instance: false, valid: true2118 validates the service2119 project_id: nil, group_id: 1, instance: false, valid: true2120 validates the service2121 project_id: nil, group_id: nil, instance: true, valid: true2122 validates the service2123 project_id: nil, group_id: nil, instance: false, valid: false2124 validates the service2125 project_id: 1, group_id: 1, instance: false, valid: false2126 validates the service2127 project_id: 1, group_id: nil, instance: false, valid: true2128 validates the service2129 project_id: 1, group_id: nil, instance: true, valid: false2130 validates the service2131 project_id: nil, group_id: 1, instance: false, valid: true2132 validates the service2133 project_id: nil, group_id: 1, instance: true, valid: false2134 validates the service2135 with existing services2136 allows only one instance service per type2137 allows only one project service per type2138 allows only one group service per type2139 Scopes2140 .with_default_settings2141 returns the correct integrations2142 .with_custom_settings2143 returns the correct integrations2144 .by_type2145 when type is "JiraService"2146 is expected to contain exactly #<Integrations::Jira id: 8, type: "JiraService", project_id: 143, created_at: "2021-09-22 10:31:47.49...inherit_from_id: nil, alert_events: true, group_id: nil, type_new: nil, vulnerability_events: false> and #<Integrations::Jira id: 9, type: "JiraService", project_id: 144, created_at: "2021-09-22 10:31:47.80...inherit_from_id: nil, alert_events: true, group_id: nil, type_new: nil, vulnerability_events: false>2147 when type is "RedmineService"2148 is expected to contain exactly #<Integrations::Redmine id: 13, type: "RedmineService", project_id: 148, created_at: "2021-09-22 10:3...inherit_from_id: nil, alert_events: true, group_id: nil, type_new: nil, vulnerability_events: false>2149 .for_group2150 returns the right group service2151 .confidential_note_hooks2152 includes services where confidential_note_events is true2153 excludes services where confidential_note_events is false2154 .alert_hooks2155 includes services where alert_events is true2156 excludes services where alert_events is false2157 #operating?2158 is false when the service is not active2159 is false when the service is not persisted2160 is true when the service is active and persisted2161 #testable?2162 when integration is project-level2163 is expected to be testable2164 when integration is not project-level2165 is expected not to be testable2166 #test2167 calls #execute2168 returns a result2169 #project_level?2170 is true when service has a project2171 is false when service has no project2172 #group_level?2173 is true when service has a group2174 is false when service has no group2175 #instance_level?2176 is true when service has instance-level integration2177 is false when service does not have instance-level integration2178 .find_or_initialize_non_project_specific_integration2179 returns the right integration2180 does not create a new integration2181 .find_or_initialize_all_non_project_specific2182 behaves like service instances2183 returns the available service instances2184 does not create service instances2185 with all existing instances2186 behaves like service instances2187 returns the available service instances2188 does not create service instances2189 with a previous existing service (MockCiService) and a new service (Asana)2190 behaves like service instances2191 returns the available service instances2192 does not create service instances2193 with a few existing instances2194 behaves like service instances2195 returns the available service instances2196 does not create service instances2197 .build_from_integration2198 when integration is invalid2199 sets integration to inactive2200 when integration is an instance-level integration2201 sets inherit_from_id from integration2202 when integration is a group-level integration2203 sets inherit_from_id from integration2204 build issue tracker from an integration2205 when data is stored in properties2206 behaves like service creation from an integration2207 creates a correct service for a project integration2208 creates a correct service for a group integration2209 when data are stored in separated fields2210 behaves like service creation from an integration2211 creates a correct service for a project integration2212 creates a correct service for a group integration2213 when data are stored in both properties and separated fields2214 behaves like service creation from an integration2215 creates a correct service for a project integration2216 creates a correct service for a group integration2217 .default_integration2218 with an instance-level integration2219 returns the instance integration2220 returns nil for nonexistent integration type2221 with a group integration2222 returns the group integration for a project2223 returns the instance integration for a group2224 with a subgroup2225 returns the closest group integration for a project2226 returns the closest group integration for a subgroup2227 having a integration with custom settings2228 returns the closest group integration for a project2229 having a integration inheriting settings2230 returns the closest group integration which does not inherit from its parent for a project2231 .create_from_active_default_integrations2232 with an active instance-level integration2233 creates an integration from the instance-level integration2234 passing a group2235 creates an integration from the instance-level integration2236 with an active group-level integration2237 creates an integration from the group-level integration2238 passing a group2239 creates an integration from the group-level integration2240 with an active subgroup2241 creates an integration from the subgroup-level integration2242 passing a group2243 traversal queries2244 recursive2245 creates an integration from the subgroup-level integration2246 having an integration inheriting settings2247 creates an integration from the group-level integration2248 linear2249 creates an integration from the subgroup-level integration2250 having an integration inheriting settings2251 creates an integration from the group-level integration2252 .inherited_descendants_from_self_or_ancestors_from2253 returns the groups and projects inheriting from integration ancestors2254 .integration_name_to_model2255 returns the model for the given service name2256 raises an error if service name is invalid2257 {property}_changed?2258 returns false when the property has not been assigned a new value2259 returns true when the property has been assigned a different value2260 returns true when the property has been assigned a different value twice2261 returns false when the property has been re-assigned the same value2262 returns false when the property has been assigned a new value then saved2263 {property}_touched?2264 returns false when the property has not been assigned a new value2265 returns true when the property has been assigned a different value2266 returns true when the property has been assigned a different value twice2267 returns true when the property has been re-assigned the same value2268 returns false when the property has been assigned a new value then saved2269 {property}_was2270 returns nil when the property has not been assigned a new value2271 returns the previous value when the property has been assigned a different value2272 returns initial value when the property has been re-assigned the same value2273 returns initial value when the property has been assigned multiple values2274 returns nil when the property has been assigned a new value then saved2275 initialize service with no properties2276 does not raise error2277 sets data correctly2278 #api_field_names2279 filters out sensitive fields2280 logging2281 logs info messages using json logger2282 logs error messages using json logger2283 when project is nil2284 logs info messages using json logger2285 .available_integration_names2286 calls the right methods2287 does not call project_specific_integration_names with include_project_specific false2288 does not call dev_integration_names with include_dev false2289 is expected to include "jenkins"2290 .project_specific_integration_names2291 is expected to include "jenkins"2292 #password_fields2293 returns all fields with type `password`2294 returns an empty array if no password fields exist2295Ci::RetryPipelineService#execute2296 when user has full ability to modify pipeline2297 closes all todos about failed jobs for pipeline2298 reprocesses the pipeline2299 when there are already retried jobs present2300 does not retry jobs that has already been retried2301 when there are failed builds in the last stage2302 enqueues all builds in the last stage2303 when there are failed or canceled builds in the first stage2304 retries builds failed builds and marks subsequent for processing2305 changes ownership of subsequent builds2306 when there is failed build present which was run on failure2307 retries builds only in the first stage2308 creates a new job for report job in this case2309 when there is a failed test in a DAG2310 retries the test2311 when there is a failed DAG test without needs2312 retries the test2313 when the last stage was skipepd2314 retries builds only in the first stage2315 when pipeline contains manual actions2316 when there are optional manual actions only2317 when there is a canceled manual action in first stage2318 retries failed builds and marks subsequent for processing2319 changes ownership of subsequent builds2320 when pipeline has blocking manual actions defined2321 when pipeline retry should enqueue builds2322 retries failed builds2323 when pipeline retry should block pipeline immediately2324 reprocesses blocking manual action and blocks pipeline2325 when there is a skipped manual action in last stage2326 retries canceled job and reprocesses manual actions2327 when there is a created manual action in the last stage2328 retries canceled job and does not update the manual action2329 when there is a created manual action in the first stage2330 retries canceled job and processes the manual action2331 when pipeline has processables with nil scheduling_type2332 populates scheduling_type of processables2333 when the pipeline is a downstream pipeline and the bridge is depended2334 marks source bridge as pending2335 when user is not allowed to retry pipeline2336 raises an error2337 when user is not allowed to trigger manual action2338 when there is a failed manual action present2339 raises an error2340 when there is a failed manual action in later stage2341 raises an error2342 when maintainer is allowed to push to forked project2343 allows to retry failed pipeline2344Projects::DestroyService2345 invalidates personal_project_count cache2346 behaves like deleting the project2347 deletes the project2348 with abort_deleted_project_pipelines feature disabled2349 does not cancel project ci pipelines2350 with abort_deleted_project_pipelines feature enabled2351 performs cancel for project ci pipelines2352 when project has remote mirrors2353 destroys them2354 when project has exports2355 destroys project and export2356 Sidekiq fake2357 is expected not to include #<Project id:203 user1211/project211>>2358 is expected to be falsey2359 is expected to be truthy2360 when flushing caches fail due to Git errors2361 behaves like deleting the project2362 deletes the project2363 when flushing caches fail due to Redis2364 keeps project team intact upon an error2365 with async_execute2366 async delete of project with private issue visibility2367 behaves like deleting the project2368 deletes the project2369 behaves like deleting the project with pipeline and build2370 with pipeline and build related records2371 deletes build related records2372 avoids N+1 queries (PENDING: skipped until fixed in https://gitlab.com/gitlab-org/gitlab/-/issues/24644)2373 behaves like deleting the project2374 deletes the project2375 errors2376 when `remove_legacy_registry_tags` fails2377 behaves like handles errors thrown during async destroy2378 does not allow the error to bubble up2379 unmarks the project as "pending deletion"2380 stores an error message in `projects.delete_error`2381 when `remove_repository` fails2382 behaves like handles errors thrown during async destroy2383 does not allow the error to bubble up2384 unmarks the project as "pending deletion"2385 stores an error message in `projects.delete_error`2386 when `execute` raises expected error2387 behaves like handles errors thrown during async destroy2388 does not allow the error to bubble up2389 unmarks the project as "pending deletion"2390 stores an error message in `projects.delete_error`2391 when `execute` raises unexpected error2392 allows error to bubble up and rolls back project deletion2393 container registry2394 when there are regular container repositories2395 when image repository deletion succeeds2396 removes tags2397 when image repository deletion fails2398 raises an exception2399 when registry is disabled2400 does not attempting to remove any tags2401 when there are tags for legacy root repository2402 when image repository tags deletion succeeds2403 removes tags2404 when image repository tags deletion fails2405 raises an exception2406 for a forked project with LFS objects2407 destroys the fork2408 as the root of a fork network2409 updates the fork network with the project name2410 repository +deleted path removal2411 regular phase2412 schedules +deleted removal of existing repos2413 stale cleanup2414 schedules +deleted wiki and repo removal2415 snippets2416 does not include snippets when deleting in batches2417 calls the bulk snippet destroy service2418 when an error is raised deleting snippets2419 does not delete project2420 when project has webhooks2421 deletes webhooks and logs related to project2422 when an error is raised deleting webhooks2423 behaves like handles errors thrown during async destroy2424 does not allow the error to bubble up2425 unmarks the project as "pending deletion"2426 stores an error message in `projects.delete_error`2427 error while destroying2428 deletes on retry2429ReleasesFinder2430 when parent is a project2431 behaves like when the user is not part of the project2432 returns no releases2433 when the user is a project developer2434 sorts by release date2435 with sorting parameters2436 by default is released_at in descending order2437 is expected to eq [#<Release id: 9, tag: "v1.1.0", description: [FILTERED], project_id: 252, created_at: "2021-09-19 10...ha: "b83d6e391c22777fca1ed3012fce84f633d7fed0", released_at: "2021-09-20 10:33:16.167852663 +0000">]2438 released_at in ascending order2439 is expected to eq [#<Release id: 10, tag: "v1.0.0", description: [FILTERED], project_id: 253, created_at: "2021-09-22 1...ha: "b83d6e391c22777fca1ed3012fce84f633d7fed0", released_at: "2021-09-21 10:33:17.337319193 +0000">]2440 order by created_at in descending order2441 is expected to eq [#<Release id: 12, tag: "v1.0.0", description: [FILTERED], project_id: 254, created_at: "2021-09-22 1...ha: "b83d6e391c22777fca1ed3012fce84f633d7fed0", released_at: "2021-09-21 10:33:18.301885712 +0000">]2442 order by created_at in ascending order2443 is expected to eq [#<Release id: 15, tag: "v1.1.0", description: [FILTERED], project_id: 255, created_at: "2021-09-19 1...ha: "b83d6e391c22777fca1ed3012fce84f633d7fed0", released_at: "2021-09-20 10:33:19.161742976 +0000">]2444 behaves like preload2445 preloads associations2446 when preload is false2447 does not preload associations2448 behaves like when tag is nil2449 ignores rows with a nil tag2450 behaves like when a tag parameter is passed2451 only returns the release with the matching tag2452 when parent is a group2453 without subgroups2454 behaves like when the user is not part of the project2455 returns no releases2456 when the user is a project developer on one sibling project2457 sorts by release date2458 when the user is a project developer on all projects2459 sorts by release date2460 behaves like when a tag parameter is passed2461 only returns the release with the matching tag2462 with subgroups2463 with a single-level subgroup2464 behaves like when the user is not part of the project2465 returns no releases2466 when the user a project developer in the subgroup project2467 returns only the subgroup releases2468 when the user a project developer in both projects2469 returns all releases2470 behaves like when a tag parameter is passed2471 only returns the release with the matching tag2472 with a multi-level subgroup2473 behaves like when the user is not part of the project2474 returns no releases2475 when the user a project developer in the subgroup and subsubgroup project2476 returns only the subgroup and subsubgroup releases2477 when the user a project developer in the subsubgroup project2478 returns only the subsubgroup releases2479 when the user a project developer in all projects2480 returns all releases2481 behaves like when a tag parameter is passed2482 only returns the release with the matching tag2483VerifyPagesDomainService2484 #execute2485 domain_sym: :domain, code_sym: :verification_code2486 when domain is disabled(or new)2487 when txt record contains verification code2488 verifies and enables the domain2489 when txt record contains verification code with other text2490 verifies and enables the domain2491 when txt record does not contain verification code2492 unverifies domain2493 disables domain and shedules it for removal in 1 week2494 when txt record does not contain verification code2495 unverifies domain2496 disables domain and shedules it for removal in 1 week2497 when no txt records are present2498 unverifies domain2499 disables domain and shedules it for removal in 1 week2500 when domain is verified2501 when txt record contains verification code2502 verifies and enables the domain2503 when txt record contains verification code with other text2504 verifies and enables the domain2505 when txt record does not contain verification code2506 unverifies but does not disable domain2507 does not schedule domain for removal2508 when no txt records are present2509 unverifies but does not disable domain2510 does not schedule domain for removal2511 when domain is expired2512 when the right code is present2513 verifies and enables the domain2514 when the right code is not present2515 unverifies domain2516 disables domain and shedules it for removal in 1 week2517 when domain is disabled and scheduled for removal2518 when the right code is present2519 verifies and enables domain2520 prevent domain from being removed2521 when the right code is not present2522 keeps domain scheduled for removal but does not change removal time2523 invalid domain2524 can be disabled2525 domain_sym: :domain, code_sym: :keyed_verification_code2526 when domain is disabled(or new)2527 when txt record contains verification code2528 verifies and enables the domain2529 when txt record contains verification code with other text2530 verifies and enables the domain2531 when txt record does not contain verification code2532 unverifies domain2533 disables domain and shedules it for removal in 1 week2534 when txt record does not contain verification code2535 unverifies domain2536 disables domain and shedules it for removal in 1 week2537 when no txt records are present2538 unverifies domain2539 disables domain and shedules it for removal in 1 week2540 when domain is verified2541 when txt record contains verification code2542 verifies and enables the domain2543 when txt record contains verification code with other text2544 verifies and enables the domain2545 when txt record does not contain verification code2546 unverifies but does not disable domain2547 does not schedule domain for removal2548 when no txt records are present2549 unverifies but does not disable domain2550 does not schedule domain for removal2551 when domain is expired2552 when the right code is present2553 verifies and enables the domain2554 when the right code is not present2555 unverifies domain2556 disables domain and shedules it for removal in 1 week2557 when domain is disabled and scheduled for removal2558 when the right code is present2559 verifies and enables domain2560 prevent domain from being removed2561 when the right code is not present2562 keeps domain scheduled for removal but does not change removal time2563 invalid domain2564 can be disabled2565 domain_sym: :verification_domain, code_sym: :verification_code2566 when domain is disabled(or new)2567 when txt record contains verification code2568 verifies and enables the domain2569 when txt record contains verification code with other text2570 verifies and enables the domain2571 when txt record does not contain verification code2572 unverifies domain2573 disables domain and shedules it for removal in 1 week2574 when txt record does not contain verification code2575 unverifies domain2576 disables domain and shedules it for removal in 1 week2577 when no txt records are present2578 unverifies domain2579 disables domain and shedules it for removal in 1 week2580 when domain is verified2581 when txt record contains verification code2582 verifies and enables the domain2583 when txt record contains verification code with other text2584 verifies and enables the domain2585 when txt record does not contain verification code2586 unverifies but does not disable domain2587 does not schedule domain for removal2588 when no txt records are present2589 unverifies but does not disable domain2590 does not schedule domain for removal2591 when domain is expired2592 when the right code is present2593 verifies and enables the domain2594 when the right code is not present2595 unverifies domain2596 disables domain and shedules it for removal in 1 week2597 when domain is disabled and scheduled for removal2598 when the right code is present2599 verifies and enables domain2600 prevent domain from being removed2601 when the right code is not present2602 keeps domain scheduled for removal but does not change removal time2603 invalid domain2604 can be disabled2605 domain_sym: :verification_domain, code_sym: :keyed_verification_code2606 when domain is disabled(or new)2607 when txt record contains verification code2608 verifies and enables the domain2609 when txt record contains verification code with other text2610 verifies and enables the domain2611 when txt record does not contain verification code2612 unverifies domain2613 disables domain and shedules it for removal in 1 week2614 when txt record does not contain verification code2615 unverifies domain2616 disables domain and shedules it for removal in 1 week2617 when no txt records are present2618 unverifies domain2619 disables domain and shedules it for removal in 1 week2620 when domain is verified2621 when txt record contains verification code2622 verifies and enables the domain2623 when txt record contains verification code with other text2624 verifies and enables the domain2625 when txt record does not contain verification code2626 unverifies but does not disable domain2627 does not schedule domain for removal2628 when no txt records are present2629 unverifies but does not disable domain2630 does not schedule domain for removal2631 when domain is expired2632 when the right code is present2633 verifies and enables the domain2634 when the right code is not present2635 unverifies domain2636 disables domain and shedules it for removal in 1 week2637 when domain is disabled and scheduled for removal2638 when the right code is present2639 verifies and enables domain2640 prevent domain from being removed2641 when the right code is not present2642 keeps domain scheduled for removal but does not change removal time2643 invalid domain2644 can be disabled2645 timeout behaviour2646 sets a timeout on the DNS query2647 email notifications2648 factory: nil, verification_succeeds: true, expected_notification: nil2649 sends a notification if appropriate2650 factory: nil, verification_succeeds: false, expected_notification: :verification_failed2651 sends a notification if appropriate2652 factory: :reverify, verification_succeeds: true, expected_notification: nil2653 sends a notification if appropriate2654 factory: :reverify, verification_succeeds: false, expected_notification: :verification_failed2655 sends a notification if appropriate2656 factory: :unverified, verification_succeeds: true, expected_notification: :verification_succeeded2657 sends a notification if appropriate2658 factory: :unverified, verification_succeeds: false, expected_notification: nil2659 sends a notification if appropriate2660 factory: :expired, verification_succeeds: true, expected_notification: nil2661 sends a notification if appropriate2662 factory: :expired, verification_succeeds: false, expected_notification: :disabled2663 sends a notification if appropriate2664 factory: :disabled, verification_succeeds: true, expected_notification: :enabled2665 sends a notification if appropriate2666 factory: :disabled, verification_succeeds: false, expected_notification: nil2667 sends a notification if appropriate2668 pages verification disabled2669 skips email notifications2670 pages configuration updates2671 enabling a disabled domain2672 schedules an update2673 verifying an enabled domain2674 schedules an update2675 disabling an expired domain2676 schedules an update2677 failing to verify a disabled domain2678 does not schedule an update2679 no verification code2680 returns an error2681 pages domain verification is disabled2682 extends domain validity by unconditionally reverifying2683 does not shorten any grace period2684Gitlab::Database::Migrations::BackgroundMigrationHelpers2685 #bulk_queue_background_migration_jobs_by_range2686 when the model has an ID column2687 with enough rows to bulk queue jobs more than once2688 queues jobs correctly2689 queues jobs in groups of buffer size 12690 with not enough rows to bulk queue jobs more than once2691 queues jobs correctly2692 queues jobs in bulk all at once (big buffer size)2693 without specifying batch_size2694 queues jobs correctly2695 when the model doesn't have an ID column2696 raises error (for now)2697 #queue_background_migration_jobs_by_range_at_intervals2698 when the model has an ID column2699-- Scheduled 2 FooJob jobs with a maximum of 2 records per batch and an interval of 600 seconds.2700The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2021-09-22 10:54:00 UTC."2701 returns the final expected delay2702-- Scheduled 0 FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.2703The migration is expected to take at least 0 seconds. Expect all jobs to have completed after 2021-09-22 10:34:00 UTC."2704 returns zero when nothing gets queued2705 with batch_size option2706-- Scheduled 2 FooJob jobs with a maximum of 2 records per batch and an interval of 600 seconds.2707The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2021-09-22 10:54:00 UTC."2708 queues jobs correctly2709 without batch_size option2710-- Scheduled 1 FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.2711The migration is expected to take at least 600 seconds. Expect all jobs to have completed after 2021-09-22 10:44:01 UTC."2712 queues jobs correctly2713 with other_job_arguments option2714-- Scheduled 1 FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.2715The migration is expected to take at least 600 seconds. Expect all jobs to have completed after 2021-09-22 10:44:01 UTC."2716 queues jobs correctly2717 with initial_delay option2718-- Scheduled 1 FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.2719The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2021-09-22 10:54:01 UTC."2720 queues jobs correctly2721 with track_jobs option2722-- Scheduled 1 ::FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.2723The migration is expected to take at least 600 seconds. Expect all jobs to have completed after 2021-09-22 10:44:02 UTC."2724 creates a record for each job in the database2725 without track_jobs option2726-- Scheduled 1 FooJob jobs with a maximum of 1000 records per batch and an interval of 600 seconds.2727The migration is expected to take at least 600 seconds. Expect all jobs to have completed after 2021-09-22 10:44:03 UTC."2728 does not create records in the database2729 when the model specifies a primary_column_name2730-- Scheduled 2 FooJob jobs with a maximum of 2 records per batch and an interval of 600 seconds.2731The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2021-09-22 10:54:04 UTC."2732 returns the final expected delay2733 when the primary_column_name is not an integer2734 raises error2735 when the primary_column_name does not exist2736 raises error2737 when the model doesn't have an ID or primary_column_name column2738 raises error (for now)2739 #requeue_background_migration_jobs_by_range_at_intervals2740-- Scheduled 2 TestJob jobs with an interval of 600 seconds.2741The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2021-09-22 10:54:06 UTC."2742 returns the expected duration2743-- Scheduled 2 TestJob jobs with an interval of 600 seconds.2744The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2021-09-22 10:54:06 UTC."2745 queues pending jobs2746 when nothing is queued2747-- Scheduled 0 FakeJob jobs with an interval of 600 seconds.2748The migration is expected to take at least 0 seconds. Expect all jobs to have completed after 2021-09-22 10:34:06 UTC."2749 returns expected duration of zero when nothing gets queued2750 with batch_size option2751-- Scheduled 2 TestJob jobs with an interval of 600 seconds.2752The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2021-09-22 10:54:06 UTC."2753 returns the expected duration2754-- Scheduled 2 TestJob jobs with an interval of 600 seconds.2755The migration is expected to take at least 1200 seconds. Expect all jobs to have completed after 2021-09-22 10:54:06 UTC."2756 queues pending jobs2757-- Scheduled 0 TestJob jobs with an interval of 600 seconds.2758The migration is expected to take at least 0 seconds. Expect all jobs to have completed after 2021-09-22 10:34:06 UTC."2759 retrieve jobs in batches2760 with initial_delay option2761-- Scheduled 2 TestJob jobs with an interval of 600 seconds.2762The migration is expected to take at least 1380 seconds. Expect all jobs to have completed after 2021-09-22 10:57:06 UTC."2763 returns the expected duration2764-- Scheduled 2 TestJob jobs with an interval of 600 seconds.2765The migration is expected to take at least 1380 seconds. Expect all jobs to have completed after 2021-09-22 10:57:06 UTC."2766 queues pending jobs2767 when nothing is queued2768-- Scheduled 0 FakeJob jobs with an interval of 600 seconds.2769The migration is expected to take at least 0 seconds. Expect all jobs to have completed after 2021-09-22 10:34:07 UTC."2770 returns expected duration of zero when nothing gets queued2771 #perform_background_migration_inline?2772 returns true in a test environment2773 returns true in a development environment2774 returns false in a production environment2775 #queue_batched_background_migration2776 creates the database record for the migration2777 when such migration already exists2778 does not create duplicate migration2779 when the job interval is lower than the minimum2780unknown OID 28: failed to recognize type of 'relfrozenxid'. It will be treated as String.2781unknown OID 1034: failed to recognize type of 'relacl'. It will be treated as String.2782unknown OID 194: failed to recognize type of 'relpartbound'. It will be treated as String.2783 sets the job interval to the minimum value2784 when additional arguments are passed to the method2785 saves the arguments on the database record2786 when the max_value is not given2787 when records exist in the database2788 creates the record with the current max value2789 creates the record with an active status2790 when the database is empty2791 sets the max value to the min value2792 creates the record with a finished status2793 #migrate_async2794 calls BackgroundMigrationWorker.perform_async2795 pushes a context with the current class name as caller_id2796 #migrate_in2797 calls BackgroundMigrationWorker.perform_in2798 pushes a context with the current class name as caller_id2799 #bulk_migrate_async2800 calls BackgroundMigrationWorker.bulk_perform_async2801 pushes a context with the current class name as caller_id2802 #bulk_migrate_in2803 calls BackgroundMigrationWorker.bulk_perform_in_2804 pushes a context with the current class name as caller_id2805 #delete_queued_jobs2806 deletes all queued jobs for the given background migration2807 #finalized_background_migration2808 behaves like finalized tracked background migration2809 processed the scheduled sidekiq queue2810 processed the async sidekiq queue2811 removes 'pending' tracked jobs2812 removes 'succeeded' tracked jobs2813 when removing all tracked job records2814 behaves like finalized tracked background migration2815 processed the scheduled sidekiq queue2816 processed the async sidekiq queue2817 removes 'pending' tracked jobs2818 removes 'succeeded' tracked jobs2819 behaves like removed tracked jobs2820 removes 'pending' tracked jobs2821 behaves like removed tracked jobs2822 removes 'succeeded' tracked jobs2823 when retaining all tracked job records2824 retains 'succeeded' tracked jobs2825 behaves like finalized background migration2826 processed the scheduled sidekiq queue2827 processed the async sidekiq queue2828 removes 'pending' tracked jobs2829 during retry race condition2830 behaves like finalized tracked background migration2831 processed the scheduled sidekiq queue2832 processed the async sidekiq queue2833 removes 'pending' tracked jobs2834 removes 'succeeded' tracked jobs2835 #delete_job_tracking2836 with default status2837 retains 'pending' tracked jobs2838 removes 'succeeded' tracked jobs2839 with explicit status2840 removes 'pending' tracked jobs2841 removes 'succeeded' tracked jobs2842Gitlab::Ci::Pipeline::Expression::Statement2843 .new2844 when variables are not provided2845 allows to properly initializes the statement2846 #evaluate2847 expression: "$PRESENT_VARIABLE == \"my variable\"", value: true2848 evaluates to `true`2849 expression: "\"my variable\" == $PRESENT_VARIABLE", value: true2850 evaluates to `true`2851 expression: "$PRESENT_VARIABLE == null", value: false2852 evaluates to `false`2853 expression: "$EMPTY_VARIABLE == null", value: false2854 evaluates to `false`2855 expression: "\"\" == $EMPTY_VARIABLE", value: true2856 evaluates to `true`2857 expression: "$EMPTY_VARIABLE", value: ""2858 evaluates to `""`2859 expression: "$UNDEFINED_VARIABLE == null", value: true2860 evaluates to `true`2861 expression: "null == $UNDEFINED_VARIABLE", value: true2862 evaluates to `true`2863 expression: "$PRESENT_VARIABLE", value: "my variable"2864 evaluates to `"my variable"`2865 expression: "$UNDEFINED_VARIABLE", value: nil2866 evaluates to `nil`2867 expression: "$PRESENT_VARIABLE =~ /var.*e$/", value: true2868 evaluates to `true`2869 expression: "$PRESENT_VARIABLE =~ /va\\r.*e$/", value: false2870 evaluates to `false`2871 expression: "$PRESENT_VARIABLE =~ /va\\/r.*e$/", value: false2872 evaluates to `false`2873 expression: "$PRESENT_VARIABLE =~ /var.*e$/", value: true2874 evaluates to `true`2875 expression: "$PRESENT_VARIABLE =~ /^var.*/", value: false2876 evaluates to `false`2877 expression: "$EMPTY_VARIABLE =~ /var.*/", value: false2878 evaluates to `false`2879 expression: "$UNDEFINED_VARIABLE =~ /var.*/", value: false2880 evaluates to `false`2881 expression: "$PRESENT_VARIABLE =~ /VAR.*/i", value: true2882 evaluates to `true`2883 expression: "$PATH_VARIABLE =~ /path\\/variable/", value: true2884 evaluates to `true`2885 expression: "$FULL_PATH_VARIABLE =~ /^\\/a\\/full\\/path\\/variable\\/value$/", value: true2886 evaluates to `true`2887 expression: "$FULL_PATH_VARIABLE =~ /\\/path\\/variable\\/value$/", value: true2888 evaluates to `true`2889 expression: "$PRESENT_VARIABLE != \"my variable\"", value: false2890 evaluates to `false`2891 expression: "\"my variable\" != $PRESENT_VARIABLE", value: false2892 evaluates to `false`2893 expression: "$PRESENT_VARIABLE != null", value: true2894 evaluates to `true`2895 expression: "$EMPTY_VARIABLE != null", value: true2896 evaluates to `true`2897 expression: "\"\" != $EMPTY_VARIABLE", value: false2898 evaluates to `false`2899 expression: "$UNDEFINED_VARIABLE != null", value: false2900 evaluates to `false`2901 expression: "null != $UNDEFINED_VARIABLE", value: false2902 evaluates to `false`2903 expression: "$PRESENT_VARIABLE !~ /var.*e$/", value: false2904 evaluates to `false`2905 expression: "$PRESENT_VARIABLE !~ /^var.*/", value: true2906 evaluates to `true`2907 expression: "$PRESENT_VARIABLE !~ /^v\\ar.*/", value: true2908 evaluates to `true`2909 expression: "$PRESENT_VARIABLE !~ /^v\\/ar.*/", value: true2910 evaluates to `true`2911 expression: "$EMPTY_VARIABLE !~ /var.*/", value: true2912 evaluates to `true`2913 expression: "$UNDEFINED_VARIABLE !~ /var.*/", value: true2914 evaluates to `true`2915 expression: "$PRESENT_VARIABLE !~ /VAR.*/i", value: false2916 evaluates to `false`2917 expression: "$PRESENT_VARIABLE && \"string\"", value: "string"2918 evaluates to `"string"`2919 expression: "$PRESENT_VARIABLE && $PRESENT_VARIABLE", value: "my variable"2920 evaluates to `"my variable"`2921 expression: "$PRESENT_VARIABLE && $EMPTY_VARIABLE", value: ""2922 evaluates to `""`2923 expression: "$PRESENT_VARIABLE && null", value: nil2924 evaluates to `nil`2925 expression: "\"string\" && $PRESENT_VARIABLE", value: "my variable"2926 evaluates to `"my variable"`2927 expression: "$EMPTY_VARIABLE && $PRESENT_VARIABLE", value: "my variable"2928 evaluates to `"my variable"`2929 expression: "null && $PRESENT_VARIABLE", value: nil2930 evaluates to `nil`2931 expression: "$EMPTY_VARIABLE && \"string\"", value: "string"2932 evaluates to `"string"`2933 expression: "$EMPTY_VARIABLE && $EMPTY_VARIABLE", value: ""2934 evaluates to `""`2935 expression: "\"string\" && $EMPTY_VARIABLE", value: ""2936 evaluates to `""`2937 expression: "\"string\" && null", value: nil2938 evaluates to `nil`2939 expression: "null && \"string\"", value: nil2940 evaluates to `nil`2941 expression: "\"string\" && \"string\"", value: "string"2942 evaluates to `"string"`2943 expression: "null && null", value: nil2944 evaluates to `nil`2945 expression: "$PRESENT_VARIABLE =~ /my var/ && $EMPTY_VARIABLE =~ /nope/", value: false2946 evaluates to `false`2947 expression: "$EMPTY_VARIABLE == \"\" && $PRESENT_VARIABLE", value: "my variable"2948 evaluates to `"my variable"`2949 expression: "$EMPTY_VARIABLE == \"\" && $PRESENT_VARIABLE != \"nope\"", value: true2950 evaluates to `true`2951 expression: "$PRESENT_VARIABLE && $EMPTY_VARIABLE", value: ""2952 evaluates to `""`2953 expression: "$PRESENT_VARIABLE && $UNDEFINED_VARIABLE", value: nil2954 evaluates to `nil`2955 expression: "$UNDEFINED_VARIABLE && $EMPTY_VARIABLE", value: nil2956 evaluates to `nil`2957 expression: "$UNDEFINED_VARIABLE && $PRESENT_VARIABLE", value: nil2958 evaluates to `nil`2959 expression: "$FULL_PATH_VARIABLE =~ /^\\/a\\/full\\/path\\/variable\\/value$/ && $PATH_VARIABLE =~ /path\\/variable/", value: true2960 evaluates to `true`2961 expression: "$FULL_PATH_VARIABLE =~ /^\\/a\\/bad\\/path\\/variable\\/value$/ && $PATH_VARIABLE =~ /path\\/variable/", value: false2962 evaluates to `false`2963 expression: "$FULL_PATH_VARIABLE =~ /^\\/a\\/full\\/path\\/variable\\/value$/ && $PATH_VARIABLE =~ /bad\\/path\\/variable/", value: false2964 evaluates to `false`2965 expression: "$FULL_PATH_VARIABLE =~ /^\\/a\\/bad\\/path\\/variable\\/value$/ && $PATH_VARIABLE =~ /bad\\/path\\/variable/", value: false2966 evaluates to `false`2967 expression: "$FULL_PATH_VARIABLE =~ /^\\/a\\/full\\/path\\/variable\\/value$/ || $PATH_VARIABLE =~ /path\\/variable/", value: true2968 evaluates to `true`2969 expression: "$FULL_PATH_VARIABLE =~ /^\\/a\\/bad\\/path\\/variable\\/value$/ || $PATH_VARIABLE =~ /path\\/variable/", value: true2970 evaluates to `true`2971 expression: "$FULL_PATH_VARIABLE =~ /^\\/a\\/full\\/path\\/variable\\/value$/ || $PATH_VARIABLE =~ /bad\\/path\\/variable/", value: true2972 evaluates to `true`2973 expression: "$FULL_PATH_VARIABLE =~ /^\\/a\\/bad\\/path\\/variable\\/value$/ || $PATH_VARIABLE =~ /bad\\/path\\/variable/", value: false2974 evaluates to `false`2975 expression: "$PRESENT_VARIABLE =~ /my var/ || $EMPTY_VARIABLE =~ /nope/", value: true2976 evaluates to `true`2977 expression: "$EMPTY_VARIABLE == \"\" || $PRESENT_VARIABLE", value: true2978 evaluates to `true`2979 expression: "$PRESENT_VARIABLE != \"nope\" || $EMPTY_VARIABLE == \"\"", value: true2980 evaluates to `true`2981 expression: "$PRESENT_VARIABLE && null || $EMPTY_VARIABLE == \"\"", value: true2982 evaluates to `true`2983 expression: "$PRESENT_VARIABLE || $UNDEFINED_VARIABLE", value: "my variable"2984 evaluates to `"my variable"`2985 expression: "$UNDEFINED_VARIABLE || $PRESENT_VARIABLE", value: "my variable"2986 evaluates to `"my variable"`2987 expression: "$UNDEFINED_VARIABLE == null || $PRESENT_VARIABLE", value: true2988 evaluates to `true`2989 expression: "$PRESENT_VARIABLE || $UNDEFINED_VARIABLE == null", value: "my variable"2990 evaluates to `"my variable"`2991 expression: "($PRESENT_VARIABLE)", value: "my variable"2992 evaluates to `"my variable"`2993 expression: "(($PRESENT_VARIABLE))", value: "my variable"2994 evaluates to `"my variable"`2995 expression: "(($PRESENT_VARIABLE && null) || $EMPTY_VARIABLE == \"\")", value: true2996 evaluates to `true`2997 expression: "($PRESENT_VARIABLE) && (null || $EMPTY_VARIABLE == \"\")", value: true2998 evaluates to `true`2999 expression: "(\"string\" || \"test\") == \"string\"", value: true3000 evaluates to `true`3001 expression: "(null || (\"test\" == \"string\"))", value: false3002 evaluates to `false`3003 expression: "(\"string\" == (\"test\" && \"string\"))", value: true3004 evaluates to `true`3005 expression: "(\"string\" == (\"test\" || \"string\"))", value: false3006 evaluates to `false`3007 expression: "(\"string\" == \"test\" || \"string\")", value: "string"3008 evaluates to `"string"`3009 expression: "(\"string\" == (\"string\" || ((\"1\" == \"1\") && (\"2\" == \"3\"))))", value: true3010 evaluates to `true`3011 #truthful?3012 expression: "$PRESENT_VARIABLE == \"my variable\"", value: true3013 returns `true`3014 expression: "$PRESENT_VARIABLE == 'no match'", value: false3015 returns `false`3016 expression: "$UNDEFINED_VARIABLE == null", value: true3017 returns `true`3018 expression: "$PRESENT_VARIABLE", value: true3019 returns `true`3020 expression: "$UNDEFINED_VARIABLE", value: false3021 returns `false`3022 expression: "$EMPTY_VARIABLE", value: false3023 returns `false`3024 expression: "$INVALID = 1", value: false3025 returns `false`3026 expression: "$PRESENT_VARIABLE =~ /var.*/", value: true3027 returns `true`3028 expression: "$UNDEFINED_VARIABLE =~ /var.*/", value: false3029 returns `false`3030 expression: "$PRESENT_VARIABLE !~ /var.*/", value: false3031 returns `false`3032 expression: "$UNDEFINED_VARIABLE !~ /var.*/", value: true3033 returns `true`3034 when evaluating expression raises an error3035 returns false3036Packages::PackageFileUploader3037 package_file3038 behaves like builds correct paths3039 #store_dir3040 behaves like matches the method pattern3041 is expected to match /^\h{2}\/\h{2}\/\h{64}\/packages\/\d+\/files\/\d+$/3042 #cache_dir3043 behaves like matches the method pattern3044 is expected to match /\/packages\/tmp\/cache/3045 #work_dir3046 behaves like matches the method pattern3047 is expected to match /\/packages\/tmp\/work/3048 #upload_path3049 behaves like matches the method pattern3050 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3051 #relative_path3052 is relative (PENDING: Path not set, skipping.)3053 .absolute_path3054 behaves like matches the method pattern3055 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3056 .base_dir3057 behaves like matches the method pattern3058 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3059 path traversal exploits3060 throws an exception3061 object store is remote3062 behaves like builds correct paths3063 #store_dir3064 behaves like matches the method pattern3065 is expected to match /^\h{2}\/\h{2}\/\h{64}\/packages\/\d+\/files\/\d+$/3066 #cache_dir3067 behaves like matches the method pattern3068 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3069 #work_dir3070 behaves like matches the method pattern3071 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3072 #upload_path3073 behaves like matches the method pattern3074 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3075 #relative_path3076 is relative (PENDING: Path not set, skipping.)3077 .absolute_path3078 behaves like matches the method pattern3079 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3080 .base_dir3081 behaves like matches the method pattern3082 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3083 path traversal exploits3084 throws an exception3085 remote file3086 with object storage enabled3087 can store file remotely3088 debian_package_file3089 behaves like builds correct paths3090 #store_dir3091 behaves like matches the method pattern3092 is expected to match /^\h{2}\/\h{2}\/\h{64}\/packages\/debian\/files\/\d+$/3093 #cache_dir3094 behaves like matches the method pattern3095 is expected to match /\/packages\/tmp\/cache/3096 #work_dir3097 behaves like matches the method pattern3098 is expected to match /\/packages\/tmp\/work/3099 #upload_path3100 behaves like matches the method pattern3101 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3102 #relative_path3103 is relative (PENDING: Path not set, skipping.)3104 .absolute_path3105 behaves like matches the method pattern3106 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3107 .base_dir3108 behaves like matches the method pattern3109 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3110 path traversal exploits3111 throws an exception3112 object store is remote3113 behaves like builds correct paths3114 #store_dir3115 behaves like matches the method pattern3116 is expected to match /^\h{2}\/\h{2}\/\h{64}\/packages\/debian\/files\/\d+$/3117 #cache_dir3118 behaves like matches the method pattern3119 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3120 #work_dir3121 behaves like matches the method pattern3122 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3123 #upload_path3124 behaves like matches the method pattern3125 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3126 #relative_path3127 is relative (PENDING: Path not set, skipping.)3128 .absolute_path3129 behaves like matches the method pattern3130 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3131 .base_dir3132 behaves like matches the method pattern3133 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3134 path traversal exploits3135 throws an exception3136 remote file3137 with object storage enabled3138 can store file remotely3139Routable3140 behaves like .find_by_full_path3141 .find_by_full_path3142 finds records by their full path3143 returns nil for unknown paths3144 includes route information when loading a record3145 with redirect routes3146 without follow_redirects option3147 does not find records by their redirected path3148 with follow_redirects option set to true3149 finds records by their canonical path3150 finds records by their redirected path3151 returns nil for unknown paths3152 behaves like .find_by_full_path3153 .find_by_full_path3154 finds records by their full path3155 returns nil for unknown paths3156 includes route information when loading a record3157 with redirect routes3158 without follow_redirects option3159 does not find records by their redirected path3160 with follow_redirects option set to true3161 finds records by their canonical path3162 finds records by their redirected path3163 returns nil for unknown paths3164Group Routable3165 Validations3166 is expected to validate that :route cannot be empty/falsy3167 Associations3168 is expected to have one route dependent => destroy3169 is expected to have many redirect_routes dependent => destroy3170 Callbacks3171 for a group3172 creates route record on create3173 updates route record on path change3174 ensure route path uniqueness across different objects3175 for a user3176 creates the route for a record on create3177 updates routes and nested routes on name change3178 .find_by_full_path3179 does not find projects with a matching path3180 behaves like .find_by_full_path3181 .find_by_full_path3182 finds records by their full path3183 returns nil for unknown paths3184 includes route information when loading a record3185 with redirect routes3186 without follow_redirects option3187 does not find records by their redirected path3188 with follow_redirects option set to true3189 finds records by their canonical path3190 finds records by their redirected path3191 returns nil for unknown paths3192 behaves like .find_by_full_path3193 .find_by_full_path3194 finds records by their full path3195 returns nil for unknown paths3196 includes route information when loading a record3197 with redirect routes3198 without follow_redirects option3199 does not find records by their redirected path3200 with follow_redirects option set to true3201 finds records by their canonical path3202 finds records by their redirected path3203 returns nil for unknown paths3204 .where_full_path_in3205 without any paths3206 returns an empty relation3207 without any valid paths3208 returns an empty relation3209 with valid paths3210 returns the projects matching the paths3211 returns projects regardless of the casing of paths3212 #parent_loaded?3213 is false when the parent is not loaded3214 is true when the parent is loaded3215 #route_loaded?3216 is false when the route is not loaded3217 is true when the route is loaded3218 #full_path3219 is expected to eq "foo"3220 is expected to eq "foo/group148"3221 hits the cache when not preloaded3222 #full_name3223 is expected to eq "foo"3224 is expected to eq "foo / group148"3225 hits the cache when not preloaded3226Project Routable3227 does not find groups with a matching path3228 behaves like .find_by_full_path3229 .find_by_full_path3230 finds records by their full path3231 returns nil for unknown paths3232 includes route information when loading a record3233 with redirect routes3234 without follow_redirects option3235 does not find records by their redirected path3236 with follow_redirects option set to true3237 finds records by their canonical path3238 finds records by their redirected path3239 returns nil for unknown paths3240 #full_path3241 is expected to eq "namespace282/project368"3242 hits the cache when not preloaded3243 #full_name3244 is expected to eq "John Doe1934 / project368"3245 hits the cache when not preloaded3246Integrations::HasDataFields3247 when data are stored in data_fields3248 behaves like data fields3249 #arg3250 returns an argument correctly3251 {arg}_changed?3252 returns false when the property has not been assigned a new value3253 returns true when the property has been assigned a different value3254 returns true when the property has been assigned a different value twice3255 returns false when the property has been re-assigned the same value3256 {arg}_touched?3257 returns false when the property has not been assigned a new value3258 returns true when the property has been assigned a different value3259 returns true when the property has been assigned a different value twice3260 returns true when the property has been re-assigned the same value3261 returns false when the property has been re-assigned the same value3262 data_fields_present?3263 returns true from the issue tracker service3264 {arg}_was?3265 returns nil3266 when service and data_fields are not persisted3267 data_fields_present?3268 returns true3269 when data are stored in properties3270 behaves like data fields3271 #arg3272 returns an argument correctly3273 {arg}_changed?3274 returns false when the property has not been assigned a new value3275 returns true when the property has been assigned a different value3276 returns true when the property has been assigned a different value twice3277 returns false when the property has been re-assigned the same value3278 {arg}_touched?3279 returns false when the property has not been assigned a new value3280 returns true when the property has been assigned a different value3281 returns true when the property has been assigned a different value twice3282 returns true when the property has been re-assigned the same value3283 returns false when the property has been re-assigned the same value3284 data_fields_present?3285 returns true from the issue tracker service3286 {arg}_was?3287 returns nil when the property has not been assigned a new value3288 returns initial value when the property has been assigned a different value3289 returns initial value when the property has been re-assigned the same value3290 when data are stored in both properties and data_fields3291 behaves like data fields3292 #arg3293 returns an argument correctly3294 {arg}_changed?3295 returns false when the property has not been assigned a new value3296 returns true when the property has been assigned a different value3297 returns true when the property has been assigned a different value twice3298 returns false when the property has been re-assigned the same value3299 {arg}_touched?3300 returns false when the property has not been assigned a new value3301 returns true when the property has been assigned a different value3302 returns true when the property has been assigned a different value twice3303 returns true when the property has been re-assigned the same value3304 returns false when the property has been re-assigned the same value3305 data_fields_present?3306 returns true from the issue tracker service3307 {arg}_was?3308 returns nil3309CacheMarkdownField3310 for Active record classes3311 behaves like a class with cached markdown fields3312 #cached_html_up_to_date?3313 returns false when the version is absent3314 returns false when the version is too early3315 returns false when the version is too late3316 returns false when the local version was bumped3317 returns true when the local version is default3318 returns true when the cached version is just right3319 #latest_cached_markdown_version3320 returns default version3321 #refresh_markdown_cache3322 fills all html fields3323 does not save the result3324 updates the markdown cache version3325 #refresh_markdown_cache!3326 fills all html fields3327 saves the changes3328 #banzai_render_context3329 sets project to nil if the object lacks a project3330 excludes author if the object lacks an author3331 raises if the context for an unrecognised field is requested3332 includes the pipeline3333 returns copies of the context template3334 with a project3335 sets the project in the context3336 with an author3337 sets the author in the context3338 with a parent_user3339 sets the user in the context3340 when the personal_snippet_reference_filters flag is disabled3341 does not set the user in the context3342 #updated_cached_html_for3343 when the markdown cache is outdated3344 calls #refresh_markdown_cache!3345 when the markdown field does not exist3346 returns nil3347 when the markdown cache is up to date3348 does not call #refresh_markdown_cache!3349 #rendered_field_content3350 when a field can be cached3351 returns the html3352 when a field cannot be cached3353 returns nil3354 behaves like a class with mentionable markdown fields3355 when klass is a Mentionable3356 #mentionable_attributes_changed?3357 returns true with key string3358 returns false with key symbol3359 returns false when no attr_mentionable keys3360 #save3361 when cache is outdated3362 when the markdown field also a mentionable attribute3363 calls #store_mentions!3364 when the markdown field is not mentionable attribute3365 does not call #store_mentions!3366 when the markdown field does not exist3367 does not call #store_mentions!3368 #attribute_invalidated?3369 returns true when cached_markdown_version is different3370 returns true when markdown is changed3371 returns true when both markdown and HTML are changed3372 returns false when there are no changes3373 when cache version is updated3374 correctly updates cached HTML even if refresh_markdown_cache is called before updating the attribute3375 for other classes3376 behaves like a class with cached markdown fields3377 #cached_html_up_to_date?3378 returns false when the version is absent3379 returns false when the version is too early3380 returns false when the version is too late3381 returns false when the local version was bumped3382 returns true when the local version is default3383 returns true when the cached version is just right3384 #latest_cached_markdown_version3385 returns default version3386 #refresh_markdown_cache3387 fills all html fields3388 does not save the result3389 updates the markdown cache version3390 #refresh_markdown_cache!3391 fills all html fields3392 saves the changes3393 #banzai_render_context3394 sets project to nil if the object lacks a project3395 excludes author if the object lacks an author3396 raises if the context for an unrecognised field is requested3397 includes the pipeline3398 returns copies of the context template3399 with a project3400 sets the project in the context3401 with an author3402 sets the author in the context3403 with a parent_user3404 sets the user in the context3405 when the personal_snippet_reference_filters flag is disabled3406 does not set the user in the context3407 #updated_cached_html_for3408 when the markdown cache is outdated3409 calls #refresh_markdown_cache!3410 when the markdown field does not exist3411 returns nil3412 when the markdown cache is up to date3413 does not call #refresh_markdown_cache!3414 #rendered_field_content3415 when a field can be cached3416 returns the html3417 when a field cannot be cached3418 returns nil3419GitlabRoutingHelper3420 Project URL helpers3421 #project_member_path3422 is expected to eq "/namespace323/project409/-/project_members/1023"3423 #request_access_project_members_path3424 is expected to eq "/namespace324/project410/-/project_members/request_access"3425 #leave_project_members_path3426 is expected to eq "/namespace325/project411/-/project_members/leave"3427 #approve_access_request_project_member_path3428 is expected to eq "/namespace326/project412/-/project_members/1025/approve_access_request"3429 #resend_invite_project_member_path3430 is expected to eq "/namespace327/project413/-/project_members/1027/resend_invite"3431 Group URL helpers3432 #group_members_url3433 is expected to eq "http://test.host/groups/group155/-/group_members"3434 #group_member_path3435 is expected to eq "/groups/group156/-/group_members/1028"3436 #request_access_group_members_path3437 is expected to eq "/groups/group157/-/group_members/request_access"3438 #leave_group_members_path3439 is expected to eq "/groups/group158/-/group_members/leave"3440 #approve_access_request_group_member_path3441 is expected to eq "/groups/group159/-/group_members/1029/approve_access_request"3442 #resend_invite_group_member_path3443 is expected to eq "/groups/group160/-/group_members/1030/resend_invite"3444 #preview_markdown_path3445 returns group preview markdown path for a group parent3446 returns group preview markdown path for a group parent with args3447 returns project preview markdown path for a project parent3448 returns snippet preview markdown path for a personal snippet3449 returns project preview markdown path for a project snippet3450 #edit_milestone_path3451 returns group milestone edit path when given entity parent is a Group3452 returns project milestone edit path when given entity parent is not a Group3453 members helpers3454 #source_members_url3455 returns a url to the memberships page for a group membership3456 returns a url to the memberships page for a project membership3457 artifacts3458 #fast_download_project_job_artifacts_path3459 matches the Rails download path3460 when given parameters3461 adds them to the path3462 #fast_keep_project_job_artifacts_path3463 matches the Rails keep path3464 #fast_browse_project_job_artifacts_path3465 matches the Rails browse path3466 snippets3467 #gitlab_snippet_path3468 returns the personal snippet path3469 returns the project snippet path3470 #gitlab_snippet_url3471 returns the personal snippet url3472 returns the project snippet url3473 #gitlab_raw_snippet_path3474 returns the raw personal snippet path3475 returns the raw project snippet path3476 #gitlab_raw_snippet_blob_path3477 behaves like snippet blob raw path3478 for PersonalSnippets3479 returns the raw personal snippet blob path3480 for ProjectSnippets3481 returns the raw project snippet blob path3482 when an argument is set3483 is expected to eq "/-/snippets/11/raw/test-ref/.gitattributes?inline=true"3484 without a ref3485 uses the root ref3486 #gitlab_raw_snippet_url3487 returns the raw personal snippet url3488 returns the raw project snippet url3489 #gitlab_raw_snippet_blob_url3490 behaves like snippet blob raw url3491 for PersonalSnippets3492 returns the raw personal snippet blob url3493 for ProjectSnippets3494 returns the raw project snippet blob url3495 when an argument is set3496 is expected to eq "http://test.host/-/snippets/11/raw/snippet-test-ref/.gitattributes?inline=true"3497 without a ref3498 uses the root ref3499 when snippet does not have a repository3500 uses the instance deafult branch3501 #gitlab_raw_snippet_url3502 returns the raw personal snippet url3503 returns the raw project snippet url3504 #gitlab_snippet_notes_path3505 returns the notes path for the personal snippet3506 #gitlab_snippet_notes_url3507 returns the notes url for the personal snippet3508 #gitlab_snippet_note_path3509 returns the note path for the personal snippet3510 #gitlab_snippet_note_url3511 returns the note url for the personal snippet3512 #gitlab_toggle_award_emoji_snippet_note_path3513 returns the note award emoji path for the personal snippet3514 #gitlab_toggle_award_emoji_snippet_note_url3515 returns the note award emoji url for the personal snippet3516 #gitlab_toggle_award_emoji_snippet_path3517 returns the award emoji path for the personal snippet3518 #gitlab_toggle_award_emoji_snippet_url3519 returns the award url for the personal snippet3520 #gitlab_dashboard_snippets_path3521 returns the personal snippets dashboard path3522 returns the project snippets dashboard path3523 wikis3524 #wiki_page_path3525 returns the url for the wiki page3526 releases3527 #release_url3528 returns the url for the release page3529 GraphQL ETag paths3530 with pipelines3531 returns an ETag path for a pipeline sha3532 returns an ETag path for pipelines3533Projects::UpdateRepositoryStorageService3534 #execute3535 without wiki and design repository3536 when the move succeeds3537 moves the repository to the new storage and unmarks the repository as read-only3538 when the filesystems are the same3539 updates the database without trying to move the repostory3540 when the move fails3541 unmarks the repository as read-only without updating the repository storage3542 when the cleanup fails3543 sets the correct state3544 when the checksum does not match3545 unmarks the repository as read-only without updating the repository storage3546 when a object pool was joined3547 leaves the pool3548 when the repository move is finished3549 is idempotent3550 when the repository move is failed3551 is idempotent3552 project with no repositories3553 updates the database3554 with wiki repository3555 when the move succeeds3556 moves the project and its wiki repository to the new storage and unmarks the repository as read-only3557 :repack_after_shard_migration feature flag disabled3558 does not enqueue a GC run3559 :repack_after_shard_migration feature flag enabled3560 does not enqueue a GC run if housekeeping is disabled3561 enqueues a GC run3562 when the filesystems are the same3563 updates the database without trying to move the repostory3564 when the move of the wiki repository fails3565 unmarks the repository as read-only without updating the repository storage3566 when the cleanup of the wiki repository fails3567 sets the correct state3568 when the checksum of the wiki repository does not match3569 unmarks the repository as read-only without updating the repository storage3570 with design repository3571 when the move succeeds3572 moves the project and its design repository to the new storage and unmarks the repository as read-only3573 :repack_after_shard_migration feature flag disabled3574 does not enqueue a GC run3575 :repack_after_shard_migration feature flag enabled3576 does not enqueue a GC run if housekeeping is disabled3577 enqueues a GC run3578 when the filesystems are the same3579 updates the database without trying to move the repostory3580 when the move of the design repository fails3581 unmarks the repository as read-only without updating the repository storage3582 when the cleanup of the design repository fails3583 sets the correct state3584 when the checksum of the design repository does not match3585 unmarks the repository as read-only without updating the repository storage3586ObjectStorage::MigrateUploadsWorker3587 for AvatarUploader3588 behaves like uploads migration worker3589 .enqueue!3590 is guarded by .sanity_check!3591 sanity_check! fails3592 does not enqueue a job3593 .sanity_check!3594 uploader types mismatch3595 is expected to raise ObjectStorage::MigrateUploadsWorker::SanityCheckError with message matching /Multiple uploaders found/3596 mount point not found3597 is expected to raise ObjectStorage::MigrateUploadsWorker::SanityCheckError with message matching /Mount point [a-z:]+ not found in/3598 #perform3599 migrates files to remote storage3600 reversed3601 migrates files to local storage3602 migration is unsuccessful3603 does not migrate files to remote storage3604 limits N+1 queries3605 to N*53606 for FileUploader3607 behaves like uploads migration worker3608 .enqueue!3609 is guarded by .sanity_check!3610 sanity_check! fails3611 does not enqueue a job3612 .sanity_check!3613 uploader types mismatch3614 is expected to raise ObjectStorage::MigrateUploadsWorker::SanityCheckError with message matching /Multiple uploaders found/3615 mount point not found3616 is expected to raise ObjectStorage::MigrateUploadsWorker::SanityCheckError with message matching /Mount point [a-z:]+ not found in/3617 #perform3618 migrates files to remote storage3619 reversed3620 migrates files to local storage3621 migration is unsuccessful3622 does not migrate files to remote storage3623 limits N+1 queries3624 to N*53625 for DesignManagement::DesignV432x230Uploader3626 behaves like uploads migration worker3627 .enqueue!3628 is guarded by .sanity_check!3629 sanity_check! fails3630 does not enqueue a job3631 .sanity_check!3632 uploader types mismatch3633 is expected to raise ObjectStorage::MigrateUploadsWorker::SanityCheckError with message matching /Multiple uploaders found/3634 mount point not found3635 is expected to raise ObjectStorage::MigrateUploadsWorker::SanityCheckError with message matching /Mount point [a-z:]+ not found in/3636 #perform3637 migrates files to remote storage3638 reversed3639 migrates files to local storage3640 migration is unsuccessful3641 does not migrate files to remote storage3642Packages::Debian::GroupDistribution3643 behaves like Debian Distribution3644 relationships3645 is expected to belong to group required:3646 is expected to belong to creator class_name => User required:3647 is expected to have one key class_name => Packages::Debian::GroupDistributionKey inverse_of => distribution3648 is expected to have many components class_name => Packages::Debian::GroupComponent inverse_of => distribution3649 is expected to have many architectures class_name => Packages::Debian::GroupArchitecture inverse_of => distribution3650 validations3651 #group3652 is expected to validate that :group cannot be empty/falsy3653 #creator3654 is expected not to validate that :creator cannot be empty/falsy3655 #codename3656 is expected to validate that :codename cannot be empty/falsy3657 is expected to allow :codename to be ‹"buster"›3658 is expected to allow :codename to be ‹"buster-updates"›3659 is expected to allow :codename to be ‹"Debian10.5"›3660 is expected not to allow :codename to be ‹"jessie/updates"›3661 is expected not to allow :codename to be ‹"hé"›3662 #suite3663 is expected to allow :suite to be ‹nil›3664 is expected to allow :suite to be ‹"testing"›3665 is expected not to allow :suite to be ‹"hé"›3666 #unique_debian_suite_and_codename3667 with_existing_suite: false, suite: nil, codename: :keep, errors: nil3668 debian_group_distribution3669 is expected to be valid3670 with_existing_suite: false, suite: "testing", codename: :keep, errors: nil3671 debian_group_distribution3672 is expected to be valid3673 with_existing_suite: false, suite: nil, codename: :codename, errors: ["Codename has already been taken"]3674 debian_group_distribution3675 is expected to eq ["Codename has already been taken"]3676 with_existing_suite: false, suite: :codename, codename: :keep, errors: ["Suite has already been taken as Codename"]3677 debian_group_distribution3678 is expected to eq ["Suite has already been taken as Codename"]3679 with_existing_suite: false, suite: :codename, codename: :codename, errors: ["Codename has already been taken", "Suite has already been taken as Codename"]3680 debian_group_distribution3681 is expected to eq ["Codename has already been taken", "Suite has already been taken as Codename"]3682 with_existing_suite: true, suite: nil, codename: :keep, errors: nil3683 debian_group_distribution3684 is expected to be valid3685 with_existing_suite: true, suite: "testing", codename: :keep, errors: nil3686 debian_group_distribution3687 is expected to be valid3688 with_existing_suite: true, suite: nil, codename: :codename, errors: ["Codename has already been taken"]3689 debian_group_distribution3690 is expected to eq ["Codename has already been taken"]3691 with_existing_suite: true, suite: :codename, codename: :keep, errors: ["Suite has already been taken as Codename"]3692 debian_group_distribution3693 is expected to eq ["Suite has already been taken as Codename"]3694 with_existing_suite: true, suite: :codename, codename: :codename, errors: ["Codename has already been taken", "Suite has already been taken as Codename"]3695 debian_group_distribution3696 is expected to eq ["Codename has already been taken", "Suite has already been taken as Codename"]3697 with_existing_suite: true, suite: nil, codename: :suite, errors: ["Codename has already been taken as Suite"]3698 debian_group_distribution3699 is expected to eq ["Codename has already been taken as Suite"]3700 with_existing_suite: true, suite: :suite, codename: :keep, errors: ["Suite has already been taken"]3701 debian_group_distribution3702 is expected to eq ["Suite has already been taken"]3703 with_existing_suite: true, suite: :suite, codename: :suite, errors: ["Suite has already been taken", "Codename has already been taken as Suite"]3704 debian_group_distribution3705 is expected to eq ["Suite has already been taken", "Codename has already been taken as Suite"]3706 #origin3707 is expected to allow :origin to be ‹nil›3708 is expected to allow :origin to be ‹"Debian"›3709 is expected not to allow :origin to be ‹"hé"›3710 #label3711 is expected to allow :label to be ‹nil›3712 is expected to allow :label to be ‹"Debian"›3713 is expected not to allow :label to be ‹"hé"›3714 #version3715 is expected to allow :version to be ‹nil›3716 is expected to allow :version to be ‹"10.6"›3717 is expected not to allow :version to be ‹"hé"›3718 #description3719 is expected to allow :description to be ‹nil›3720 is expected to allow :description to be ‹"Debian 10.6 Released 26 September 2020"›3721 is expected to allow :description to be ‹"Hé !"›3722 #valid_time_duration_seconds3723 is expected to allow :valid_time_duration_seconds to be ‹nil›3724 is expected to allow :valid_time_duration_seconds to be ‹86400›3725 is expected not to allow :valid_time_duration_seconds to be ‹43200›3726 #file3727 is expected not to validate that :file cannot be empty/falsy3728 #file_store3729 is expected to validate that :file_store cannot be empty/falsy3730 #file_signature3731 is expected not to validate that :file_signature is empty/falsy3732 #signed_file3733 is expected not to validate that :signed_file cannot be empty/falsy3734 #signed_file_store3735 is expected to validate that :signed_file_store cannot be empty/falsy3736 scopes3737 .with_container3738 does not return other distributions3739 .with_codename3740 does not return other distributions3741 .with_suite3742 does not return other distributions3743 .with_codename_or_suite3744 passing codename3745 does not return other distributions3746 passing suite3747 does not return other distributions3748 #needs_update?3749 with new distribution3750 is expected to be truthy3751 with file3752 without valid_time_duration_seconds3753 is expected to be falsey3754 with valid_time_duration_seconds3755 when not yet expired3756 is expected to be falsey3757 when expired3758 is expected to be truthy3759 group distribution specifics3760 #packages3761 returns only public packages with same codename3762 #package_files3763 returns only files from public packages with same codename3764EnvironmentSerializer3765 behaves like avoid N+1 on environments serialization3766 avoids N+1 database queries with grouping3767 avoids N+1 database queries without grouping3768 does not preload for environments that does not exist in the page3769 when there is a collection of objects provided3770 contains important elements of environment3771 generates payload for collection3772 when representing environments within folders3773 when there is a single environment3774 represents one standalone environment3775 when there are multiple environments in folder3776 represents one item that is a folder3777 when there are multiple folders and standalone environments3778 represents multiple items grouped within folders3779 when used with pagination3780 creates a paginated serializer3781 when resource is paginatable relation3782 when there is a single environment object in relation3783 serializes environments3784 when multiple environment objects are serialized3785 serializes appropriate number of objects3786 appends relevant headers3787 when grouping environments within folders3788 paginates grouped items including ordering3789 appends correct total page count header3790 appends correct page count headers3791User TokenAuthenticatable3792 behaves like TokenAuthenticatable3793 dynamically defined methods3794 is expected to respond to #find_by_feed_token3795 is expected to respond to #ensure_feed_token3796 is expected to respond to #set_feed_token3797 is expected to respond to #reset_feed_token!3798 ensures authentication token3799 is expected to be a kind of String3800ApplicationSetting TokenAuthenticatable3801 behaves like TokenAuthenticatable3802 dynamically defined methods3803 is expected to respond to #find_by_runners_registration_token3804 is expected to respond to #ensure_runners_registration_token3805 is expected to respond to #set_runners_registration_token3806 is expected to respond to #reset_runners_registration_token!3807 generating new token3808 token is not generated yet3809 token field accessor3810 is expected not to be blank3811 ensure_runners_registration_token3812 is expected to be a kind of String3813 is expected not to be blank3814 does not persist token3815 ensure_runners_registration_token!3816 persists new token as an encrypted string3817 does not persist token in a clear text3818 token is generated3819 persists a new token3820 setting new token3821 is expected to eq "0123456789"3822 multiple token fields3823 is expected to respond to #ensure_runners_registration_token3824 is expected to respond to #ensure_yet_another_token3825 setting same token field multiple times3826 raises error3827PersonalAccessToken TokenAuthenticatable3828 .find_by_token3829 finds the token3830 #set_token3831 sets new token3832 #ensure_token3833 token_digest does not exist3834 behaves like changes personal access token3835 sets new token3836 token_digest already generated3837 behaves like does not change personal access token3838 sets new token3839 #ensure_token!3840 token_digest does not exist3841 behaves like changes personal access token3842 sets new token3843 token_digest already generated3844 behaves like does not change personal access token3845 sets new token3846 #reset_token!3847 token_digest does not exist3848 behaves like changes personal access token3849 sets new token3850 token_digest already generated3851 behaves like changes personal access token3852 sets new token3853Ci::Build TokenAuthenticatable3854 behaves like TokenAuthenticatable3855 dynamically defined methods3856 is expected to respond to #find_by_token3857 is expected to respond to #ensure_token3858 is expected to respond to #set_token3859 is expected to respond to #reset_token!3860 generating new token3861 token is not generated yet3862 token field accessor3863 makes it possible to access token3864 ensure_token3865 is expected to be a kind of String3866 is expected not to be blank3867 does not persist token3868 ensure_token!3869 persists a new token3870 persists new token as an encrypted string3871 does not persist a token in a clear text3872 #reset_token!3873 persists a new token3874 setting a new token3875 returns the token3876 writes a new encrypted token3877 does not write a new cleartext token3878Gitlab::JsonCache3879 #active?3880 when backend respond to active? method3881 delegates to the underlying cache implementation3882 when backend does not respond to active? method3883 returns true3884 #cache_key3885 when namespace is not defined3886 when cache_key_with_version is true3887 expands out the key with GitLab, and Rails versions3888 when cache_key_with_version is false3889 returns the key3890 when namespace is nil3891 when cache_key_with_version is true3892 expands out the key with GitLab, and Rails versions3893 when cache_key_with_version is false3894 returns the key3895 when namespace is set3896 when cache_key_with_version is true3897 expands out the key with namespace and Rails version3898 when cache_key_with_version is false3899 expands out the key with namespace3900 #expire3901 expires the given key from the cache3902 #read3903 reads the given key from the cache3904 returns the cached value when there is data in the cache with the given key3905 returns nil when there is no data in the cache with the given key3906 when the cached value is true3907 parses the cached value3908 when the cached value is false3909 parses the cached value3910 when the cached value is a JSON true value3911 parses the cached value3912 when the cached value is a JSON false value3913 parses the cached value3914 when the cached value is a hash3915 parses the cached value3916 returns nil when klass is nil3917 gracefully handles bad cached entry3918 gracefully handles an empty hash3919 gracefully handles unknown attributes3920 gracefully handles excluded fields from attributes during serialization3921 when the cached value is an array3922 parses the cached value3923 returns an empty array when klass is nil3924 gracefully handles bad cached entry3925 gracefully handles an empty array3926 gracefully handles unknown attributes3927 #write3928 writes value to the cache with the given key3929 writes a string containing a JSON representation of the value to the cache3930 passes options the underlying cache implementation3931 passes options the underlying cache implementation when options is empty3932 passes options the underlying cache implementation when options is nil3933 #fetch3934 requires a block3935 passes options the underlying cache implementation3936 when the given key does not exist in the cache3937 when the result of the block is truthy3938 returns the result of the block3939 caches the value3940 when the result of the block is false3941 returns the result of the block3942 caches the value3943 when the result of the block is nil3944 returns the result of the block3945 caches the value3946 when the given key exists in the cache3947 when the cached value is a hash3948 parses the cached value3949 decodes enums correctly3950 returns the result of the block when 'as' option is nil3951 returns the result of the block when 'as' option is missing3952 when the cached value is an instance of ActiveRecord::Base3953 returns a persisted record when id is set3954 returns a new record when id is nil3955 returns a new record when id is missing3956 gracefully handles bad cached entry3957 gracefully handles an empty hash3958 gracefully handles unknown attributes3959 gracefully handles excluded fields from attributes during serialization3960 when the cached value is a array3961 parses the cached value3962 returns an empty array when 'as' option is nil3963 returns an empty array when 'as' option is not informed3964 when the cached value is true3965 returns the cached value3966 does not execute the block3967 does not write to the cache3968 when the cached value is false3969 returns the cached value3970 does not execute the block3971 does not write to the cache3972 when the cached value is nil3973 returns the result of the block3974 writes the result of the block to the cache3975Gitlab::Ci::Status::External::Factory3976 when external status has a simple core status3977 when core status is created3978 fabricates a core status created3979 extends core status with common methods3980 when core status is waiting_for_resource3981 fabricates a core status waiting_for_resource3982 extends core status with common methods3983 when core status is preparing3984 fabricates a core status preparing3985 extends core status with common methods3986 when core status is pending3987 fabricates a core status pending3988 extends core status with common methods3989 when core status is running3990 fabricates a core status running3991 extends core status with common methods3992 when core status is success3993 fabricates a core status success3994 extends core status with common methods3995 when core status is failed3996 fabricates a core status failed3997 extends core status with common methods3998 when core status is canceled3999 fabricates a core status canceled4000 extends core status with common methods4001 when core status is skipped4002 fabricates a core status skipped4003 extends core status with common methods4004 when core status is manual4005 fabricates a core status manual4006 extends core status with common methods4007 when core status is scheduled4008 fabricates a core status scheduled4009 extends core status with common methods4010Gitlab::GitalyClient4011 .query_time4012 increments query times4013 .long_timeout4014 default case4015 is expected to eq 6 hours4016 running in Puma4017 is expected to eq 554018 .filesystem_id_from_disk4019 catches errors4020 .filesystem_id4021 returns an empty string when the relevant storage status is not found in the response4022 when the relevant storage status is not found4023 .filesystem_disk_available4024 returns nil when the relevant storage status is not found in the response4025 .filesystem_disk_used4026 returns nil when the relevant storage status is not found in the response4027 when the relevant storage status is found4028 .filesystem_disk_available4029 returns disk available when the relevant storage status is found in the response4030 .filesystem_disk_used4031 returns disk used when the relevant storage status is found in the response4032 .stub_class4033 returns the gRPC health check stub4034 returns a Gitaly stub4035 .stub_address4036 returns the same result after being called multiple times4037 .stub_certs4038 skips certificates if OpenSSLError is raised and report it4039 .stub_creds4040 returns :this_channel_is_insecure if unix4041 returns :this_channel_is_insecure if tcp4042 returns Credentials object if tls4043 .stub4044 when passed a UNIX socket address4045 passes the address as-is to GRPC4046 when passed a TLS address4047 strips tls:// prefix before passing it to GRPC::Core::Channel initializer4048 when passed a TCP address4049 strips tcp:// prefix before passing it to GRPC::Core::Channel initializer4050 .can_use_disk?4051 properly caches a false result4052 .connection_data4053 returns connection data4054 allow_n_plus_1_calls4055 when RequestStore is enabled4056 returns the result of the allow_n_plus_1_calls block4057 when RequestStore is not active4058 returns the result of the allow_n_plus_1_calls block4059 .request_kwargs4060 sets the gitaly-session-id in the metadata4061 when RequestStore is not enabled4062 sets a different gitaly-session-id per request4063 when RequestStore is enabled4064 sets the same gitaly-session-id on every outgoing request metadata4065 gitlab_git_env4066 when RequestStore is disabled4067 does not force-route to primary4068 when RequestStore is enabled without git_env4069 does not force-orute to primary4070 when RequestStore is enabled with empty git_env4071 disables force-routing to primary4072 when RequestStore is enabled with populated git_env4073 enables force-routing to primary4074 deadlines4075 includes the deadline information4076 limits the deadline do the request deadline if that is closer4077 does not limit calls in sidekiq4078 does not limit calls in sidekiq when allowed unlimited4079 includes only the deadline specified by the timeout when there was no deadline4080 enforce_gitaly_request_limits?4081 when RequestStore is enabled and the maximum number of calls is not enforced by a feature flag4082 allows up the maximum number of allowed calls4083 allows the maximum number of calls to be exceeded if GITALY_DISABLE_REQUEST_LIMITS is set4084 allows the maximum number of calls to be exceeded within an allow_n_plus_1_calls block4085 when the maximum number of calls has been reached4086 fails on the next call4087 when the maximum number of calls has been reached within an allow_n_plus_1_calls block4088 allows up to the maximum number of calls outside of an allow_n_plus_1_calls block4089 does not allow the maximum number of calls to be exceeded outside of an allow_n_plus_1_calls block4090 in production and when RequestStore is enabled4091 when the maximum number of calls is enforced by a feature flag4092 does not allow the maximum number of calls to be exceeded4093 when the maximum number of calls is not enforced by a feature flag4094 allows the maximum number of calls to be exceeded4095 when RequestStore is not active4096 does not raise errors when the maximum number of allowed calls is exceeded4097 does not fail when the maximum number of calls is exceeded within an allow_n_plus_1_calls block4098 get_request_count4099 when RequestStore is enabled4100 when enforce_gitaly_request_limits is called outside of allow_n_plus_1_calls blocks4101 counts gitaly calls4102 when enforce_gitaly_request_limits is called inside and outside of allow_n_plus_1_calls blocks4103 counts gitaly calls4104 when reset_counts is called4105 resets counts4106 when RequestStore is not active4107 returns zero4108 timeouts4109 with default values4110 returns expected values4111 Peek Performance bar details4112 when the request store is active4113 records call details if a RPC is called4114 when no request store is active4115 records nothing4116DeclarativePolicy authorization in GraphQL4117 Field authorizations4118 with a single permission4119 returns the protected field when user has permission4120 returns nil when user is not authorized4121 with a collection of permissions4122 returns the protected field when user has all permissions4123 returns nil when user only has one of the permissions4124 returns nil when user only has the other of the permissions4125 returns nil when user has neither of the required permissions4126 Field authorizations when field is a built in type4127 with a single permission4128 returns the protected field when user has permission4129 returns nil when user is not authorized4130 with a collection of permissions4131 returns the protected field when user has all permissions4132 returns nil when user only has one of the permissions4133 returns nil when user only has none of the permissions4134 Type authorizations4135 with a single permission4136 returns the protected field when user has permission4137 returns nil when user is not authorized4138 with a collection of permissions4139 returns the protected field when user has all permissions4140 returns nil when user only has one of the permissions4141 returns nil when user only has the other of the permissions4142 returns nil when user has neither of the required permissions4143 type and field authorizations together4144 returns the protected field when user has all permissions4145 returns nil when user only has one of the permissions4146 returns nil when user only has the other of the permissions4147 returns nil when user has neither of the required permissions4148 resolver and field authorizations together4149 when the resolver authorizes the object4150 returns the protected field when user has all permissions4151 returns nil when user only has one of the permissions4152 returns nil when user only has the other of the permissions4153 returns nil when user has neither of the required permissions4154 when the resolver does not authorize the object, but instead calls authorized_find!4155 returns the protected field when user has all permissions4156 returns nil when user only has one of the permissions4157 returns nil when user only has the other of the permissions4158 returns nil when user has neither of the required permissions4159 when the resolver calls authorized_find!, but does not list any permissions4160 raises a configuration error4161 when type authorizations when applied to a relay connection4162 returns only the elements visible to the user4163 returns nil when user is not authorized4164 limiting connections with multiple objects4165 only checks permissions for the first object4166 type authorizations when applied to a basic connection4167 returns the protected field when user has permission4168 returns nil when user is not authorized4169 Authorizations on active record relations4170 renders the issues the user has access to4171 does not check access on fields that will not be rendered4172 Authorization on GraphQL::Execution::Execute::SKIP4173 skips redaction4174GroupMemberPolicy4175 with anonymous user4176 is expected to be allowed :read_group4177 design management is enabled4178 is expected to be allowed :read_design_activity4179 for a private group4180 is expected not to be allowed :destroy_group_member4181 for an internal group4182 is expected not to be allowed :destroy_group_member4183 with guest user, for own membership4184 is expected not to be allowed :update_group_member4185 is expected to be allowed :destroy_group_member4186 with guest user, for other membership4187 is expected not to be allowed :update_group_member4188 is expected to be allowed :read_group4189 with one owner4190 is expected not to be allowed :destroy_group_member4191 is expected to be allowed :read_group4192 with one blocked owner4193 is expected not to be allowed :destroy_group_member4194 is expected not to be allowed :read_group4195 with more than one owner4196 is expected to be allowed :destroy_group_member4197 with the group parent4198 is expected to be allowed :update_group_member4199 without group parent4200 is expected not to be allowed :update_group_member4201 without group parent with two owners4202 is expected to be allowed :update_group_member4203Clusters::Integrations::Prometheus4204 associations4205 is expected to belong to cluster class_name => Clusters::Cluster required:4206 validations4207 is expected to validate that :cluster cannot be empty/falsy4208 is expected not to allow :enabled to be ‹nil›4209 after_destroy4210 deactivates prometheus_integration4211 after_save4212 when no change to enabled status4213 does not touch project integrations4214 when enabling4215 deactivates prometheus_integration4216 when disabling4217 activates prometheus_integration4218 #prometheus_client4219 cluster is nil4220 returns nil4221 cluster doesn't have kubeclient4222 returns nil4223 cluster has kubeclient4224 creates proxy prometheus_client4225 merges proxy_url, options and headers from kube client with prometheus_client options4226 when cluster is not reachable4227 behaves like exception caught for prometheus client4228 returns nil4229 when there is a socket error while contacting cluster4230 behaves like exception caught for prometheus client4231 returns nil4232 behaves like exception caught for prometheus client4233 returns nil4234 when the network is unreachable4235 behaves like exception caught for prometheus client4236 returns nil4237 #configured?4238 when a kubenetes client is present4239 is expected to be truthy4240 when it is disabled4241 is expected to be falsey4242 when the kubernetes URL is blocked4243 is expected to be falsey4244 when a kubenetes client is not present4245 is expected to be falsy4246Gitlab::Metrics4247 .settings4248 returns a Hash4249 .enabled?4250 returns a boolean4251 .prometheus_metrics_enabled_unmemoized4252 prometheus metrics enabled in config4253 when metrics folder is present4254 metrics are enabled4255 when metrics folder is missing4256 metrics are disabled4257 .prometheus_metrics_enabled?4258 returns a boolean4259 .measure4260 without a transaction4261 returns the return value of the block4262 with a transaction4263 adds a metric to the current transaction4264 returns the return value of the block4265 #series_prefix4266 returns a String4267 .record_status_for_duration?4268 status: 100, should_record: false4269 is expected to equal false4270 status: 200, should_record: true4271 is expected to equal true4272 status: 401, should_record: true4273 is expected to equal true4274 status: nil, should_record: false4275 is expected to equal false4276 status: 500, should_record: false4277 is expected to equal false4278 status: 503, should_record: false4279 is expected to equal false4280 status: "100", should_record: false4281 is expected to equal false4282 status: "201", should_record: true4283 is expected to equal true4284 status: "nothing", should_record: false4285 is expected to equal false4286 .add_event4287 without a transaction4288 does nothing4289 with a transaction4290 adds an event4291 prometheus metrics disabled4292 behaves like prometheus metrics API4293 #counter4294 #increment4295 successfully calls #increment without arguments4296 successfully calls #increment with 1 argument4297 successfully calls #increment with 2 arguments4298 #summary4299 #observe4300 successfully calls #observe with 2 arguments4301 #gauge4302 #set4303 successfully calls #set with 2 arguments4304 #histogram4305 #observe4306 successfully calls #observe with 2 arguments4307 #null_metric4308 is expected to be a kind of Gitlab::Metrics::NullMetric4309 #counter4310 is expected to be a kind of Gitlab::Metrics::NullMetric4311 #summary4312 is expected to be a kind of Gitlab::Metrics::NullMetric4313 #gauge4314 is expected to be a kind of Gitlab::Metrics::NullMetric4315 #histogram4316 is expected to be a kind of Gitlab::Metrics::NullMetric4317 prometheus metrics enabled4318 behaves like prometheus metrics API4319 #counter4320 #increment4321 successfully calls #increment without arguments4322 successfully calls #increment with 1 argument4323 successfully calls #increment with 2 arguments4324 #summary4325 #observe4326 successfully calls #observe with 2 arguments4327 #gauge4328 #set4329 successfully calls #set with 2 arguments4330 #histogram4331 #observe4332 successfully calls #observe with 2 arguments4333 #null_metric4334 is expected to be nil4335 #counter4336 is expected not to be a kind of Gitlab::Metrics::NullMetric4337 #summary4338 is expected not to be a kind of Gitlab::Metrics::NullMetric4339 #gauge4340 is expected not to be a kind of Gitlab::Metrics::NullMetric4341 #histogram4342 is expected not to be a kind of Gitlab::Metrics::NullMetric4343Banzai::Filter::IssuableStateFilter4344 ignores non-GFM links4345 ignores non-issuable links4346 ignores issuable links with empty content4347 ignores issuable links with custom anchor4348 ignores issuable links to specific comments4349 ignores merge request links to diffs tab4350 handles cross project references4351 handles references from group scopes4352 skips cross project references if the user cannot read cross project4353 does not append state when filter is not enabled4354 when project is in pending delete4355 does not append issue state4356 for issue references4357 ignores open issue references4358 appends state to closed issue references4359 appends state to moved issue references4360 for merge request references4361 ignores open merge request references4362 ignores locked merge request references4363 appends state to closed merge request references4364 appends state to merged merge request references4365Mutations::Discussions::ToggleResolve4366 #resolve4367 when discussion is on a merge request4368 behaves like a working resolve method4369 when the user does not have permission4370 raises an error if the resource is not accessible to the user4371 when the user has permission4372 when discussion cannot be found4373 raises an error4374 when discussion is not a Discussion4375 raises an error4376 when the `resolve` argument is true4377 returns a resolved discussion4378 returns empty errors4379 when the discussion is already resolved4380 returns a resolved discussion4381 returns empty errors4382 when the service raises an `ActiveRecord::RecordNotSaved` error4383 does not resolve the discussion4384 returns errors4385 when the `resolve` argument is false4386 when the discussion is resolved4387 returns an unresolved discussion4388 returns empty errors4389 when the service raises an `ActiveRecord::RecordNotSaved` error4390 does not unresolve the discussion4391 returns errors4392 when the discussion is already unresolved4393 returns an unresolved discussion4394 returns empty errors4395 when discussion is on a design4396 behaves like a working resolve method4397 when the user does not have permission4398 raises an error if the resource is not accessible to the user4399 when the user has permission4400 when discussion cannot be found4401 raises an error4402 when discussion is not a Discussion4403 raises an error4404 when the `resolve` argument is true4405 returns a resolved discussion4406 returns empty errors4407 when the discussion is already resolved4408 returns a resolved discussion4409 returns empty errors4410 when the service raises an `ActiveRecord::RecordNotSaved` error4411 does not resolve the discussion4412 returns errors4413 when the `resolve` argument is false4414 when the discussion is resolved4415 returns an unresolved discussion4416 returns empty errors4417 when the service raises an `ActiveRecord::RecordNotSaved` error4418 does not unresolve the discussion4419 returns errors4420 when the discussion is already unresolved4421 returns an unresolved discussion4422 returns empty errors4423Lfs::FileTransformer4424 #new_file4425 with lfs disabled4426 skips gitattributes check4427 returns untransformed content4428 returns untransformed encoding4429 with lfs enabled4430 reuses cached gitattributes4431 creates an LfsObject with the file's content4432 returns an LFS pointer4433 returns LFS pointer encoding as text4434 links LfsObjects to project4435 saves the repository_type to LfsObjectsProject4436 when an actual file is passed4437 creates an LfsObject with the file's content4438 when repository is a design repository4439 creates an LfsObject with the file's content4440 saves the correct repository_type to LfsObjectsProject4441 when doesn't use LFS4442 doesn't create LFS pointers4443 when LfsObject already exists4444 links LfsObjects to project4445 when the LfsObject is already linked to project4446 and the service is called again with the same repository type4447 is expected not to change `project.lfs_objects.count`4448 does not create a new LfsObjectsProject record4449 and the service is called again with a different repository type4450 is expected not to change `project.lfs_objects.count`4451 creates a new LfsObjectsProject record4452 sets the correct repository_type on the new LfsObjectsProject record4453DesignManagement::DesignPolicy4454 when DesignManagement is not enabled4455 behaves like design abilities not available4456 for owners4457 is expected to be disallowed :read_design, :create_design, :destroy_design, and :move_design4458 for admins4459 is expected to be disallowed :read_design, :create_design, :destroy_design, and :move_design4460 for maintainers4461 is expected to be disallowed :read_design, :create_design, :destroy_design, and :move_design4462 for developers4463 is expected to be disallowed :read_design, :create_design, :destroy_design, and :move_design4464 for reporters4465 is expected to be disallowed :read_design, :create_design, :destroy_design, and :move_design4466 for guests4467 is expected to be disallowed :read_design, :create_design, :destroy_design, and :move_design4468 for anonymous users4469 is expected to be disallowed :read_design, :create_design, :destroy_design, and :move_design4470 when the feature is available4471 behaves like design abilities available for members4472 for owners4473 is expected to be allowed :read_design, :create_design, :destroy_design, and :move_design4474 for admins4475 when admin mode enabled4476 is expected to be allowed :read_design, :create_design, :destroy_design, and :move_design4477 when admin mode disabled4478 behaves like read-only design abilities4479 is expected to be allowed :read_design4480 is expected to be disallowed :create_design, :destroy_design, and :move_design4481 for maintainers4482 is expected to be allowed :read_design, :create_design, :destroy_design, and :move_design4483 for developers4484 is expected to be allowed :read_design, :create_design, :destroy_design, and :move_design4485 for reporters4486 behaves like read-only design abilities4487 is expected to be allowed :read_design4488 is expected to be disallowed :create_design, :destroy_design, and :move_design4489 for guests in private projects4490 behaves like read-only design abilities4491 is expected to be allowed :read_design4492 is expected to be disallowed :create_design, :destroy_design, and :move_design4493 for anonymous users in public projects4494 behaves like read-only design abilities4495 is expected to be allowed :read_design4496 is expected to be disallowed :create_design, :destroy_design, and :move_design4497 when the issue is confidential4498 behaves like design abilities available for members4499 for owners4500 is expected to be allowed :read_design, :create_design, :destroy_design, and :move_design4501 for admins4502 when admin mode enabled4503 is expected to be allowed :read_design, :create_design, :destroy_design, and :move_design4504 when admin mode disabled4505 behaves like read-only design abilities4506 is expected to be allowed :read_design4507 is expected to be disallowed :create_design, :destroy_design, and :move_design4508 for maintainers4509 is expected to be allowed :read_design, :create_design, :destroy_design, and :move_design4510 for developers4511 is expected to be allowed :read_design, :create_design, :destroy_design, and :move_design4512 for reporters4513 behaves like read-only design abilities4514 is expected to be allowed :read_design4515 is expected to be disallowed :create_design, :destroy_design, and :move_design4516 for guests4517 is expected to be disallowed :read_design, :create_design, :destroy_design, and :move_design4518 for anonymous users4519 is expected to be disallowed :read_design, :create_design, :destroy_design, and :move_design4520 when the project is archived4521 behaves like read-only design abilities4522 is expected to be allowed :read_design4523 is expected to be disallowed :create_design, :destroy_design, and :move_design4524SnippetRepository4525 associations4526 is expected to belong to shard required:4527 is expected to belong to snippet required:4528 behaves like shardable scopes4529 .for_repository_storage4530 returns the objects for a given repository storage4531 .excluding_repository_storage4532 returns the objects excluding the given repository storage4533 .for_shard4534 returns the objects for a given shard4535 .find_snippet4536 finds snippet by disk path4537 returns nil when it does not find the snippet4538 #multi_files_action4539 returns nil when files argument is empty4540 returns nil when files argument is nil4541 performs the operation accordingly to the files data4542 tries to obtain an exclusive lease4543 cancels the lease when the method has finished4544 raises an error if the lease cannot be obtained4545 with commit actions4546 infers the commit action based on the parameters if not present4547 when commit actions are present4548 behaves like uses the expected action4549 is expected to receive multi_action(#<User id:2287 @user1554>, hash_including(:actions=>"array_including(hash_including(:action=>:foobar))")) 1 time4550 when action is a string4551 behaves like uses the expected action4552 is expected to receive multi_action(#<User id:2287 @user1554>, hash_including(:actions=>"array_including(hash_including(:action=>:foobar))")) 1 time4553 when move action does not include content4554 when action is not set4555 behaves like renames file and does not update content4556 is expected to eq "v6.8.0\n\nv6.7.0\n - Add support for Gemnasium as a Project Service (Olivier Gonzalez)\n - Add edi... redesign\n - stability\n - security fixes\n - increased test coverage\n - email notification\n"4557 when action is set4558 behaves like renames file and does not update content4559 is expected to eq "v6.8.0\n\nv6.7.0\n - Add support for Gemnasium as a Project Service (Olivier Gonzalez)\n - Add edi... redesign\n - stability\n - security fixes\n - increased test coverage\n - email notification\n"4560 when update action does not include content4561 when action is not set4562 behaves like does not commit anything4563 is expected to eq "b83d6e391c22777fca1ed3012fce84f633d7fed0"4564 when action is set4565 behaves like does not commit anything4566 is expected to eq "b83d6e391c22777fca1ed3012fce84f633d7fed0"4567 when existing file has a default name4568 reuses the existing file name4569 when file name consists of one or several whitespaces4570 assigns a new name to the file4571 when some files are not named4572 behaves like snippet repository with file names4573 sets a name for unnamed files4574 repository already has 10 unnamed snippets4575 behaves like snippet repository with file names4576 sets a name for unnamed files4577 with git errors4578 behaves like snippet repository with git errors4579 raises a path specific error4580 behaves like snippet repository with git errors4581 raises a path specific error4582 behaves like snippet repository with git errors4583 raises a path specific error4584 behaves like snippet repository with git errors4585 raises a path specific error4586 when user name is invalid4587 behaves like snippet repository with git errors4588 raises a path specific error4589 when user email is empty4590 behaves like snippet repository with git errors4591 raises a path specific error4592BulkImports::Entity4593 associations4594 is expected to belong to bulk_import required: true4595 is expected to belong to parent required:4596 is expected to belong to group required:4597 is expected to belong to project required:4598 validations4599 is expected to validate that :source_type cannot be empty/falsy4600 is expected to validate that :source_full_path cannot be empty/falsy4601 is expected to validate that :destination_name cannot be empty/falsy4602 is expected to define :source_type as an enum, backed by an integer, with possible values ‹[:group_entity, :project_entity]›4603 when associated with a group and project4604 is invalid4605 when not associated with a group or project4606 is valid4607 when associated with a group and no project4608 is valid as a group_entity4609 is valid when destination_namespace is empty4610 is invalid as a project_entity4611 when associated with a project and no group4612 is valid4613 is invalid when destination_namespace is nil4614 is invalid as a project_entity4615 when the parent is a group import4616 is valid4617 when the parent is a project import4618 is invalid4619 validate destination namespace of a group_entity4620 is invalid if destination namespace is the source namespace4621 is invalid if destination namespace is a descendant of the source4622 #encoded_source_full_path4623 encodes entity source full path4624 scopes4625 .by_user_id4626 returns entities associated with specified user4627 .all_human_statuses4628 returns all human readable entity statuses4629 #pipelines4630 when entity is group4631 returns group pipelines4632 when entity is project4633 returns project pipelines4634 #create_pipeline_trackers!4635 when entity is group4636 creates trackers for group entity4637 when entity is project4638 creates trackers for project entity4639 #pipeline_exists?4640 returns true when the given pipeline name exists in the pipelines list4641 returns false when the given pipeline name exists in the pipelines list4642MergeRequests::AddTodoWhenBuildFailsService4643 #execute4644 commit status with ref4645 notifies the todo service4646 commit status with non-HEAD ref4647 does not notify the todo service4648 commit status without ref4649 does not notify the todo service4650 when commit status is a build allowed to fail4651 does not create todo4652 when build belongs to a merge request pipeline4653 notifies the todo service4654 #close4655 commit status with ref4656 notifies the todo service4657 commit status with non-HEAD ref4658 does not notify the todo service4659 commit status without ref4660 does not notify the todo service4661 when build belongs to a merge request pipeline4662 notifies the todo service4663 #close_all4664 when using pipeline that belongs to merge request4665 resolves todos about failed builds for pipeline4666 when pipeline is not related to merge request4667 does not resolve any todos about failed builds4668Mutations::Releases::Create4669 #resolve4670 when the current user has access to create releases4671 returns no errors4672 creates the release with the correct tag4673 creates the release with the correct name4674 creates the release with the correct description4675 creates the release with the correct released_at4676 creates the release with the correct created_at4677 creates the release with the correct milestone associations4678 asset links4679 creates a single asset link4680 creates the link with the correct name4681 creates the link with the correct url4682 creates the link with the correct link type4683 creates the link with the correct direct filepath4684 with protected tag4685 when user has access to the protected tag4686 does not have errors4687 when user does not have access to the protected tag4688 has an access error4689 when the current user doesn't have access to create releases4690 raises an error4691Gitlab::Template::GitlabCiYmlTemplate4692 .all4693 combines the globals and rest4694 does not include Browser-Performance template in FOSS4695 .find4696 finds the latest template for Jobs/Browser-Performance-Testing4697 finds the latest template for Jobs/Build4698 finds the latest template for Security/API-Fuzzing4699 finds the latest template for Security/DAST4700 finds the latest template for Terraform4701 when `redirect_to_latest_template` feature flag is disabled4702 finds the stable template for Jobs/Browser-Performance-Testing4703 when `redirect_to_latest_template` feature flag is enabled on the project4704 finds the latest template for Jobs/Browser-Performance-Testing4705 when `redirect_to_latest_template` feature flag is enabled on the other project4706 finds the stable template for Jobs/Browser-Performance-Testing4707 when `redirect_to_latest_template` feature flag is disabled4708 finds the stable template for Jobs/Build4709 when `redirect_to_latest_template` feature flag is enabled on the project4710 finds the latest template for Jobs/Build4711 when `redirect_to_latest_template` feature flag is enabled on the other project4712 finds the stable template for Jobs/Build4713 when `redirect_to_latest_template` feature flag is disabled4714 finds the stable template for Security/API-Fuzzing4715 when `redirect_to_latest_template` feature flag is enabled on the project4716 finds the latest template for Security/API-Fuzzing4717 when `redirect_to_latest_template` feature flag is enabled on the other project4718 finds the stable template for Security/API-Fuzzing4719 when `redirect_to_latest_template` feature flag is disabled4720 finds the stable template for Security/DAST4721 when `redirect_to_latest_template` feature flag is enabled on the project4722 finds the latest template for Security/DAST4723 when `redirect_to_latest_template` feature flag is enabled on the other project4724 finds the stable template for Security/DAST4725 when `redirect_to_latest_template` feature flag is disabled4726 finds the stable template for Terraform4727 when `redirect_to_latest_template` feature flag is enabled on the project4728 finds the latest template for Terraform4729 when `redirect_to_latest_template` feature flag is enabled on the other project4730 finds the stable template for Terraform4731 #content4732 loads the full file4733 behaves like file template shared examples4734 .all4735 strips the .gitlab-ci.yml suffix4736 ensures that the template name is used exactly once4737 .by_category4738 returns sorted results4739 .find4740 returns nil if the file does not exist4741 returns the corresponding object of a valid file4742 #<=>4743 sorts lexicographically4744Ci::PipelineArtifactUploader4745 behaves like builds correct paths4746 #store_dir4747 behaves like matches the method pattern4748 is expected to match /\h{2}\/\h{2}\/\h{64}\/pipelines\/\d+\/artifacts\/\d+/4749 #cache_dir4750 behaves like matches the method pattern4751 is expected to match /artifacts\/tmp\/cache/4752 #work_dir4753 behaves like matches the method pattern4754 is expected to match /artifacts\/tmp\/work/4755 #upload_path4756 behaves like matches the method pattern4757 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4758 #relative_path4759 is relative (PENDING: Path not set, skipping.)4760 .absolute_path4761 behaves like matches the method pattern4762 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4763 .base_dir4764 behaves like matches the method pattern4765 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4766 path traversal exploits4767 throws an exception4768 when object store is REMOTE4769 behaves like builds correct paths4770 #store_dir4771 behaves like matches the method pattern4772 is expected to match /\h{2}\/\h{2}\/\h{64}\/pipelines\/\d+\/artifacts\/\d+/4773 #cache_dir4774 behaves like matches the method pattern4775 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4776 #work_dir4777 behaves like matches the method pattern4778 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4779 #upload_path4780 behaves like matches the method pattern4781 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4782 #relative_path4783 is relative (PENDING: Path not set, skipping.)4784 .absolute_path4785 behaves like matches the method pattern4786 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4787 .base_dir4788 behaves like matches the method pattern4789 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4790 path traversal exploits4791 throws an exception4792 when file is stored in valid local_path4793 is expected to match /\/builds\/gitlab-org\/gitlab\/tmp\/tests\/artifacts\/\h{2}\/\h{2}\/\h{64}\/pipelines\/128\/artifacts\/17\/code_coverage.json/4794Gitlab::SidekiqConfig::WorkerMatcher4795 #match?4796 with valid input4797 query: "worker_name=WorkerA", expected_metadatas: ["WorkerA"]4798 is expected to contain exactly "WorkerA"4799 query: "worker_name=WorkerA2", expected_metadatas: ["WorkerA2"]4800 is expected to contain exactly "WorkerA2"4801 query: "worker_name=WorkerB|worker_name=WorkerD", expected_metadatas: ["WorkerB"]4802 is expected to contain exactly "WorkerB"4803 query: "worker_name!=WorkerA", expected_metadatas: ["WorkerA2", "WorkerB", "WorkerC"]4804 is expected to contain exactly "WorkerA2", "WorkerB", and "WorkerC"4805 query: "feature_category=category_a", expected_metadatas: ["WorkerA", "WorkerA2"]4806 is expected to contain exactly "WorkerA" and "WorkerA2"4807 query: "feature_category=category_a,category_c", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerC"]4808 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerC"4809 query: "feature_category=category_a|feature_category=category_c", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerC"]4810 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerC"4811 query: "feature_category!=category_a", expected_metadatas: ["WorkerB", "WorkerC"]4812 is expected to contain exactly "WorkerB" and "WorkerC"4813 query: "has_external_dependencies=true", expected_metadatas: ["WorkerB"]4814 is expected to contain exactly "WorkerB"4815 query: "has_external_dependencies=false", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerC"]4816 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerC"4817 query: "has_external_dependencies=true,false", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]4818 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"4819 query: "has_external_dependencies=true|has_external_dependencies=false", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]4820 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"4821 query: "has_external_dependencies!=true", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerC"]4822 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerC"4823 query: "urgency=high", expected_metadatas: ["WorkerA2", "WorkerB"]4824 is expected to contain exactly "WorkerA2" and "WorkerB"4825 query: "urgency=low", expected_metadatas: ["WorkerA"]4826 is expected to contain exactly "WorkerA"4827 query: "urgency=high,low,throttled", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]4828 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"4829 query: "urgency=low|urgency=throttled", expected_metadatas: ["WorkerA", "WorkerC"]4830 is expected to contain exactly "WorkerA" and "WorkerC"4831 query: "urgency!=high", expected_metadatas: ["WorkerA", "WorkerC"]4832 is expected to contain exactly "WorkerA" and "WorkerC"4833 query: "name=a", expected_metadatas: ["WorkerA"]4834 is expected to contain exactly "WorkerA"4835 query: "name=a,b", expected_metadatas: ["WorkerA", "WorkerB"]4836 is expected to contain exactly "WorkerA" and "WorkerB"4837 query: "name=a,a:2|name=b", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB"]4838 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerB"4839 query: "name!=a,a:2", expected_metadatas: ["WorkerB", "WorkerC"]4840 is expected to contain exactly "WorkerB" and "WorkerC"4841 query: "resource_boundary=memory", expected_metadatas: ["WorkerB", "WorkerC"]4842 is expected to contain exactly "WorkerB" and "WorkerC"4843 query: "resource_boundary=memory,cpu", expected_metadatas: ["WorkerA", "WorkerB", "WorkerC"]4844 is expected to contain exactly "WorkerA", "WorkerB", and "WorkerC"4845 query: "resource_boundary=memory|resource_boundary=cpu", expected_metadatas: ["WorkerA", "WorkerB", "WorkerC"]4846 is expected to contain exactly "WorkerA", "WorkerB", and "WorkerC"4847 query: "resource_boundary!=memory,cpu", expected_metadatas: ["WorkerA2"]4848 is expected to contain exactly "WorkerA2"4849 query: "tags=no_disk_io", expected_metadatas: ["WorkerA", "WorkerB"]4850 is expected to contain exactly "WorkerA" and "WorkerB"4851 query: "tags=no_disk_io,git_access", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB"]4852 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerB"4853 query: "tags=no_disk_io|tags=git_access", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB"]4854 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerB"4855 query: "tags=no_disk_io&tags=git_access", expected_metadatas: ["WorkerA"]4856 is expected to contain exactly "WorkerA"4857 query: "tags!=no_disk_io", expected_metadatas: ["WorkerA2", "WorkerC"]4858 is expected to contain exactly "WorkerA2" and "WorkerC"4859 query: "tags!=no_disk_io,git_access", expected_metadatas: ["WorkerC"]4860 is expected to contain exactly "WorkerC"4861 query: "tags=unknown_tag", expected_metadatas: []4862 is expected to contain exactly4863 query: "tags!=no_disk_io", expected_metadatas: ["WorkerA2", "WorkerC"]4864 is expected to contain exactly "WorkerA2" and "WorkerC"4865 query: "tags!=no_disk_io,git_access", expected_metadatas: ["WorkerC"]4866 is expected to contain exactly "WorkerC"4867 query: "tags!=unknown_tag", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]4868 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"4869 query: "feature_category=category_a&urgency=high", expected_metadatas: ["WorkerA2"]4870 is expected to contain exactly "WorkerA2"4871 query: "feature_category=category_a&urgency=high|feature_category=category_c", expected_metadatas: ["WorkerA2", "WorkerC"]4872 is expected to contain exactly "WorkerA2" and "WorkerC"4873 query: "*", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]4874 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"4875 with invalid input4876 query: "feature_category=\"category_a\"", error: Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm4877 is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm4878 query: "feature_category=", error: Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm4879 is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm4880 query: "feature_category~category_a", error: Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm4881 is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm4882 query: "invalid_term=a", error: Gitlab::SidekiqConfig::WorkerMatcher::UnknownPredicate4883 is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::UnknownPredicate4884Discussions::UpdateDiffPositionService4885 #execute4886 when the diff line is the same4887 updates the position4888 when the resolve_outdated_diff_discussions setting is set4889 does not resolve the discussion4890 when the diff line has changed4891 doesn't update the position4892 sets the change position4893 creates a system discussion4894 when the resolve_outdated_diff_discussions setting is set4895 sets resolves the discussion and sets resolved_by_push4896 doesn't update the position4897 sets the change position4898 creates a system discussion4899Types::BaseField4900 adds a formatted `deprecated_reason` to the subject4901 appends to the description if given4902 does not append to the description if it is absent4903 adds information about the replacement if provided4904 supports named reasons: renamed4905 supports named reasons: discouraged4906 interacts well with the `feature_flag` property4907 when considering complexity4908 defaults to 14909 has specified value4910 #base_complexity4911 with no gitaly calls4912 defaults to 14913 with a gitaly call4914 adds 1 to the default value4915 when field has a resolver4916 when a valid complexity is already set4917 uses this complexity4918 and is a connection4919 sets complexity depending on arguments for resolvers4920 sets complexity depending on number load limits for resolvers4921 and is not a connection4922 sets complexity as normal4923 calls_gitaly4924 defaults to false4925 for fields with a resolver4926 adds 1 if true4927 for fields without a resolver4928 adds 1 if true4929 with declared constant complexity value4930 has complexity set to that constant4931 does not raise an error even with Gitaly calls4932 #visible?4933 and has a feature_flag4934 checks YAML definition for default_enabled4935 skipping YAML check4936 returns false if the feature is not enabled4937 returns true if the feature is enabled4938 #description4939 feature flag given4940 prepends the description4941 falsey feature_flag values4942 flag: "", feature_value: false, default_enabled: false4943 returns the correct description4944 flag: "", feature_value: true, default_enabled: false4945 returns the correct description4946 flag: nil, feature_value: false, default_enabled: true4947 returns the correct description4948 flag: nil, feature_value: true, default_enabled: false4949 returns the correct description4950 with different default_enabled values4951 feature_value: false, default_enabled: false, expected_description: "Test description. Available only when feature flag `test_flag` is enabled. This flag is disabled by default, because the feature is experimental and is subject to change without notice."4952 returns the correct availability in the description4953 feature_value: true, default_enabled: false, expected_description: "Test description. Available only when feature flag `test_flag` is enabled. This flag is disabled by default, because the feature is experimental and is subject to change without notice."4954 returns the correct availability in the description4955 feature_value: false, default_enabled: true, expected_description: "Test description. Available only when feature flag `test_flag` is enabled. This flag is enabled by default."4956 returns the correct availability in the description4957 feature_value: true, default_enabled: true, expected_description: "Test description. Available only when feature flag `test_flag` is enabled. This flag is enabled by default."4958 returns the correct availability in the description4959 validations4960 raises an informative error if `deprecation_reason` is used4961 raises an error if a required property is missing4962 raises an error if milestone is not a String4963Gitlab::Database::LoadBalancing::SidekiqServerMiddleware4964 #call4965 when worker class does not include ApplicationWorker4966 sticks to the primary4967 sets load balancing strategy to primary4968 when worker data consistency is :always4969 sticks to the primary4970 sets load balancing strategy to primary4971 when worker data consistency is :delayed4972 when load_balancing_for_test_data_consistency_worker is disabled4973 sticks to the primary4974 sets load balancing strategy to primary4975 when database wal location is set4976 behaves like replica is up to date4977 does not stick to the primary4978 sets load balancing strategy to replica4979 when deduplication wal location is set4980 behaves like replica is up to date4981 does not stick to the primary4982 sets load balancing strategy to replica4983 when legacy wal location is set4984 behaves like replica is up to date4985 does not stick to the primary4986 sets load balancing strategy to replica4987 when database location is not set4988 sticks to the primary4989 sets load balancing strategy to primary_no_wal4990 when replica is not up to date4991 when job is executed first4992 raises an error and retries4993 sets load balancing strategy to retry4994 when job is retried4995 and replica still lagging behind4996 sticks to the primary4997 sets load balancing strategy to primary4998 and replica is now up-to-date4999 does not stick to the primary5000 sets load balancing strategy to replica_retried5001 when worker data consistency is :sticky5002 when load_balancing_for_test_data_consistency_worker is disabled5003 sticks to the primary5004 sets load balancing strategy to primary5005 when database wal location is set5006 behaves like replica is up to date5007 does not stick to the primary5008 sets load balancing strategy to replica5009 when deduplication wal location is set5010 behaves like replica is up to date5011 does not stick to the primary5012 sets load balancing strategy to replica5013 when legacy wal location is set5014 behaves like replica is up to date5015 does not stick to the primary5016 sets load balancing strategy to replica5017 when database location is not set5018 sticks to the primary5019 sets load balancing strategy to primary_no_wal5020 when replica is not up to date5021 sticks to the primary5022 sets load balancing strategy to primary5023Suggestions::CreateService5024 #execute5025 should not try to parse suggestions5026 when not a diff note for merge requests5027 does not try to parse suggestions5028 behaves like service not tracking add suggestion event5029 does not track add suggestion event5030 when diff note is not for text5031 does not try to parse suggestions5032 behaves like service not tracking add suggestion event5033 does not track add suggestion event5034 when diff file is not found5035 creates no suggestion5036 behaves like service not tracking add suggestion event5037 does not track add suggestion event5038 should create suggestions5039 persists suggestion records5040 persists suggestions data correctly5041 tracks add suggestion event5042 outdated position note5043 uses the correct position when creating the suggestion5044 when a patch removes an empty line5045 creates an appliable suggestion5046PersonalAccessToken5047 .build5048 is a valid personal access token5049 ensures that the token is generated5050 scopes5051 .for_user5052 returns personal access tokens of specified user only5053 .for_users5054 returns personal access tokens for the specified users only5055 .active?5056 returns false if the personal_access_token is revoked5057 returns false if the personal_access_token is expired5058 returns true if the personal_access_token is not revoked and not expired5059 revoke!5060 revokes the token5061 #expired_but_not_enforced?5062 returns false5063 Redis storage5064 reading encrypted data5065 returns stored data5066 reading unencrypted data5067 returns stored data unmodified5068 after deletion5069 token is removed5070 validations5071 requires at least one scope5072 allows creating a token with API scopes5073 rejects creating a token with unavailable scopes5074 when registry is disabled5075 rejects creating a token with read_registry scope5076 allows revoking a token with read_registry scope5077 when registry is enabled5078 allows creating a token with read_registry scope5079 scopes5080 .expiring_and_not_notified5081 in one day5082 doesn't have any tokens5083 in three days5084 only includes a valid token5085 .expired_today_and_not_notified5086 returns tokens that have expired today5087 .without_impersonation5088 returns only non-impersonation tokens5089 revoke scopes5090 .revoked5091 is expected to contain exactly #<PersonalAccessToken id: 29, user_id: 2401, name: "PAT 35", revoked: true, expires_at: "2021-09-27",...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>5092 .not_revoked5093 is expected to contain exactly #<PersonalAccessToken id: 30, user_id: 2402, name: "PAT 36", revoked: false, expires_at: "2021-09-27"...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false> and #<PersonalAccessToken id: 31, user_id: 2403, name: "PAT 37", revoked: nil, expires_at: "2021-09-27", ...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>5094 .simple_sorts5095 includes overridden keys5096 ordering by expires_at5097 .order_expires_at_asc5098 returns ordered list in asc order of expiry date5099 .order_expires_at_desc5100 returns ordered list in desc order of expiry date5101Gitlab::Search::RecentMergeRequests5102 behaves like search recent items5103 #log_view5104 adds the item to the recent items5105 removes an item when it exceeds the size items_limit5106 expires the items after expires_after5107 does not include results logged for another user5108 #search5109 matches partial text in the item title5110 returns results sorted by recently viewed5111 does not leak items you no longer have access to5112 limits results to 5 items5113Ci::StagePresenter5114 #latest_ordered_statuses5115 behaves like preloaded associations for CI status5116 preloads project5117 preloads build pipeline5118 preloads build tags5119 preloads build artifacts archive5120 preloads build artifacts metadata5121 #retried_ordered_statuses5122 behaves like preloaded associations for CI status5123 preloads project5124 preloads build pipeline5125 preloads build tags5126 preloads build artifacts archive5127 preloads build artifacts metadata5128Gitlab::GitalyClient::OperationService5129 #user_create_branch5130 sends a user_create_branch message and returns a Gitlab::git::Branch5131 when pre_receive_error is present5132 throws a PreReceive exception5133 #user_update_branch5134 sends a user_update_branch message5135 #user_merge_to_ref5136 sends a user_merge_to_ref message5137 when pre_receive_error is present5138 throws a PreReceive exception5139 #user_delete_branch5140 sends a user_delete_branch message5141 when pre_receive_error is present5142 throws a PreReceive exception5143 #user_ff_branch5144 sends a user_ff_branch message and returns a BranchUpdate object5145 when the response has no branch_update5146 is expected to be nil5147 when the pre-receive hook fails5148 raises the error5149 #user_cherry_pick5150 behaves like cherry pick and revert errors5151 when a pre_receive_error is present5152 raises a PreReceiveError5153 when a commit_error is present5154 raises a CommitError5155 when a create_tree_error is present5156 raises a CreateTreeError5157 when branch_update is nil5158 is expected to be nil5159 #user_revert5160 behaves like cherry pick and revert errors5161 when a pre_receive_error is present5162 raises a PreReceiveError5163 when a commit_error is present5164 raises a CommitError5165 when a create_tree_error is present5166 raises a CreateTreeError5167 when branch_update is nil5168 is expected to be nil5169 #user_squash5170 sends a user_squash message and returns the squash sha5171 when git_error is present5172 raises a GitError exception5173 #user_commit_files5174 when a pre_receive_error is present5175 raises a PreReceiveError5176 when an index_error is present5177 raises a PreReceiveError5178 when branch_update is nil5179 is expected to be nil5180 #user_commit_patches5181 applies the patch correctly5182 when the patch could not be applied5183 raises the correct error5184Gitlab::SidekiqConfig::WorkerRouter5185 .queue_name_from_worker_name5186 worker: #<Class:0x00007fc2f0a98ae8>, expected_name: "pages"5187 generates a valid queue name from worker name5188 worker: #<Class:0x00007fc2f0a986b0>, expected_name: "pipeline_notification"5189 generates a valid queue name from worker name5190 worker: #<Class:0x00007fc2f0a98408>, expected_name: "post_receive"5191 generates a valid queue name from worker name5192 worker: #<Class:0x00007fc2f0a98138>, expected_name: "git:post_receive"5193 generates a valid queue name from worker name5194 worker: #<Class:0x00007fc2f0a93e08>, expected_name: "pipeline_hooks:pipeline_hooks"5195 generates a valid queue name from worker name5196 worker: #<Class:0x00007fc2f0a939f8>, expected_name: "jira_import_advance_stage"5197 generates a valid queue name from worker name5198 worker: #<Class:0x00007fc2f0a93728>, expected_name: "importer:phabricator_import_import_tasks"5199 generates a valid queue name from worker name5200 .global5201 valid routing rules5202 routing_rules: [], expected_queue: "foo_bar"5203 routes the worker to the correct queue5204 routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=memory", "queue_b"], ["tags=cheap", "queue_c"]], expected_queue: "foo_bar"5205 routes the worker to the correct queue5206 routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=cpu", nil], ["tags=cheap", "queue_c"]], expected_queue: "foo_bar"5207 routes the worker to the correct queue5208 routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=cpu", ""], ["tags=cheap", "queue_c"]], expected_queue: "foo_bar"5209 routes the worker to the correct queue5210 routing_rules: [["feature_category=feature_a|urgency=high", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=cheap", "queue_c"]], expected_queue: "queue_a"5211 routes the worker to the correct queue5212 routing_rules: [["feature_category=feature_b|urgency=low", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=cheap", "queue_c"]], expected_queue: "queue_a"5213 routes the worker to the correct queue5214 routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=memory", "queue_b"], ["tags=expensive", "queue_c"]], expected_queue: "queue_c"5215 routes the worker to the correct queue5216 routing_rules: [["feature_category=feature_a|urgency=low", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=expensive", "queue_c"]], expected_queue: "queue_a"5217 routes the worker to the correct queue5218 routing_rules: [["feature_category=feature_a", "queue_a"], ["feature_category=feature_a", "queue_b"], ["feature_category=feature_a", "queue_c"]], expected_queue: "queue_a"5219 routes the worker to the correct queue5220 routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=memory", "queue_b"], ["tags=cheap", "queue_c"], ["*", "default"]], expected_queue: "default"5221 routes the worker to the correct queue5222 routing_rules: [["*", "queue_foo"], ["feature_category=feature_a|urgency=low", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=expensive", "queue_c"]], expected_queue: "queue_foo"5223 routes the worker to the correct queue5224 routing_rules: [["name=foo_bar", "queue_foo"], ["feature_category=feature_a|urgency=low", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=expensive", "queue_c"]], expected_queue: "queue_foo"5225 routes the worker to the correct queue5226 invalid routing rules5227 invalid routing rules format5228 captures the error and falls back to an empty route5229 invalid predicate5230 captures the error and falls back to an empty route5231 #route5232 valid routing rules5233 routing_rules: [], expected_queue: "foo_bar"5234 routes the worker to the correct queue5235 routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=memory", "queue_b"], ["tags=cheap", "queue_c"]], expected_queue: "foo_bar"5236 routes the worker to the correct queue5237 routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=cpu", nil], ["tags=cheap", "queue_c"]], expected_queue: "foo_bar"5238 routes the worker to the correct queue5239 routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=cpu", ""], ["tags=cheap", "queue_c"]], expected_queue: "foo_bar"5240 routes the worker to the correct queue5241 routing_rules: [["feature_category=feature_a|urgency=high", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=cheap", "queue_c"]], expected_queue: "queue_a"5242 routes the worker to the correct queue5243 routing_rules: [["feature_category=feature_b|urgency=low", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=cheap", "queue_c"]], expected_queue: "queue_a"5244 routes the worker to the correct queue5245 routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=memory", "queue_b"], ["tags=expensive", "queue_c"]], expected_queue: "queue_c"5246 routes the worker to the correct queue5247 routing_rules: [["feature_category=feature_a|urgency=low", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=expensive", "queue_c"]], expected_queue: "queue_a"5248 routes the worker to the correct queue5249 routing_rules: [["feature_category=feature_a", "queue_a"], ["feature_category=feature_a", "queue_b"], ["feature_category=feature_a", "queue_c"]], expected_queue: "queue_a"5250 routes the worker to the correct queue5251 routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=memory", "queue_b"], ["tags=cheap", "queue_c"], ["*", "default"]], expected_queue: "default"5252 routes the worker to the correct queue5253 routing_rules: [["*", "queue_foo"], ["feature_category=feature_a|urgency=low", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=expensive", "queue_c"]], expected_queue: "queue_foo"5254 routes the worker to the correct queue5255 routing_rules: [["name=foo_bar", "queue_foo"], ["feature_category=feature_a|urgency=low", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=expensive", "queue_c"]], expected_queue: "queue_foo"5256 routes the worker to the correct queue5257 invalid routing rules5258 raises an exception5259Milestones::PromoteService5260 #execute5261 validations5262 raises error if milestone does not belong to a project5263 raises error if project does not belong to a group5264 does not promote milestone and update issuables if promoted milestone is not valid5265 without duplicated milestone titles across projects5266 promotes project milestone to group milestone5267 does not update issuables without milestone with the new promoted milestone5268 sets issuables with new promoted milestone5269 with duplicated milestone titles across projects5270 deletes project milestones with the same title5271 does not update issuables without milestone with the new promoted milestone5272 sets all issuables with new promoted milestone5273Resolvers::ProjectMilestonesResolver5274 #resolve5275 calls MilestonesFinder to retrieve all milestones5276 when including ancestor milestones5277 calls MilestonesFinder with correct parameters5278 by ids5279 calls MilestonesFinder with correct parameters5280 by state5281 calls MilestonesFinder with correct parameters5282 by sort5283 calls MilestonesFinder with correct parameters5284 uses offset-pagination when sorting by expired_last_due_date_asc5285 uses offset-pagination when sorting by expired_last_due_date_desc5286 by timeframe5287 when start_date and end_date are present5288 calls MilestonesFinder with correct parameters5289 when start date is after end_date5290 raises error5291 when only start_date is present5292 raises error5293 when only end_date is present5294 raises error5295 when passing a timeframe5296 calls MilestonesFinder with correct parameters5297 when title is present5298 calls MilestonesFinder with correct parameters5299 when search_title is present5300 calls MilestonesFinder with correct parameters5301 when containing date is present5302 calls MilestonesFinder with correct parameters5303 when user cannot read milestones5304 raises error5305Resolvers::DesignManagement::DesignsResolver5306 is expected to have nullable GraphQL type DesignConnection5307 #resolve5308 when the user cannot see designs5309 returns nothing5310 for a design collection5311 which contains just a single design5312 returns just that design5313 which contains another design5314 returns all designs5315 filtering5316 by filename5317 resolves to just the relevant design, ignoring designs with the same filename on different issues5318 by id5319 ids is provided but null5320 behaves as if unfiltered5321 ids is provided but empty5322 eliminates all values5323 the ID is on the current issue5324 resolves to just the relevant design5325 the ID is on a different issue5326 ignores it5327Integrations::Redmine5328 Validations5329 when integration is active5330 is expected to validate that :project_url cannot be empty/falsy5331 is expected to validate that :issues_url cannot be empty/falsy5332 is expected to validate that :new_issue_url cannot be empty/falsy5333 behaves like issue tracker integration URL attribute5334 is expected to allow :project_url to be ‹"https://example.com"›5335 is expected not to allow :project_url to be ‹"example.com"›5336 is expected not to allow :project_url to be ‹"ftp://example.com"›5337 is expected not to allow :project_url to be ‹"herp-and-derp"›5338 behaves like issue tracker integration URL attribute5339 is expected to allow :issues_url to be ‹"https://example.com"›5340 is expected not to allow :issues_url to be ‹"example.com"›5341 is expected not to allow :issues_url to be ‹"ftp://example.com"›5342 is expected not to allow :issues_url to be ‹"herp-and-derp"›5343 behaves like issue tracker integration URL attribute5344 is expected to allow :new_issue_url to be ‹"https://example.com"›5345 is expected not to allow :new_issue_url to be ‹"example.com"›5346 is expected not to allow :new_issue_url to be ‹"ftp://example.com"›5347 is expected not to allow :new_issue_url to be ‹"herp-and-derp"›5348 when integration is inactive5349 is expected not to validate that :project_url cannot be empty/falsy5350 is expected not to validate that :issues_url cannot be empty/falsy5351 is expected not to validate that :new_issue_url cannot be empty/falsy5352 .reference_pattern5353 does allow # on the reference5354 behaves like allows project key on reference pattern5355 allows underscores in the project name5356 allows numbers in the project name5357 requires the project name to begin with A-Z5358 does not allow issue number to finish with a letter5359SortingHelper5360 #issuable_sort_option_title5361 returns correct title for issuable_sort_option_overrides key5362 returns correct title for a valid sort value5363 returns nil for invalid sort value5364 #issuable_sort_direction_button5365 keeps label filter param5366 returns icon with sort-highest when sort is created_date5367 returns icon with sort-lowest when sort is asc5368 returns icon with sort-lowest when sorting by milestone5369 returns icon with sort-lowest when sorting by due_date5370 with `admin/projects` controller5371 #projects_sort_options_hash5372 returns a hash of available sorting options5373 with `projects` controller5374 #projects_sort_options_hash5375 returns a hash of available sorting options5376 #projects_reverse_sort_options_hash5377 returns a reversed hash of available sorting options5378 sort_key: "latest_activity_desc", reverse_sort_title: "latest_activity_asc"5379 is expected to eq "latest_activity_asc"5380 sort_key: "created_desc", reverse_sort_title: "created_asc"5381 is expected to eq "created_asc"5382 sort_key: "name_asc", reverse_sort_title: "name_desc"5383 is expected to eq "name_desc"5384 sort_key: "stars_desc", reverse_sort_title: "stars_asc"5385 is expected to eq "stars_asc"5386 sort_key: "latest_activity_asc", reverse_sort_title: "latest_activity_desc"5387 is expected to eq "latest_activity_desc"5388 sort_key: "created_asc", reverse_sort_title: "created_desc"5389 is expected to eq "created_desc"5390 sort_key: "name_desc", reverse_sort_title: "name_asc"5391 is expected to eq "name_asc"5392 sort_key: "stars_asc", reverse_sort_title: "stars_desc"5393 is expected to eq "stars_desc"5394 #project_sort_direction_button5395 returns the correct link to reverse the current sort option5396 returns the correct icon for each sort option5397 selected_sort: "latest_activity_desc", icon: "sort-highest"5398 is expected to include "sort-highest"5399 selected_sort: "created_desc", icon: "sort-highest"5400 is expected to include "sort-highest"5401 selected_sort: "name_desc", icon: "sort-highest"5402 is expected to include "sort-highest"5403 selected_sort: "stars_desc", icon: "sort-highest"5404 is expected to include "sort-highest"5405 selected_sort: "latest_activity_asc", icon: "sort-lowest"5406 is expected to include "sort-lowest"5407 selected_sort: "created_asc", icon: "sort-lowest"5408 is expected to include "sort-lowest"5409 selected_sort: "name_asc", icon: "sort-lowest"5410 is expected to include "sort-lowest"5411 selected_sort: "stars_asc", icon: "sort-lowest"5412 is expected to include "sort-lowest"5413 #projects_sort_option_titles5414 returns a hash of titles for the sorting options5415 with project_list_filter_bar off5416 #projects_sort_options_hash5417 returns a hash of available sorting options5418ci/status/_badge5419 when rendering status for build5420 when user has ability to see details5421 has link to build details page5422 when user do not have ability to see build details5423 contains build status text5424 does not contain links5425 when rendering status for external job5426 when user has ability to see commit status details5427 status has external target url5428 contains valid commit status text5429 has link to external status page5430 status do not have external target url5431 contains valid commit status text5432 has link to external status page5433DraftNotes::CreateService5434 creates a simple draft note5435 tracks the start event when the draft is persisted5436 does not track the start event when the draft is not persisted5437 cannot resolve when there is nothing to resolve5438 creates a draft note with a position in a diff5439 in a thread5440 creates a draft note with discussion_id5441 creates a draft that resolves the thread5442 diff highlight cache clearing5443 when diff file is unfolded and it is not a reply5444 clears diff highlighting cache5445 when diff file is not unfolded and it is not a reply5446 clears diff highlighting cache5447Clusters::Applications::PrometheusUpdateService5448 #execute5449 when prometheus is a Clusters::Integrations::Prometheus5450 raises NotImplementedError5451 when prometheus is externally installed5452 raises NotImplementedError5453 when prometheus is a Clusters::Applications::Prometheus5454 when there are no errors5455 make the application updating5456 updates current config5457 schedules async update status check5458 when k8s cluster communication fails5459 make the application update errored5460 when application cannot be persisted5461 make the application update errored5462ForkNetwork5463 #add_root_as_member5464 adds the root project as a member when creating a new root network5465 #find_fork_in5466 finds all fork of the current network in al collection5467 #merge_requests5468 finds merge requests within the fork network5469 for a deleted project5470 keeps the fork network5471 allows multiple fork networks where the root project is deleted5472StateNote5473 .from_event5474 with event state opened5475 contains the expected values5476 behaves like a synthetic note5477 behaves like a system note5478 has the correct attributes5479 #discussion_id5480 returns the expected discussion id5481 with event state closed5482 contains the expected values5483 behaves like a synthetic note5484 behaves like a system note5485 has the correct attributes5486 #discussion_id5487 returns the expected discussion id5488 with event state merged5489 contains the expected values5490 behaves like a synthetic note5491 behaves like a system note5492 has the correct attributes5493 #discussion_id5494 returns the expected discussion id5495 with event state locked5496 contains the expected values5497 behaves like a synthetic note5498 behaves like a system note5499 has the correct attributes5500 #discussion_id5501 returns the expected discussion id5502 with event state reopened5503 contains the expected values5504 behaves like a synthetic note5505 behaves like a system note5506 has the correct attributes5507 #discussion_id5508 returns the expected discussion id5509 with a mentionable source5510 with a commit5511 contains the expected values5512 with a merge request5513 contains the expected values5514 when closed by error tracking5515 contains the expected values5516 when closed by promotheus alert5517 contains the expected values5518Gitlab::APIAuthentication::TokenLocator5519 .new5520 with a valid type5521 creates a new instance5522 with an invalid type5523 raises ActiveModel::ValidationError5524 #extract5525 with :http_basic_auth5526 without credentials5527 returns nil5528 with credentials5529 returns the credentials5530 with :http_token5531 without credentials5532 returns nil5533 with credentials5534 returns the credentials5535 with :http_bearer_token5536 without credentials5537 returns nil5538 with credentials5539 returns the credentials5540 with :http_deploy_token_header5541 without credentials5542 returns nil5543 with credentials5544 returns the credentials5545 with :http_job_token_header5546 without credentials5547 returns nil5548 with credentials5549 returns the credentials5550 with :http_private_token_header5551 without credentials5552 returns nil5553 with credentials5554 returns the credentials5555 with :token_param5556 without credentials5557 returns nil5558 with credentials5559 returns the credentials5560Gitlab::Ci::Build::Policy::Refs5561 #satisfied_by?5562 when matching ref5563 is satisfied when pipeline branch matches5564 is not satisfied when pipeline branch does not match5565 when matching tags5566 when pipeline runs for a tag5567 is satisfied when tags matcher is specified5568 when pipeline is not created for a tag5569 is not satisfied when tag match is specified5570 when also matching a path5571 is satisfied when provided patch matches specified one5572 is not satisfied when path differs5573 when matching a source5574 is satisfied when provided source keyword matches5575 is not satisfied when provided source keyword does not match5576 when source is merge_request_event5577 is satisfied with only: merge_request5578 is not satisfied with only: merge_request_event5579 when source is external_pull_request_event5580 is satisfied with only: external_pull_request5581 is not satisfied with only: external_pull_request_event5582 when source is pipeline5583 is satisfied with only: pipelines5584 is satisfied with only: pipeline5585 when source is parent_pipeline5586 is satisfied with only: parent_pipelines5587 is satisfied with only: parent_pipeline5588 when matching a ref by a regular expression5589 is satisfied when regexp matches pipeline ref5590 is satisfied when case-insensitive regexp matches pipeline ref5591 is not satisfied when regexp does not match pipeline ref5592 when unsafe regexp is used5593 when allow_unsafe_ruby_regexp is disabled5594 ignores invalid regexp5595 when allow_unsafe_ruby_regexp is enabled5596 is satisfied by regexp5597 malicious regexp5598 takes under a second5599BoardGroupRecentVisit5600 relationships5601 is expected to belong to user required:5602 is expected to belong to group required:5603 is expected to belong to board required:5604 validations5605 is expected to validate that :user cannot be empty/falsy5606 is expected to validate that :group cannot be empty/falsy5607 is expected to validate that :board cannot be empty/falsy5608 behaves like boards recent visit5609 #visited5610 creates a visit if one does not exists5611 behaves like was visited previously5612 updates the timestamp5613 when we try to create a visit that is not unique5614 behaves like was visited previously5615 updates the timestamp5616 #latest5617 returns the most recent visited5618 returns last 3 visited boards5619Ci::PlayManualStageService#execute5620 when pipeline has manual processables5621 starts manual processables from pipeline5622 updates manual processables5623 when pipeline has no manual processables5624 does not update the processables5625 when user does not have permission on a specific processable5626 logs the error5627Gitlab::Ci::Reports::Security::VulnerabilityReportsComparer5628 vulnerability_finding_signatures: true5629 #base_report_out_of_date5630 no base report5631 is not out of date5632 base report older than one week5633 is not out of date5634 base report less than one week old5635 is not out of date5636 #added5637 with new vulnerability5638 points to source tree5639 when comparing reports with different fingerprints5640 does not find any overlap5641 order5642 does not change5643 #fixed5644 with fixed vulnerability5645 points to base tree5646 when comparing reports with different fingerprints5647 does not find any overlap5648 order5649 does not change5650 with empty vulnerabilities5651 returns empty array when reports are not present5652 returns added vulnerability when base is empty and head is not empty5653 returns fixed vulnerability when head is empty and base is not empty5654 vulnerability_finding_signatures: false5655 #base_report_out_of_date5656 no base report5657 is not out of date5658 base report older than one week5659 is not out of date5660 base report less than one week old5661 is not out of date5662 #added5663 with new vulnerability5664 points to source tree5665 when comparing reports with different fingerprints5666 does not find any overlap5667 order5668 does not change5669 #fixed5670 with fixed vulnerability5671 points to base tree5672 when comparing reports with different fingerprints5673 does not find any overlap5674 order5675 does not change5676 with empty vulnerabilities5677 returns empty array when reports are not present5678 returns added vulnerability when base is empty and head is not empty5679 returns fixed vulnerability when head is empty and base is not empty5680Banzai::Filter::TableOfContentsFilter5681 does nothing when :no_header_anchors is truthy5682 does nothing with empty headers5683 processes h1 elements5684 processes h2 elements5685 processes h3 elements5686 processes h4 elements5687 processes h5 elements5688 processes h6 elements5689 anchor tag5690 has an `anchor` class5691 has a namespaced id5692 links to the non-namespaced id5693 generated IDs5694 translates spaces to dashes5695 squeezes multiple spaces and dashes5696 removes punctuation5697 removes any leading or trailing spaces5698 removes a product suffix5699 appends a unique number to duplicates5700 prepends a prefix to digits-only ids5701 supports Unicode5702 result5703 is contained within a `ul` element5704 contains an `li` element for each header5705 table of contents nesting5706 keeps list levels regarding header levels5707 header text contains escaped content5708 outputs escaped content5709Gitlab::Ci::Config::Entry::Include5710 validations5711 when value is a string5712 is expected to be valid5713 when value is hash5714 when using not allowed keys5715 is expected not to be valid5716 when using "local"5717 is expected to be valid5718 when using "file"5719 is expected to be valid5720 when using "template"5721 is expected to be valid5722 when using "artifact"5723 and specifying "job"5724 is expected to be valid5725 without "job"5726 is expected not to be valid5727 has specific error5728 when using "project"5729 and specifying "ref" and "file"5730 is expected to be valid5731 without "ref"5732 is expected to be valid5733 without "file"5734 is expected not to be valid5735 has specific error5736 when using with "rules"5737 is expected to be valid5738 when rules is not an array of hashes5739 is expected not to be valid5740 has specific error5741 when value is something else5742 is expected not to be valid5743 #value5744 when config is a string5745 is expected to eq "test.yml"5746 when config is a hash5747 is expected to eq {:local=>"test.yml"}5748 when config has "rules"5749 is expected to eq {:local=>"test.yml", :rules=>[{:if=>"$VARIABLE"}]}5750Users::CreateService5751 #execute5752 with an admin user5753 when required parameters are provided5754 returns a persisted user5755 persists the given attributes5756 user is not confirmed if skip_confirmation param is not present5757 logs the user creation5758 executes system hooks5759 does not send a notification email5760 when the current_user is not persisted5761 persists the given attributes and sets created_by_id to nil5762 when force_random_password parameter is true5763 generates random password5764 when password_automatically_set parameter is true5765 persists the given attributes5766 when skip_confirmation parameter is true5767 confirms the user5768 when reset_password parameter is true5769 resets password even if a password parameter is given5770 sends a notification email5771 with nil user5772 persists the given attributes5773Gitlab::SlashCommands::Run5774 .match5775 returns true for a run command5776 returns true for a run command with arguments5777 returns true for a command containing newlines5778 returns false for an unrelated command5779 .available?5780 returns true when builds are enabled for the project5781 returns false when builds are disabled for the project5782 returns false when chatops is not available5783 .allowed?5784 returns true when the user can create a pipeline5785 returns false when the user can not create a pipeline5786 #execute5787 when a pipeline could not be scheduled5788 returns an error5789 when a pipeline could be created but the chat service was not supported5790 returns an error5791 using a valid pipeline5792 schedules the pipeline5793Gitlab::Analytics::CycleAnalytics::StageEvents::CodeStageStart5794 needs connection with an issue via merge_requests_closing_issues table5795 behaves like value stream analytics event5796 is expected to be a kind of String5797 is expected to be a kind of Symbol5798 is expected to include ApplicationRecord(abstract)5799 is expected to respond to #timestamp_projection5800 is expected to respond to #markdown_description5801 is expected to be a kind of Array5802 #apply_query_customization5803 expects an ActiveRecord::Relation object as argument and returns a modified version of it5804 #hash_code5805 returns a hash that uniquely identifies an event5806 does not differ when the same object is built with the same params5807 behaves like LEFT JOIN-able value stream analytics event5808 can use the event as LEFT JOIN5809 when looking at the record with data5810 contains the timestamp expression5811 when looking at the record without data5812 returns nil for the timestamp expression5813Gitlab::Ci::Reports::AccessibilityReports5814 #scans_count5815 when data has errors5816 returns the scans_count5817 when data has no errors5818 returns the scans_count5819 when data has no url5820 returns the scans_count5821 #passes_count5822 when data has errors5823 returns the passes_count5824 when data has no errors5825 returns the passes_count5826 when data has no url5827 returns the scans_count5828 #errors_count5829 when data has errors5830 returns the errors_count5831 when data has no errors5832 returns the errors_count5833 when data has no url5834 returns the errors_count5835 #add_url5836 when data has errors5837 adds urls and data to accessibility report5838 when data does not have errors5839 adds data to accessibility report5840 when url does not exist5841 sets error_message and decreases total5842 #set_error_message5843 when error is nil5844 returns the error5845 sets the error5846 when a error has already been set5847 overwrites the existing message5848 #all_errors5849 when data has errors5850 returns all errors5851 when data has no errors5852 returns an empty array5853 when accessibility report has no data5854 returns an empty array5855Clusters::Applications::UpgradeService5856 #execute5857 when there are no errors5858 make the application updating5859 schedule async installation status check5860 when kubernetes cluster communication fails5861 logs into kubernetes.log and Sentry5862 make the application errored5863 a non kubernetes error happens5864 logs into kubernetes.log and Sentry5865 make the application errored5866WikiPage::Slug5867 Associations5868 is expected to belong to wiki_page_meta required:5869 refers correctly to the wiki_page_meta5870 scopes5871 canonical5872 there are no slugs5873 is expected to be empty5874 there are some non-canonical slugs5875 is expected to be empty5876 there is at least one canonical slugs5877 is expected not to be empty5878 Validations5879 is expected to validate that :slug is case-sensitively unique within the scope of :wiki_page_meta_id5880 is expected to validate that the length of :slug is at most 20485881 is expected not to allow :slug to be ‹nil›5882 only_one_slug_can_be_canonical_per_meta_record5883 there are no other slugs5884 is expected to be valid5885 the current slug is canonical5886 is expected to be valid5887 there are other slugs, but they are not canonical5888 is expected to be valid5889 the current slug is canonical5890 is expected to be valid5891 there is already a canonical slug5892 is expected to be valid5893 the current slug is canonical5894 is expected not to be valid5895Sidebars::Projects::Menus::PackagesRegistriesMenu5896 #render?5897 when menu does not have any menu item to show5898 returns false5899 when menu has menu items to show5900 returns true5901 #link5902 when Packages Registry is visible5903 menu link points to Packages Registry page5904 when Packages Registry is not visible5905 menu link points to Container Registry page5906 when Container Registry is not visible5907 does not display menu link5908 Menu items5909 Packages Registry5910 when user can read packages5911 when config package setting is disabled5912 the menu item is not added to list of menu items5913 when config package setting is enabled5914 the menu item is added to list of menu items5915 when user cannot read packages5916 the menu item is not added to list of menu items5917 Container Registry5918 when user can read container images5919 when config registry setting is disabled5920 the menu item is not added to list of menu items5921 when config registry setting is enabled5922 the menu item is added to list of menu items5923 when user cannot read container images5924 the menu item is not added to list of menu items5925 Infrastructure Registry5926 the menu item is added to list of menu items5927 when config package setting is disabled5928 does not add the menu item to the list5929 when user cannot read packages5930 does not add the menu item to the list5931Ci::Resource5932 .free5933 returns free resources5934 .retained5935 returns the resource if it's retained5936 returns empty if it's not retained5937 .retained_by5938 returns retained resources5939 .stale_processables5940 when the processable is running5941 returns empty5942 and doomed5943 returns empty5944 returns the stale prosessable a few minutes later5945Packages::Debian::GroupDistributionKey5946 behaves like Debian Distribution Key5947 relationships5948 is expected to belong to distribution class_name => Packages::Debian::GroupDistribution required: inverse_of => key5949 validations5950 #distribution5951 is expected to validate that :distribution cannot be empty/falsy5952 #private_key5953 is expected to validate that :private_key cannot be empty/falsy5954 is expected to allow :private_key to be ‹"-----BEGIN PGP PRIVATE KEY BLOCK-----\n..."›5955 is expected not to allow :private_key to be ‹"A"›, producing a custom validation error on failure5956 #passphrase5957 is expected to validate that :passphrase cannot be empty/falsy5958 is expected to allow :passphrase to be ‹"P@$$w0rd"›5959 is expected to allow :passphrase to be ‹"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"›5960 is expected not to allow :passphrase to be ‹"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"›5961 #public_key5962 is expected to validate that :public_key cannot be empty/falsy5963 is expected to allow :public_key to be ‹"-----BEGIN PGP PUBLIC KEY BLOCK-----\n..."›5964 is expected not to allow :public_key to be ‹"A"›, producing a custom validation error on failure5965 #fingerprint5966 is expected to validate that :passphrase cannot be empty/falsy5967 is expected to allow :passphrase to be ‹"abc"›5968 is expected to allow :passphrase to be ‹"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"›5969 is expected not to allow :passphrase to be ‹"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"›5970NavHelper5971 #header_links5972 when the user is logged in5973 has all the expected links by default5974 contains the impersonation link while impersonating5975 as admin5976 application setting :admin_mode is enabled5977 does not contain the admin mode link by default5978 with admin mode enabled5979 contains the admin mode link5980 application setting :admin_mode is disabled5981 does not contain the admin mode link5982 with admin mode enabled5983 has no effect on header links5984 when the user cannot read cross project5985 does not contain cross project elements when the user cannot read cross project5986 shows the search box when the user cannot read cross project and they are visiting a project5987 when the user is not logged in5988 returns only the sign in and search when the user is not logged in5989 .admin_monitoring_nav_links5990 is expected to all be a kind of String5991 #page_has_markdown?5992 path: "merge_requests#show"5993 is expected to eq true5994 path: "projects/merge_requests/conflicts#show"5995 is expected to eq true5996 path: "issues#show"5997 is expected to eq true5998 path: "milestones#show"5999 is expected to eq true6000 path: "issues#designs"6001 is expected to eq true6002Gitlab::Ci::Config::Entry::Prefix6003 validations6004 behaves like key entry validations6005 when entry value contains slash6006 behaves like key with slash6007 is invalid6008 reports errors with config value6009 when entry value contains URI encoded slash (%2F)6010 behaves like key with slash6011 is invalid6012 reports errors with config value6013 when entry value is a dot6014 behaves like key with only dots6015 is invalid6016 reports errors with config value6017 when entry value is two dots6018 behaves like key with only dots6019 is invalid6020 reports errors with config value6021 when entry value is a URI encoded dot (%2E)6022 behaves like key with only dots6023 is invalid6024 reports errors with config value6025 when entry value is two URI encoded dots (%2E)6026 behaves like key with only dots6027 is invalid6028 reports errors with config value6029 when entry value is one dot and one URI encoded dot6030 behaves like key with only dots6031 is invalid6032 reports errors with config value6033 when key is a string6034 #value6035 returns key value6036 #valid?6037 is valid6038 when entry value is not correct6039 #errors6040 saves errors6041 .default6042 returns default key6043Banzai::Filter::InlineMetricsFilter6044 leaves links to other dashboards unchanged6045 with /-/environments/:environment_id/metrics URL6046 with no query params6047 behaves like a metrics embed filter6048 when the document has an external link6049 leaves regular non-metrics links unchanged6050 when the document contains an embeddable link6051 leaves the original link unchanged6052 appends a metrics charts placeholder6053 in a paragraph6054 appends a metrics charts placeholder after the enclosing paragraph6055 with query params6056 behaves like a metrics embed filter6057 when the document has an external link6058 leaves regular non-metrics links unchanged6059 when the document contains an embeddable link6060 leaves the original link unchanged6061 appends a metrics charts placeholder6062 in a paragraph6063 appends a metrics charts placeholder after the enclosing paragraph6064 with /-/metrics?environment=:environment_id URL6065 with query params6066 behaves like a metrics embed filter6067 when the document has an external link6068 leaves regular non-metrics links unchanged6069 when the document contains an embeddable link6070 leaves the original link unchanged6071 appends a metrics charts placeholder6072 in a paragraph6073 appends a metrics charts placeholder after the enclosing paragraph6074 with only environment in query params6075 behaves like a metrics embed filter6076 when the document has an external link6077 leaves regular non-metrics links unchanged6078 when the document contains an embeddable link6079 leaves the original link unchanged6080 appends a metrics charts placeholder6081 in a paragraph6082 appends a metrics charts placeholder after the enclosing paragraph6083 with no query params6084 ignores metrics URL without environment parameter6085BoardPolicy6086 group board6087 user has access6088 is expected to be allowed :read_issue6089 user does not have access6090 is expected not to be allowed :read_issue6091 project board6092 user has access6093 is expected to be allowed :read_issue6094 user does not have access6095 is expected not to be allowed :read_issue6096 create_non_backlog_issues6097 for project boards6098 when user can admin project issues6099 allows to add non backlog issues from issue board6100 when user cannot admin project issues6101 does not allow to add non backlog issues from issue board6102 for group boards6103 when user is at least reporter in one of the child projects6104 allows to add non backlog issues from issue board6105 when user is not a reporter from any child projects6106 does not allow to add non backlog issues from issue board6107Packages::Maven::Metadatum6108 relationships6109 is expected to belong to package required:6110 validations6111 is expected to validate that :package cannot be empty/falsy6112 #app_name6113 is expected to allow :app_name to be ‹"my-app"›6114 is expected not to allow :app_name to be ‹"my/app"›6115 is expected not to allow :app_name to be ‹"my(app)"›6116 #app_group6117 is expected to allow :app_group to be ‹"my.domain.com"›6118 is expected not to allow :app_group to be ‹"my/domain/com"›6119 is expected not to allow :app_group to be ‹"my(domain)"›6120 #path6121 is expected to allow :path to be ‹"my/domain/com/my-app"›6122 is expected to allow :path to be ‹"my/domain/com/my-app/1.0-SNAPSHOT"›6123 is expected not to allow :path to be ‹"my(domain)com.my-app"›6124 #maven_package_type6125 will not allow a package with a different package_type6126 with a package6127 .for_package_ids6128 is expected to contain exactly #<Packages::Maven::Metadatum id: 1, package_id: 39, created_at: "2021-09-22 10:41:02.580912010 +0000"...y.app", app_name: "my-app", app_version: "1.0-SNAPSHOT", path: "my/company/app/my-app/1.0-SNAPSHOT">, #<Packages::Maven::Metadatum id: 2, package_id: 39, created_at: "2021-09-22 10:41:02.586671750 +0000"...y.app", app_name: "my-app", app_version: "1.0-SNAPSHOT", path: "my/company/app/my-app/1.0-SNAPSHOT">, and #<Packages::Maven::Metadatum id: 3, package_id: 39, created_at: "2021-09-22 10:41:02.591177890 +0000"...y.app", app_name: "my-app", app_version: "1.0-SNAPSHOT", path: "my/company/app/my-app/1.0-SNAPSHOT">6129 .order_created6130 is expected to eq [#<Packages::Maven::Metadatum id: 4, package_id: 39, created_at: "2021-09-22 10:41:02.633624398 +0000....app", app_name: "my-app", app_version: "1.0-SNAPSHOT", path: "my/company/app/my-app/1.0-SNAPSHOT">]6131 .pluck_app_name6132 is expected to contain exactly "one", "two", and "three"6133 .with_path6134 is expected to contain exactly #<Packages::Maven::Metadatum id: 12, package_id: 39, created_at: "2021-09-22 10:41:02.764397873 +0000...3 +0000", app_group: "my.company.app", app_name: "my-app", app_version: "1.0-SNAPSHOT", path: "two">6135BulkImports::RelationExportService6136 #execute6137 exports specified relation and marks export as finished6138 removes temp export files6139 exports specified relation and marks export as finished6140 when export record does not exist6141 creates export record6142 when there is existing export present6143/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil6144 removes existing export before exporting6145 when exception occurs during export6146 marks export as failed6147 tracks exception6148 when passed relation is not supported6149 tracks exception6150 when user is not allowed to perform export6151 tracks exception6152Grafana::TimeWindow6153 #formatted6154 is expected to eq {:end=>"2019-03-17T13:10:00Z", :start=>"2019-03-17T05:10:00Z"}6155 #in_milliseconds6156 is expected to eq {:from=>1552799400000, :to=>1552828200000}6157 when non-unix parameters are provided6158 is expected to eq {:from=>1552799400000, :to=>1552828200000}6159Grafana::RangeWithDefaults6160 #to_hash6161 is expected to eq {:from=>#<Grafana::Timestamp:0x00007fc2cfc6eca8 @time=2019-03-17 05:10:00 +0000>, :to=>#<Grafana::Timestamp:0x00007fc2cfc6eb68 @time=2019-03-17 13:10:00 +0000>}6162 when only "to" is provided6163 has the expected properties6164 when only "from" is provided6165 has the expected properties6166 when no parameters are provided6167 has the expected properties6168Grafana::Timestamp6169 #formatted6170 is expected to eq "2019-03-17T05:10:00Z"6171 #to_ms6172 is expected to eq 15527994000006173 .from_ms_since_epoch6174 is expected to be a kind of Grafana::Timestamp6175 when the input is not a unix-ish timestamp6176 raises an error6177IncidentManagement::PagerDuty::ProcessWebhookService6178 #execute6179 when PagerDuty webhook setting is active6180 when token is valid6181 when webhook payload has acceptable size6182 responds with Accepted6183 processes issues6184 when webhook payload is too big6185 responds with Bad Request6186 behaves like does not process incidents6187 does not process incidents6188 when webhook payload is blank6189 responds with Accepted6190 behaves like does not process incidents6191 does not process incidents6192 when token is invalid6193 responds with Unauthorized6194 behaves like does not process incidents6195 does not process incidents6196 when both tokens are nil6197 responds with Unauthorized6198 behaves like does not process incidents6199 does not process incidents6200 when PagerDuty webhook setting is not active6201 responds with Forbidden6202 behaves like does not process incidents6203 does not process incidents6204Todos::Destroy::ConfidentialIssueService6205 #execute6206 when issue_id parameter is present6207 when provided issue is confidential6208 removes issue todos for users who can not access the confidential issue6209 when provided issue is not confidential6210 does not remove any todos6211 when project_id parameter is present6212 removes issues todos for users that cannot access confidential issues6213LfsDownloadObject6214 #headers6215 returns specified Hash6216 with nil headers6217 returns a Hash6218 #has_authorization_header?6219 returns false6220 with uppercase form6221 returns true6222 with lowercase form6223 returns true6224 validations6225 is expected to validate that :size looks like a number greater than or equal to 06226 oid attribute6227 must be 64 characters long6228 must contain only hexadecimal characters6229 link attribute6230 only http and https protocols are valid6231 cannot be empty6232 when localhost or local network addresses6233 are allowed6234 is expected to be valid6235 are not allowed6236 is expected to be invalid6237 headers attribute6238 only nil and Hash values are valid6239Gitlab::Metrics::Subscribers::RailsCache6240 #cache_read6241 increments the cache_read duration6242 with a transaction6243 with hit event6244 when super operation is fetch6245 does not increment cache read miss total6246 with miss event6247 increments the cache_read_miss total6248 when super operation is fetch6249 does not increment cache read miss total6250 #cache_write6251 observes write duration6252 #cache_delete6253 observes delete duration6254 #cache_exist?6255 observes the exists duration6256 #cache_fetch_hit6257 without a transaction6258 returns6259 with a transaction6260 increments the cache_read_hit count6261 #cache_generate6262 without a transaction6263 returns6264 with a transaction6265 increments the cache_fetch_miss count and cache_read_miss total6266 #observe6267 without a transaction6268 returns6269 with a transaction6270 observes cache metric6271 increments the operations total6272FeatureFlags::CreateService6273 #execute6274 when feature flag can not be created6275 returns status error6276 returns validation errors6277 does not create audit log6278 does not sync the feature flag to Jira6279 when feature flag is saved correctly6280 returns status success6281 creates feature flag6282 syncs the feature flag to Jira6283 creates audit event6284 when user is reporter6285 returns error status6286KeysetHelper6287 with admin mode6288 when no users are present6289 does not render pagination links6290 when one user is present6291 does not render pagination links6292 when more users are present6293 when on the first page6294 renders the next and last links6295 when at the last page6296 renders the prev and first links6297 when at the second page6298 renders all links6299Metrics::Dashboard::PodDashboardService6300 #raw_dashboard6301 behaves like #raw_dashboard raises error if dashboard loading fails6302 when yaml is too large6303 raises error6304 when yaml loader returns error6305 raises error6306 when yaml is not a hash6307 returns nil6308 .valid_params?6309 is expected to be truthy6310 missing dashboard_path6311 is expected to be falsey6312 non-matching dashboard_path6313 is expected to be falsey6314 #get_dashboard6315 behaves like valid dashboard service response6316 behaves like valid dashboard service response for schema6317 returns a json representation of the dashboard6318 behaves like caches the unprocessed dashboard for subsequent calls6319 is expected to receive load_raw!(*(any args)) 1 time6320 behaves like refreshes cache when dashboard_version is changed6321 is expected to receive read(#<Pathname:/builds/gitlab-org/gitlab/config/prometheus/pod_metrics.yml>) 2 times6322 behaves like updates gitlab_metrics_dashboard_processing_time_ms metric6323 prometheus6324 behaves like dashboard_version contains SHA256 hash of dashboard file content6325 is expected to eq "3a91b32f91b2dd3d90275333c0ea3630b3f3f37c4296ede5b5eef59bf523d66b"6326 .all_dashboard_paths6327 returns the dashboard attributes6328ContainerExpirationPolicies::CleanupService6329 #execute6330 with a successful cleanup tags service execution6331 completely clean up the repository6332 without a successful cleanup tags service execution6333 partially clean up the repository6334 with a truncated cleanup tags service response6335 partially clean up the repository6336 with no repository6337 returns an error response6338 with an invalid policy6339 returns an error response6340 with a network error6341 raises an error6342 next run scheduling6343 with cleanups started_at before policy next_run_at6344 behaves like not scheduling the next run6345 does not scheduled the next run6346 with cleanups started_at around policy next_run_at6347 behaves like not scheduling the next run6348 does not scheduled the next run6349 with only the current repository started_at before the policy next_run_at6350 behaves like scheduling the next run6351 schedules the next run6352 with cleanups started_at after policy next_run_at6353 behaves like scheduling the next run6354 schedules the next run6355 with a future policy next_run_at6356 behaves like not scheduling the next run6357 does not scheduled the next run6358Verify/Load-Performance-Testing.gitlab-ci.yml6359 the created pipeline6360 has no errors6361 on master6362 behaves like load_performance job on tag or branch6363 by default6364 on another branch6365 behaves like load_performance job on tag or branch6366 by default6367 on tag6368 behaves like load_performance job on tag or branch6369 by default6370 on merge request6371 has no jobs6372Deployments::UpdateService6373 #execute6374 can update the status to running6375 can update the status to success6376 can update the status to failed6377 can update the status to canceled6378 raises ArgumentError if the status is invalid6379 links merge requests when changing the status to success6380Banzai::ReferenceParser::AlertParser6381 #nodes_visible_to_user6382 when the link has a data-issue attribute6383 behaves like referenced feature visibility6384 when feature is disabled6385 does not create reference6386 when feature is enabled only for team members6387 does not create reference for non member6388 creates reference for member6389 when feature is enabled6390 creates reference6391 #referenced_by6392 when the link has a data-alert attribute6393 using an existing alert ID6394 returns an Array of alerts6395 using a non-existing alert ID6396 returns an empty Array6397Gitlab::SlashCommands::Presenters::Deploy6398 #present6399 is expected to have key :text6400 is expected to have key :response_type6401 is expected to have key :status6402 is expected not to have key :attachments6403 messages the channel of the deploy6404 #action_not_found6405 is expected to have key :text6406 is expected to have key :response_type6407 is expected to have key :status6408 is expected not to have key :attachments6409 tells the user there is no action6410RspecFlaky::FlakyExample6411 #initialize6412 when given an Rspec::Example6413 behaves like a valid FlakyExample instance6414 returns valid attributes6415 when given a hash6416 behaves like a valid FlakyExample instance6417 returns valid attributes6418 #update_flakiness!6419 when given an Rspec::Example6420 behaves like an up-to-date FlakyExample instance6421 sets the first_flaky_at if none exists6422 maintains the first_flaky_at if exists6423 updates the last_flaky_at6424 updates the flaky_reports6425 when passed a :last_attempts_count6426 updates the last_attempts_count6427 when run on the CI6428 updates the last_flaky_job6429 when given a hash6430 behaves like an up-to-date FlakyExample instance6431 sets the first_flaky_at if none exists6432 maintains the first_flaky_at if exists6433 updates the last_flaky_at6434 updates the flaky_reports6435 when passed a :last_attempts_count6436 updates the last_attempts_count6437 when run on the CI6438 updates the last_flaky_job6439 #to_h6440 when given an Rspec::Example6441 behaves like a valid FlakyExample hash6442 returns a valid hash6443 when given a hash6444 behaves like a valid FlakyExample hash6445 returns a valid hash6446MergeRequests::ReloadMergeHeadDiffService6447 #execute6448 creates a merge head diff6449 when merge ref head is not present6450 returns error6451 when failed to create merge head diff6452 returns error6453 when there is existing merge head diff6454 recreates merge head diff6455 when default_merge_ref_for_diffs feature flag is disabled6456 returns error6457Commits::TagService6458 #execute6459 valid params6460 when tagging succeeds6461 returns a hash with the :success status and created tag6462 adds a system note6463 when tagging fails6464 behaves like tag failure6465 returns a hash with the :error status6466 does not add a system note6467 invalid params6468 behaves like tag failure6469 returns a hash with the :error status6470 does not add a system note6471RuboCop::Cop::SidekiqLoadBalancing::WorkerDataConsistencyWithDeduplication6472 data_consistency: :delayed6473 when deduplication strategy is not explicitly set6474 registers an offense and corrects using default strategy6475 when identation is different6476 registers an offense and corrects with correct identation6477 when deduplication strategy does not include including_scheduling option6478 registers an offense and corrects6479 when deduplication strategy has including_scheduling option disabled6480 registers an offense and corrects6481 when deduplication strategy is :none6482 does not register an offense6483 when deduplication strategy has including_scheduling option enabled6484 does not register an offense6485 data_consistency: :sticky6486 when deduplication strategy is not explicitly set6487 registers an offense and corrects using default strategy6488 when identation is different6489 registers an offense and corrects with correct identation6490 when deduplication strategy does not include including_scheduling option6491 registers an offense and corrects6492 when deduplication strategy has including_scheduling option disabled6493 registers an offense and corrects6494 when deduplication strategy is :none6495 does not register an offense6496 when deduplication strategy has including_scheduling option enabled6497 does not register an offense6498 data_consistency: :always6499 does not register an offense6500Grafana::Validator6501 validate!6502 does not raise an error6503 when query param "from" is not specified6504 behaves like processing error6505 raises a processing error6506 when query param "to" is not specified6507 behaves like processing error6508 raises a processing error6509 when the panel is not provided6510 behaves like processing error6511 raises a processing error6512 when the panel is not a graph6513 behaves like processing error6514 raises a processing error6515 when the panel is not a line graph6516 behaves like processing error6517 raises a processing error6518 when the query dashboard includes undefined variables6519 behaves like processing error6520 raises a processing error6521 when the expression contains unsupported global variables6522 behaves like processing error6523 raises a processing error6524 when the datasource is not proxyable6525 behaves like processing error6526 raises a processing error6527 when the datasource is not provided6528 does not raise an error6529 valid?6530 with valid arguments6531 is expected to equal true6532 with invalid arguments6533 is expected to equal false6534ServiceResponse6535 .success6536 creates a successful response without a message6537 creates a successful response with a message6538 creates a successful response with payload6539 creates a successful response with default HTTP status6540 creates a successful response with custom HTTP status6541 .error6542 creates a failed response without HTTP status6543 creates a failed response with HTTP status6544 creates a failed response with payload6545 #success?6546 returns true for a successful response6547 returns false for a failed response6548 #error?6549 returns false for a successful response6550 returns true for a failed response6551 #errors6552 returns an empty array for a successful response6553 returns an array with a correct message for an error response6554API::Helpers::PackagesHelpers6555 authorize_packages_access!6556 authorizes packages access6557 authorize_read_package!6558 calls authorize!6559 authorize_create_package!6560 calls authorize!6561 authorize_destroy_package!6562 calls authorize!6563 require_packages_enabled!6564 with packages enabled6565 doesn't call not_found!6566 with package disabled6567 calls not_found!6568 #authorize_workhorse!6569 authorizes workhorse6570 without length6571 authorizes workhorse6572 #authorize_upload!6573 authorizes the upload6574MergeRequests::ByApprovalsFinder6575 filter by no approvals6576 returns merge requests without approvals6577 filter by any approvals6578 returns merge requests approved by at least one user6579 filter by specific user approval6580 returns merge requests approved by specific user6581 filter by multiple user approval6582 returns merge requests approved by both users6583 limiting max conditional elements6584 returns merge requests approved by both users, considering limit of 2 being defined6585 with empty params6586 returns all merge requests6587Ci::Artifactable6588 artifact properties are included6589 when enum is defined6590 is expected to define :file_format as an enum, backed by an integer, using a suffix of :file_format, with possible values ‹{raw: 1, zip: 2, gzip: 3}›6591 when const is defined6592 is expected to be const defined :FILE_FORMAT_ADAPTERS6593 #each_blob6594 when file format is gzip6595 when gzip file contains one file6596 iterates blob once6597 when gzip file contains three files6598 iterates blob three times6599 when file format is raw6600 iterates blob once6601 when there are no adapters for the file format6602 raises an error6603 ActiveRecord scopes6604 .expired_before6605 returns expired artifacts6606 .expired6607 returns a limited number of expired artifacts6608 .with_files_stored_locally6609 returns artifacts stored locally6610 .with_files_stored_remotely6611 returns artifacts stored remotely6612 .project_id_in6613 when artifacts belongs to projects6614 returns artifacts belonging to projects6615Search::SnippetService6616 #execute6617 unauthenticated6618 returns public snippets only6619 authenticated6620 returns only public & internal snippets for regular users6621 returns public, internal snippets and project private snippets for project members6622 returns public, internal and private snippets where user is the author6623 when admin mode is enabled6624 returns all snippets when user is admin6625 when admin mode is disabled6626 returns only public & internal snippets when user is admin6627 #scope6628 always scopes to snippet_titles6629ContextCommitsDiff6630 .empty?6631 checks if empty6632 .commits_count6633 reports commits count6634 .diffs6635 returns instance of Gitlab::Diff::FileCollection::Compare6636 returns all diffs between first and last commits6637 .raw_diffs6638 returns instance of Gitlab::Git::DiffCollection6639 returns only diff for files changed in the context commits6640 .diff_refs6641 returns correct sha6642Repositories::DestroyRollbackService6643 moves the repository from the +deleted folder6644 logs the successful action6645 flushes the repository cache6646 returns success and does not perform any action if repository path does not exist6647 when move operation cannot be performed6648 returns error6649 logs the error6650RuboCop::Cop::Migration::AddLimitToTextColumns6651 when in migration6652 when text columns are defined without a limit6653 registers an offense6654 when text columns are defined with a limit6655 registers no offense6656 for migrations before 2021_09_10_00_00_006657 when limit: attribute is used (which is not supported yet for this version): registers an offense6658 when text array columns are defined without a limit6659 registers no offense6660 when the limit is defined for a same name attribute but different table6661 registers an offense6662 when text columns are used for encryption6663 registers no offenses6664 on down6665 registers no offense6666 when outside of migration6667 registers no offense6668Metrics::Dashboard::PanelPreviewService6669 #execute6670 valid panel's yaml6671 returns success service response6672 returns processed panel6673 uses dashboard processor6674 invalid panel's yaml6675 returns error service response6676 returns error message6677 returns error service response6678 returns error message6679 returns error service response6680 returns error message6681 returns error service response6682 returns error message6683Integrations::Asana6684 Validations6685 active6686 is expected to validate that :api_key cannot be empty/falsy6687 Execute6688 calls Asana integration to create a story6689 calls Asana integration to create a story and close a task6690 is able to close via url6691 allows multiple matches per line6692TestSuiteSummaryEntity6693 #as_json6694 contains the total time6695 contains the counts6696 contains the build_ids6697 contains the suite_error6698ProtectedBranchesFinder6699 #execute6700 returns all protected branches of project by default6701 when search param is present6702 filters by search param6703 when there are more protected branches than the limit6704 returns limited protected branches of project6705Metrics::Dashboard::GitlabAlertEmbedService6706 .valid_params?6707 is expected to be truthy6708 missing embedded6709 is expected to be falsey6710 not embedded6711 is expected to be falsey6712 missing alert id6713 is expected to be falsey6714 missing alert id6715 is expected to be falsey6716 #get_dashboard6717 when alerting is available6718 generates an panel based on the alert6719 does not cache the unprocessed dashboard6720 behaves like valid embedded dashboard service response6721 behaves like valid dashboard service response for schema6722 returns a json representation of the dashboard6723 behaves like raises error for users with insufficient permissions6724 when the user does not have sufficient access6725 behaves like misconfigured dashboard service response6726 returns an appropriate message and status code6727 when the user is anonymous6728 behaves like misconfigured dashboard service response6729 returns an appropriate message and status code6730 when the metric does not exist6731 behaves like misconfigured dashboard service response6732 returns an appropriate message and status code6733Banzai::Filter::AssetProxyFilter6734 does not replace if disabled6735 during initialization6736 #initialize_settings6737 supports deprecated whitelist settings6738 when allowlist is empty6739 defaults to the install domain6740 when properly configured6741 replaces img src6742 skips internal images6743 skip relative urls6744 skips single domain6745 skips single domain and ignores url in query string6746 skips wildcarded domain6747Clusters::Kubernetes6748 is expected to be const defined :GITLAB_SERVICE_ACCOUNT_NAME6749 is expected to be const defined :GITLAB_SERVICE_ACCOUNT_NAMESPACE6750 is expected to be const defined :GITLAB_ADMIN_TOKEN_NAME6751 is expected to be const defined :GITLAB_CLUSTER_ROLE_BINDING_NAME6752 is expected to be const defined :GITLAB_CLUSTER_ROLE_NAME6753 is expected to be const defined :PROJECT_CLUSTER_ROLE_NAME6754 is expected to be const defined :GITLAB_KNATIVE_SERVING_ROLE_NAME6755 is expected to be const defined :GITLAB_KNATIVE_SERVING_ROLE_BINDING_NAME6756 is expected to be const defined :GITLAB_CROSSPLANE_DATABASE_ROLE_NAME6757 is expected to be const defined :GITLAB_CROSSPLANE_DATABASE_ROLE_BINDING_NAME6758Types::BaseObject6759 scoping items6760 paginates arrays correctly6761 filters connections correctly6762 filters polymorphic connections6763 filters interface connections6764 redacts polymorphic objects6765 paginates before scoping6766 a lazy list6767 behaves like array member redaction6768 redacts the unauthorized array member6769 a list of lazy items6770 behaves like array member redaction6771 redacts the unauthorized array member6772 an array connection of items6773 behaves like array member redaction6774 redacts the unauthorized array member6775 an array connection of items, selecting edges6776 behaves like array member redaction6777 redacts the unauthorized array member6778UsersStarProjectsFinder6779 #execute6780 as same user6781 is expected to contain exactly #<UsersStarProject id: 2, project_id: 873, user_id: 2818, created_at: "2021-09-22 10:42:25.399233000 +0000", updated_at: "2021-09-22 10:42:25.399233000 +0000"> and #<UsersStarProject id: 1, project_id: 873, user_id: 2816, created_at: "2021-09-22 10:42:25.312959000 +0000", updated_at: "2021-09-22 10:42:25.312959000 +0000">6782 as other user6783 is expected to contain exactly #<UsersStarProject id: 3, project_id: 874, user_id: 2819, created_at: "2021-09-22 10:42:25.770866000 +0000", updated_at: "2021-09-22 10:42:25.770866000 +0000">6784 as no user6785 is expected to contain exactly #<UsersStarProject id: 5, project_id: 875, user_id: 2823, created_at: "2021-09-22 10:42:26.253685000 +0000", updated_at: "2021-09-22 10:42:26.253685000 +0000">6786Clusters::Applications::ActivateServiceWorker#perform6787 cluster exists6788 prometheus integration6789 cluster type: group6790 ensures Prometheus integration is activated6791 cluster type: project6792 ensures Prometheus integration is activated6793 cluster type: instance6794 ensures Prometheus integration is activated6795 cluster does not exist6796WARNING: Using `expect { }.not_to raise_error(SpecificErrorClass)` risks false positives, since literally any other error would cause the expectation to pass, including those raised by Ruby (e.g. `NoMethodError`, `NameError` and `ArgumentError`), meaning the code you are intending to test may not even get reached. Instead consider using `expect { }.not_to raise_error` or `expect { }.to raise_error(DifferentSpecificErrorClass)`. This message can be suppressed by setting: `RSpec::Expectations.configuration.on_potential_false_positives = :nothing`. Called from /builds/gitlab-org/gitlab/spec/workers/clusters/applications/activate_service_worker_spec.rb:49:in `block (3 levels) in <top (required)>'.6797 does not raise Record Not Found error6798Gitlab::Kubernetes::Namespace6799 is expected to eq "a_namespace"6800 #exists?6801 when namespace do not exits6802 returns false6803 when namespace exits6804 returns true6805 when cluster cannot be reached6806 raises exception6807 #create!6808 creates a namespace6809 with labels6810 creates a namespace with labels6811 #ensure_exists!6812 checks for existing namespace before creating6813 do not re-create an existing namespace6814 when client errors6815 raises the exception6816 logs the error6817Integrations::ChatMessage::WikiPageMessage6818 without markdown6819 #pretext6820 when :action == "create"6821 returns a message that a new wiki page was created6822 when :action == "update"6823 returns a message that a wiki page was updated6824 #attachments6825 when :action == "create"6826 returns the commit message for a new wiki page6827 when :action == "update"6828 returns the commit message for an updated wiki page6829 with markdown6830 #pretext6831 when :action == "create"6832 returns a message that a new wiki page was created6833 when :action == "update"6834 returns a message that a wiki page was updated6835 #attachments6836 when :action == "create"6837 returns the commit message for a new wiki page6838 when :action == "update"6839 returns the commit message for an updated wiki page6840 #activity6841 when :action == "create"6842 returns the attachment for a new wiki page6843 when :action == "update"6844 returns the attachment for an updated wiki page6845ReactiveCachingWorker6846 behaves like reactive cacheable worker6847 #perform6848 when reactive cache worker class is found6849 calls #exclusively_update_reactive_cache!6850 when ReactiveCaching::ExceededReactiveCacheLimit is raised6851 avoids failing the job and tracks via Gitlab::ErrorTracking6852 when reactive cache worker class is not found6853 raises no error6854 when reactive cache worker class is invalid6855 raises no error6856 worker context6857 sets the related class on the job6858 sets the related class on the job when it was passed as a class6859Gitlab::WebIde::Config::Entry::Terminal6860 .nodes6861 when filtering all the entry/node names6862 is expected to contain exactly :before_script, :script, :image, :services, and :variables6863 validations6864 when entry config value is correct6865 #valid?6866 is valid6867 when the same port is not duplicated6868 #valid?6869 is valid6870 when unknown port keys detected6871 is not valid6872 when entry value is not correct6873 incorrect config value type6874 #errors6875 reports error about a config type6876 when config is empty6877 #valid6878 is valid6879 when unknown keys detected6880 #valid6881 is not valid6882 when the same port is duplicated6883 #valid?6884 is invalid6885 #relevant?6886 is a relevant entry6887 when composed6888 #value6889 when entry is correct6890 returns correct value6891Gitlab::Ci::Config::Entry::Kubernetes6892 attributes6893 is expected to respond to #namespace6894 is expected to respond to #has_namespace?6895 validations6896 config6897 is a hash containing known keys6898 is expected to be valid6899 is a hash containing an unknown key6900 is expected not to be valid6901 is a string6902 is expected not to be valid6903 namespace6904 is a string6905 is expected to be valid6906 is a hash6907 is expected not to be valid6908 is not present6909 is expected not to be valid6910JiraConnect::SyncBranchWorker6911 behaves like worker with data consistency6912 .get_data_consistency_feature_flag_enabled?6913 returns true6914 .get_data_consistency6915 returns correct data consistency6916 #perform6917 calls JiraConnect::SyncService#execute6918 without branch name6919 calls JiraConnect::SyncService#execute6920 without commits6921 calls JiraConnect::SyncService#execute6922 when project no longer exists6923 does not call JiraConnect::SyncService6924PropagateIntegrationProjectWorker6925 #perform6926 behaves like an idempotent worker6927 is labeled as idempotent6928 performs multiple times sequentially without raising an exception6929 calls to BulkCreateIntegrationService6930 with a group integration6931 calls to BulkCreateIntegrationService6932 with an invalid integration id6933 returns without failure6934Gitlab::UsageDataNonSqlMetrics6935 #add_metric6936 computes the metric value for given metric6937 .count6938 returns default value for count6939 .distinct_count6940 returns default value for distinct count6941 .estimate_batch_distinct_count6942 returns default value for estimate_batch_distinct_count6943 .sum6944 returns default value for sum6945 .histogram6946 returns default value for histogram6947 min/max methods6948 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, skype: string, linkedin: string, twitter: string, 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, website_url: string, admin_email_unsubscribed_at: datetime, notification_email: string, hide_no_password: boolean, password_automatically_set: boolean, location: string, 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, organization: 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, otp_secret: ), result: nil6949 returns nil6950 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), result: nil6951 returns nil6952 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), result: nil6953 returns nil6954 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_user_id: integer, shared_runners_enabled: boolean, runners_token: string, build_coverage_regex: 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, 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, topic_list: ), result: nil6955 returns nil6956SnippetInputActionCollection6957 is expected to delegate #empty? to the #actions object6958 is expected to delegate #any? to the #actions object6959 is expected to delegate #[] to the #actions object6960 #to_commit_actions6961 translates all actions to commit actions6962 #valid?6963 returns true6964 when any of the actions is invalid6965 returns false6966 when allowed_actions param is passed6967 builds SnippetInputAction with that param6968gettext6969 :compile6970 creates a pot file and invokes the 'gettext:po_to_json' task6971 :regenerate6972 when the locale folder is not found6973 raises an error6974 where there are existing /**/gitlab.po files6975 does not remove that locale6976 when there are locale folders without a gitlab.po file6977 removes those folders6978 when the gitlab.pot file cannot be generated6979 prints an error6980 when gettext:find changes the revision dates6981 resets the changes6982 :lint6983 when all PO files are valid6984 completes without error6985 when there are invalid PO files6986 raises an error6987 when the .pot file is invalid6988 raises an error6989SystemNoteMetadata6990 associations6991 is expected to belong to note required:6992 is expected to belong to description_version required:6993 validation6994 is expected to validate that :note cannot be empty/falsy6995 when action type is invalid6996 is expected to be invalid6997 when action type is valid6998 is expected to be valid6999 when importing7000 is expected to be valid7001Gitlab::Git::User7002 .from_gitaly7003 is expected to eq #<Gitlab::Git::User:0x00007fc2ecfcb7d0 @username="janedoe", @name="Jane Doé", @email="janedoé@example.com", @gl_id="user-123", @timezone="Asia/Shanghai">7004 .from_gitlab7005 when no commit_email has been set7006 is expected to eq #<Gitlab::Git::User:0x00007fc2ed1677d8 @username="user1867", @name="John Doe3125", @email="alice@example.com", @gl_id="user-", @timezone="Asia/Shanghai">7007 when commit_email has been set7008 is expected to eq #<Gitlab::Git::User:0x00007fc2ed316750 @username="user1868", @name="John Doe3126", @email="bob@example.com", @gl_id="user-", @timezone="Asia/Shanghai">7009 #==7010 is expected to eq #<Gitlab::Git::User:0x00007fc2ed4a1408 @username="janedoe", @name="Jane Doé", @email="janedoé@example.com", @gl_id="user-123", @timezone="Asia/Shanghai">7011 is expected not to eq #<Gitlab::Git::User:0x00007fc2d59f4a58 @username=nil, @name=nil, @email=nil, @gl_id=nil, @timezone="Asia/Shanghai">7012 is expected not to eq #<Gitlab::Git::User:0x00007fc328cd00f8 @username="janedoex", @name="Jane Doé", @email="janedoé@example.com", @gl_id="user-123", @timezone="Asia/Shanghai">7013 is expected not to eq #<Gitlab::Git::User:0x00007fc32098b5d0 @username="janedoe", @name="Jane Doéx", @email="janedoé@example.com", @gl_id="user-123", @timezone="Asia/Shanghai">7014 is expected not to eq #<Gitlab::Git::User:0x00007fc3265c1408 @username="janedoe", @name="Jane Doé", @email="janedoé@example.comx", @gl_id="user-123", @timezone="Asia/Shanghai">7015 is expected not to eq #<Gitlab::Git::User:0x00007fc31a4bc320 @username="janedoe", @name="Jane Doé", @email="janedoé@example.com", @gl_id="user-123x", @timezone="Asia/Shanghai">7016 is expected not to eq #<Gitlab::Git::User:0x00007fc31b706350 @username="janedoe", @name="Jane Doé", @email="janedoé@example.com", @gl_id="user-123", @timezone="Etc/UTC">7017 when add_timezone_to_web_operations is disabled7018 ignores timezone arg and sets Etc/UTC by default7019 #to_gitaly7020 creates a Gitaly::User with the correct data7021Milestones::IssuesCountService7022 counts all issues including confidential7023 behaves like a counter caching service7024 #count7025 caches the count7026 #refresh_cache7027 refreshes the cache7028 #delete_cache7029 removes the cache7030 #uncached_count7031 does not cache the count7032Releases::CreateEvidenceService7033 creates evidence7034 saves evidence summary7035 saves sha7036InstanceClusterablePresenter7037 #create_aws_clusters_path7038 is expected to eq "/admin/clusters/create_aws"7039 #authorize_aws_role_path7040 is expected to eq "/admin/clusters/authorize_aws_role"7041 #clear_cluster_cache_path7042 is expected to eq "/admin/clusters/778/clear_cache"7043 #metrics_dashboard_path7044 is expected to eq "/admin/clusters/781/metrics_dashboard"7045ProjectBadge7046 associations7047 is expected to belong to project required:7048 validations7049 is expected to validate that :project cannot be empty/falsy7050 methods7051 #rendered_link_url7052 behaves like rendered_links7053 uses the badge project information to populate the url placeholders7054 #rendered_image_url7055 behaves like rendered_links7056 uses the badge project information to populate the url placeholders7057Gitlab::BlamePresenter7058 precalculates necessary data on init7059 #groups7060 delegates #groups call to the blame7061 #commit_data7062 has the data necessary to render the view7063Mutations::Issues::SetSubscription7064 is expected to require graphql authorizations :update_subscription7065 when user does not have access to the project7066 behaves like a subscribeable not accessible graphql resource7067 raises an error if the resource is not accessible to the user7068 when user is developer member of the project7069 behaves like a subscribeable graphql resource7070 subscribes to the resource7071 when passing subscribe as false7072 unsubscribes from the discussion7073 when the project is public7074 behaves like a subscribeable graphql resource7075 subscribes to the resource7076 when passing subscribe as false7077 unsubscribes from the discussion7078 when the project is public but the issue is confidential7079 behaves like a subscribeable not accessible graphql resource7080 raises an error if the resource is not accessible to the user7081Gitlab::Ci::Pipeline::Chain::Create7082 when pipeline is ready to be saved7083 saves a pipeline7084 does not break the chain7085 creates stages7086 when pipeline has validation errors7087 breaks the chain7088 appends validation error7089Gitlab::Git::RawDiffChange7090 bad input7091 does not set most of the attrs7092 adding a file7093 initialize the proper attrs7094 renaming a file7095 initialize the proper attrs7096 modifying a file7097 initialize the proper attrs7098 deleting a file7099 initialize the proper attrs7100CreatePipelineWorker7101 #perform7102 when a project not found7103 does not call the Service7104 when a user not found7105 does not call the Service7106 when everything is ok7107 calls the Service7108Clusters::Agents::ImplicitAuthorization7109 is expected to eq #<Clusters::Agent id: 1, created_at: "2021-09-22 10:43:03.708925362 +0000", updated_at: "2021-09-22 10:43:03.708925362 +0000", project_id: 898, name: "agent-1", created_by_user_id: 2883>7110 is expected to eq 17111 is expected to eq #<Project id:898 namespace881/project995>>7112 is expected to be nil7113Types::TimelogType7114 is expected to eq "Timelog"7115 is expected to have graphql fields :spent_at, :time_spent, :user, :issue, :merge_request, :note, and :summary7116 is expected to require graphql authorizations :read_issue7117 user field7118 returns user7119 issue field7120 returns issue7121 merge_request field7122 returns merge_request7123 note field7124 returns note7125BaseCountService7126 #relation_for_count7127 raises NotImplementedError7128 #count7129 returns the number of values7130 #uncached_count7131 returns the uncached number of values7132 #refresh_cache7133 refreshes the cache7134 #delete_cache7135 deletes the cache7136 #raw?7137 returns false7138 #cache_key7139 raises NotImplementedError7140 #cache_options7141 returns the default in options7142Gitlab::Checks::LfsCheck7143 #validate!7144 with LFS not enabled7145 skips integrity check7146 with LFS enabled7147 fails if any LFS blobs are missing7148 succeeds if LFS objects have already been uploaded7149 with lfs_check feature disabled7150 skips integrity check7151 with deletion7152 with missing newrev7153 behaves like a skipped integrity check7154 skips integrity check7155 with blank newrev7156 behaves like a skipped integrity check7157 skips integrity check7158RspecFlaky::Report7159 delegates to #flaky_examples using SimpleDelegator7160 .load7161 loads the report file7162 .load_json7163 loads the report file7164 #initialize7165 accepts a RspecFlaky::FlakyExamplesCollection7166 does not accept anything else7167 #write7168 when RspecFlaky::Config.generate_report? is false7169 does not write any report file7170 when RspecFlaky::Config.generate_report? is true7171 delegates the writes to RspecFlaky::Report7172 #prune_outdated7173 returns a new collection without the examples older than 30 days by default7174 accepts a given number of days7175Gitlab::UsageDataCounters::SourceCodeCounter7176 behaves like a redis usage counter7177 .count(pushes)7178 increments the Source Code pushes counter by 17179 .read(pushes)7180 returns the total number of pushes events7181 behaves like a redis usage counter with totals7182 totals7183 can report all totals7184 unknown events7185 cannot increment7186 cannot read7187RuboCop::Cop::Performance::ActiveRecordSubtransactions7188 when calling #transaction with only requires_new: true7189 registers an offense7190 when passing multiple arguments to #transaction, including requires_new: true7191 registers an offense7192 when calling #transaction with requires_new: false7193 does not register an offense7194 when calling #transaction with other options7195 does not register an offense7196 when calling #transaction with no arguments7197 does not register an offense7198Gitlab::ManifestImport::Metadata7199 #save7200 stores data in Redis with an expiry of EXPIRY_TIME7201 #repositories7202 allows repositories to round-trip with symbol keys7203 uses the fallback when there is nothing in Redis7204 #group_id7205 returns the group ID as an integer7206 uses the fallback when there is nothing in Redis7207Gitlab::Ci::Status::Pipeline::Delayed7208 #text7209 overrides status text7210 #label7211 overrides status label7212 .matches?7213 when pipeline is scheduled7214 is a correct match7215 when pipeline is not scheduled7216 does not match7217Gitlab::Suggestions::CommitMessage7218 #message7219 when a custom commit message is not specified7220 and is nil7221 uses the default commit message7222 and is an empty string7223 uses the default commit message7224 when a custom commit message is specified7225 shows the custom commit message7226 is specified and includes all placeholders7227 generates a custom commit message7228MergeRequestForPipelineEntity7229 as json7230 exposes needed attributes7231ResourceLabelEventPolicy7232 #read_resource_label_event7233 with non-member user7234 does not allow to read event7235 with member user7236 allows to read event for accessible label7237 does not allow to read event for not accessible label7238 #read_label7239 allows to read deleted label7240 allows to read accessible label7241 does not allow to read not accessible label7242Gitlab::DependencyLinker::GemspecLinker7243 .support?7244 supports *.gemspec7245 does not support other files7246 #link7247 does not link the gem name7248 links the license7249 links the homepage7250 links dependencies7251GpgKeySubkey7252 associations7253 is expected to belong to gpg_key required:7254 validations7255 is expected to validate that :gpg_key_id cannot be empty/falsy7256 is expected to validate that :fingerprint cannot be empty/falsy7257 is expected to validate that :keyid cannot be empty/falsy7258ProtectedTags::UpdateService7259 #execute7260 updates a protected tag7261 without admin_project permissions7262 raises error7263Projects::TerraformHelper7264 #js_terraform_list_data7265 includes image path7266 includes project path7267 includes access token path7268 includes username7269 includes terraform state api url7270 indicates the user is a terraform admin7271 when current_user is not a terraform admin7272 indicates the user is not an admin7273 when current_user is missing7274 indicates the user is not an admin7275Users::DismissGroupCalloutService7276 #execute7277 sets the group_id7278 behaves like dismissing user callout7279 creates a new user callout7280 returns a user callout7281 sets the dismissed_at attribute to current time7282 updates an existing callout dismissed_at time7283 does not update an invalid record with dismissed_at time7284Gitlab::DataBuilder::Deployment7285 .build7286 returns the object kind for a deployment7287 returns data for the given build7288 does not include the deployable URL when there is no deployable7289Gitlab::Pagination::Keyset7290 .available_for_type?7291 returns true for Project7292 return false for other types of relations7293 .available?7294 with order-by id asc7295 behaves like keyset pagination is available7296 returns true for Project7297 return false for other types of relations7298 with order-by id desc7299 behaves like keyset pagination is available7300 returns true for Project7301 return false for other types of relations7302 with other order-by columns7303 returns false for Project7304 return false for other types of relations7305BlameHelper7306 #get_age_map_start_date7307 returns the earliest date from a blame group7308 returns the earliest date from a project7309 #age_map_class7310 returns blame-commit-age-9 when oldest7311 returns blame-commit-age-0 class when newest7312 when called on the same day as project creation7313 returns blame-commit-age-0 class7314Gitlab::CrossProjectAccess::CheckCollection7315 #add_collection7316 merges the checks of 2 collections7317 #should_run?7318 returns true if one of the check says it should run7319 returns false if one of the check says it should be skipped7320Gitlab::ContentSecurityPolicy::ConfigLoader7321 .default_enabled7322 is enabled7323 when in production7324 is disabled7325 .default_directives7326 returns default directives7327 when CDN host is defined7328 adds CDN host to CSP7329 when sentry is configured7330 adds sentry path to CSP without user7331 when CUSTOMER_PORTAL_URL is set7332 when in production7333 does not add CUSTOMER_PORTAL_URL to CSP7334 when in development7335 adds CUSTOMER_PORTAL_URL to CSP7336 #load7337 sets the policy properly7338 ignores malformed policy statements7339Packages::PackagePolicy7340 when the user is part of the project7341 allows read_package7342 when the user is not part of the project7343 disallows read_package for any Package7344Gitlab::Utils::Gzip7345 #gzip_compress7346 compresses data passed to it7347 returns uncompressed data when encountering Zlib::GzipFile::Error7348 #gzip_decompress7349 decompresses encoded data7350 returns compressed data when encountering Zlib::GzipFile::Error7351 returns unmodified data when it is determined to be uncompressed7352Gitlab::RateLimitHelpers7353 #archive_rate_limit_reached?7354 with a user7355 rate limits the user properly7356 with an anonymous user7357 rate limits with higher limits7358Gitlab::Auth::Saml::AuthHash7359 #groups7360 returns array of groups7361 raw info hash attributes empty7362 returns an empty array7363 #authn_context7364 with response_object7365 can extract authn_context7366 with SAML 2.0 response_object7367 can extract authn_context7368 with ADFS SAML response_object7369 can extract authn_context7370 without response_object7371 returns an empty string7372Gitlab::SnowplowEventDefinitionGenerator7373 Creating event definition file7374 creates CE event definition file using the template7375 creates EE event definition file using the template7376 event definition already exists7377 overwrites event definition --force flag set to true7378 raises error when --force flag set to false7379Gitlab::EtagCaching::Router::Graphql7380 matches pipelines endpoint7381 has a valid feature category for every route7382 .cache_key7383 uses request path and headers as cache key7384 when the header is missing7385 does not raise errors7386Gitlab::AvatarCache7387 #by_email7388 writes a new value into the cache7389 finds the cached value and doesn't execute the block7390 finds the cached value in the request store and doesn't execute the block7391 #delete_by_email7392 no emails, somehow7393 is expected to eq 07394 single email7395 removes the email7396 multiple emails7397 removes the emails it finds7398Gitlab::GithubImport::ObjectCounter7399 validates the operation being incremented7400 increments the counter and saves the key to be listed in the summary later7401 does not increment the counter if the given value is <= 07402Gitlab::Prometheus::Queries::DeploymentQuery7403 sends appropriate queries to prometheus7404RunPipelineScheduleWorker7405 #perform7406 when a project not found7407 does not call the Service7408 when a user not found7409 does not call the Service7410 when everything is ok7411 calls the Service7412 when database statement timeout happens7413 increments Prometheus counter7414 logging a pipeline error7415 when pipeline cannot be created7416 logging a pipeline error7417NewProjectReadmeContentExperiment7418 renders the basic README7419 the advanced variant7420 renders the project details7421 renders redirect URLs7422Gitlab::ImportExport::UploadsSaver7423 bundle a project Git repo7424 legacy storage7425 saves the uploads successfully7426 copies the uploads to the export path7427 hashed storage7428 saves the uploads successfully7429 copies the uploads to the export path7430BulkImports::FileDecompressionService7431 #execute7432 decompresses specified file7433 when validate_import_decompressed_archive_size feature flag is enabled7434 performs decompressed file size validation7435 when validate_import_decompressed_archive_size feature flag is disabled7436 does not perform decompressed file size validation7437 when dir is not in tmpdir7438 raises an error7439 when compressed file is a symlink7440 raises an error and removes the file7441 when decompressed file is a symlink7442 raises an error and removes the file7443Gitlab::Ci::Build::Artifacts::ExpireInParser7444 .validate_duration7445 with never7446 is expected to be truthy7447 with never value camelized7448 is expected to be truthy7449 with a duration7450 is expected to be truthy7451 without a duration7452 is expected to be falsy7453 #seconds_from_now7454 with never7455 is expected to be nil7456 with an empty string7457 is expected to be nil7458 with a duration7459 is expected to within one second of 2021-09-23 10:43:41 UTC7460Graphql Field feature flags7461 Feature flagged field7462 checks YAML definition for default_enabled7463 skipping YAML check7464 returns the value when feature is enabled7465 returns nil when the feature is disabled7466Deployments::DropOlderDeploymentsWorker7467 #perform7468 executes Deployments::OlderDeploymentsDropService7469HashedStorage::RollbackerWorker7470 #perform7471 delegates to MigratorService7472 rollsback projects in the specified range7473Gitlab::NoteableMetadata7474 returns an empty Hash if an empty collection is provided7475 raises an error when given a collection with no limit7476 snippets7477 aggregates stats on snippets7478Types::DesignManagement::DesignType7479 is expected to include Types::CurrentUserTodos7480 behaves like a GraphQL type with design fields7481 is expected to require graphql authorizations :read_design7482 exposes the expected design fields7483 #image7484 resolves to the design image URL7485 has better than O(N) peformance7486Mutations::AlertManagement::HttpIntegration::Destroy7487 is expected to require graphql authorizations :admin_operations7488 #resolve7489 user has access to project7490 when HttpIntegrations::DestroyService responds with success7491 returns the integration with no errors7492 when HttpIntegrations::DestroyService responds with an error7493 returns errors7494 when resource is not accessible to the user7495 raises an error if the resource is not accessible to the user7496BlobViewer::GoMod7497 #package_name7498 returns the package name7499 #package_url7500 returns the package URL7501 when the homepage has an invalid URL7502 returns nil7503 #package_type7504 returns "package"7505 when the module name does not start with the instance URL7506 #package_url7507 returns the pkg.go.dev URL7508InstanceMetadata7509 has the correct properties7510PagesDomainRemovalCronWorker7511 #perform7512 when there is domain which should be removed7513 removes domain7514 where there is a domain which scheduled for removal in the future7515 does not remove pages domain7516gitlab:terraform_states7517 gitlab:terraform_states:migrate7518 invokes the migration helper to move files to object storage7519 an error is raised while migrating7520 logs the error7521Gitlab::Ci::Reports::CodequalityReports7522 is expected to eq {}7523 #add_degradation7524 when there is a degradation7525 adds degradation to codequality report7526 when a required property is missing in the degradation7527 sets location as an error7528 #set_error_message7529 when there is an error7530 sets errors7531 #degradations_count7532 when there are many degradations7533 returns the number of degradations7534 #all_degradations7535 when there are many degradations7536 returns all degradations7537 #sort_degradations!7538 sorts degradations based on severity7539Gitlab::Utils::LogLimitedArray7540 .log_limited_array7541 when the argument is not an array7542 returns an empty array7543 when the argument is an array7544 when the array is under the limit7545 returns the array unchanged7546 when the array exceeds the limit7547 when no sentinel value is passed7548 replaces arguments after the limit with an ellipsis string7549 when a sentinel value is passed7550 replaces arguments after the limit with the sentinel7551 when the array contains arrays and hashes7552 calculates the size based on the JSON representation7553BulkImports::Pipeline::Runner7554 pipeline runner7555 when entity is not marked as failed7556 runs pipeline extractor, transformer, loader7557 when extracted data has multiple pages7558 updates tracker information and runs pipeline again7559 when exception is raised7560 logs import failure7561 when pipeline is marked to abort on failure7562 logs a warn message and marks entity as failed7563 when pipeline is not marked to abort on failure7564 does not mark entity as failed7565 when entity is marked as failed7566 logs and returns without execution7567BuildHooksWorker7568 #perform7569 when build exists7570 calls build hooks7571 when build does not exist7572 does not raise exception7573 .perform_async7574 delays scheduling a job by calling perform_in with default delay7575 behaves like worker with data consistency7576 .get_data_consistency_feature_flag_enabled?7577 returns true7578 .get_data_consistency7579 returns correct data consistency7580Ci::CompareCodequalityReportsService7581 #execute7582 when head pipeline has a codequality report7583 returns status and data7584 when base and head pipelines have codequality reports7585 returns status and data7586Gitlab::Bullet7587 #enabled?7588 is enabled7589 is not enabled7590 is correctly aliased for #extra_logging_enabled?7591 #configure_bullet?7592 with ENABLE_BULLET true7593 is configurable7594 with ENABLE_BULLET falsey7595 is not configurable7596 is configurable in development7597RuboCop::Cop::Graphql::AuthorizeTypes7598 adds an offense when there is no authorize call7599 does not add an offense for classes that have an authorize call7600 does not add an offense for classes that only have an authorize call7601 does not add an offense for base types7602 does not add an offense for Enums7603 does not add an offense for subtypes of BaseUnion7604 does not add an offense for subtypes of BaseInputObject7605 does not add an offense for InputTypes7606CycleAnalytics::ProjectLevelStageAdapter7607 calculates median7608 lists events7609 presents the data as json7610Mutations::AlertManagement::HttpIntegration::Create7611 is expected to require graphql authorizations :admin_operations7612 #resolve7613 user has access to project7614 when HttpIntegrations::CreateService responds with success7615 returns the integration with no errors7616 when HttpIntegrations::CreateService responds with an error7617 returns errors7618 when resource is not accessible to the user7619 raises an error if the resource is not accessible to the user7620Gitlab::Database::AsyncIndexes::IndexCreator7621 #perform7622 creates the index while controlling statement timeout7623 removes the index preparation record from postgres_async_indexes7624 skips logic if not able to acquire exclusive lease7625 when the index already exists7626 skips index creation7627WebHookWorker7628 #perform7629 delegates to WebHookService7630 does not error when the WebHook record cannot be found7631 behaves like worker with data consistency7632 .get_data_consistency_feature_flag_enabled?7633 returns true7634 .get_data_consistency7635 returns correct data consistency7636Gitlab::SidekiqVersioning::Middleware7637 #call7638 sets worker.job_version7639 yields7640 when worker is not ApplicationWorker7641 does not err7642Auth::DependencyProxyAuthenticationService7643 #execute7644 dependency proxy is not enabled7645 behaves like returning7646 returns dependency proxy not enabled7647 without a user7648 behaves like returning7649 returns access forbidden7650 with a deploy token as user7651 behaves like returning a token7652 returns a token7653 with a user7654 behaves like returning a token7655 returns a token7656Gitlab::SlashCommands::Presenters::IssueSearch7657 formats the message correct7658 shows a list of results7659Gitlab::WordDiff::PositionsCounter7660 Initial state7661 starts with predefined values7662 #increase_pos_num7663 increases old and new positions7664 #increase_obj_index7665 increases object index7666 #set_pos_num7667 sets old and new positions7668Projects::DestroyRollbackService7669 #execute7670 restores the repositories7671admin/sessions/two_factor.html.haml7672 user has no two factor auth7673 shows tab7674 user has otp active7675 shows enter otp form7676 user has u2f active7677 shows enter u2f form7678ChatTeam7679 is expected to belong to namespace required:7680 is expected to validate that :namespace is case-sensitively unique7681 is expected to respond to #name7682 is expected to respond to #team_id7683RuboCop::Cop::UsageData::DistinctCountByLargeForeignKey7684 when counting by disallowed key7685 registers an offense7686 does not register an offense when batch is false7687 registers an offense when batch is true7688 when calling by allowed key7689 does not register an offense with symbol7690 does not register an offense with string7691projects/imports/new.html.haml7692 when import fails7693 escapes HTML in import errors7694gitlab:lfs rake tasks7695 check7696 outputs the integrity check for each batch7697 errors out about missing files on the file system7698 errors out about invalid checksum7699JsonSchemaValidator7700 #validates_each7701 when filename is set7702 when data is valid7703 returns no errors7704 when data is invalid7705 returns json schema is invalid7706 when filename is not set7707 raises an ArgumentError7708 when filename is invalid7709 raises a FilenameError7710FromExcept7711 behaves like from set operator7712 #from_except7713 selects from the results of the EXCEPT7714 supports the use of a custom alias for the sub query7715 supports keeping duplicate rows7716ActiveRecord::QueryRecorder7717 includes duration information7718 printing to the log7719 prints SQL, duration and backtrace, all prefixed with QueryRecorder7720 detecting the right number of calls and their origin7721 detects two separate queries7722RuboCop::Cop::Gitlab::DuplicateSpecLocation7723 Non-EE spec file7724 registers no offenses7725 Non-EE application file7726 registers no offenses7727 EE application file7728 registers no offenses7729 EE spec file for EE only code7730 registers no offenses7731 there is a duplicate file7732 marks the describe as offending7733 EE spec file for EE extension7734 registers no offenses7735 there is a duplicate file7736 marks the describe as offending7737BuildTraceEntity7738 includes build attributes7739 includes trace metadata7740 includes the trace content in json7741Gitlab::Diff::ParallelDiff7742 #parallelize7743 returns an array of arrays containing the parsed diff7744LimitedCapacity::JobTracker7745 #register7746 adds jid to the set7747 returns false if the jid was not added7748 #remove7749 removes jid from the set7750 #clean_up7751 with running jobs7752 does not remove the jid from the set7753 does only one Redis call to get the job ids7754 with completed jobs7755 removes the jid from the set7756 gets the job ids, removes them, and updates the counter with only two Redis calls7757Gitlab::Faraday::ErrorCallback7758 #call7759 with no errors7760 is expected to eq "success"7761 with errors7762 with no callback7763 uses the default callback7764 with a custom callback7765 uses the custom callback7766Ci::DisableUserPipelineSchedulesService7767 #execute7768 when user has active pipeline schedules7769 disables all active pipeline schedules7770Notes::RenderService7771 #execute7772 renders a Note7773Gitlab::Graphql::Timeout7774 inherits from7775 sends the error to our GraphQL logger7776Gitlab::WordDiff::Segments::Newline7777 #to_s7778 is expected to eq ""7779EntityRequest7780 methods created7781 defines accessible attributes7782 raises error when attribute is not defined7783Rails asset host initializer7784 uses no asset host by default7785 with cdn_host defined in gitlab.yml7786 returns https://gitlab.example.com77876_validations7788 validate_storages_config7789 with correct settings7790 passes through7791 with invalid storage names7792 throws an error7793Gitlab::Search::FoundWikiPage7794 policy7795 works with policy7796ExperimentUser7797 Associations7798 is expected to belong to experiment required:7799 is expected to belong to user required:7800 Validations7801 is expected to validate that :group_type cannot be empty/falsy7802EnableSearchSettingsHelper7803 #enable_search_settings7804 sets content for before_content7805Types::Tree::TypeEnum7806 is expected to eq "EntryType"7807 exposes all tree entry types7808ProductAnalytics::Tracker7809 is expected to eq "http://localhost/-/sp.js"7810 is expected to eq "localhost/-/collector"7811API::Entities::Snippets::RepositoryStorageMove7812 #as_json7813 includes basic fields7814API::Validations::Validators::GitRef7815 valid revision param7816 does not raise a validation error7817 revision param contains invalid chars7818 raises a validation error7819SyntheticNote7820 #to_ability_name7821 is expected to eq "note"7822DisallowTwoFactorForGroupWorker7823 updates group7824 updates group members7825Gitlab::SidekiqStatus::ServerMiddleware7826 #call7827 stops tracking of a job upon completion7828Gitlab::Metrics::Dashboard::Stages::TrackPanelType7829 #transform!7830 creates tracking event7831API::Entities::Nuget::PackageMetadataCatalogEntry7832 is expected to eq {:@id=>"http://sandbox.com/json/package", :authors=>"Authors", :dependencyGroups=>[], :iconUrl=>"http...tUrl=>"http://sandbox.com/project", :summary=>"Summary", :tags=>"tag1 tag2 tag3", :version=>"1.2.3"}7833Types::Packages::PackageDependencyLinkType7834 includes package file fields7835Gitlab::Database::Consistency7836 .with_read_consistency7837 sticks to primary database7838Types::AlertManagement::SeverityEnum7839 is expected to eq "AlertManagementSeverity"7840 exposes all the severity values7841Types::Packages::Nuget::MetadatumType7842 includes nuget metadatum fields7843Gitlab::Elasticsearch::Logs::Pods7844 #pods7845 returns the pods7846ExpireBuildArtifactsWorker7847 #perform7848 executes a service7849Types::JiraImportType7850 is expected to eq "JiraImport"7851 has the expected fields7852FeatureGate7853 User7854 #flipper_id7855 when user is not persisted7856 is expected to be nil7857 when user is persisted7858 is expected to eq "User:2957"7859Types::ContainerExpirationPolicyOlderThanEnum7860 behaves like exposing container expiration policy option7861 exposes all options7862 uses all possible options from model7863Gitlab::Usage::Metrics::NamesSuggestions::RelationParsers::Joins7864 #accept7865 with join added via string7866 collects join parts7867 with join added via arel node7868 collects join parts7869Gitlab::SidekiqStatus::ClientMiddleware7870 #call7871 tracks the job in Redis7872Knapsack report was generated. Preview:7873{7874 "spec/services/notification_service_spec.rb": 571.897563646,7875 "spec/models/clusters/applications/elastic_stack_spec.rb": 49.22426881399997,7876 "spec/models/clusters/applications/runner_spec.rb": 47.505985985999814,7877 "spec/models/members/project_member_spec.rb": 33.2271484920002,7878 "spec/services/projects/container_repository/cleanup_tags_service_spec.rb": 25.106192025999917,7879 "spec/models/integration_spec.rb": 24.782495329000085,7880 "spec/services/ci/retry_pipeline_service_spec.rb": 33.2296484819999,7881 "spec/services/projects/destroy_service_spec.rb": 30.319803675000003,7882 "spec/finders/releases_finder_spec.rb": 32.857049926999935,7883 "spec/services/verify_pages_domain_service_spec.rb": 13.07122509599958,7884 "spec/lib/gitlab/database/migrations/background_migration_helpers_spec.rb": 17.393952534000164,7885 "spec/lib/gitlab/ci/pipeline/expression/statement_spec.rb": 11.010954203000438,7886 "spec/uploaders/packages/package_file_uploader_spec.rb": 19.937219182000263,7887 "spec/models/concerns/routable_spec.rb": 11.567420588999994,7888 "spec/models/concerns/integrations/has_data_fields_spec.rb": 16.347094820000166,7889 "spec/models/concerns/cache_markdown_field_spec.rb": 10.36279532000026,7890 "spec/helpers/gitlab_routing_helper_spec.rb": 13.56001775599998,7891 "spec/services/projects/update_repository_storage_service_spec.rb": 13.342558715999985,7892 "spec/uploaders/workers/object_storage/migrate_uploads_worker_spec.rb": 14.6905070290004,7893 "spec/models/packages/debian/group_distribution_spec.rb": 4.145958217999578,7894 "spec/serializers/environment_serializer_spec.rb": 14.022182007000083,7895 "spec/models/concerns/token_authenticatable_spec.rb": 7.001321727999311,7896 "spec/lib/gitlab/json_cache_spec.rb": 2.5801725130004343,7897 "spec/lib/gitlab/ci/status/external/factory_spec.rb": 14.313093406000007,7898 "spec/lib/gitlab/gitaly_client_spec.rb": 2.304650123999636,7899 "spec/graphql/features/authorization_spec.rb": 4.1282791680005175,7900 "spec/policies/group_member_policy_spec.rb": 12.029667869999685,7901 "spec/models/clusters/integrations/prometheus_spec.rb": 10.578760881000562,7902 "spec/lib/gitlab/metrics_spec.rb": 2.251471386999583,7903 "spec/lib/banzai/filter/issuable_state_filter_spec.rb": 11.74404362200039,7904 "spec/graphql/mutations/discussions/toggle_resolve_spec.rb": 6.194914472000164,7905 "spec/services/lfs/file_transformer_spec.rb": 8.875572591000491,7906 "spec/policies/design_management/design_policy_spec.rb": 4.497678052999618,7907 "spec/models/snippet_repository_spec.rb": 5.669689915000163,7908 "spec/models/bulk_imports/entity_spec.rb": 3.682077516999925,7909 "spec/services/merge_requests/add_todo_when_build_fails_service_spec.rb": 11.26789354199991,7910 "spec/graphql/mutations/releases/create_spec.rb": 8.71148657699996,7911 "spec/lib/gitlab/template/gitlab_ci_yml_template_spec.rb": 2.13346348199957,7912 "spec/uploaders/ci/pipeline_artifact_uploader_spec.rb": 6.143999715000064,7913 "spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb": 2.188007349000145,7914 "spec/services/discussions/update_diff_position_service_spec.rb": 9.355658440999832,7915 "spec/graphql/types/base_field_spec.rb": 2.0679341139993994,7916 "spec/lib/gitlab/database/load_balancing/sidekiq_server_middleware_spec.rb": 2.0070173369995246,7917 "spec/services/suggestions/create_service_spec.rb": 9.211795256999721,7918 "spec/models/personal_access_token_spec.rb": 4.117433609000727,7919 "spec/lib/gitlab/search/recent_merge_requests_spec.rb": 8.09164203399996,7920 "spec/presenters/ci/stage_presenter_spec.rb": 6.318326038000123,7921 "spec/lib/gitlab/gitaly_client/operation_service_spec.rb": 1.5912991840004906,7922 "spec/lib/gitlab/sidekiq_config/worker_router_spec.rb": 1.4217981699994198,7923 "spec/services/milestones/promote_service_spec.rb": 8.348705892999533,7924 "spec/graphql/resolvers/project_milestones_resolver_spec.rb": 2.4002139800004443,7925 "spec/graphql/resolvers/design_management/designs_resolver_spec.rb": 4.277240441999311,7926 "spec/models/integrations/redmine_spec.rb": 1.659128621000491,7927 "spec/helpers/sorting_helper_spec.rb": 2.060849144000713,7928 "spec/views/ci/status/_badge.html.haml_spec.rb": 5.332797678000134,7929 "spec/services/draft_notes/create_service_spec.rb": 6.7101469119998,7930 "spec/services/clusters/applications/prometheus_update_service_spec.rb": 8.385943381000288,7931 "spec/models/fork_network_spec.rb": 6.47847690099934,7932 "spec/models/state_note_spec.rb": 1.975425057999928,7933 "spec/lib/gitlab/api_authentication/token_locator_spec.rb": 1.8116217840006357,7934 "spec/lib/gitlab/ci/build/policy/refs_spec.rb": 1.8953622319995702,7935 "spec/models/board_group_recent_visit_spec.rb": 3.522972783000114,7936 "spec/services/ci/play_manual_stage_service_spec.rb": 6.614818885000204,7937 "spec/lib/gitlab/ci/reports/security/vulnerability_reports_comparer_spec.rb": 2.9273150890003308,7938 "spec/lib/banzai/filter/table_of_contents_filter_spec.rb": 1.3646574129998044,7939 "spec/lib/gitlab/ci/config/entry/include_spec.rb": 1.3726698029995532,7940 "spec/services/users/create_service_spec.rb": 2.742573466000067,7941 "spec/lib/gitlab/slash_commands/run_spec.rb": 4.318810170000688,7942 "spec/lib/gitlab/analytics/cycle_analytics/stage_events/code_stage_start_spec.rb": 2.734304257000076,7943 "spec/lib/gitlab/ci/reports/accessibility_reports_spec.rb": 1.105489124000087,7944 "spec/services/clusters/applications/upgrade_service_spec.rb": 7.278528226999697,7945 "spec/models/wiki_page/slug_spec.rb": 1.8149662550003995,7946 "spec/lib/sidebars/projects/menus/packages_registries_menu_spec.rb": 1.7873281359998145,7947 "spec/models/ci/resource_spec.rb": 6.09819357699962,7948 "spec/models/packages/debian/group_distribution_key_spec.rb": 1.1998474599995461,7949 "spec/helpers/nav_helper_spec.rb": 1.961183157999585,7950 "spec/lib/gitlab/ci/config/entry/prefix_spec.rb": 1.080915315999846,7951 "spec/lib/banzai/filter/inline_metrics_filter_spec.rb": 1.3088663950002228,7952 "spec/policies/board_policy_spec.rb": 5.7951490989999,7953 "spec/models/packages/maven/metadatum_spec.rb": 1.6569364020006105,7954 "spec/services/bulk_imports/relation_export_service_spec.rb": 3.2502917249994425,7955 "spec/lib/grafana/time_window_spec.rb": 2.3124072229993544,7956 "spec/services/incident_management/pager_duty/process_webhook_service_spec.rb": 1.5181713669999226,7957 "spec/services/todos/destroy/confidential_issue_service_spec.rb": 5.0043553420000535,7958 "spec/models/lfs_download_object_spec.rb": 1.4975837480005794,7959 "spec/lib/gitlab/metrics/subscribers/rails_cache_spec.rb": 1.4139260410001953,7960 "spec/services/feature_flags/create_service_spec.rb": 1.5499613259999023,7961 "spec/helpers/keyset_helper_spec.rb": 2.806390943000224,7962 "spec/services/metrics/dashboard/pod_dashboard_service_spec.rb": 2.5336766049995276,7963 "spec/services/container_expiration_policies/cleanup_service_spec.rb": 1.467718739000702,7964 "spec/lib/gitlab/ci/templates/Verify/load_performance_testing_gitlab_ci_yaml_spec.rb": 4.944911354999931,7965 "spec/services/deployments/update_service_spec.rb": 3.8488852600003156,7966 "spec/lib/banzai/reference_parser/alert_parser_spec.rb": 3.260516194999582,7967 "spec/lib/gitlab/slash_commands/presenters/deploy_spec.rb": 2.864304390000143,7968 "spec/tooling/rspec_flaky/flaky_example_spec.rb": 1.3894411720002608,7969 "spec/services/merge_requests/reload_merge_head_diff_service_spec.rb": 3.85468204999961,7970 "spec/services/commits/tag_service_spec.rb": 3.6793950359997325,7971 "spec/rubocop/cop/sidekiq_load_balancing/worker_data_consistency_with_deduplication_spec.rb": 1.1176948239999547,7972 "spec/lib/grafana/validator_spec.rb": 1.0010389979997854,7973 "spec/services/service_response_spec.rb": 1.4030136920000587,7974 "spec/lib/api/helpers/packages_helpers_spec.rb": 1.2203555989999586,7975 "spec/finders/merge_requests/by_approvals_finder_spec.rb": 2.605076521999763,7976 "spec/models/concerns/ci/artifactable_spec.rb": 1.9905318869996336,7977 "spec/services/search/snippet_service_spec.rb": 1.7739268459999948,7978 "spec/models/context_commits_diff_spec.rb": 1.710108217999732,7979 "spec/services/repositories/destroy_rollback_service_spec.rb": 3.5801215609999417,7980 "spec/rubocop/cop/migration/add_limit_to_text_columns_spec.rb": 1.9088480899999922,7981 "spec/services/metrics/dashboard/panel_preview_service_spec.rb": 1.1645041620004122,7982 "spec/models/integrations/asana_spec.rb": 2.400547860000188,7983 "spec/serializers/test_suite_summary_entity_spec.rb": 4.035444852999717,7984 "spec/finders/protected_branches_finder_spec.rb": 2.782141003999641,7985 "spec/services/metrics/dashboard/gitlab_alert_embed_service_spec.rb": 1.611882383000193,7986 "spec/lib/banzai/filter/asset_proxy_filter_spec.rb": 1.077676175000306,7987 "spec/services/clusters/kubernetes_spec.rb": 1.0177271980001024,7988 "spec/graphql/types/base_object_spec.rb": 1.9072679299997617,7989 "spec/finders/users_star_projects_finder_spec.rb": 1.9973371169999155,7990 "spec/workers/clusters/applications/activate_service_worker_spec.rb": 2.29108206500041,7991 "spec/lib/gitlab/kubernetes/namespace_spec.rb": 1.027703317000487,7992 "spec/models/integrations/chat_message/wiki_page_message_spec.rb": 1.1909517309995863,7993 "spec/workers/reactive_caching_worker_spec.rb": 2.6069430520001333,7994 "spec/lib/gitlab/web_ide/config/entry/terminal_spec.rb": 0.9983150480002223,7995 "spec/lib/gitlab/ci/config/entry/kubernetes_spec.rb": 0.9079770620001,7996 "spec/workers/jira_connect/sync_branch_worker_spec.rb": 1.2253305289996206,7997 "spec/workers/propagate_integration_project_worker_spec.rb": 3.3965994489999503,7998 "spec/lib/gitlab/usage_data_non_sql_metrics_spec.rb": 1.0905895549994966,7999 "spec/models/snippet_input_action_collection_spec.rb": 0.8993905529996482,8000 "spec/tasks/gettext_rake_spec.rb": 2.0949360220001836,8001 "spec/models/system_note_metadata_spec.rb": 0.8915222129999165,8002 "spec/lib/gitlab/git/user_spec.rb": 1.2225749389999692,8003 "spec/services/milestones/issues_count_service_spec.rb": 2.9351519679994453,8004 "spec/services/releases/create_evidence_service_spec.rb": 1.4150415100002647,8005 "spec/presenters/instance_clusterable_presenter_spec.rb": 2.5488538340005107,8006 "spec/models/badges/project_badge_spec.rb": 1.113843593000638,8007 "spec/presenters/gitlab/blame_presenter_spec.rb": 1.8218067430007068,8008 "spec/graphql/mutations/issues/set_subscription_spec.rb": 2.510222325000541,8009 "spec/lib/gitlab/ci/pipeline/chain/create_spec.rb": 2.1598034700000426,8010 "spec/lib/gitlab/git/raw_diff_change_spec.rb": 0.7583388579996608,8011 "spec/workers/create_pipeline_worker_spec.rb": 1.3542361840000012,8012 "spec/models/clusters/agents/implicit_authorization_spec.rb": 1.0931783340001857,8013 "spec/graphql/types/timelog_type_spec.rb": 0.8378579549998904,8014 "spec/services/base_count_service_spec.rb": 0.9601699400000143,8015 "spec/lib/gitlab/checks/lfs_check_spec.rb": 1.6013717530004214,8016 "spec/tooling/rspec_flaky/report_spec.rb": 1.2481283380002424,8017 "spec/lib/gitlab/usage_data_counters/source_code_counter_spec.rb": 0.8480000939998718,8018 "spec/rubocop/cop/performance/active_record_subtransactions_spec.rb": 0.8161936160004188,8019 "spec/lib/gitlab/manifest_import/metadata_spec.rb": 0.8524588939999376,8020 "spec/lib/gitlab/ci/status/pipeline/delayed_spec.rb": 1.1663547320004,8021 "spec/lib/gitlab/suggestions/commit_message_spec.rb": 1.843769322999833,8022 "spec/serializers/merge_request_for_pipeline_entity_spec.rb": 1.4019480010001644,8023 "spec/policies/resource_label_event_policy_spec.rb": 1.4334112200003801,8024 "spec/lib/gitlab/dependency_linker/gemspec_linker_spec.rb": 0.8164682159995209,8025 "spec/models/gpg_key_subkey_spec.rb": 0.7779528979999668,8026 "spec/services/protected_tags/update_service_spec.rb": 1.3792220220002491,8027 "spec/helpers/projects/terraform_helper_spec.rb": 1.2940807559998575,8028 "spec/services/users/dismiss_group_callout_service_spec.rb": 0.8962053919995014,8029 "spec/lib/gitlab/data_builder/deployment_spec.rb": 2.116115300999809,8030 "spec/lib/gitlab/pagination/keyset_spec.rb": 0.6822281920003661,8031 "spec/helpers/blame_helper_spec.rb": 0.6986830709993228,8032 "spec/lib/gitlab/cross_project_access/check_collection_spec.rb": 0.7117973100002928,8033 "spec/lib/gitlab/content_security_policy/config_loader_spec.rb": 0.8254194459996143,8034 "spec/policies/packages/package_policy_spec.rb": 0.9519058300002143,8035 "spec/lib/gitlab/utils/gzip_spec.rb": 0.7789171080003143,8036 "spec/lib/gitlab/rate_limit_helpers_spec.rb": 0.9062093519996779,8037 "spec/lib/gitlab/auth/saml/auth_hash_spec.rb": 0.8129422860001796,8038 "spec/lib/generators/gitlab/snowplow_event_definition_generator_spec.rb": 0.7221816700002819,8039 "spec/lib/gitlab/etag_caching/router/graphql_spec.rb": 0.9156611919997886,8040 "spec/lib/gitlab/avatar_cache_spec.rb": 0.8413520350004546,8041 "spec/lib/gitlab/github_import/object_counter_spec.rb": 1.0399855370005753,8042 "spec/lib/gitlab/prometheus/queries/deployment_query_spec.rb": 0.9725623100002849,8043 "spec/workers/run_pipeline_schedule_worker_spec.rb": 1.0690813049995995,8044 "spec/experiments/new_project_readme_content_experiment_spec.rb": 1.7910318550002557,8045 "spec/lib/gitlab/import_export/uploads_saver_spec.rb": 1.8408299339998848,8046 "spec/services/bulk_imports/file_decompression_service_spec.rb": 1.0647140759992908,8047 "spec/lib/gitlab/ci/build/artifacts/expire_in_parser_spec.rb": 0.775588608000362,8048 "spec/graphql/features/feature_flag_spec.rb": 0.9467397110001912,8049 "spec/workers/deployments/drop_older_deployments_worker_spec.rb": 0.9602655400003641,8050 "spec/workers/hashed_storage/rollbacker_worker_spec.rb": 1.7062988389998281,8051 "spec/lib/gitlab/noteable_metadata_spec.rb": 1.0383587060005084,8052 "spec/graphql/types/design_management/design_type_spec.rb": 1.4688953389995731,8053 "spec/graphql/mutations/alert_management/http_integration/destroy_spec.rb": 1.3548744130002888,8054 "spec/models/blob_viewer/go_mod_spec.rb": 0.8199178160002702,8055 "spec/models/instance_metadata_spec.rb": 0.5942784849994496,8056 "spec/workers/pages_domain_removal_cron_worker_spec.rb": 0.8398653650001506,8057 "spec/tasks/gitlab/terraform/migrate_rake_spec.rb": 1.1118197730002066,8058 "spec/lib/gitlab/ci/reports/codequality_reports_spec.rb": 0.7179532500003916,8059 "spec/lib/gitlab/utils/log_limited_array_spec.rb": 0.6587713429998985,8060 "spec/lib/bulk_imports/pipeline/runner_spec.rb": 0.8991339719996176,8061 "spec/workers/build_hooks_worker_spec.rb": 1.4970801080007732,8062 "spec/services/ci/compare_codequality_reports_service_spec.rb": 1.5431839460006813,8063 "spec/lib/gitlab/bullet_spec.rb": 0.7186164899994765,8064 "spec/rubocop/cop/graphql/authorize_types_spec.rb": 0.8774840229998517,8065 "spec/models/cycle_analytics/project_level_stage_adapter_spec.rb": 1.1410788920002233,8066 "spec/graphql/mutations/alert_management/http_integration/create_spec.rb": 1.0220109170004434,8067 "spec/lib/gitlab/database/async_indexes/index_creator_spec.rb": 0.7822199070005809,8068 "spec/workers/web_hook_worker_spec.rb": 1.2824936269998943,8069 "spec/lib/gitlab/sidekiq_versioning/middleware_spec.rb": 0.7463309290005782,8070 "spec/services/auth/dependency_proxy_authentication_service_spec.rb": 0.8893708329997025,8071 "spec/lib/gitlab/slash_commands/presenters/issue_search_spec.rb": 1.3921038220005357,8072 "spec/lib/gitlab/word_diff/positions_counter_spec.rb": 0.8270801449998544,8073 "spec/services/projects/destroy_rollback_service_spec.rb": 1.3687640030002513,8074 "spec/views/admin/sessions/two_factor.html.haml_spec.rb": 1.2691045179999492,8075 "spec/models/chat_team_spec.rb": 0.7791755580001336,8076 "spec/rubocop/cop/usage_data/distinct_count_by_large_foreign_key_spec.rb": 0.7338436290001482,8077 "spec/views/projects/imports/new.html.haml_spec.rb": 1.483009337999647,8078 "spec/tasks/gitlab/lfs/check_rake_spec.rb": 0.8936599030002981,8079 "spec/validators/json_schema_validator_spec.rb": 0.8114565559999392,8080 "spec/models/concerns/from_except_spec.rb": 0.6656391920005262,8081 "spec/support_specs/helpers/active_record/query_recorder_spec.rb": 0.8209320160003699,8082 "spec/rubocop/cop/gitlab/duplicate_spec_location_spec.rb": 0.848424564999732,8083 "spec/serializers/build_trace_entity_spec.rb": 0.7400085689996558,8084 "spec/lib/gitlab/diff/parallel_diff_spec.rb": 0.9514374399996086,8085 "spec/workers/concerns/limited_capacity/job_tracker_spec.rb": 0.7639465880001808,8086 "spec/lib/gitlab/faraday/error_callback_spec.rb": 0.578849846000594,8087 "spec/services/ci/disable_user_pipeline_schedules_service_spec.rb": 0.9938274890000685,8088 "spec/services/notes/render_service_spec.rb": 0.6180448240002079,8089 "spec/lib/gitlab/graphql/timeout_spec.rb": 0.8189514160003455,8090 "spec/lib/gitlab/word_diff/segments/newline_spec.rb": 0.6386643139994703,8091 "spec/serializers/entity_request_spec.rb": 0.632075384000018,8092 "spec/initializers/rails_asset_host_spec.rb": 0.716121080999983,8093 "spec/initializers/6_validations_spec.rb": 0.7495056480001949,8094 "spec/lib/gitlab/search/found_wiki_page_spec.rb": 0.7604878579995784,8095 "spec/models/experiment_user_spec.rb": 0.7896613969996906,8096 "spec/helpers/enable_search_settings_helper_spec.rb": 0.5966922450006678,8097 "spec/graphql/types/tree/type_enum_spec.rb": 0.6473036729994419,8098 "spec/lib/product_analytics/tracker_spec.rb": 0.6774835020005412,8099 "spec/lib/api/entities/snippets/repository_storage_move_spec.rb": 0.7596183679997921,8100 "spec/lib/api/validations/validators/git_ref_spec.rb": 0.7476829790002739,8101 "spec/models/synthetic_note_spec.rb": 0.602556894999907,8102 "spec/workers/disallow_two_factor_for_group_worker_spec.rb": 0.9645509089996267,8103 "spec/lib/gitlab/sidekiq_status/server_middleware_spec.rb": 0.6703246220004075,8104 "spec/lib/gitlab/metrics/dashboard/stages/track_panel_type_spec.rb": 0.6360812240000087,8105 "spec/lib/api/entities/nuget/package_metadata_catalog_entry_spec.rb": 0.6301178229996367,8106 "spec/graphql/types/packages/package_dependency_link_type_spec.rb": 0.5720316850001836,8107 "spec/lib/gitlab/database/consistency_spec.rb": 0.7686359970002741,8108 "spec/graphql/types/alert_management/severity_enum_spec.rb": 0.6465640630003691,8109 "spec/graphql/types/packages/nuget/metadatum_type_spec.rb": 0.6802970219996496,8110 "spec/lib/gitlab/elasticsearch/logs/pods_spec.rb": 0.6234234539997487,8111 "spec/workers/expire_build_artifacts_worker_spec.rb": 0.609290004000286,8112 "spec/graphql/types/jira_import_type_spec.rb": 0.698354911000024,8113 "spec/models/concerns/feature_gate_spec.rb": 0.8252143059999071,8114 "spec/graphql/types/container_expiration_policy_older_than_enum_spec.rb": 0.7127623199994559,8115 "spec/lib/gitlab/usage/metrics/names_suggestions/relation_parsers/joins_spec.rb": 0.8064425359998495,8116 "spec/lib/gitlab/sidekiq_status/client_middleware_spec.rb": 0.76932803800082188117}8118Knapsack global time execution for tests: 25m 04s8119Pending: (Failures listed here are expected and do not affect your suite's status)8120 1) Projects::DestroyService with async_execute behaves like deleting the project with pipeline and build with pipeline and build related records avoids N+1 queries8121 # skipped until fixed in https://gitlab.com/gitlab-org/gitlab/-/issues/246448122 # ./spec/services/projects/destroy_service_spec.rb:538123 2) Packages::PackageFileUploader package_file behaves like builds correct paths #upload_path behaves like matches the method pattern 8124 # No pattern provided, skipping.8125 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88126 3) Packages::PackageFileUploader package_file behaves like builds correct paths #relative_path is relative8127 # Path not set, skipping.8128 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:408129 4) Packages::PackageFileUploader package_file behaves like builds correct paths .absolute_path behaves like matches the method pattern 8130 # No pattern provided, skipping.8131 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88132 5) Packages::PackageFileUploader package_file behaves like builds correct paths .base_dir behaves like matches the method pattern 8133 # No pattern provided, skipping.8134 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88135 6) Packages::PackageFileUploader package_file object store is remote behaves like builds correct paths #cache_dir behaves like matches the method pattern 8136 # No pattern provided, skipping.8137 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88138 7) Packages::PackageFileUploader package_file object store is remote behaves like builds correct paths #work_dir behaves like matches the method pattern 8139 # No pattern provided, skipping.8140 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88141 8) Packages::PackageFileUploader package_file object store is remote behaves like builds correct paths #upload_path behaves like matches the method pattern 8142 # No pattern provided, skipping.8143 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88144 9) Packages::PackageFileUploader package_file object store is remote behaves like builds correct paths #relative_path is relative8145 # Path not set, skipping.8146 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:408147 10) Packages::PackageFileUploader package_file object store is remote behaves like builds correct paths .absolute_path behaves like matches the method pattern 8148 # No pattern provided, skipping.8149 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88150 11) Packages::PackageFileUploader package_file object store is remote behaves like builds correct paths .base_dir behaves like matches the method pattern 8151 # No pattern provided, skipping.8152 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88153 12) Packages::PackageFileUploader debian_package_file behaves like builds correct paths #upload_path behaves like matches the method pattern 8154 # No pattern provided, skipping.8155 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88156 13) Packages::PackageFileUploader debian_package_file behaves like builds correct paths #relative_path is relative8157 # Path not set, skipping.8158 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:408159 14) Packages::PackageFileUploader debian_package_file behaves like builds correct paths .absolute_path behaves like matches the method pattern 8160 # No pattern provided, skipping.8161 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88162 15) Packages::PackageFileUploader debian_package_file behaves like builds correct paths .base_dir behaves like matches the method pattern 8163 # No pattern provided, skipping.8164 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88165 16) Packages::PackageFileUploader debian_package_file object store is remote behaves like builds correct paths #cache_dir behaves like matches the method pattern 8166 # No pattern provided, skipping.8167 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88168 17) Packages::PackageFileUploader debian_package_file object store is remote behaves like builds correct paths #work_dir behaves like matches the method pattern 8169 # No pattern provided, skipping.8170 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88171 18) Packages::PackageFileUploader debian_package_file object store is remote behaves like builds correct paths #upload_path behaves like matches the method pattern 8172 # No pattern provided, skipping.8173 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88174 19) Packages::PackageFileUploader debian_package_file object store is remote behaves like builds correct paths #relative_path is relative8175 # Path not set, skipping.8176 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:408177 20) Packages::PackageFileUploader debian_package_file object store is remote behaves like builds correct paths .absolute_path behaves like matches the method pattern 8178 # No pattern provided, skipping.8179 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88180 21) Packages::PackageFileUploader debian_package_file object store is remote behaves like builds correct paths .base_dir behaves like matches the method pattern 8181 # No pattern provided, skipping.8182 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88183 22) Ci::PipelineArtifactUploader behaves like builds correct paths #upload_path behaves like matches the method pattern 8184 # No pattern provided, skipping.8185 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88186 23) Ci::PipelineArtifactUploader behaves like builds correct paths #relative_path is relative8187 # Path not set, skipping.8188 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:408189 24) Ci::PipelineArtifactUploader behaves like builds correct paths .absolute_path behaves like matches the method pattern 8190 # No pattern provided, skipping.8191 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88192 25) Ci::PipelineArtifactUploader behaves like builds correct paths .base_dir behaves like matches the method pattern 8193 # No pattern provided, skipping.8194 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88195 26) Ci::PipelineArtifactUploader when object store is REMOTE behaves like builds correct paths #cache_dir behaves like matches the method pattern 8196 # No pattern provided, skipping.8197 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88198 27) Ci::PipelineArtifactUploader when object store is REMOTE behaves like builds correct paths #work_dir behaves like matches the method pattern 8199 # No pattern provided, skipping.8200 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88201 28) Ci::PipelineArtifactUploader when object store is REMOTE behaves like builds correct paths #upload_path behaves like matches the method pattern 8202 # No pattern provided, skipping.8203 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88204 29) Ci::PipelineArtifactUploader when object store is REMOTE behaves like builds correct paths #relative_path is relative8205 # Path not set, skipping.8206 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:408207 30) Ci::PipelineArtifactUploader when object store is REMOTE behaves like builds correct paths .absolute_path behaves like matches the method pattern 8208 # No pattern provided, skipping.8209 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88210 31) Ci::PipelineArtifactUploader when object store is REMOTE behaves like builds correct paths .base_dir behaves like matches the method pattern 8211 # No pattern provided, skipping.8212 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88213Finished in 25 minutes 7 seconds (files took 47.52 seconds to load)82143567 examples, 0 failures, 31 pending8215Wed 22 Sep 2021 10:44:51 AM UTC8217Not uploading cache ruby-gems-v1-4 due to policy8218Not uploading cache gitaly-ruby-gems-v1-4 due to policy8220Uploading artifacts...8221coverage/: found 5 matching files and directories 8222WARNING: crystalball/: no matching files 8223WARNING: deprecations/: no matching files 8224knapsack/: found 3 matching files and directories 8225rspec_flaky/: found 4 matching files and directories 8226rspec_profiling/: found 1 matching files and directories 8227WARNING: tmp/capybara/: no matching files 8228tmp/memory_test/: found 2 matching files and directories 8229log/*.log: found 18 matching files and directories 8230Uploading artifacts as "archive" to coordinator... ok id=1612163247 responseStatus=201 Created token=QHtSLgfE8231Uploading artifacts...8232junit_rspec.xml: found 1 matching files and directories 8233Uploading artifacts as "junit" to coordinator... ok id=1612163247 responseStatus=201 Created token=QHtSLgfE8235Job succeeded