rspec unit pg12 18/22
Passed Started
by
@.luke

Luke Duncalfe
1Running with gitlab-runner 14.5.2 (e91107dd)2 on blue-2.private.runners-manager.gitlab.com/gitlab.com/gitlab-org QvBVRoXM3 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.33-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:f1a5e4852a8c335ef0f1a3aae30c39c8484660d5aa7dfd5bb8756ee473575da5 for postgres:12 with digest postgres@sha256:0854202db0b3378c46909bab43a85b01dc1b92cc44520480e47dd4fbc22714ee ...10Starting service redis:5.0-alpine ...11Pulling docker image redis:5.0-alpine ...12Using docker image sha256:1746b159f8934fe63cae3984643ee8c5651bcfc80ae107032a60f2871a0e7cdb for redis:5.0-alpine with digest redis@sha256:a04b57e05b784a406bc818f6b450233328c4115a1e1f104d84ce916eb1583925 ...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.33-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36 ...16Using docker image sha256:5b9920187fd97abe77ba8b8a3c8029b970dbace758fd2dc8756c2976a4bff96d for registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.33-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:4ab23b0728c6791b71363fe9413ab1d284f8d163988ebd8823dfb84f31aafe00 ...18Running on runner-qvbvroxm-project-278964-concurrent-0 via runner-qvbvroxm-private-1639434189-3b095954...20$ eval "$CI_PRE_CLONE_SCRIPT"21Fetching changes with git depth set to 20...22Initialized empty Git repository in /builds/gitlab-org/gitlab/.git/23Created fresh repository.24remote: Enumerating objects: 91326, done. 25remote: Counting objects: 100% (91326/91326), done. 26remote: Compressing objects: 100% (68267/68267), done. 27remote: Total 91326 (delta 30507), reused 60832 (delta 19269), pack-reused 0 28Receiving objects: 100% (91326/91326), 103.88 MiB | 29.96 MiB/s, done.29Resolving deltas: 100% (30507/30507), done.31 * [new ref] 74a38a79b62c49b1e9b89b9829f66b53abaed5a9 -> refs/pipelines/42880374432 * [new branch] master -> origin/master33Checking out 74a38a79 as master...34Skipping Git submodules setup36Checking cache for ruby-gems-v1-9...37cache.zip is up to date 38Successfully extracted cache39Checking cache for gitaly-ruby-gems-v1-9...40cache.zip is up to date 41Successfully extracted cache43Downloading artifacts for compile-test-assets (1880797874)...44Downloading artifacts from coordinator... ok id=1880797874 responseStatus=200 OK token=HwSwMQAA45Downloading artifacts for detect-tests (1880797889)...46Downloading artifacts from coordinator... ok id=1880797889 responseStatus=200 OK token=cosp53gX47Downloading artifacts for retrieve-tests-metadata (1880797899)...48Downloading artifacts from coordinator... ok id=1880797899 responseStatus=200 OK token=mhRg1nsp49Downloading artifacts for setup-test-env (1880797883)...50Downloading artifacts from coordinator... ok id=1880797883 responseStatus=200 OK token=eZ79kRQL52Using docker image sha256:5b9920187fd97abe77ba8b8a3c8029b970dbace758fd2dc8756c2976a4bff96d for registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.33-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:4ab23b0728c6791b71363fe9413ab1d284f8d163988ebd8823dfb84f31aafe00 ...53$ echo $FOSS_ONLY54$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb55$ export GOPATH=$CI_PROJECT_DIR/.go56$ mkdir -p $GOPATH57$ source scripts/utils.sh58$ source scripts/prepare_build.sh59Bundler version 2.1.460production:development61Settings are listed in order of priority. The top value will be used.62path63Set for the current user (/root/.bundle/config): "/builds/gitlab-org/gitlab/vendor"64clean65Set for the current user (/root/.bundle/config): "true"66without67Set via BUNDLE_WITHOUT: [:production, :development]68install_flags69Set via BUNDLE_INSTALL_FLAGS: "--jobs=$(nproc) --retry=3 --quiet"70$ bundle install --jobs=$(nproc) --retry=3 --quiet && bundle check71The Gemfile's dependencies are satisfied72==> 'bundle install --jobs=$(nproc) --retry=3 --quiet && bundle check' succeeded in 2 seconds.73$ bundle pristine pg74Installing pg 1.2.3 with native extensions75==> 'bundle pristine pg' succeeded in 10 seconds.76$ setup_db_user_only77CREATE ROLE78GRANT79==> 'setup_db_user_only' succeeded in 0 seconds.80$ bundle exec rake db:drop db:create db:structure:load db:migrate gitlab:db:setup_ee81Dropped database 'gitlabhq_test'82Dropped database 'gitlabhq_geo_test'83Created database 'gitlabhq_test'84Created database 'gitlabhq_geo_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 30 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 0 seconds.94$ run_timed_command "scripts/gitaly-test-spawn"95$ scripts/gitaly-test-spawn96Don't run Bundler as root. Bundler can ask for sudo if it is needed, and97installing your bundle as root will break this application for all non-root98users on this machine.99Using abstract_type 0.0.7100Using concurrent-ruby 1.1.9101Using i18n 1.8.10102Using minitest 5.14.4103Using tzinfo 2.0.4104Using zeitwerk 2.4.2105Using activesupport 6.1.4.1106Using builder 3.2.4107Using erubi 1.10.0108Using mini_portile2 2.5.1109Using racc 1.5.2110Using nokogiri 1.11.7 (x86_64-linux)111Using rails-dom-testing 2.0.3112Using crass 1.0.6113Using loofah 2.12.0114Using rails-html-sanitizer 1.4.2115Using actionview 6.1.4.1116Using rack 2.2.3117Using rack-test 1.1.0118Using actionpack 6.1.4.1119Using ice_nine 0.11.2120Using thread_safe 0.3.6121Using memoizable 0.4.2122Using adamantium 0.2.0123Using public_suffix 4.0.6124Using addressable 2.7.0125Using ast 2.4.1126Using binding_ninja 0.2.3127Using bundler 2.1.4128Using charlock_holmes 0.7.7129Using coderay 1.1.2130Using equalizer 0.0.11131Using concord 0.1.5132Using diff-lcs 1.3133Using dotenv 2.7.6134Using escape_utils 1.2.1135Using factory_bot 5.0.2136Using multipart-post 2.1.1137Using faraday 1.0.1138Using ffi 1.15.3139Using json 2.5.1140Using gemojione 3.3.0141Using mini_mime 1.0.2142Using rugged 1.2.0143Using github-linguist 7.12.1144Using github-markup 1.7.0145Using mime-types-data 3.2020.1104146Using mime-types 3.3.1147Using gitlab-gollum-rugged_adapter 0.4.4.4.gitlab.1148Using rouge 3.26.0149Using nokogumbo 1.5.0150Using sanitize 4.6.6151Using stringex 2.8.5152Using gitlab-gollum-lib 4.2.7.10.gitlab.1153Using google-protobuf 3.17.3 (x86_64-linux)154Using googleapis-common-protos-types 1.1.0155Using grpc 1.30.2 (x86_64-linux)156Using opentracing 0.5.0157Using thrift 0.15.0158Using jaeger-client 1.1.0159Using pg_query 2.1.1160Using redis 4.4.0161Using gitlab-labkit 0.21.2162Using rubyzip 2.3.2163Using thor 1.1.0164Using tomlrb 2.0.1165Using with_env 1.1.0166Using rexml 3.2.4167Using xml-simple 1.1.9168Using gitlab-license_finder 6.14.2.1169Using gitlab-markup 1.7.1170Using grpc-tools 1.30.2171Using sawyer 0.8.2172Using octokit 4.20.0173Using reverse_markdown 1.4.0174Using licensee 9.14.1175Using method_source 0.9.2176Using msgpack 1.3.3177Using optimist 3.0.1178Using parallel 1.19.2179Using parser 2.7.2.0180Using procto 0.0.3181Using unparser 0.4.7182Using proc_to_ast 0.1.0183Using pry 0.12.2184Using rainbow 3.0.0185Using rbtrace 0.4.14186Using rdoc 6.3.2187Using regexp_parser 1.8.1188Using rspec-support 3.8.0189Using rspec-core 3.8.0190Using rspec-expectations 3.8.3191Using rspec-mocks 3.8.0192Using rspec 3.8.0193Using rspec-parameterized 0.4.2194Using rubocop-ast 0.2.0195Using ruby-progressbar 1.10.1196Using unicode-display_width 1.7.0197Using rubocop 0.86.0198Using sentry-raven 3.0.4199Using timecop 0.9.1200Bundle complete! 22 Gemfile dependencies, 101 gems now installed.201Gems in the groups production and development were not installed.202Bundled gems are installed into `/builds/gitlab-org/gitlab/vendor/gitaly-ruby`203Checking gitaly-ruby Gemfile...204Checking gitaly-ruby bundle...205The Gemfile's dependencies are satisfied206Trying to connect to gitaly: ................................................ OK207Trying to connect to gitaly2: ................................................................... OK208Trying to connect to praefect: .......... OK209==> 'scripts/gitaly-test-spawn' succeeded in 14 seconds.210$ source ./scripts/rspec_helpers.sh211$ rspec_paralellized_job "--tag ~quarantine --tag ~geo --tag ~level:migration"212KNAPSACK_TEST_FILE_PATTERN: spec/{bin,channels,config,db,dependencies,elastic,elastic_integration,experiments,factories,finders,frontend,graphql,haml_lint,helpers,initializers,javascripts,lib,metrics_server,models,policies,presenters,rack_servers,replicators,routing,rubocop,scripts,serializers,services,sidekiq,sidekiq_cluster,spam,support_specs,tasks,uploaders,validators,views,workers,tooling}{,/**/}*_spec.rb213SKIP_FLAKY_TESTS_AUTOMATICALLY: true214Knapsack node specs:215spec/models/merge_request_spec.rb216spec/policies/project_policy_spec.rb217spec/services/git/branch_push_service_spec.rb218spec/finders/group_members_finder_spec.rb219spec/uploaders/design_management/design_v432x230_uploader_spec.rb220spec/lib/gitlab/usage_data_metrics_spec.rb221spec/models/ci/runner_spec.rb222spec/policies/project_statistics_policy_spec.rb223spec/services/merge_requests/merge_service_spec.rb224spec/services/boards/lists/move_service_spec.rb225spec/policies/blob_policy_spec.rb226spec/models/integrations/bamboo_spec.rb227spec/lib/gitlab/ci/config/entry/job_spec.rb228spec/lib/banzai/color_parser_spec.rb229spec/lib/gitlab/gitaly_client/commit_service_spec.rb230spec/lib/gitlab/project_authorizations_spec.rb231spec/models/pages_domain_spec.rb232spec/helpers/namespaces_helper_spec.rb233spec/serializers/environment_serializer_spec.rb234spec/models/notification_recipient_spec.rb235spec/uploaders/workers/object_storage/migrate_uploads_worker_spec.rb236spec/services/members/update_service_spec.rb237spec/models/merge_request_diff_file_spec.rb238spec/workers/packages/debian/process_changes_worker_spec.rb239spec/lib/error_tracking/sentry_client/issue_spec.rb240spec/lib/gitlab/usage/metric_definition_spec.rb241spec/models/concerns/chronic_duration_attribute_spec.rb242spec/lib/gitlab/hashed_storage/migrator_spec.rb243spec/workers/process_commit_worker_spec.rb244spec/serializers/issue_entity_spec.rb245spec/lib/gitlab/json_spec.rb246spec/models/concerns/routable_spec.rb247spec/lib/gitlab/experimentation/controller_concern_spec.rb248spec/services/jira/requests/projects/list_service_spec.rb249spec/models/ci/daily_build_group_report_result_spec.rb250spec/services/projects/protect_default_branch_service_spec.rb251spec/lib/gitlab/import_export/group/relation_tree_restorer_spec.rb252spec/services/snippets/destroy_service_spec.rb253spec/lib/gitlab/kubernetes/helm/v2/init_command_spec.rb254spec/lib/gitlab/database/migration_helpers/v2_spec.rb255spec/lib/gitlab/ci/trace/checksum_spec.rb256spec/policies/ci/pipeline_policy_spec.rb257spec/lib/container_registry/blob_spec.rb258spec/services/clusters/applications/check_ingress_ip_address_service_spec.rb259spec/finders/fork_projects_finder_spec.rb260spec/lib/gitlab/pagination/keyset/paginator_spec.rb261spec/services/issues/set_crm_contacts_service_spec.rb262spec/services/ci/archive_trace_service_spec.rb263spec/services/snippets/update_statistics_service_spec.rb264spec/finders/projects/groups_finder_spec.rb265spec/services/ci/job_artifacts/create_service_spec.rb266spec/lib/gitlab/error_tracking_spec.rb267spec/presenters/projects/settings/deploy_keys_presenter_spec.rb268spec/lib/gitlab/slash_commands/presenters/issue_move_spec.rb269spec/views/notify/pipeline_failed_email.html.haml_spec.rb270spec/services/labels/create_service_spec.rb271spec/lib/gitlab/metrics/methods_spec.rb272spec/models/hooks/project_hook_spec.rb273spec/views/projects/merge_requests/show.html.haml_spec.rb274spec/models/concerns/schedulable_spec.rb275spec/serializers/discussion_diff_file_entity_spec.rb276spec/finders/contributed_projects_finder_spec.rb277spec/lib/gitlab/database/count_spec.rb278spec/models/concerns/project_features_compatibility_spec.rb279spec/services/concerns/rate_limited_service_spec.rb280spec/lib/gitlab/rack_attack_spec.rb281spec/lib/gitlab/ci/reports/test_reports_spec.rb282spec/tasks/gettext_rake_spec.rb283spec/services/ci/run_scheduled_build_service_spec.rb284spec/lib/gitlab/visibility_level_checker_spec.rb285spec/lib/gitlab/slash_commands/presenters/issue_show_spec.rb286spec/workers/ci/delete_unit_tests_worker_spec.rb287spec/models/packages/dependency_link_spec.rb288spec/lib/gitlab/kubernetes/helm/v2/install_command_spec.rb289spec/config/inject_enterprise_edition_module_spec.rb290spec/models/lfs_download_object_spec.rb291spec/lib/gitlab/ci/config/entry/service_spec.rb292spec/finders/concerns/finder_with_group_hierarchy_spec.rb293spec/lib/gitlab/ci/reports/security/report_spec.rb294spec/lib/gitlab/shell_spec.rb295spec/services/terraform/remote_state_handler_spec.rb296spec/helpers/routing/pseudonymization_helper_spec.rb297spec/lib/gitlab/database/partitioning/time_partition_spec.rb298spec/views/projects/commit/show.html.haml_spec.rb299spec/lib/banzai/reference_parser/label_parser_spec.rb300spec/lib/banzai/filter/wiki_link_filter_spec.rb301spec/views/shared/_global_alert.html.haml_spec.rb302spec/services/alert_management/alerts/todo/create_service_spec.rb303spec/graphql/resolvers/design_management/version/design_at_version_resolver_spec.rb304spec/lib/gitlab/kubernetes/helm/v3/patch_command_spec.rb305spec/services/chat_names/find_user_service_spec.rb306spec/graphql/mutations/terraform/state/delete_spec.rb307spec/services/metrics/dashboard/transient_embed_service_spec.rb308spec/lib/gitlab/null_request_store_spec.rb309spec/models/experiment_subject_spec.rb310spec/models/integrations/bugzilla_spec.rb311spec/lib/gitlab/wiki_pages/front_matter_parser_spec.rb312spec/lib/gitlab/checks/diff_check_spec.rb313spec/workers/concerns/limited_capacity/worker_spec.rb314spec/finders/protected_branches_finder_spec.rb315spec/models/packages/debian/group_distribution_key_spec.rb316spec/lib/gitlab/ci/config/external/file/project_spec.rb317spec/lib/gitlab/database/partitioning_migration_helpers/index_helpers_spec.rb318spec/models/ci/freeze_period_spec.rb319spec/lib/gitlab/suggestions/suggestion_set_spec.rb320spec/lib/banzai/reference_parser/mentioned_user_parser_spec.rb321spec/lib/gitlab/config/entry/undefined_spec.rb322spec/tasks/gitlab/external_diffs_rake_spec.rb323spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_stage_end_spec.rb324spec/finders/prometheus_metrics_finder_spec.rb325spec/lib/gitlab/static_site_editor/config/generated_config_spec.rb326spec/workers/personal_access_tokens/expiring_worker_spec.rb327spec/lib/gitlab/bullet/exclusions_spec.rb328spec/lib/gitlab/jwt_authenticatable_spec.rb329spec/graphql/mutations/todos/mark_all_done_spec.rb330spec/services/ci/job_token_scope/remove_project_service_spec.rb331spec/validators/json_schema_validator_spec.rb332spec/views/projects/diffs/_viewer.html.haml_spec.rb333spec/services/error_tracking/base_service_spec.rb334spec/lib/gitlab/background_migration/remove_occurrence_pipelines_and_duplicate_vulnerabilities_findings_spec.rb335spec/lib/gitlab/git/keep_around_spec.rb336spec/presenters/ci/group_variable_presenter_spec.rb337spec/lib/api/helpers/related_resources_helpers_spec.rb338spec/lib/bulk_imports/groups/loaders/group_loader_spec.rb339spec/services/ci/pipeline_artifacts/coverage_report_service_spec.rb340spec/graphql/mutations/terraform/state/lock_spec.rb341spec/services/snippets/count_service_spec.rb342spec/lib/banzai/filter/inline_cluster_metrics_filter_spec.rb343spec/services/ci/compare_test_reports_service_spec.rb344spec/lib/gitlab/dependency_linker/package_json_linker_spec.rb345spec/helpers/instance_configuration_helper_spec.rb346spec/graphql/mutations/security/ci_configuration/configure_secret_detection_spec.rb347spec/services/system_notes/base_service_spec.rb348spec/lib/gitlab/ci/templates/5_minute_production_app_ci_yaml_spec.rb349spec/lib/gitlab/kas/client_spec.rb350spec/serializers/member_serializer_spec.rb351spec/lib/banzai/filter/inline_diff_filter_spec.rb352spec/graphql/types/namespace_type_spec.rb353spec/lib/gitlab/exclusive_lease_helpers_spec.rb354spec/services/audit_event_service_spec.rb355spec/models/gpg_key_subkey_spec.rb356spec/lib/gitlab/graphql/batch_key_spec.rb357spec/graphql/resolvers/design_management/design_at_version_resolver_spec.rb358spec/lib/gitlab/loop_helpers_spec.rb359spec/rubocop/cop/rspec/env_assignment_spec.rb360spec/lib/gitlab/search_context/controller_concern_spec.rb361spec/workers/repository_remove_remote_worker_spec.rb362spec/services/ci/create_pipeline_service/creation_errors_and_warnings_spec.rb363spec/lib/gitlab/hook_data/group_builder_spec.rb364spec/finders/terraform/states_finder_spec.rb365spec/lib/bulk_imports/common/pipelines/entity_finisher_spec.rb366spec/workers/migrate_external_diffs_worker_spec.rb367spec/graphql/types/base_edge_spec.rb368spec/workers/update_highest_role_worker_spec.rb369spec/workers/authorized_project_update/user_refresh_with_low_urgency_worker_spec.rb370spec/lib/gitlab/git/changes_spec.rb371spec/graphql/mutations/terraform/state/unlock_spec.rb372spec/lib/gitlab/data_builder/wiki_page_spec.rb373spec/lib/bulk_imports/groups/pipelines/subgroup_entities_pipeline_spec.rb374spec/views/projects/environments/terminal.html.haml_spec.rb375spec/lib/gitlab/crypto_helper_spec.rb376spec/lib/gitlab/ci/config/entry/release/assets/link_spec.rb377spec/lib/gitlab/database/postgresql_adapter/empty_query_ping_spec.rb378spec/presenters/service_hook_presenter_spec.rb379spec/graphql/types/ci/pipeline_type_spec.rb380spec/services/issues/after_create_service_spec.rb381spec/lib/gitlab/form_builders/gitlab_ui_form_builder_spec.rb382spec/lib/gitlab/gitlab_import/client_spec.rb383spec/models/wiki_directory_spec.rb384spec/workers/group_destroy_worker_spec.rb385spec/services/ci/pipeline_bridge_status_service_spec.rb386spec/serializers/user_serializer_spec.rb387spec/workers/pipeline_hooks_worker_spec.rb388spec/presenters/packages/nuget/package_metadata_presenter_spec.rb389spec/workers/user_status_cleanup/batch_worker_spec.rb390spec/lib/gitlab/repository_size_error_message_spec.rb391spec/services/resource_events/merge_into_notes_service_spec.rb392spec/views/projects/clusters/clusters/gcp/_form.html.haml_spec.rb393spec/rubocop/cop/prefer_class_methods_over_module_spec.rb394spec/graphql/resolvers/project_pipeline_statistics_resolver_spec.rb395spec/serializers/jira_connect/app_data_serializer_spec.rb396spec/lib/gitlab/middleware/basic_health_check_spec.rb397spec/presenters/pages_domain_presenter_spec.rb398spec/workers/jira_connect/sync_deployments_worker_spec.rb399spec/tooling/lib/tooling/crystalball/coverage_lines_execution_detector_spec.rb400spec/rubocop/cop/gitlab/delegate_predicate_methods_spec.rb401spec/models/approval_spec.rb402spec/services/users/dismiss_callout_service_spec.rb403spec/serializers/import/manifest_provider_repo_entity_spec.rb404spec/lib/gitlab/code_navigation_path_spec.rb405spec/lib/gitlab/import_export/design_repo_restorer_spec.rb406spec/rubocop/cop/gitlab/policy_rule_boolean_spec.rb407spec/models/diff_viewer/image_spec.rb408spec/serializers/diff_viewer_entity_spec.rb409spec/lib/gitlab/graphql/pagination/connections_spec.rb410spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/client_spec.rb411spec/tasks/admin_mode_spec.rb412spec/presenters/alert_management/alert_presenter_spec.rb413spec/workers/experiments/record_conversion_event_worker_spec.rb414spec/lib/gitlab/import_export/legacy_relation_tree_saver_spec.rb415spec/lib/gitlab/utils/delegator_override/validator_spec.rb416spec/lib/gitlab/graphql/negatable_arguments_spec.rb417spec/lib/gitlab/import_export/after_export_strategy_builder_spec.rb418spec/lib/gitlab/github_import/bulk_importing_spec.rb419spec/graphql/types/merge_request_state_enum_spec.rb420spec/lib/gitlab/phabricator_import/conduit/users_response_spec.rb421spec/services/base_container_service_spec.rb422spec/lib/gitlab/sidekiq_middleware/extra_done_log_metadata_spec.rb423spec/views/admin/application_settings/_repository_storage.html.haml_spec.rb424spec/models/protected_branch/merge_access_level_spec.rb425spec/serializers/accessibility_reports_comparer_entity_spec.rb426spec/graphql/types/design_management/design_version_event_enum_spec.rb427spec/lib/peek/views/memory_spec.rb428spec/helpers/one_trust_helper_spec.rb429spec/lib/gitlab/hashed_path_spec.rb430spec/lib/api/entities/deploy_keys_project_spec.rb431spec/lib/api/validations/validators/project_portable_spec.rb432spec/lib/sidebars/projects/menus/repository_menu_spec.rb433spec/rubocop/cop/rspec/timecop_freeze_spec.rb434spec/rubocop/cop/qa/selector_usage_spec.rb435spec/lib/gitlab/ci/build/port_spec.rb436spec/rubocop/qa_helpers_spec.rb437spec/views/groups/runners/_sort_dropdown.html.haml_spec.rb438spec/initializers/mailer_retries_spec.rb439spec/lib/gitlab/chat_spec.rb440spec/lib/gitlab/database/background_migration/batch_metrics_spec.rb441spec/lib/constraints/feature_constrainer_spec.rb442spec/lib/gitlab/sidekiq_middleware/size_limiter/server_spec.rb443spec/graphql/types/ci/config/job_type_spec.rb444spec/models/packages/rubygems/metadatum_spec.rb445spec/lib/gitlab/action_cable/request_store_callbacks_spec.rb446spec/lib/gitlab/git/patches/patch_spec.rb447spec/serializers/evidences/release_serializer_spec.rb448spec/graphql/types/packages/package_type_enum_spec.rb449spec/models/concerns/from_union_spec.rb450spec/lib/gitlab/sidekiq_middleware/worker_context/server_spec.rb451spec/views/errors/access_denied.html.haml_spec.rb452spec/lib/gitlab/database/async_indexes_spec.rb453spec/uploaders/uploader_helper_spec.rb454spec/serializers/ci/codequality_mr_diff_entity_spec.rb455Filter specs:456Running specs:457Running all node tests without filter458spec/models/merge_request_spec.rb459spec/policies/project_policy_spec.rb460spec/services/git/branch_push_service_spec.rb461spec/finders/group_members_finder_spec.rb462spec/uploaders/design_management/design_v432x230_uploader_spec.rb463spec/lib/gitlab/usage_data_metrics_spec.rb464spec/models/ci/runner_spec.rb465spec/policies/project_statistics_policy_spec.rb466spec/services/merge_requests/merge_service_spec.rb467spec/services/boards/lists/move_service_spec.rb468spec/policies/blob_policy_spec.rb469spec/models/integrations/bamboo_spec.rb470spec/lib/gitlab/ci/config/entry/job_spec.rb471spec/lib/banzai/color_parser_spec.rb472spec/lib/gitlab/gitaly_client/commit_service_spec.rb473spec/lib/gitlab/project_authorizations_spec.rb474spec/models/pages_domain_spec.rb475spec/helpers/namespaces_helper_spec.rb476spec/serializers/environment_serializer_spec.rb477spec/models/notification_recipient_spec.rb478spec/uploaders/workers/object_storage/migrate_uploads_worker_spec.rb479spec/services/members/update_service_spec.rb480spec/models/merge_request_diff_file_spec.rb481spec/workers/packages/debian/process_changes_worker_spec.rb482spec/lib/error_tracking/sentry_client/issue_spec.rb483spec/lib/gitlab/usage/metric_definition_spec.rb484spec/models/concerns/chronic_duration_attribute_spec.rb485spec/lib/gitlab/hashed_storage/migrator_spec.rb486spec/workers/process_commit_worker_spec.rb487spec/serializers/issue_entity_spec.rb488spec/lib/gitlab/json_spec.rb489spec/models/concerns/routable_spec.rb490spec/lib/gitlab/experimentation/controller_concern_spec.rb491spec/services/jira/requests/projects/list_service_spec.rb492spec/models/ci/daily_build_group_report_result_spec.rb493spec/services/projects/protect_default_branch_service_spec.rb494spec/lib/gitlab/import_export/group/relation_tree_restorer_spec.rb495spec/services/snippets/destroy_service_spec.rb496spec/lib/gitlab/kubernetes/helm/v2/init_command_spec.rb497spec/lib/gitlab/database/migration_helpers/v2_spec.rb498spec/lib/gitlab/ci/trace/checksum_spec.rb499spec/policies/ci/pipeline_policy_spec.rb500spec/lib/container_registry/blob_spec.rb501spec/services/clusters/applications/check_ingress_ip_address_service_spec.rb502spec/finders/fork_projects_finder_spec.rb503spec/lib/gitlab/pagination/keyset/paginator_spec.rb504spec/services/issues/set_crm_contacts_service_spec.rb505spec/services/ci/archive_trace_service_spec.rb506spec/services/snippets/update_statistics_service_spec.rb507spec/finders/projects/groups_finder_spec.rb508spec/services/ci/job_artifacts/create_service_spec.rb509spec/lib/gitlab/error_tracking_spec.rb510spec/presenters/projects/settings/deploy_keys_presenter_spec.rb511spec/lib/gitlab/slash_commands/presenters/issue_move_spec.rb512spec/views/notify/pipeline_failed_email.html.haml_spec.rb513spec/services/labels/create_service_spec.rb514spec/lib/gitlab/metrics/methods_spec.rb515spec/models/hooks/project_hook_spec.rb516spec/views/projects/merge_requests/show.html.haml_spec.rb517spec/models/concerns/schedulable_spec.rb518spec/serializers/discussion_diff_file_entity_spec.rb519spec/finders/contributed_projects_finder_spec.rb520spec/lib/gitlab/database/count_spec.rb521spec/models/concerns/project_features_compatibility_spec.rb522spec/services/concerns/rate_limited_service_spec.rb523spec/lib/gitlab/rack_attack_spec.rb524spec/lib/gitlab/ci/reports/test_reports_spec.rb525spec/tasks/gettext_rake_spec.rb526spec/services/ci/run_scheduled_build_service_spec.rb527spec/lib/gitlab/visibility_level_checker_spec.rb528spec/lib/gitlab/slash_commands/presenters/issue_show_spec.rb529spec/workers/ci/delete_unit_tests_worker_spec.rb530spec/models/packages/dependency_link_spec.rb531spec/lib/gitlab/kubernetes/helm/v2/install_command_spec.rb532spec/config/inject_enterprise_edition_module_spec.rb533spec/models/lfs_download_object_spec.rb534spec/lib/gitlab/ci/config/entry/service_spec.rb535spec/finders/concerns/finder_with_group_hierarchy_spec.rb536spec/lib/gitlab/ci/reports/security/report_spec.rb537spec/lib/gitlab/shell_spec.rb538spec/services/terraform/remote_state_handler_spec.rb539spec/helpers/routing/pseudonymization_helper_spec.rb540spec/lib/gitlab/database/partitioning/time_partition_spec.rb541spec/views/projects/commit/show.html.haml_spec.rb542spec/lib/banzai/reference_parser/label_parser_spec.rb543spec/lib/banzai/filter/wiki_link_filter_spec.rb544spec/views/shared/_global_alert.html.haml_spec.rb545spec/services/alert_management/alerts/todo/create_service_spec.rb546spec/graphql/resolvers/design_management/version/design_at_version_resolver_spec.rb547spec/lib/gitlab/kubernetes/helm/v3/patch_command_spec.rb548spec/services/chat_names/find_user_service_spec.rb549spec/graphql/mutations/terraform/state/delete_spec.rb550spec/services/metrics/dashboard/transient_embed_service_spec.rb551spec/lib/gitlab/null_request_store_spec.rb552spec/models/experiment_subject_spec.rb553spec/models/integrations/bugzilla_spec.rb554spec/lib/gitlab/wiki_pages/front_matter_parser_spec.rb555spec/lib/gitlab/checks/diff_check_spec.rb556spec/workers/concerns/limited_capacity/worker_spec.rb557spec/finders/protected_branches_finder_spec.rb558spec/models/packages/debian/group_distribution_key_spec.rb559spec/lib/gitlab/ci/config/external/file/project_spec.rb560spec/lib/gitlab/database/partitioning_migration_helpers/index_helpers_spec.rb561spec/models/ci/freeze_period_spec.rb562spec/lib/gitlab/suggestions/suggestion_set_spec.rb563spec/lib/banzai/reference_parser/mentioned_user_parser_spec.rb564spec/lib/gitlab/config/entry/undefined_spec.rb565spec/tasks/gitlab/external_diffs_rake_spec.rb566spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_stage_end_spec.rb567spec/finders/prometheus_metrics_finder_spec.rb568spec/lib/gitlab/static_site_editor/config/generated_config_spec.rb569spec/workers/personal_access_tokens/expiring_worker_spec.rb570spec/lib/gitlab/bullet/exclusions_spec.rb571spec/lib/gitlab/jwt_authenticatable_spec.rb572spec/graphql/mutations/todos/mark_all_done_spec.rb573spec/services/ci/job_token_scope/remove_project_service_spec.rb574spec/validators/json_schema_validator_spec.rb575spec/views/projects/diffs/_viewer.html.haml_spec.rb576spec/services/error_tracking/base_service_spec.rb577spec/lib/gitlab/background_migration/remove_occurrence_pipelines_and_duplicate_vulnerabilities_findings_spec.rb578spec/lib/gitlab/git/keep_around_spec.rb579spec/presenters/ci/group_variable_presenter_spec.rb580spec/lib/api/helpers/related_resources_helpers_spec.rb581spec/lib/bulk_imports/groups/loaders/group_loader_spec.rb582spec/services/ci/pipeline_artifacts/coverage_report_service_spec.rb583spec/graphql/mutations/terraform/state/lock_spec.rb584spec/services/snippets/count_service_spec.rb585spec/lib/banzai/filter/inline_cluster_metrics_filter_spec.rb586spec/services/ci/compare_test_reports_service_spec.rb587spec/lib/gitlab/dependency_linker/package_json_linker_spec.rb588spec/helpers/instance_configuration_helper_spec.rb589spec/graphql/mutations/security/ci_configuration/configure_secret_detection_spec.rb590spec/services/system_notes/base_service_spec.rb591spec/lib/gitlab/ci/templates/5_minute_production_app_ci_yaml_spec.rb592spec/lib/gitlab/kas/client_spec.rb593spec/serializers/member_serializer_spec.rb594spec/lib/banzai/filter/inline_diff_filter_spec.rb595spec/graphql/types/namespace_type_spec.rb596spec/lib/gitlab/exclusive_lease_helpers_spec.rb597spec/services/audit_event_service_spec.rb598spec/models/gpg_key_subkey_spec.rb599spec/lib/gitlab/graphql/batch_key_spec.rb600spec/graphql/resolvers/design_management/design_at_version_resolver_spec.rb601spec/lib/gitlab/loop_helpers_spec.rb602spec/rubocop/cop/rspec/env_assignment_spec.rb603spec/lib/gitlab/search_context/controller_concern_spec.rb604spec/workers/repository_remove_remote_worker_spec.rb605spec/services/ci/create_pipeline_service/creation_errors_and_warnings_spec.rb606spec/lib/gitlab/hook_data/group_builder_spec.rb607spec/finders/terraform/states_finder_spec.rb608spec/lib/bulk_imports/common/pipelines/entity_finisher_spec.rb609spec/workers/migrate_external_diffs_worker_spec.rb610spec/graphql/types/base_edge_spec.rb611spec/workers/update_highest_role_worker_spec.rb612spec/workers/authorized_project_update/user_refresh_with_low_urgency_worker_spec.rb613spec/lib/gitlab/git/changes_spec.rb614spec/graphql/mutations/terraform/state/unlock_spec.rb615spec/lib/gitlab/data_builder/wiki_page_spec.rb616spec/lib/bulk_imports/groups/pipelines/subgroup_entities_pipeline_spec.rb617spec/views/projects/environments/terminal.html.haml_spec.rb618spec/lib/gitlab/crypto_helper_spec.rb619spec/lib/gitlab/ci/config/entry/release/assets/link_spec.rb620spec/lib/gitlab/database/postgresql_adapter/empty_query_ping_spec.rb621spec/presenters/service_hook_presenter_spec.rb622spec/graphql/types/ci/pipeline_type_spec.rb623spec/services/issues/after_create_service_spec.rb624spec/lib/gitlab/form_builders/gitlab_ui_form_builder_spec.rb625spec/lib/gitlab/gitlab_import/client_spec.rb626spec/models/wiki_directory_spec.rb627spec/workers/group_destroy_worker_spec.rb628spec/services/ci/pipeline_bridge_status_service_spec.rb629spec/serializers/user_serializer_spec.rb630spec/workers/pipeline_hooks_worker_spec.rb631spec/presenters/packages/nuget/package_metadata_presenter_spec.rb632spec/workers/user_status_cleanup/batch_worker_spec.rb633spec/lib/gitlab/repository_size_error_message_spec.rb634spec/services/resource_events/merge_into_notes_service_spec.rb635spec/views/projects/clusters/clusters/gcp/_form.html.haml_spec.rb636spec/rubocop/cop/prefer_class_methods_over_module_spec.rb637spec/graphql/resolvers/project_pipeline_statistics_resolver_spec.rb638spec/serializers/jira_connect/app_data_serializer_spec.rb639spec/lib/gitlab/middleware/basic_health_check_spec.rb640spec/presenters/pages_domain_presenter_spec.rb641spec/workers/jira_connect/sync_deployments_worker_spec.rb642spec/tooling/lib/tooling/crystalball/coverage_lines_execution_detector_spec.rb643spec/rubocop/cop/gitlab/delegate_predicate_methods_spec.rb644spec/models/approval_spec.rb645spec/services/users/dismiss_callout_service_spec.rb646spec/serializers/import/manifest_provider_repo_entity_spec.rb647spec/lib/gitlab/code_navigation_path_spec.rb648spec/lib/gitlab/import_export/design_repo_restorer_spec.rb649spec/rubocop/cop/gitlab/policy_rule_boolean_spec.rb650spec/models/diff_viewer/image_spec.rb651spec/serializers/diff_viewer_entity_spec.rb652spec/lib/gitlab/graphql/pagination/connections_spec.rb653spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/client_spec.rb654spec/tasks/admin_mode_spec.rb655spec/presenters/alert_management/alert_presenter_spec.rb656spec/workers/experiments/record_conversion_event_worker_spec.rb657spec/lib/gitlab/import_export/legacy_relation_tree_saver_spec.rb658spec/lib/gitlab/utils/delegator_override/validator_spec.rb659spec/lib/gitlab/graphql/negatable_arguments_spec.rb660spec/lib/gitlab/import_export/after_export_strategy_builder_spec.rb661spec/lib/gitlab/github_import/bulk_importing_spec.rb662spec/graphql/types/merge_request_state_enum_spec.rb663spec/lib/gitlab/phabricator_import/conduit/users_response_spec.rb664spec/services/base_container_service_spec.rb665spec/lib/gitlab/sidekiq_middleware/extra_done_log_metadata_spec.rb666spec/views/admin/application_settings/_repository_storage.html.haml_spec.rb667spec/models/protected_branch/merge_access_level_spec.rb668spec/serializers/accessibility_reports_comparer_entity_spec.rb669spec/graphql/types/design_management/design_version_event_enum_spec.rb670spec/lib/peek/views/memory_spec.rb671spec/helpers/one_trust_helper_spec.rb672spec/lib/gitlab/hashed_path_spec.rb673spec/lib/api/entities/deploy_keys_project_spec.rb674spec/lib/api/validations/validators/project_portable_spec.rb675spec/lib/sidebars/projects/menus/repository_menu_spec.rb676spec/rubocop/cop/rspec/timecop_freeze_spec.rb677spec/rubocop/cop/qa/selector_usage_spec.rb678spec/lib/gitlab/ci/build/port_spec.rb679spec/rubocop/qa_helpers_spec.rb680spec/views/groups/runners/_sort_dropdown.html.haml_spec.rb681spec/initializers/mailer_retries_spec.rb682spec/lib/gitlab/chat_spec.rb683spec/lib/gitlab/database/background_migration/batch_metrics_spec.rb684spec/lib/constraints/feature_constrainer_spec.rb685spec/lib/gitlab/sidekiq_middleware/size_limiter/server_spec.rb686spec/graphql/types/ci/config/job_type_spec.rb687spec/models/packages/rubygems/metadatum_spec.rb688spec/lib/gitlab/action_cable/request_store_callbacks_spec.rb689spec/lib/gitlab/git/patches/patch_spec.rb690spec/serializers/evidences/release_serializer_spec.rb691spec/graphql/types/packages/package_type_enum_spec.rb692spec/models/concerns/from_union_spec.rbKnapsack report generator started!693warning: parser/current is loading parser/ruby27, which recognizes694warning: 2.7.4-compliant syntax, but you are running 2.7.5.695warning: please see https://github.com/whitequark/parser#compatibility-with-ruby-mri.696undefined method `[]' for #<RspecFlaky::FlakyExample:0x00007feccd545490>697Run options: exclude {:quarantine=>true, :geo=>true, :level=>"migration"}698==> /builds/gitlab-org/gitlab/tmp/tests/gitlab-test_bare set up in 0.058773325 seconds...699Test environment set up in 0.69120312 seconds700MergeRequest701 associations702 is expected to belong to target_project class_name => Project required: false703 is expected to belong to source_project class_name => Project required: false704 is expected to belong to merge_user class_name => User required: false705 is expected to have many assignees through merge_request_assignees706 is expected to have many reviewers through merge_request_reviewers707 is expected to have many merge_request_diffs708 is expected to have many user_mentions class_name => MergeRequestUserMention709 is expected to belong to milestone required: false710 is expected to belong to iteration required: false711 is expected to have many resource_milestone_events712 is expected to have many resource_state_events713 is expected to have many draft_notes714 is expected to have many reviews inverse_of => merge_request715 is expected to have one cleanup_schedule inverse_of => merge_request716 for forks717 does not load another project due to inverse relationship718 finds the associated merge request719 .from_and_to_forks720 returns only MRs from and to forks (with no internal MRs)721 .order_merged_at_asc722 returns MRs ordered by merged_at ascending723 .order_merged_at_desc724 returns MRs ordered by merged_at descending725 .order_closed_at_asc726 returns MRs ordered by closed_at ascending727 .order_closed_at_desc728 returns MRs ordered by closed_at descending729 .with_jira_issue_keys730 is expected to contain exactly #<MergeRequest id:15 namespace1/project1!1> and #<MergeRequest id:16 namespace1/project1!2>731 is expected not to include #<MergeRequest id:17 namespace1/project1!3>732 scopes733 .review_requested734 returns MRs that have any review requests735 .no_review_requested736 returns MRs that have no review requests737 .review_requested_to738 returns MRs that the user has been requested to review739 .no_review_requested_to740 returns MRs that the user has not been requested to review741 .drafts742 returns MRs where draft == true743 #squash?744 disabled in database745 is expected to be falsy746 enabled in database747 is expected to be truthy748 #default_squash_commit_message749 returns the merge request title750 uses template from target project751 modules752 is expected to includes the Issuable module753 is expected to includes the Referable module754 is expected to includes the Sortable module755 is expected to includes the Taskable module756 is expected to includes the MilestoneEventable module757 is expected to includes the StateEventable module758 behaves like AtomicInternalId759 .has_internal_id760 Module inclusion761 is expected to includes the AtomicInternalId module762 Validation763 when presence validation is required764 when creating an object765 raises an error if the internal id is blank766 when updating an object767 raises an error if the internal id is blank768 when presence validation is not required769 when creating an object770 does not raise an error if the internal id is blank (PENDING: No reason given)771 when updating an object772 does not raise an error if the internal id is blank (PENDING: No reason given)773 Creating an instance774 saves a new instance properly775 internal id generation776 calls InternalId.generate_next and sets internal id attribute777 does not overwrite an existing internal id778 when the instance has an internal ID set779 calls InternalId.update_last_value and sets the `last_value` to that of the instance780 unsetting the instance internal id on rollback781 when the internal id has been changed782 when the internal id is automatically set783 clears it on the instance784 when the internal id is manually set785 does not clear it on the instance786 when the internal id has not been changed787 preserves the value on the instance788 supply of internal ids789 provides a persistent supply of IID values, sensitive to the current state790 #reset_scope_internal_id_attribute791 rewinds the allocated IID792 allocates the same IID793 validation794 is expected to validate that :target_branch cannot be empty/falsy795 is expected to validate that :source_branch cannot be empty/falsy796 Validation of merge user with Merge When Pipeline Succeeds797 allows user to be nil when the feature is disabled798 is invalid without merge user799 is valid with merge user800 for branch801 branch_name: "foo", valid: true802 validates source_branch803 validates target_branch804 branch_name: "foo:bar", valid: false805 validates source_branch806 validates target_branch807 branch_name: "+foo:bar", valid: false808 validates source_branch809 validates target_branch810 branch_name: "foo bar", valid: false811 validates source_branch812 validates target_branch813 branch_name: "-foo", valid: false814 validates source_branch815 validates target_branch816 branch_name: "HEAD", valid: true817 validates source_branch818 validates target_branch819 branch_name: "refs/heads/master", valid: true820 validates source_branch821 validates target_branch822 for forks823 allows merge requests for sibling-forks824 callbacks825 #ensure_merge_request_metrics826 creates metrics after saving827 does not duplicate metrics for a merge request828 does not create duplicated metrics records when MR is concurrently updated829 syncs the `target_project_id` to the metrics record830 #set_draft_status831 MR is a draft832 sets draft to true833 MR is not a draft834 sets draft to true835 respond to836 is expected to respond to #unchecked?837 is expected to respond to #checking?838 is expected to respond to #can_be_merged?839 is expected to respond to #cannot_be_merged?840 is expected to respond to #merge_params841 is expected to respond to #merge_when_pipeline_succeeds842 .by_commit_sha843 with sha contained in latest merge request diff844 returns merge requests845 with sha contained not in latest merge request diff846 returns empty requests847 with sha not contained in848 returns empty result849 .by_merge_commit_sha850 returns merge requests that match the given merge commit851 .by_squash_commit_sha852 returns merge requests that match the given squash commit853 .by_merge_or_squash_commit_sha854 returns merge requests that match the given squash and merge commits855 .join_metrics856 when a no target_project_id is available857 moves target_project_id condition to the merge request metrics858 when a target_project_id is present in the where conditions859 moves target_project_id condition to the merge request metrics860 .by_related_commit_sha861 when commit is a squash commit862 is expected to eq [#<MergeRequest id:46 namespace1/project1!1>]863 when commit is a part of the merge request864 is expected to eq [#<MergeRequest id:47 namespace1/project1!1>]865 when commit is a merge commit866 is expected to eq [#<MergeRequest id:48 namespace1/project1!1>]867 when commit is not found868 is expected to be empty869 when commit is part of the merge request and a squash commit at the same time870 is expected to eq [#<MergeRequest id:49 namespace1/project1!1>]871 .in_projects872 returns the merge requests for a set of projects873 .set_latest_merge_request_diff_ids!874 sets IDs for merge requests, whether they are already set or not875 .recent_target_branches876 returns target branches sort by updated at desc877 .sort_by_attribute878 merged_at879 sorts asc880 sorts desc881 closed_at882 sorts asc883 sorts desc884 sorts asc when its closed_at885 time to merge calculations886 .total_time_to_merge887 returns the sum of the time to merge for all merged MRs888 when merged_at is earlier than created_at889 returns nil890 #target_branch_sha891 returns memoized value892 when the target branch does not exist893 returns nil894 #card_attributes895 includes the author name896 includes the assignees name897 #assignee_or_author?898 returns true for a user that is assigned to a merge request899 returns true for a user that is the author of a merge request900 returns false for a user that is not the assignee or author901 #visible_closing_issues_for902 shows only allowed issues to guest903 shows only allowed issues to developer904 when external issue tracker is enabled905 calls non #closes_issues to retrieve data906 #cache_merge_request_closes_issues!907 caches closed issues908 does not cache closed issues when merge request is closed909 does not cache closed issues when merge request is merged910 when both internal and external issue trackers are enabled911 does not cache issues from external trackers912 caches an internal issue913 when only external issue tracker enabled914 does not cache issues from external trackers915 does not cache an internal issue916 #source_branch_sha917 returns memoized value918 with diffs919 returns the sha of the source branch last commit920 without diffs921 returns the sha of the source branch last commit922 when there is a tag name matching the branch name923 returns the sha of the source branch last commit924 when the merge request is being created925 returns nil926 #to_reference927 returns a String reference to the object928 supports a cross-project reference929 returns a String reference with the full path930 #raw_diffs931 when there are MR diffs932 delegates to the MR diffs933 when there are no MR diffs934 delegates to the compare object935 #diffs936 when there are MR diffs937 delegates to the MR diffs938 when there are no MR diffs939 delegates to the compare object, setting expanded: true940 #note_positions_for_paths941 returns a Gitlab::Diff::PositionCollection942 within all diff files943 returns correct positions944 within specific diff file945 returns correct positions946 within no diff files947 returns no positions948 when user is given949 returns notes and draft notes positions950 when user is not given951 returns notes positions952 #discussions_diffs953 with commit diff note954 behaves like discussions diffs collection955 initializes Gitlab::DiscussionsDiff::FileCollection with correct data956 eager loads relations957 with merge request diff note958 behaves like discussions diffs collection959 initializes Gitlab::DiscussionsDiff::FileCollection with correct data960 eager loads relations961 #diff_size962 when there are MR diffs963 returns the correct count964 returns the correct overflow count965 does not perform highlighting966 when there are no MR diffs967 returns the correct count968 returns the correct overflow count969 does not perform highlighting970 #modified_paths971 when past_merge_request_diff is specified972 returns affected file paths from specified past_merge_request_diff973 when compare is present974 and diff_stats are not present975 returns affected file paths from compare976 and diff_stats are present977 returns affected file paths from compare978 when no arguments provided979 returns affected file paths for merge_request_diff980 #new_paths981 returns new path of changed files982 #related_notes983 includes notes for commits984 includes notes for commits from target project as well985 excludes system notes for commits986 #for_fork?987 returns true if the merge request is for a fork988 returns false if is not for a fork989 #closes_issues990 accesses the set of issues that will be closed on acceptance991 only lists issues as to be closed if it targets the default branch992 ignores referenced issues when auto-close is disabled993 #issues_mentioned_but_not_closing994 detects issues mentioned in description but not closed995 when the project has an external issue tracker996 detects issues mentioned in description but not closed997 #work_in_progress?998 detects the 'WIP:' prefix999 detects the 'WIP: ' prefix1000 detects the '[WIP]' prefix1001 detects the '[WIP] ' prefix1002 detects the ' [WIP] WIP: [WIP] WIP:' prefix1003 detects the 'draft:' prefix1004 detects the 'Draft: ' prefix1005 detects the '[Draft]' prefix1006 detects the '[DRAFT] ' prefix1007 doesn't detect 'WIP ' at the start of the title as a draft1008 doesn't detect '(WIP)' at the start of the title as a draft1009 doesn't detect 'draft' at the start of the title as a draft1010 doesn't detect 'Draft' at the start of the title as a draft1011 doesn't detect 'Draft -' at the start of the title as a draft1012 doesn't detect 'draft - ' at the start of the title as a draft1013 doesn't detect 'Draft ' at the start of the title as a draft1014 doesn't detect 'draft ' at the start of the title as a draft1015 detects merge request title just saying 'wip'1016 does not detect merge request title just saying 'draft'1017 does not detect WIP in the middle of the title1018 does not detect Draft in the middle of the title1019 does not detect Draft: in the middle of the title1020 does not detect WIP at the end of the title1021 does not detect Draft at the end of the title1022 doesn't detect WIP for words starting with WIP1023 doesn't detect WIP for words containing with WIP1024 doesn't detect draft for words containing with draft1025 doesn't detect WIP by default1026 is aliased to #draft?1027 #wipless_title1028 removes the 'WIP:' prefix1029 is satisfies the #work_in_progress? method1030 removes the 'WIP: ' prefix1031 is satisfies the #work_in_progress? method1032 removes the '[WIP]' prefix1033 is satisfies the #work_in_progress? method1034 removes the '[WIP] ' prefix1035 is satisfies the #work_in_progress? method1036 removes the '[WIP] WIP: [WIP] WIP:' prefix1037 is satisfies the #work_in_progress? method1038 removes the 'draft:' prefix1039 is satisfies the #work_in_progress? method1040 removes the 'Draft: ' prefix1041 is satisfies the #work_in_progress? method1042 removes the '[Draft]' prefix1043 is satisfies the #work_in_progress? method1044 removes the '[DRAFT] ' prefix1045 is satisfies the #work_in_progress? method1046 removes only WIP prefix from the MR title1047 removes only draft prefix from the MR title1048 does not remove WIP in the middle of the title1049 does not remove Draft in the middle of the title1050 does not remove WIP at the end of the title1051 does not remove Draft at the end of the title1052 #wip_title1053 adds the Draft: prefix to the title1054 does not add the Draft: prefix multiple times1055 is satisfies the #work_in_progress? method1056 #can_remove_source_branch?1057 can't be removed when its a protected branch1058 can't be removed because source project has been deleted1059 can't remove a root ref1060 is unable to remove the source branch for a project the user cannot push to1061 can be removed if the last commit is the head of the source branch1062 cannot be removed if the last commit is not also the head of the source branch1063 #source_branch_exists?1064 when the source project is set1065 returns true when the branch exists1066 when the source project is not set1067 returns false1068 #default_merge_commit_message1069 includes merge information as the title1070 includes its title in the body1071 includes its closed issues in the body1072 includes its reference in the body1073 excludes multiple linebreak runs when description is blank1074 includes its description in the body1075 does not includes its description in the body1076 uses template from target project1077 ignores template when include_description is true1078 #auto_merge_strategy1079 is expected to eq "merge_when_pipeline_succeeds"1080 when auto merge is disabled1081 is expected to be nil1082 #committers1083 returns all the committers of every commit in the merge request1084 returns an empty array if no committer is associated with a user1085 #hook_attrs1086 delegates to Gitlab::HookData::MergeRequestBuilder#build1087 #diverged_commits_count1088 when the target branch does not exist anymore1089 does not crash1090 returns 01091 diverged on same repository1092 counts commits that are on target branch but not on source branch1093 diverged on fork1094 counts commits that are on target branch but not on source branch1095 rebased on fork1096 counts commits that are on target branch but not on source branch1097 caching1098 caches the output1099 invalidates the cache when the source sha changes1100 invalidates the cache when the target sha changes1101 behaves like an editable mentionable1102 creates new cross-reference notes when the mentionable text is edited1103 behaves like a mentionable1104 generates a descriptive back-reference1105 extracts references from its reference property1106 creates cross-reference notes1107 when there are cached markdown fields1108 sends in cached markdown fields when appropriate1109 when there are cached markdown fields1110 refreshes markdown cache if necessary1111 when the markdown cache is stale1112 persists the refreshed cache so that it does not have to be refreshed every time1113 behaves like a Taskable1114 with multiple tasks1115 returns the correct task status1116 #tasks?1117 returns true when object has tasks1118 returns false when object has no tasks1119 with nested tasks1120 returns the correct task status1121 with an incomplete task1122 returns the correct task status1123 with tasks that are not formatted correctly1124 returns the correct task status1125 with a complete task1126 returns the correct task status1127 with tasks in blockquotes1128 returns the correct task status1129 #commit_shas1130 persisted merge request1131 with a limit1132 returns a limited number of commit shas1133 without a limit1134 returns all commit shas of the merge request diff1135 new merge request1136 returns diff_head_sha as an array1137 compare commits1138 without a limit1139 returns all shas of compare commits1140 with a limit1141 returns a limited number of shas1142 head pipeline1143 #head_pipeline1144 returns nil for MR without head_pipeline_id1145 when the source project does not exist1146 returns nil1147 #actual_head_pipeline1148 returns nil for MR with old pipeline1149 returns the pipeline for MR with recent pipeline1150 returns the pipeline for MR with recent merge request pipeline1151 returns nil when source project does not exist1152 #merge_pipeline1153 returns nil when not merged1154 when the MR is merged1155 and there is a merge commit1156 returns the pipeline associated with that merge request1157 and there is no merge commit, but there is a diff head1158 returns the pipeline associated with that merge request1159 and there is no merge commit, but there is a squash commit1160 returns the pipeline associated with that merge request1161 #has_ci?1162 has ci1163 returns true if MR has head_pipeline_id and commits1164 returns true if MR has any pipeline and commits1165 returns true if MR has CI integration and commits1166 has no ci1167 returns false if MR has no CI integration nor pipeline, and no commits1168 #update_head_pipeline1169 when there is a pipeline with the diff head sha1170 updates the head pipeline1171 when merge request has already had head pipeline1172 when failed to find an actual head pipeline1173 does not update the current head pipeline1174 when detached merge request pipeline is run on head ref of the merge request1175 sets the head ref of the merge request to the pipeline ref1176 updates correctly even though the target branch name of the merge request is different from the pipeline ref1177 when sha is not HEAD of the source branch1178 does not update head pipeline1179 when there are no pipelines with the diff head sha1180 does not update the head pipeline1181 #has_test_reports?1182 when head pipeline has test reports1183 is expected to be truthy1184 when head pipeline does not have test reports1185 is expected to be falsey1186 #has_accessibility_reports?1187 when head pipeline has an accessibility reports1188 is expected to be truthy1189 when head pipeline does not have accessibility reports1190 is expected to be falsey1191 #has_coverage_reports?1192 when head pipeline has coverage reports1193 is expected to be truthy1194 when head pipeline does not have coverage reports1195 is expected to be falsey1196 #has_codequality_mr_diff_report?1197 when head pipeline has codequality mr diff report1198 is expected to be truthy1199 when head pipeline does not have codeqquality mr diff report1200 is expected to be falsey1201 #has_codequality_reports?1202 when head pipeline has a codequality report1203 is expected to be truthy1204 when head pipeline does not have a codequality report1205 is expected to be falsey1206 #has_terraform_reports?1207 when head pipeline has terraform reports1208 returns true1209 when head pipeline does not have terraform reports1210 returns false1211 #has_sast_reports?1212 when head pipeline has sast reports1213 is expected to be truthy1214 when head pipeline does not have sast reports1215 is expected to be falsey1216 #has_secret_detection_reports?1217 when head pipeline has secret detection reports1218 is expected to be truthy1219 when head pipeline does not have secrets detection reports1220 is expected to be falsey1221 #calculate_reactive_cache1222 when given an unknown service class name1223 raises a NameError exception1224 when given a known service class name1225 does not raises a NameError exception1226 #find_exposed_artifacts1227 when head pipeline has exposed artifacts1228 when reactive cache worker is parsing results asynchronously1229 returns status1230 when reactive cache worker is inline1231 returns status and data1232 when an error occurrs1233 returns an error message1234 when cached results is not latest1235 raises and InvalidateReactiveCache error1236 #find_coverage_reports1237 when head pipeline has coverage reports1238 when reactive cache worker is parsing results asynchronously1239 returns status1240 when reactive cache worker is inline1241 returns status and data1242 when an error occurrs1243 returns an error message1244 when cached results is not latest1245 raises and InvalidateReactiveCache error1246 #find_codequality_mr_diff_reports1247 when head pipeline has coverage reports1248 when reactive cache worker is parsing results asynchronously1249 returns status1250 when reactive cache worker is inline1251 returns status and data1252 when an error occurrs1253 returns an error message1254 when cached results is not latest1255 raises and InvalidateReactiveCache error1256 #compare_test_reports1257 when head pipeline has test reports1258 when reactive cache worker is parsing asynchronously1259 returns status1260 when reactive cache worker is inline1261 returns status and data1262 when cached results is not latest1263 raises and InvalidateReactiveCache error1264 when head pipeline does not have test reports1265 returns status and error message1266 #compare_accessibility_reports1267 when head pipeline has accessibility reports1268 when reactive cache worker is parsing results asynchronously1269 returns parsing status1270 when reactive cache worker is inline1271 returns parsed status1272 when an error occurrs1273 returns an error status1274 when cached result is not latest1275 raises an InvalidateReactiveCache error1276 #compare_codequality_reports1277 when head pipeline has codequality report1278 when reactive cache worker is parsing results asynchronously1279 returns parsing status1280 when reactive cache worker is inline1281 returns parsed status1282 when an error occurrs1283 returns an error status1284 when cached result is not latest1285 raises an InvalidateReactiveCache error1286 #all_commit_shas1287 when merge request is persisted1288 with a completely different branch1289 behaves like returning all SHA1290 returns all SHAs from all merge_request_diffs1291 with a branch having no difference1292 behaves like returning all SHA1293 returns all SHAs from all merge_request_diffs1294 when merge request is not persisted1295 when compare commits are set in the service1296 returns commits from compare commits temporary data1297 when compare commits are not set in the service1298 returns array with diff head sha element only1299 #short_merge_commit_sha1300 returns short id when there is a merge_commit_sha1301 returns nil when there is no merge_commit_sha1302 #merged_commit_sha1303 returns nil when not merged1304 when the MR is merged1305 returns merge_commit_sha when there is a merge_commit_sha1306 returns squash_commit_sha when there is a squash_commit_sha1307 returns diff_head_sha when there are no merge_commit_sha and squash_commit_sha1308 #short_merged_commit_sha1309 when merged_commit_sha is nil1310 returns nil1311 when merged_commit_sha is present1312 returns shortened merged_commit_sha1313 #can_be_reverted?1314 when there is no merge_commit for the MR1315 returns false1316 when the MR has been merged1317 when there is no revert commit1318 returns true1319 when there is no merged_at for the MR1320 returns true1321 when there is a revert commit1322 but merged at timestamp cannot be found1323 returns false1324 when the revert commit is mentioned in a note after the MR was merged1325 returns false1326 when there is no merged_at for the MR1327 returns false1328 when the revert commit is mentioned in a note just before the MR was merged1329 returns false1330 when the revert commit is mentioned in a note long before the MR was merged1331 returns true1332 #merged_at1333 when MR is not merged1334 returns nil1335 when metrics has merged_at data1336 returns metrics merged_at1337 when merged event is persisted, but no metrics merged_at is persisted1338 returns merged event creation date1339 when no metrics or merge event exists1340 when resource event for the merge exists1341 returns the resource event creation date1342 when system note for the merge exists1343 returns the merging note creation date1344 #participants1345 includes the merge request author1346 includes the authors of the notes1347 cached counts1348 updates when assignees change1349 #merge_async1350 enqueues MergeWorker job and updates merge_jid1351 #rebase_async1352 atomically enqueues a RebaseWorker job and updates rebase_jid1353 refuses to enqueue a job if a rebase is in progress1354 refuses to enqueue a job if the MR is not open1355 raises ActiveRecord::LockWaitTimeout after 6 tries1356 #mergeable?1357 returns false if #mergeable_state? is false1358 return true if #mergeable_state? is true and the MR #can_be_merged? is true1359 return true if #mergeable_state? is true and the MR #can_be_merged? is false1360 with skip_ci_check option1361 mergeable_ci_state: false, skip_ci_check: false, expected_mergeable: false1362 overrides mergeable_ci_state?1363 mergeable_ci_state: false, skip_ci_check: true, expected_mergeable: true1364 overrides mergeable_ci_state?1365 mergeable_ci_state: true, skip_ci_check: false, expected_mergeable: true1366 overrides mergeable_ci_state?1367 mergeable_ci_state: true, skip_ci_check: true, expected_mergeable: true1368 overrides mergeable_ci_state?1369 with skip_discussions_check option1370 mergeable_discussions_state: false, skip_discussions_check: false, expected_mergeable: false1371 overrides mergeable_discussions_state?1372 mergeable_discussions_state: false, skip_discussions_check: true, expected_mergeable: true1373 overrides mergeable_discussions_state?1374 mergeable_discussions_state: true, skip_discussions_check: false, expected_mergeable: true1375 overrides mergeable_discussions_state?1376 mergeable_discussions_state: true, skip_discussions_check: true, expected_mergeable: true1377 overrides mergeable_discussions_state?1378 #check_mergeability1379 if the merge status is unchecked1380 behaves like method that executes MergeabilityCheckService1381 executes MergeabilityCheckService1382 when async is true1383 executes MergeabilityCheckService asynchronously1384 if the merge status is checking1385 behaves like method that executes MergeabilityCheckService1386 executes MergeabilityCheckService1387 when async is true1388 executes MergeabilityCheckService asynchronously1389 if the merge status is checked1390 does not call MergeabilityCheckService1391 #mergeable_state?1392 when merge state caching is on1393 behaves like for mergeable_state1394 checks if merge request can be merged1395 when not open1396 returns false1397 when working in progress1398 returns false1399 when broken1400 returns false1401 when failed1402 when improved_mergeability_checks is on1403 behaves like failed skip_ci_check1404 when #mergeable_ci_state? is false1405 returns false1406 returns true when skipping ci check1407 when #mergeable_discussions_state? is false1408 returns false1409 returns true when skipping discussions check1410 when improved_mergeability_checks is off1411 behaves like failed skip_ci_check1412 when #mergeable_ci_state? is false1413 returns false1414 returns true when skipping ci check1415 when #mergeable_discussions_state? is false1416 returns false1417 returns true when skipping discussions check1418 when merge state caching is off1419 behaves like for mergeable_state1420 checks if merge request can be merged1421 when not open1422 returns false1423 when working in progress1424 returns false1425 when broken1426 returns false1427 when failed1428 when improved_mergeability_checks is on1429 behaves like failed skip_ci_check1430 when #mergeable_ci_state? is false1431 returns false1432 returns true when skipping ci check1433 when #mergeable_discussions_state? is false1434 returns false1435 returns true when skipping discussions check1436 when improved_mergeability_checks is off1437 behaves like failed skip_ci_check1438 when #mergeable_ci_state? is false1439 returns false1440 returns true when skipping ci check1441 when #mergeable_discussions_state? is false1442 returns false1443 returns true when skipping discussions check1444 #public_merge_status1445 status: "cannot_be_merged_rechecking", public_status: "checking"1446 is expected to eq "checking"1447 status: "preparing", public_status: "checking"1448 is expected to eq "checking"1449 status: "checking", public_status: "checking"1450 is expected to eq "checking"1451 status: "cannot_be_merged", public_status: "cannot_be_merged"1452 is expected to eq "cannot_be_merged"1453 #head_pipeline_active?1454 when project lacks a head_pipeline relation1455 returns false1456 when project has a head_pipeline relation1457 accesses the value from the head_pipeline1458 #actual_head_pipeline_success?1459 when project lacks an actual_head_pipeline relation1460 returns false1461 when project has a actual_head_pipeline relation1462 accesses the value from the actual_head_pipeline1463 #actual_head_pipeline_active?1464 when project lacks an actual_head_pipeline relation1465 returns false1466 when project has a actual_head_pipeline relation1467 accesses the value from the actual_head_pipeline1468 #mergeable_ci_state?1469 when it is only allowed to merge when build is green1470 and a failed pipeline is associated1471 is expected to be falsey1472 and a successful pipeline is associated1473 is expected to be truthy1474 and a skipped pipeline is associated1475 is expected to be falsey1476 when no pipeline is associated1477 is expected to be falsey1478 when it is only allowed to merge when build is green or skipped1479 and a failed pipeline is associated1480 is expected to be falsey1481 and a successful pipeline is associated1482 is expected to be truthy1483 and a skipped pipeline is associated1484 is expected to be truthy1485 when no pipeline is associated1486 is expected to be falsey1487 when merges are not restricted to green builds1488 and a failed pipeline is associated1489 is expected to be truthy1490 when no pipeline is associated1491 is expected to be truthy1492 and a skipped pipeline is associated1493 is expected to be truthy1494 when no pipeline is associated1495 is expected to be truthy1496 #mergeable_discussions_state?1497 when project.only_allow_merge_if_all_discussions_are_resolved == true1498 with all discussions resolved1499 returns true1500 with unresolved discussions1501 returns false1502 with no discussions1503 returns true1504 when project.only_allow_merge_if_all_discussions_are_resolved == false1505 with unresolved discussions1506 returns true1507 #environments_for1508 with multiple environments1509 selects deployed environments1510 selects latest deployed environment1511 with environments on source project1512 selects deployed environments1513 with environments on target project1514 selects deployed environments1515 without a diff_head_commit1516 returns an empty array1517 #environments1518 returns environments1519 when pipeline is not associated with environments1520 returns empty array1521 when pipeline is not a pipeline for merge request1522 returns empty relation1523 #reload_diff1524 calls MergeRequests::ReloadDiffsService#execute with correct params1525 when using the after_update hook to update1526 when the branches are updated1527 uses the new heads to generate the diff1528 #update_diff_discussion_positions1529 updates diff discussion positions1530 when resolve_outdated_diff_discussions is set1531 calls MergeRequests::ResolvedDiscussionNotificationService1532 #branch_merge_base_commit1533 source and target branch exist1534 is expected to eq "ae73cb07c9eeaf35924a10f713b364d32b2dd34f"1535 is expected to be a kind of Commit1536 when the target branch does not exist1537 returns nil1538 #diff_refs1539 with diffs1540 does not touch the repository1541 returns expected diff_refs1542 when importing1543 returns MR diff_refs1544 #source_project_missing?1545 when the fork exists1546 is expected to be falsey1547 when the source project is the same as the target project1548 is expected to be falsey1549 when the fork does not exist1550 returns true1551 #merge_ongoing?1552 returns true when the merge request is locked1553 returns true when merge_id, MR is not merged and it has no running job1554 returns false when merge_jid is nil1555 returns false if MR is merged1556 returns false if there is no merge job running1557 #closed_or_merged_without_fork?1558 when the merge request is closed1559 returns false if the fork exist1560 returns true if the fork does not exist1561 when the merge request was merged1562 returns false if the fork exist1563 returns true if the fork does not exist1564 when the merge request is open1565 returns false1566 #reopenable?1567 when the merge request is closed1568 returns true1569 forked project1570 returns false if unforked1571 returns false if the source project is deleted1572 returns false if the merge request is merged1573 when the merge request is opened1574 returns false1575 #pipeline_coverage_delta1576 when both source and target branches have coverage information1577 returns the appropriate coverage delta1578 when target branch does not have coverage information1579 returns nil1580 when source branch does not have coverage information1581 returns nil for coverage_delta1582 neither source nor target branch has coverage information1583 returns nil for coverage_delta1584 #use_merge_base_pipeline_for_comparison?1585 when service class is Ci::CompareMetricsReportsService1586 is expected to be truthy1587 when service class is Ci::CompareCodequalityReportsService1588 is expected to be truthy1589 when service class is different1590 is expected to be falsey1591 #comparison_base_pipeline1592 when service class is Ci::CompareCodequalityReportsService1593 when merge request has a merge request pipeline1594 returns the merge_base_pipeline1595 when merge does not have a merge request pipeline1596 returns the base_pipeline1597 when service_class is different1598 returns the base_pipeline1599 #base_pipeline1600 returns latest pipeline for the target branch1601 #merge_base_pipeline1602 returns a pipeline pointing to a commit on the target ref1603 #has_commits?1604 returns true when merge request diff has commits1605 when commits_count is nil1606 returns false1607 #has_no_commits?1608 returns true when merge request diff has 0 commits1609 #merge_request_diff_for1610 runs a single query on the initial call, and none afterwards1611 with diff refs1612 returns the diffs1613 with a commit SHA1614 returns the diffs1615 #version_params_for1616 when the diff refs are for an older merge request version1617 returns the diff ID for the version to show1618 when the diff refs are for a comparison between merge request versions1619 returns the diff ID and start sha of the versions to compare1620 when the diff refs are not for a merge request version1621 returns nil1622 #fetch_ref!1623 fetches the ref correctly1624 removing a merge request1625 refreshes the number of open merge requests of the target project1626 behaves like throttled touch1627 #touch1628 updates the updated_at timestamp1629 updates the object at most once per minute1630 state machine transitions1631 #unlock_mr1632 updates merge request head pipeline and sets merge_jid to nil1633 #mark_as_unchecked1634 when the status is unchecked1635 is not a valid state transition1636 when the status is checking1637 is a valid state transition1638 when the status is can_be_merged1639 is a valid state transition1640 when the status is cannot_be_merged_recheck1641 is not a valid state transition1642 when the status is cannot_be_merged1643 is a valid state transition1644 when the status is cannot_be_merged1645 is a valid state transition1646 transition to cannot_be_merged1647 opened1648 notifies conflict, but does not notify again if rechecking still results in cannot_be_merged1649 notifies conflict, but does not notify again if rechecking still results in cannot_be_merged with async mergeability check1650 notifies conflict, whenever newly unmergeable1651 notifies conflict, whenever newly unmergeable with async mergeability check1652 does not notify whenever merge request is newly unmergeable due to other reasons1653 locked1654 notifies conflict, but does not notify again if rechecking still results in cannot_be_merged1655 notifies conflict, but does not notify again if rechecking still results in cannot_be_merged with async mergeability check1656 notifies conflict, whenever newly unmergeable1657 notifies conflict, whenever newly unmergeable with async mergeability check1658 does not notify whenever merge request is newly unmergeable due to other reasons1659 closed1660 does not notify1661 merged1662 does not notify1663 source branch is missing1664 does not raise error1665 check_state?1666 indicates whether MR is still checking for mergeability1667 #should_be_rebased?1668 returns false for the same source and target branches1669 #rebase_in_progress?1670 rebase_jid: "foo", jid_valid: true, result: true1671 is expected to eq true1672 rebase_jid: "foo", jid_valid: false, result: false1673 is expected to eq false1674 rebase_jid: "", jid_valid: true, result: false1675 is expected to eq false1676 rebase_jid: nil, jid_valid: true, result: false1677 is expected to eq false1678 #allow_collaboration1679 is false when pushing by a maintainer is not possible1680 is true when pushing by a maintainer is possible1681 #collaborative_push_possible?1682 does not allow maintainer to push if the source project is the same as the target1683 allows maintainer to push when both source and target are public1684 is not available for protected branches1685 #can_allow_collaboration?1686 is false if the user does not have push access to the source project1687 is true when the user has push access to the source project1688 #merge_participants1689 contains author1690 when merge_when_pipeline_succeeds? is true1691 when merge user is author1692 author is not a project member1693 is empty1694 author is a project member1695 contains author only1696 when merge user and author are different users1697 merge user is not a member1698 contains author only1699 both author and merge users are project members1700 contains author and merge user1701 .merge_request_ref?1702 when ref is ref name of a branch1703 is expected to be falsey1704 when ref is HEAD ref path of a branch1705 is expected to be falsey1706 when ref is HEAD ref path of a merge request1707 is expected to be truthy1708 when ref is merge ref path of a merge request1709 is expected to be truthy1710 .merge_train_ref?1711 when ref is ref name of a branch1712 is expected to be falsey1713 when ref is HEAD ref path of a branch1714 is expected to be falsey1715 when ref is HEAD ref path of a merge request1716 is expected to be falsey1717 when ref is merge ref path of a merge request1718 is expected to be falsey1719 when ref is train ref path of a merge request1720 is expected to be truthy1721 #cleanup_refs1722 when removing all refs1723 deletes all refs from the target project1724 when removing only train ref1725 deletes train ref from the target project1726 .with_auto_merge_enabled1727 is expected to contain exactly #<MergeRequest id:373 namespace1/project171!1>1728 behaves like versioned description1729 associations1730 is expected to have many description_versions1731 save_description_version1732 when description was changed1733 saves the old and new description for the first update1734 only saves the new description for subsequent updates1735 sets the new description version to `saved_description_version`1736 clears `saved_description_version` after another save that does not change description1737 when description was not changed1738 does not save any description version1739 #commits1740 persisted merge request1741 with a limit1742 returns a limited number of commits1743 without a limit1744 returns all commits of the merge request diff1745 new merge request1746 compare commits1747 without a limit1748 returns all the compare commits1749 with a limit1750 returns a limited number of commits1751 #recent_commits1752 returns the safe number of commits1753 #recent_visible_deployments1754 returns visible deployments1755 only returns a limited number of deployments1756 #diffable_merge_ref?1757 merge request can be merged1758 merge_head diff is not created1759 returns true1760 merge_head diff is created1761 returns true1762 merge request is merged1763 returns false1764 merge request cannot be merged1765 returns false1766 display_merge_conflicts_in_diff is disabled1767 returns false1768 #predefined_variables1769 caches all SQL-sourced data on the first call1770 banzai_render_context1771 sets the label_url_method in the context1772 #head_pipeline_builds_with_coverage1773 delegates to head_pipeline1774 #merge_ref_head1775 when merge_ref_sha is not present1776 returns the commit based on merge ref path1777 when merge_ref_sha is present1778 returns the commit based on cached merge_ref_sha1779 #allows_reviewers?1780 returns true1781 #update_and_mark_in_progress_merge_commit_sha1782 updates commit ID1783 #enabled_reports1784 report_type: :sast, with_reports: :with_sast_reports, feature: :sast1785 when head pipeline has reports1786 is expected to be truthy1787 when head pipeline does not have reports1788 is expected to be falsy1789 report_type: :secret_detection, with_reports: :with_secret_detection_reports, feature: :secret_detection1790 when head pipeline has reports1791 is expected to be truthy1792 when head pipeline does not have reports1793 is expected to be falsy1794 #includes_ci_config?1795 when diff_stats is nil1796 is expected to eq false1797 when diff_stats does not include the ci config path of the project1798 is expected to eq false1799 when diff_stats includes the ci config path of the project1800 is expected to eq true1801 .from_fork1802 returns merge requests from forks only1803ProjectPolicy1804 does not include the read_issue permission when the issue author is not a member of the private project1805 with no project feature1806 returns false1807 behaves like model with wiki policies1808 container_level: :public, access_level: :enabled, membership: :admin, access: :all1809 allows actions based on membership1810 container_level: :public, access_level: :enabled, membership: :maintainer, access: :maintainer1811 allows actions based on membership1812 container_level: :public, access_level: :enabled, membership: :developer, access: :developer1813 allows actions based on membership1814 container_level: :public, access_level: :enabled, membership: :reporter, access: :reporter1815 allows actions based on membership1816 container_level: :public, access_level: :enabled, membership: :guest, access: :guest1817 allows actions based on membership1818 container_level: :public, access_level: :enabled, membership: :non_member, access: :guest1819 allows actions based on membership1820 container_level: :public, access_level: :enabled, membership: :anonymous, access: :guest1821 allows actions based on membership1822 container_level: :public, access_level: :private, membership: :admin, access: :all1823 allows actions based on membership1824 container_level: :public, access_level: :private, membership: :maintainer, access: :maintainer1825 allows actions based on membership1826 container_level: :public, access_level: :private, membership: :developer, access: :developer1827 allows actions based on membership1828 container_level: :public, access_level: :private, membership: :reporter, access: :reporter1829 allows actions based on membership1830 container_level: :public, access_level: :private, membership: :guest, access: :guest1831 allows actions based on membership1832 container_level: :public, access_level: :private, membership: :non_member, access: nil1833 allows actions based on membership1834 container_level: :public, access_level: :private, membership: :anonymous, access: nil1835 allows actions based on membership1836 container_level: :public, access_level: :disabled, membership: :admin, access: nil1837 allows actions based on membership1838 container_level: :public, access_level: :disabled, membership: :maintainer, access: nil1839 allows actions based on membership1840 container_level: :public, access_level: :disabled, membership: :developer, access: nil1841 allows actions based on membership1842 container_level: :public, access_level: :disabled, membership: :reporter, access: nil1843 allows actions based on membership1844 container_level: :public, access_level: :disabled, membership: :guest, access: nil1845 allows actions based on membership1846 container_level: :public, access_level: :disabled, membership: :non_member, access: nil1847 allows actions based on membership1848 container_level: :public, access_level: :disabled, membership: :anonymous, access: nil1849 allows actions based on membership1850 container_level: :internal, access_level: :enabled, membership: :admin, access: :all1851 allows actions based on membership1852 container_level: :internal, access_level: :enabled, membership: :maintainer, access: :maintainer1853 allows actions based on membership1854 container_level: :internal, access_level: :enabled, membership: :developer, access: :developer1855 allows actions based on membership1856 container_level: :internal, access_level: :enabled, membership: :reporter, access: :reporter1857 allows actions based on membership1858 container_level: :internal, access_level: :enabled, membership: :guest, access: :guest1859 allows actions based on membership1860 container_level: :internal, access_level: :enabled, membership: :non_member, access: :guest1861 allows actions based on membership1862 container_level: :internal, access_level: :enabled, membership: :anonymous, access: nil1863 allows actions based on membership1864 container_level: :internal, access_level: :private, membership: :admin, access: :all1865 allows actions based on membership1866 container_level: :internal, access_level: :private, membership: :maintainer, access: :maintainer1867 allows actions based on membership1868 container_level: :internal, access_level: :private, membership: :developer, access: :developer1869 allows actions based on membership1870 container_level: :internal, access_level: :private, membership: :reporter, access: :reporter1871 allows actions based on membership1872 container_level: :internal, access_level: :private, membership: :guest, access: :guest1873 allows actions based on membership1874 container_level: :internal, access_level: :private, membership: :non_member, access: nil1875 allows actions based on membership1876 container_level: :internal, access_level: :private, membership: :anonymous, access: nil1877 allows actions based on membership1878 container_level: :internal, access_level: :disabled, membership: :admin, access: nil1879 allows actions based on membership1880 container_level: :internal, access_level: :disabled, membership: :maintainer, access: nil1881 allows actions based on membership1882 container_level: :internal, access_level: :disabled, membership: :developer, access: nil1883 allows actions based on membership1884 container_level: :internal, access_level: :disabled, membership: :reporter, access: nil1885 allows actions based on membership1886 container_level: :internal, access_level: :disabled, membership: :guest, access: nil1887 allows actions based on membership1888 container_level: :internal, access_level: :disabled, membership: :non_member, access: nil1889 allows actions based on membership1890 container_level: :internal, access_level: :disabled, membership: :anonymous, access: nil1891 allows actions based on membership1892 container_level: :private, access_level: :private, membership: :admin, access: :all1893 allows actions based on membership1894 container_level: :private, access_level: :private, membership: :maintainer, access: :maintainer1895 allows actions based on membership1896 container_level: :private, access_level: :private, membership: :developer, access: :developer1897 allows actions based on membership1898 container_level: :private, access_level: :private, membership: :reporter, access: :reporter1899 allows actions based on membership1900 container_level: :private, access_level: :private, membership: :guest, access: :guest1901 allows actions based on membership1902 container_level: :private, access_level: :private, membership: :non_member, access: nil1903 allows actions based on membership1904 container_level: :private, access_level: :private, membership: :anonymous, access: nil1905 allows actions based on membership1906 container_level: :private, access_level: :disabled, membership: :admin, access: nil1907 allows actions based on membership1908 container_level: :private, access_level: :disabled, membership: :maintainer, access: nil1909 allows actions based on membership1910 container_level: :private, access_level: :disabled, membership: :developer, access: nil1911 allows actions based on membership1912 container_level: :private, access_level: :disabled, membership: :reporter, access: nil1913 allows actions based on membership1914 container_level: :private, access_level: :disabled, membership: :guest, access: nil1915 allows actions based on membership1916 container_level: :private, access_level: :disabled, membership: :non_member, access: nil1917 allows actions based on membership1918 container_level: :private, access_level: :disabled, membership: :anonymous, access: nil1919 allows actions based on membership1920 issues feature1921 when the feature is disabled1922 does not include the issues permissions1923 disables boards and lists permissions1924 when external tracker configured1925 does not include the issues permissions1926 merge requests feature1927 disallows all permissions when the feature is disabled1928 for a guest in a private project1929 disallows the guest from reading the merge request and merge request iid1930 pipeline feature1931 for confirmed user1932 allows modify pipelines1933 for unconfirmed user1934 disallows to modify pipelines1935 destroy permission1936 for developers1937 prevents :destroy_pipeline1938 for maintainers1939 prevents :destroy_pipeline1940 for project owner1941 allows :destroy_pipeline1942 on archived projects1943 prevents :destroy_pipeline1944 on archived pending_delete projects1945 allows :destroy_pipeline1946 builds feature1947 when builds are disabled1948 disallows all permissions except pipeline when the feature is disabled1949 when builds are disabled only for some users1950 disallows pipeline and commit_status permissions1951 repository feature1952 when user is a project member1953 when it is disabled1954 disallows all permissions1955 when user is non-member1956 when access level is private1957 disallows all permissions1958 behaves like project policies as anonymous1959 abilities for public projects1960 when a project has pending invites1961 does not grant owner access1962 behaves like archived project policies1963 when the project is archived1964 disables write actions on all relevant project features1965 disables some other important write actions1966 does not disable other abilities1967 abilities for non-public projects1968 is expected to be banned1969 behaves like project policies as guest1970 abilities for non-public projects1971 is expected not to be allowed :set_note_created_at1972 behaves like deploy token does not get confused with user1973 is expected not to be allowed :set_note_created_at1974 behaves like archived project policies1975 when the project is archived1976 disables write actions on all relevant project features1977 disables some other important write actions1978 does not disable other abilities1979 public builds enabled1980 is expected to be allowed :read_pipeline1981 when public builds disabled1982 is expected not to be allowed :read_pipeline1983 when builds are disabled1984 is expected to be allowed :read_pipeline1985 behaves like project policies as reporter1986 abilities for non-public projects1987 is expected not to be allowed :set_note_created_at1988 behaves like deploy token does not get confused with user1989 is expected not to be allowed :set_note_created_at1990 behaves like archived project policies1991 when the project is archived1992 disables write actions on all relevant project features1993 disables some other important write actions1994 does not disable other abilities1995 behaves like project policies as developer1996 abilities for non-public projects1997 is expected not to be allowed :set_note_created_at1998 behaves like deploy token does not get confused with user1999 is expected not to be allowed :set_note_created_at2000 behaves like archived project policies2001 when the project is archived2002 disables write actions on all relevant project features2003 disables some other important write actions2004 does not disable other abilities2005 behaves like project policies as maintainer2006 abilities for non-public projects2007 is expected not to be allowed :set_note_created_at2008 behaves like deploy token does not get confused with user2009 is expected not to be allowed :set_note_created_at2010 behaves like archived project policies2011 when the project is archived2012 disables write actions on all relevant project features2013 disables some other important write actions2014 does not disable other abilities2015 behaves like project policies as owner2016 abilities for non-public projects2017 is expected to be allowed :set_note_created_at2018 behaves like deploy token does not get confused with user2019 is expected not to be allowed :set_note_created_at2020 behaves like archived project policies2021 when the project is archived2022 disables write actions on all relevant project features2023 disables some other important write actions2024 does not disable other abilities2025 behaves like project policies as admin with admin mode2026 abilities for non-public projects2027 is expected to be allowed :set_note_created_at2028 deploy token does not get confused with user2029 is expected not to be allowed :set_note_created_at2030 behaves like archived project policies2031 when the project is archived2032 disables write actions on all relevant project features2033 disables some other important write actions2034 does not disable other abilities2035 abilities for all project visibility2036 behaves like project private features with read_all_resources ability2037 for public projects2038 allows the download_code ability2039 for internal projects2040 allows the download_code ability2041 for private projects2042 allows the download_code ability2043 behaves like project policies as admin without admin mode2044 abilities for non-public projects2045 is expected to be banned2046 deploy token does not get confused with user2047 is expected to be banned2048 when a public project has merge requests allowing access2049 does not allow pushing code2050 allows pushing if the user is a member with push access to the target project2051 disallows abilities to a maintainer if the merge request was closed2052 behaves like clusterable policies2053 #add_cluster?2054 with a developer2055 is expected not to be allowed :read_cluster2056 is expected not to be allowed :add_cluster2057 is expected not to be allowed :create_cluster2058 is expected not to be allowed :update_cluster2059 is expected not to be allowed :admin_cluster2060 with a maintainer2061 with no clusters2062 is expected to be allowed :read_cluster2063 is expected to be allowed :add_cluster2064 is expected to be allowed :create_cluster2065 is expected to be allowed :update_cluster2066 is expected to be allowed :admin_cluster2067 reading a project2068 allows access when a user has read access to the repo2069 never checks the external service2070 with an external authorization service2071 allows access when the external service allows it2072 prevents all but seeing a public project in a list when access is denied2073 passes the full path to external authorization for logging purposes2074 with an admin2075 when admin mode is enabled2076 does not check the external service and allows access2077 when admin mode is disabled2078 checks the external service and allows access2079 forking a project2080 anonymous user2081 is expected to be disallowed :fork_project2082 project member2083 guest2084 is expected to be disallowed :fork_project2085 reporter2086 is expected to be allowed :fork_project2087 developer2088 is expected to be allowed :fork_project2089 maintainer2090 is expected to be allowed :fork_project2091 update_max_artifacts_size2092 when no user2093 is expected not to be allowed :update_max_artifacts_size2094 admin2095 when admin mode is enabled2096 is expected to be allowed :update_max_artifacts_size2097 when admin mode is disabled2098 is expected not to be allowed :update_max_artifacts_size2099 guest2100 is expected not to be allowed :update_max_artifacts_size2101 reporter2102 is expected not to be allowed :update_max_artifacts_size2103 developer2104 is expected not to be allowed :update_max_artifacts_size2105 maintainer2106 is expected not to be allowed :update_max_artifacts_size2107 owner2108 is expected not to be allowed :update_max_artifacts_size2109 read_storage_disk_path2110 when no user2111 is expected not to be allowed :read_storage_disk_path2112 admin2113 when admin mode is enabled2114 is expected to be allowed :read_storage_disk_path2115 when admin mode is disabled2116 is expected not to be allowed :read_storage_disk_path2117 guest2118 is expected not to be allowed :read_storage_disk_path2119 reporter2120 is expected not to be allowed :read_storage_disk_path2121 developer2122 is expected not to be allowed :read_storage_disk_path2123 maintainer2124 is expected not to be allowed :read_storage_disk_path2125 owner2126 is expected not to be allowed :read_storage_disk_path2127 alert bot2128 is expected to be allowed :reporter_access2129 within a private project2130 is expected to be allowed :admin_issue2131 set_pipeline_variables2132 when user is developer2133 when project allows user defined variables2134 is expected to be allowed :set_pipeline_variables2135 when project restricts use of user defined variables2136 is expected not to be allowed :set_pipeline_variables2137 when user is maintainer2138 when project allows user defined variables2139 is expected to be allowed :set_pipeline_variables2140 when project restricts use of user defined variables2141 is expected to be allowed :set_pipeline_variables2142 support bot2143 with service desk disabled2144 is expected to be allowed :public_access2145 is expected not to be allowed :read_project2146 with service desk enabled2147 is expected to be allowed :read_issue2148 when issues are protected members only2149 is expected to be allowed :read_issue2150 project bots2151 project_bot_access2152 when regular user and part of the project2153 is expected not to be allowed :project_bot_access2154 when project bot and not part of the project2155 is expected not to be allowed :project_bot_access2156 when project bot and part of the project2157 is expected to be allowed :project_bot_access2158 with resource access tokens2159 is expected not to be allowed :create_resource_access_tokens2160 read_prometheus_alerts2161 with admin2162 when admin mode is enabled2163 is expected to be allowed :read_prometheus_alerts2164 when admin mode is disabled2165 is expected to be disallowed :read_prometheus_alerts2166 with owner2167 is expected to be allowed :read_prometheus_alerts2168 with maintainer2169 is expected to be allowed :read_prometheus_alerts2170 with developer2171 is expected to be disallowed :read_prometheus_alerts2172 with reporter2173 is expected to be disallowed :read_prometheus_alerts2174 with guest2175 is expected to be disallowed :read_prometheus_alerts2176 with anonymous2177 is expected to be disallowed :read_prometheus_alerts2178 metrics_dashboard feature2179 public project2180 feature private2181 with reporter2182 is expected to be allowed :metrics_dashboard2183 is expected to be allowed :read_prometheus2184 is expected to be allowed :read_deployment2185 is expected to be allowed :read_metrics_user_starred_dashboard2186 is expected to be allowed :create_metrics_user_starred_dashboard2187 with guest2188 is expected to be disallowed :metrics_dashboard2189 with anonymous2190 is expected to be disallowed :metrics_dashboard2191 feature enabled2192 with reporter2193 is expected to be allowed :metrics_dashboard2194 is expected to be allowed :read_prometheus2195 is expected to be allowed :read_deployment2196 is expected to be allowed :read_metrics_user_starred_dashboard2197 is expected to be allowed :create_metrics_user_starred_dashboard2198 with guest2199 is expected to be allowed :metrics_dashboard2200 is expected to be allowed :read_prometheus2201 is expected to be allowed :read_deployment2202 is expected to be allowed :read_metrics_user_starred_dashboard2203 is expected to be allowed :create_metrics_user_starred_dashboard2204 with anonymous2205 is expected to be allowed :metrics_dashboard2206 is expected to be allowed :read_prometheus2207 is expected to be allowed :read_deployment2208 is expected to be disallowed :read_metrics_user_starred_dashboard2209 is expected to be disallowed :create_metrics_user_starred_dashboard2210 internal project2211 feature private2212 with reporter2213 is expected to be allowed :metrics_dashboard2214 is expected to be allowed :read_prometheus2215 is expected to be allowed :read_deployment2216 is expected to be allowed :read_metrics_user_starred_dashboard2217 is expected to be allowed :create_metrics_user_starred_dashboard2218 with guest2219 is expected to be disallowed :metrics_dashboard2220 with anonymous2221 is expected to be disallowed :metrics_dashboard2222 feature enabled2223 with reporter2224 is expected to be allowed :metrics_dashboard2225 is expected to be allowed :read_prometheus2226 is expected to be allowed :read_deployment2227 is expected to be allowed :read_metrics_user_starred_dashboard2228 is expected to be allowed :create_metrics_user_starred_dashboard2229 with guest2230 is expected to be allowed :metrics_dashboard2231 is expected to be allowed :read_prometheus2232 is expected to be allowed :read_deployment2233 is expected to be allowed :read_metrics_user_starred_dashboard2234 is expected to be allowed :create_metrics_user_starred_dashboard2235 with anonymous2236 is expected to be disallowed :metrics_dashboard2237 private project2238 feature private2239 with reporter2240 is expected to be allowed :metrics_dashboard2241 is expected to be allowed :read_prometheus2242 is expected to be allowed :read_deployment2243 is expected to be allowed :read_metrics_user_starred_dashboard2244 is expected to be allowed :create_metrics_user_starred_dashboard2245 with guest2246 is expected to be disallowed :metrics_dashboard2247 with anonymous2248 is expected to be disallowed :metrics_dashboard2249 feature enabled2250 with reporter2251 is expected to be allowed :metrics_dashboard2252 is expected to be allowed :read_prometheus2253 is expected to be allowed :read_deployment2254 is expected to be allowed :read_metrics_user_starred_dashboard2255 is expected to be allowed :create_metrics_user_starred_dashboard2256 with guest2257 is expected to be disallowed :metrics_dashboard2258 with anonymous2259 is expected to be disallowed :metrics_dashboard2260 feature disabled2261 with reporter2262 is expected to be disallowed :metrics_dashboard2263 with guest2264 is expected to be disallowed :metrics_dashboard2265 with anonymous2266 is expected to be disallowed :metrics_dashboard2267 deploy key access2268 private project2269 when a read deploy key is enabled in the project2270 is expected to be allowed :download_code2271 is expected to be disallowed :push_code2272 is expected to be disallowed :read_project2273 when a write deploy key is enabled in the project2274 is expected to be allowed :download_code2275 is expected to be allowed :push_code2276 is expected to be disallowed :read_project2277 when the deploy key is not enabled in the project2278 is expected to be disallowed :download_code2279 is expected to be disallowed :push_code2280 is expected to be disallowed :read_project2281 deploy token access2282 a deploy token with read_package_registry scope2283 is expected to be allowed :read_package2284 is expected to be allowed :read_project2285 is expected to be disallowed :create_package2286 behaves like package access with repository disabled2287 when repository is disabled2288 is expected to be allowed :read_package2289 a deploy token with write_package_registry scope2290 is expected to be allowed :create_package2291 is expected to be allowed :read_package2292 is expected to be allowed :read_project2293 is expected to be disallowed :destroy_package2294 behaves like package access with repository disabled2295 when repository is disabled2296 is expected to be allowed :read_package2297 create_web_ide_terminal2298 with admin2299 when admin mode enabled2300 is expected to be allowed :create_web_ide_terminal2301 when admin mode disabled2302 is expected to be disallowed :create_web_ide_terminal2303 with owner2304 is expected to be allowed :create_web_ide_terminal2305 with maintainer2306 is expected to be allowed :create_web_ide_terminal2307 with developer2308 is expected to be disallowed :create_web_ide_terminal2309 with reporter2310 is expected to be disallowed :create_web_ide_terminal2311 with guest2312 is expected to be disallowed :create_web_ide_terminal2313 with non member2314 is expected to be disallowed :create_web_ide_terminal2315 with anonymous2316 is expected to be disallowed :create_web_ide_terminal2317 read_repository_graphs2318 when user can download_code2319 is expected to be allowed :read_repository_graphs2320 when user cannot download_code2321 is expected to be disallowed :read_repository_graphs2322 security configuration feature2323 guest2324 prevents reading security configuration2325 reporter2326 prevents reading security configuration2327 developer2328 allows reading security configuration2329 maintainer2330 allows reading security configuration2331 owner2332 allows reading security configuration2333 infrastructure google cloud feature2334 guest2335 disallows managing google cloud2336 reporter2337 disallows managing google cloud2338 developer2339 disallows managing google cloud2340 maintainer2341 allows managing google cloud2342 owner2343 allows managing google cloud2344 design permissions2345 when design management is not available2346 is expected not to be allowed :read_design_activity and :read_design2347 when design management is available2348 is expected to be allowed :read_design_activity and :read_design2349 read_build_report_results2350 when user can read_build and read_pipeline2351 is expected to be allowed :read_build_report_results2352 when user can read_build but cannot read_pipeline2353 is expected to be disallowed :read_build_report_results2354 when user cannot read_build but can read_pipeline2355 is expected to be disallowed :read_build_report_results2356 when user cannot read_build and cannot read_pipeline2357 is expected to be disallowed :read_build_report_results2358 read_package2359 with admin2360 is expected to be allowed :read_package2361 behaves like package access with repository disabled2362 when repository is disabled2363 is expected to be allowed :read_package2364 with owner2365 is expected to be allowed :read_package2366 with maintainer2367 is expected to be allowed :read_package2368 with developer2369 is expected to be allowed :read_package2370 with reporter2371 is expected to be allowed :read_package2372 with guest2373 is expected to be allowed :read_package2374 with non member2375 is expected to be allowed :read_package2376 with anonymous2377 is expected to be allowed :read_package2378 read_feature_flag2379 with maintainer2380 when repository is available2381 is expected to be allowed :read_feature_flag2382 when repository is disabled2383 is expected to be disallowed :read_feature_flag2384 with developer2385 when repository is available2386 is expected to be allowed :read_feature_flag2387 with reporter2388 when repository is available2389 is expected to be disallowed :read_feature_flag2390 read_analytics2391 anonymous user2392 is expected to be allowed :read_analytics2393 with various analytics features2394 when analytics is disabled for the project2395 for guest user2396 is expected to be disallowed :read_cycle_analytics2397 is expected to be disallowed :read_insights2398 is expected to be disallowed :read_repository_graphs2399 is expected to be disallowed :read_ci_cd_analytics2400 for reporter user2401 is expected to be disallowed :read_cycle_analytics2402 is expected to be disallowed :read_insights2403 is expected to be disallowed :read_repository_graphs2404 is expected to be disallowed :read_ci_cd_analytics2405 for developer2406 is expected to be disallowed :read_cycle_analytics2407 is expected to be disallowed :read_insights2408 is expected to be disallowed :read_repository_graphs2409 is expected to be disallowed :read_ci_cd_analytics2410 when analytics is private for the project2411 for guest user2412 is expected to be allowed :read_cycle_analytics2413 is expected to be allowed :read_insights2414 is expected to be disallowed :read_repository_graphs2415 is expected to be disallowed :read_ci_cd_analytics2416 for reporter user2417 is expected to be allowed :read_cycle_analytics2418 is expected to be allowed :read_insights2419 is expected to be allowed :read_repository_graphs2420 is expected to be allowed :read_ci_cd_analytics2421 for developer2422 is expected to be allowed :read_cycle_analytics2423 is expected to be allowed :read_insights2424 is expected to be allowed :read_repository_graphs2425 is expected to be allowed :read_ci_cd_analytics2426 when analytics is enabled for the project2427 for guest user2428 is expected to be allowed :read_cycle_analytics2429 is expected to be allowed :read_insights2430 is expected to be disallowed :read_repository_graphs2431 is expected to be disallowed :read_ci_cd_analytics2432 for reporter user2433 is expected to be allowed :read_cycle_analytics2434 is expected to be allowed :read_insights2435 is expected to be allowed :read_repository_graphs2436 is expected to be allowed :read_ci_cd_analytics2437 for developer2438 is expected to be allowed :read_cycle_analytics2439 is expected to be allowed :read_insights2440 is expected to be allowed :read_repository_graphs2441 is expected to be allowed :read_ci_cd_analytics2442 project member2443 guest2444 is expected to be allowed :read_analytics2445 without access to Analytics2446 is expected to be disallowed :read_analytics2447 reporter2448 is expected to be allowed :read_analytics2449 without access to Analytics2450 is expected to be disallowed :read_analytics2451 developer2452 is expected to be allowed :read_analytics2453 without access to Analytics2454 is expected to be disallowed :read_analytics2455 maintainer2456 is expected to be allowed :read_analytics2457 without access to Analytics2458 is expected to be disallowed :read_analytics2459 behaves like Self-managed Core resource access tokens2460 with owner access2461 create resource access tokens2462 is expected to be allowed :create_resource_access_tokens2463 when resource access token creation is not allowed2464 is expected not to be allowed :create_resource_access_tokens2465 when parent group has project access token creation disabled2466 is expected not to be allowed :create_resource_access_tokens2467 with a personal namespace project2468 is expected to be allowed :create_resource_access_tokens2469 read resource access tokens2470 is expected to be allowed :read_resource_access_tokens2471 destroy resource access tokens2472 is expected to be allowed :destroy_resource_access_tokens2473 with developer access2474 create resource access tokens2475 is expected not to be allowed :create_resource_access_tokens2476 read resource access tokens2477 is expected not to be allowed :read_resource_access_tokens2478 destroy resource access tokens2479 is expected not to be allowed :destroy_resource_access_tokens2480 operations feature2481 project_visibility: :public, access_level: 20, role: :maintainer, allowed: true2482 allows/disallows the abilities based on the operation feature access level2483 project_visibility: :public, access_level: 20, role: :developer, allowed: true2484 allows/disallows the abilities based on the operation feature access level2485 project_visibility: :public, access_level: 20, role: :guest, allowed: true2486 allows/disallows the abilities based on the operation feature access level2487 project_visibility: :public, access_level: 20, role: :anonymous, allowed: true2488 allows/disallows the abilities based on the operation feature access level2489 project_visibility: :public, access_level: 10, role: :maintainer, allowed: true2490 allows/disallows the abilities based on the operation feature access level2491 project_visibility: :public, access_level: 10, role: :developer, allowed: true2492 allows/disallows the abilities based on the operation feature access level2493 project_visibility: :public, access_level: 10, role: :guest, allowed: true2494 allows/disallows the abilities based on the operation feature access level2495 project_visibility: :public, access_level: 10, role: :anonymous, allowed: false2496 allows/disallows the abilities based on the operation feature access level2497 project_visibility: :public, access_level: 0, role: :maintainer, allowed: false2498 allows/disallows the abilities based on the operation feature access level2499 project_visibility: :public, access_level: 0, role: :developer, allowed: false2500 allows/disallows the abilities based on the operation feature access level2501 project_visibility: :public, access_level: 0, role: :guest, allowed: false2502 allows/disallows the abilities based on the operation feature access level2503 project_visibility: :public, access_level: 0, role: :anonymous, allowed: false2504 allows/disallows the abilities based on the operation feature access level2505 project_visibility: :internal, access_level: 20, role: :maintainer, allowed: true2506 allows/disallows the abilities based on the operation feature access level2507 project_visibility: :internal, access_level: 20, role: :developer, allowed: true2508 allows/disallows the abilities based on the operation feature access level2509 project_visibility: :internal, access_level: 20, role: :guest, allowed: true2510 allows/disallows the abilities based on the operation feature access level2511 project_visibility: :internal, access_level: 20, role: :anonymous, allowed: false2512 allows/disallows the abilities based on the operation feature access level2513 project_visibility: :internal, access_level: 10, role: :maintainer, allowed: true2514 allows/disallows the abilities based on the operation feature access level2515 project_visibility: :internal, access_level: 10, role: :developer, allowed: true2516 allows/disallows the abilities based on the operation feature access level2517 project_visibility: :internal, access_level: 10, role: :guest, allowed: true2518 allows/disallows the abilities based on the operation feature access level2519 project_visibility: :internal, access_level: 10, role: :anonymous, allowed: false2520 allows/disallows the abilities based on the operation feature access level2521 project_visibility: :internal, access_level: 0, role: :maintainer, allowed: false2522 allows/disallows the abilities based on the operation feature access level2523 project_visibility: :internal, access_level: 0, role: :developer, allowed: false2524 allows/disallows the abilities based on the operation feature access level2525 project_visibility: :internal, access_level: 0, role: :guest, allowed: false2526 allows/disallows the abilities based on the operation feature access level2527 project_visibility: :internal, access_level: 0, role: :anonymous, allowed: false2528 allows/disallows the abilities based on the operation feature access level2529 project_visibility: :private, access_level: 20, role: :maintainer, allowed: true2530 allows/disallows the abilities based on the operation feature access level2531 project_visibility: :private, access_level: 20, role: :developer, allowed: true2532 allows/disallows the abilities based on the operation feature access level2533 project_visibility: :private, access_level: 20, role: :guest, allowed: false2534 allows/disallows the abilities based on the operation feature access level2535 project_visibility: :private, access_level: 20, role: :anonymous, allowed: false2536 allows/disallows the abilities based on the operation feature access level2537 project_visibility: :private, access_level: 10, role: :maintainer, allowed: true2538 allows/disallows the abilities based on the operation feature access level2539 project_visibility: :private, access_level: 10, role: :developer, allowed: true2540 allows/disallows the abilities based on the operation feature access level2541 project_visibility: :private, access_level: 10, role: :guest, allowed: false2542 allows/disallows the abilities based on the operation feature access level2543 project_visibility: :private, access_level: 10, role: :anonymous, allowed: false2544 allows/disallows the abilities based on the operation feature access level2545 project_visibility: :private, access_level: 0, role: :maintainer, allowed: false2546 allows/disallows the abilities based on the operation feature access level2547 project_visibility: :private, access_level: 0, role: :developer, allowed: false2548 allows/disallows the abilities based on the operation feature access level2549 project_visibility: :private, access_level: 0, role: :guest, allowed: false2550 allows/disallows the abilities based on the operation feature access level2551 project_visibility: :private, access_level: 0, role: :anonymous, allowed: false2552 allows/disallows the abilities based on the operation feature access level2553 access_security_and_compliance2554 when the "Security & Compliance" is enabled2555 when the role is owner2556 is expected to be allowed :access_security_and_compliance2557 when the role is maintainer2558 is expected to be allowed :access_security_and_compliance2559 when the role is developer2560 is expected to be allowed :access_security_and_compliance2561 with admin2562 when admin mode enabled2563 is expected to be allowed :access_security_and_compliance2564 when admin mode disabled2565 is expected to be disallowed :access_security_and_compliance2566 when the role is reporter2567 is expected to be disallowed :access_security_and_compliance2568 when the role is guest2569 is expected to be disallowed :access_security_and_compliance2570 with non member2571 is expected to be disallowed :access_security_and_compliance2572 with anonymous2573 is expected to be disallowed :access_security_and_compliance2574 when the "Security & Compliance" is not enabled2575 when the role is owner2576 is expected to be disallowed :access_security_and_compliance2577 when the role is maintainer2578 is expected to be disallowed :access_security_and_compliance2579 when the role is developer2580 is expected to be disallowed :access_security_and_compliance2581 when the role is reporter2582 is expected to be disallowed :access_security_and_compliance2583 when the role is guest2584 is expected to be disallowed :access_security_and_compliance2585 with admin2586 when admin mode enabled2587 is expected to be disallowed :access_security_and_compliance2588 when admin mode disabled2589 is expected to be disallowed :access_security_and_compliance2590 with non member2591 is expected to be disallowed :access_security_and_compliance2592 with anonymous2593 is expected to be disallowed :access_security_and_compliance2594 when user is authenticated via CI_JOB_TOKEN2595 project_visibility: :private, user_role: :reporter, external_user: false, scope_project_type: :same, token_scope_enabled: true, result: true2596 enforces the expected permissions2597 project_visibility: :private, user_role: :reporter, external_user: false, scope_project_type: :same, token_scope_enabled: false, result: true2598 enforces the expected permissions2599 project_visibility: :private, user_role: :reporter, external_user: false, scope_project_type: :different, token_scope_enabled: true, result: false2600 enforces the expected permissions2601 project_visibility: :private, user_role: :reporter, external_user: false, scope_project_type: :different, token_scope_enabled: false, result: true2602 enforces the expected permissions2603 project_visibility: :private, user_role: :guest, external_user: false, scope_project_type: :same, token_scope_enabled: true, result: true2604 enforces the expected permissions2605 project_visibility: :private, user_role: :guest, external_user: false, scope_project_type: :same, token_scope_enabled: false, result: true2606 enforces the expected permissions2607 project_visibility: :private, user_role: :guest, external_user: false, scope_project_type: :different, token_scope_enabled: true, result: false2608 enforces the expected permissions2609 project_visibility: :private, user_role: :guest, external_user: false, scope_project_type: :different, token_scope_enabled: false, result: true2610 enforces the expected permissions2611 project_visibility: :internal, user_role: :reporter, external_user: false, scope_project_type: :same, token_scope_enabled: true, result: true2612 enforces the expected permissions2613 project_visibility: :internal, user_role: :reporter, external_user: true, scope_project_type: :same, token_scope_enabled: true, result: true2614 enforces the expected permissions2615 project_visibility: :internal, user_role: :reporter, external_user: false, scope_project_type: :same, token_scope_enabled: false, result: true2616 enforces the expected permissions2617 project_visibility: :internal, user_role: :reporter, external_user: false, scope_project_type: :different, token_scope_enabled: true, result: true2618 enforces the expected permissions2619 project_visibility: :internal, user_role: :reporter, external_user: true, scope_project_type: :different, token_scope_enabled: true, result: false2620 enforces the expected permissions2621 project_visibility: :internal, user_role: :reporter, external_user: false, scope_project_type: :different, token_scope_enabled: false, result: true2622 enforces the expected permissions2623 project_visibility: :internal, user_role: :guest, external_user: false, scope_project_type: :same, token_scope_enabled: true, result: true2624 enforces the expected permissions2625 project_visibility: :internal, user_role: :guest, external_user: true, scope_project_type: :same, token_scope_enabled: true, result: true2626 enforces the expected permissions2627 project_visibility: :internal, user_role: :guest, external_user: false, scope_project_type: :same, token_scope_enabled: false, result: true2628 enforces the expected permissions2629 project_visibility: :internal, user_role: :guest, external_user: false, scope_project_type: :different, token_scope_enabled: true, result: true2630 enforces the expected permissions2631 project_visibility: :internal, user_role: :guest, external_user: true, scope_project_type: :different, token_scope_enabled: true, result: false2632 enforces the expected permissions2633 project_visibility: :internal, user_role: :guest, external_user: false, scope_project_type: :different, token_scope_enabled: false, result: true2634 enforces the expected permissions2635 project_visibility: :public, user_role: :reporter, external_user: false, scope_project_type: :same, token_scope_enabled: true, result: true2636 enforces the expected permissions2637 project_visibility: :public, user_role: :reporter, external_user: false, scope_project_type: :same, token_scope_enabled: false, result: true2638 enforces the expected permissions2639 project_visibility: :public, user_role: :reporter, external_user: false, scope_project_type: :different, token_scope_enabled: true, result: true2640 enforces the expected permissions2641 project_visibility: :public, user_role: :reporter, external_user: false, scope_project_type: :different, token_scope_enabled: false, result: true2642 enforces the expected permissions2643 project_visibility: :public, user_role: :guest, external_user: false, scope_project_type: :same, token_scope_enabled: true, result: true2644 enforces the expected permissions2645 project_visibility: :public, user_role: :guest, external_user: false, scope_project_type: :same, token_scope_enabled: false, result: true2646 enforces the expected permissions2647 project_visibility: :public, user_role: :guest, external_user: false, scope_project_type: :different, token_scope_enabled: true, result: true2648 enforces the expected permissions2649 project_visibility: :public, user_role: :guest, external_user: false, scope_project_type: :different, token_scope_enabled: false, result: true2650 enforces the expected permissions2651 container_image policies2652 project_visibility: :public, access_level: 20, role: :admin, allowed: true2653 allows/disallows the abilities based on the container_registry feature access level2654 allows build_read_container_image to admins who are also team members2655 project_visibility: :public, access_level: 20, role: :owner, allowed: true2656 allows/disallows the abilities based on the container_registry feature access level2657 allows build_read_container_image to admins who are also team members2658 project_visibility: :public, access_level: 20, role: :maintainer, allowed: true2659 allows/disallows the abilities based on the container_registry feature access level2660 allows build_read_container_image to admins who are also team members2661 project_visibility: :public, access_level: 20, role: :developer, allowed: true2662 allows/disallows the abilities based on the container_registry feature access level2663 allows build_read_container_image to admins who are also team members2664 project_visibility: :public, access_level: 20, role: :reporter, allowed: true2665 allows/disallows the abilities based on the container_registry feature access level2666 allows build_read_container_image to admins who are also team members2667 project_visibility: :public, access_level: 20, role: :guest, allowed: true2668 allows/disallows the abilities based on the container_registry feature access level2669 allows build_read_container_image to admins who are also team members2670 project_visibility: :public, access_level: 20, role: :anonymous, allowed: true2671 allows/disallows the abilities based on the container_registry feature access level2672 allows build_read_container_image to admins who are also team members2673 project_visibility: :public, access_level: 10, role: :admin, allowed: true2674 allows/disallows the abilities based on the container_registry feature access level2675 allows build_read_container_image to admins who are also team members2676 project_visibility: :public, access_level: 10, role: :owner, allowed: true2677 allows/disallows the abilities based on the container_registry feature access level2678 allows build_read_container_image to admins who are also team members2679 project_visibility: :public, access_level: 10, role: :maintainer, allowed: true2680 allows/disallows the abilities based on the container_registry feature access level2681 allows build_read_container_image to admins who are also team members2682 project_visibility: :public, access_level: 10, role: :developer, allowed: true2683 allows/disallows the abilities based on the container_registry feature access level2684 allows build_read_container_image to admins who are also team members2685 project_visibility: :public, access_level: 10, role: :reporter, allowed: true2686 allows/disallows the abilities based on the container_registry feature access level2687 allows build_read_container_image to admins who are also team members2688 project_visibility: :public, access_level: 10, role: :guest, allowed: false2689 allows/disallows the abilities based on the container_registry feature access level2690 allows build_read_container_image to admins who are also team members2691 project_visibility: :public, access_level: 10, role: :anonymous, allowed: false2692 allows/disallows the abilities based on the container_registry feature access level2693 allows build_read_container_image to admins who are also team members2694 project_visibility: :public, access_level: 0, role: :admin, allowed: false2695 allows/disallows the abilities based on the container_registry feature access level2696 allows build_read_container_image to admins who are also team members2697 project_visibility: :public, access_level: 0, role: :owner, allowed: false2698 allows/disallows the abilities based on the container_registry feature access level2699 allows build_read_container_image to admins who are also team members2700 project_visibility: :public, access_level: 0, role: :maintainer, allowed: false2701 allows/disallows the abilities based on the container_registry feature access level2702 allows build_read_container_image to admins who are also team members2703 project_visibility: :public, access_level: 0, role: :developer, allowed: false2704 allows/disallows the abilities based on the container_registry feature access level2705 allows build_read_container_image to admins who are also team members2706 project_visibility: :public, access_level: 0, role: :reporter, allowed: false2707 allows/disallows the abilities based on the container_registry feature access level2708 allows build_read_container_image to admins who are also team members2709 project_visibility: :public, access_level: 0, role: :guest, allowed: false2710 allows/disallows the abilities based on the container_registry feature access level2711 allows build_read_container_image to admins who are also team members2712 project_visibility: :public, access_level: 0, role: :anonymous, allowed: false2713 allows/disallows the abilities based on the container_registry feature access level2714 allows build_read_container_image to admins who are also team members2715 project_visibility: :internal, access_level: 20, role: :admin, allowed: true2716 allows/disallows the abilities based on the container_registry feature access level2717 allows build_read_container_image to admins who are also team members2718 project_visibility: :internal, access_level: 20, role: :owner, allowed: true2719 allows/disallows the abilities based on the container_registry feature access level2720 allows build_read_container_image to admins who are also team members2721 project_visibility: :internal, access_level: 20, role: :maintainer, allowed: true2722 allows/disallows the abilities based on the container_registry feature access level2723 allows build_read_container_image to admins who are also team members2724 project_visibility: :internal, access_level: 20, role: :developer, allowed: true2725 allows/disallows the abilities based on the container_registry feature access level2726 allows build_read_container_image to admins who are also team members2727 project_visibility: :internal, access_level: 20, role: :reporter, allowed: true2728 allows/disallows the abilities based on the container_registry feature access level2729 allows build_read_container_image to admins who are also team members2730 project_visibility: :internal, access_level: 20, role: :guest, allowed: true2731 allows/disallows the abilities based on the container_registry feature access level2732 allows build_read_container_image to admins who are also team members2733 project_visibility: :internal, access_level: 20, role: :anonymous, allowed: false2734 allows/disallows the abilities based on the container_registry feature access level2735 allows build_read_container_image to admins who are also team members2736 project_visibility: :internal, access_level: 10, role: :admin, allowed: true2737 allows/disallows the abilities based on the container_registry feature access level2738 allows build_read_container_image to admins who are also team members2739 project_visibility: :internal, access_level: 10, role: :owner, allowed: true2740 allows/disallows the abilities based on the container_registry feature access level2741 allows build_read_container_image to admins who are also team members2742 project_visibility: :internal, access_level: 10, role: :maintainer, allowed: true2743 allows/disallows the abilities based on the container_registry feature access level2744 allows build_read_container_image to admins who are also team members2745 project_visibility: :internal, access_level: 10, role: :developer, allowed: true2746 allows/disallows the abilities based on the container_registry feature access level2747 allows build_read_container_image to admins who are also team members2748 project_visibility: :internal, access_level: 10, role: :reporter, allowed: true2749 allows/disallows the abilities based on the container_registry feature access level2750 allows build_read_container_image to admins who are also team members2751 project_visibility: :internal, access_level: 10, role: :guest, allowed: false2752 allows/disallows the abilities based on the container_registry feature access level2753 allows build_read_container_image to admins who are also team members2754 project_visibility: :internal, access_level: 10, role: :anonymous, allowed: false2755 allows/disallows the abilities based on the container_registry feature access level2756 allows build_read_container_image to admins who are also team members2757 project_visibility: :internal, access_level: 0, role: :admin, allowed: false2758 allows/disallows the abilities based on the container_registry feature access level2759 allows build_read_container_image to admins who are also team members2760 project_visibility: :internal, access_level: 0, role: :owner, allowed: false2761 allows/disallows the abilities based on the container_registry feature access level2762 allows build_read_container_image to admins who are also team members2763 project_visibility: :internal, access_level: 0, role: :maintainer, allowed: false2764 allows/disallows the abilities based on the container_registry feature access level2765 allows build_read_container_image to admins who are also team members2766 project_visibility: :internal, access_level: 0, role: :developer, allowed: false2767 allows/disallows the abilities based on the container_registry feature access level2768 allows build_read_container_image to admins who are also team members2769 project_visibility: :internal, access_level: 0, role: :reporter, allowed: false2770 allows/disallows the abilities based on the container_registry feature access level2771 allows build_read_container_image to admins who are also team members2772 project_visibility: :internal, access_level: 0, role: :guest, allowed: false2773 allows/disallows the abilities based on the container_registry feature access level2774 allows build_read_container_image to admins who are also team members2775 project_visibility: :internal, access_level: 0, role: :anonymous, allowed: false2776 allows/disallows the abilities based on the container_registry feature access level2777 allows build_read_container_image to admins who are also team members2778 project_visibility: :private, access_level: 20, role: :admin, allowed: true2779 allows/disallows the abilities based on the container_registry feature access level2780 allows build_read_container_image to admins who are also team members2781 project_visibility: :private, access_level: 20, role: :owner, allowed: true2782 allows/disallows the abilities based on the container_registry feature access level2783 allows build_read_container_image to admins who are also team members2784 project_visibility: :private, access_level: 20, role: :maintainer, allowed: true2785 allows/disallows the abilities based on the container_registry feature access level2786 allows build_read_container_image to admins who are also team members2787 project_visibility: :private, access_level: 20, role: :developer, allowed: true2788 allows/disallows the abilities based on the container_registry feature access level2789 allows build_read_container_image to admins who are also team members2790 project_visibility: :private, access_level: 20, role: :reporter, allowed: true2791 allows/disallows the abilities based on the container_registry feature access level2792 allows build_read_container_image to admins who are also team members2793 project_visibility: :private, access_level: 20, role: :guest, allowed: false2794 allows/disallows the abilities based on the container_registry feature access level2795 allows build_read_container_image to admins who are also team members2796 project_visibility: :private, access_level: 20, role: :anonymous, allowed: false2797 allows/disallows the abilities based on the container_registry feature access level2798 allows build_read_container_image to admins who are also team members2799 project_visibility: :private, access_level: 10, role: :admin, allowed: true2800 allows/disallows the abilities based on the container_registry feature access level2801 allows build_read_container_image to admins who are also team members2802 project_visibility: :private, access_level: 10, role: :owner, allowed: true2803 allows/disallows the abilities based on the container_registry feature access level2804 allows build_read_container_image to admins who are also team members2805 project_visibility: :private, access_level: 10, role: :maintainer, allowed: true2806 allows/disallows the abilities based on the container_registry feature access level2807 allows build_read_container_image to admins who are also team members2808 project_visibility: :private, access_level: 10, role: :developer, allowed: true2809 allows/disallows the abilities based on the container_registry feature access level2810 allows build_read_container_image to admins who are also team members2811 project_visibility: :private, access_level: 10, role: :reporter, allowed: true2812 allows/disallows the abilities based on the container_registry feature access level2813 allows build_read_container_image to admins who are also team members2814 project_visibility: :private, access_level: 10, role: :guest, allowed: false2815 allows/disallows the abilities based on the container_registry feature access level2816 allows build_read_container_image to admins who are also team members2817 project_visibility: :private, access_level: 10, role: :anonymous, allowed: false2818 allows/disallows the abilities based on the container_registry feature access level2819 allows build_read_container_image to admins who are also team members2820 project_visibility: :private, access_level: 0, role: :admin, allowed: false2821 allows/disallows the abilities based on the container_registry feature access level2822 allows build_read_container_image to admins who are also team members2823 project_visibility: :private, access_level: 0, role: :owner, allowed: false2824 allows/disallows the abilities based on the container_registry feature access level2825 allows build_read_container_image to admins who are also team members2826 project_visibility: :private, access_level: 0, role: :maintainer, allowed: false2827 allows/disallows the abilities based on the container_registry feature access level2828 allows build_read_container_image to admins who are also team members2829 project_visibility: :private, access_level: 0, role: :developer, allowed: false2830 allows/disallows the abilities based on the container_registry feature access level2831 allows build_read_container_image to admins who are also team members2832 project_visibility: :private, access_level: 0, role: :reporter, allowed: false2833 allows/disallows the abilities based on the container_registry feature access level2834 allows build_read_container_image to admins who are also team members2835 project_visibility: :private, access_level: 0, role: :guest, allowed: false2836 allows/disallows the abilities based on the container_registry feature access level2837 allows build_read_container_image to admins who are also team members2838 project_visibility: :private, access_level: 0, role: :anonymous, allowed: false2839 allows/disallows the abilities based on the container_registry feature access level2840 allows build_read_container_image to admins who are also team members2841 update_runners_registration_token2842 when anonymous2843 is expected not to be allowed :update_runners_registration_token2844 admin2845 when admin mode is enabled2846 is expected to be allowed :update_runners_registration_token2847 when admin mode is disabled2848 is expected to be disallowed :update_runners_registration_token2849 guest2850 is expected to be disallowed :update_runners_registration_token2851 reporter2852 is expected to be disallowed :update_runners_registration_token2853 developer2854 is expected to be disallowed :update_runners_registration_token2855 maintainer2856 is expected to be allowed :update_runners_registration_token2857 owner2858 is expected to be allowed :update_runners_registration_token2859Git::BranchPushService2860 Push branches2861 new branch2862 is expected to be truthy2863 calls the after_push_commit hook2864 calls the after_create_branch hook2865 existing branch2866 is expected to be truthy2867 calls the after_push_commit hook2868 rm branch2869 is expected to be truthy2870 calls the after_push_commit hook2871 calls the after_remove_branch hook2872 Pipelines2873 creates a pipeline with the right parameters2874 creates a new pipeline2875 when pipeline has errors2876 reports an error2877 with push options2878 sanitizes push options2879 when .gitlab-ci.yml file is invalid2880 persists an error pipeline2881 Updates merge requests2882 when pushing a new branch for the first time2883 Updates git attributes2884 for default branch2885 calls the copy attributes method for the first push to the default branch2886 calls the copy attributes method for changes to the default branch2887 for non-default branch2888 does not call copy attributes method2889 Webhooks2890 execute webhooks2891 when pushing a branch for the first time2892 when pushing a branch for the first time with default branch protection disabled2893 when pushing a branch for the first time with default branch protection set to 'developers can push'2894 when pushing a branch for the first time with an existing branch permission configured2895 when pushing a branch for the first time with default branch protection set to 'developers can merge'2896 when pushing new commits to existing branch2897 cross-reference notes2898 creates a note if a pushed commit mentions an issue2899 only creates a cross-reference note if one doesn't already exist2900 defaults to the pushing user if the commit's author is not known2901 finds references in the first push to a non-default branch2902 issue metrics2903 while saving the 'first_mentioned_in_commit_at' metric for an issue2904 sets the metric for referenced issues2905 does not set the metric for non-referenced issues2906 closing issues from pushed commits containing a closing reference2907 to default branches2908 closes issues2909 adds a note indicating that the issue is now closed2910 doesn't create additional cross-reference notes2911 to non-default branches2912 creates cross-reference notes2913 doesn't close issues2914 for jira issue tracker2915 mentioning an issue2916 initiates one api call to jira server to mention the issue2917 closing an issue2918 using right markdown2919 initiates one api call to jira server to close the issue2920 initiates one api call to jira server to comment on the issue2921 using internal issue reference2922 when internal issues are disabled2923 does not initiates one api call to jira server to close the issue2924 does not initiates one api call to jira server to comment on the issue2925 when internal issues are enabled2926 initiates one api call to jira server to close the jira issue2927 initiates one api call to jira server to comment on the jira issue2928 closes the internal issue2929 adds a note indicating that the issue is now closed2930 empty project2931 push to first branch updates HEAD2932 CI environments2933 create branch2934 does nothing2935 update branch2936 does nothing2937 delete branch2938 stops environments2939 artifacts2940 create branch2941 does nothing2942 update branch2943 does nothing2944 delete branch2945 unlocks artifacts2946 Hooks2947 run on a branch2948 delegates to Git::BranchHooksService2949 run on a tag2950 does nothing2951 Jira Connect hooks2952 with a Jira subscription2953 branch name contains Jira issue key2954 behaves like enqueues Jira sync worker2955 aggregate_failures2956 commit message contains Jira issue key2957 behaves like enqueues Jira sync worker2958 aggregate_failures2959 branch name and commit message does not contain Jira issue key2960 behaves like does not enqueue Jira sync worker2961 is expected not to change `Array#size`2962 without a Jira subscription2963 behaves like does not enqueue Jira sync worker2964 is expected not to change `Array#size`2965GroupMembersFinder#execute2966 relations2967 raises an error if a non-supported relation type is used2968 subject_relations: nil, subject_group: :group, expected_members: [:user1_group, :user2_group, :user3_group, :user4_group]2969 returns correct members2970 subject_relations: [:direct], subject_group: :group, expected_members: [:user1_group, :user2_group, :user3_group, :user4_group]2971 returns correct members2972 subject_relations: [:inherited], subject_group: :group, expected_members: []2973 returns correct members2974 subject_relations: [:descendants], subject_group: :group, expected_members: [:user1_sub_sub_group, :user2_sub_group, :user3_sub_group, :user4_sub_group]2975 returns correct members2976 subject_relations: [:direct, :inherited], subject_group: :group, expected_members: [:user1_group, :user2_group, :user3_group, :user4_group]2977 returns correct members2978 subject_relations: [:direct, :descendants], subject_group: :group, expected_members: [:user1_sub_sub_group, :user2_group, :user3_sub_group, :user4_group]2979 returns correct members2980 subject_relations: [:descendants, :inherited], subject_group: :group, expected_members: [:user1_sub_sub_group, :user2_sub_group, :user3_sub_group, :user4_sub_group]2981 returns correct members2982 subject_relations: [:direct, :descendants, :inherited], subject_group: :group, expected_members: [:user1_sub_sub_group, :user2_group, :user3_sub_group, :user4_group]2983 returns correct members2984 subject_relations: nil, subject_group: :sub_group, expected_members: [:user1_sub_group, :user2_group, :user3_sub_group, :user4_group]2985 returns correct members2986 subject_relations: [:direct], subject_group: :sub_group, expected_members: [:user1_sub_group, :user2_sub_group, :user3_sub_group, :user4_sub_group]2987 returns correct members2988 subject_relations: [:inherited], subject_group: :sub_group, expected_members: [:user1_group, :user2_group, :user3_group, :user4_group]2989 returns correct members2990 subject_relations: [:descendants], subject_group: :sub_group, expected_members: [:user1_sub_sub_group, :user2_sub_sub_group, :user3_sub_sub_group, :user4_sub_sub_group]2991 returns correct members2992 subject_relations: [:direct, :inherited], subject_group: :sub_group, expected_members: [:user1_sub_group, :user2_group, :user3_sub_group, :user4_group]2993 returns correct members2994 subject_relations: [:direct, :descendants], subject_group: :sub_group, expected_members: [:user1_sub_sub_group, :user2_sub_group, :user3_sub_group, :user4_sub_group]2995 returns correct members2996 subject_relations: [:descendants, :inherited], subject_group: :sub_group, expected_members: [:user1_sub_sub_group, :user2_group, :user3_sub_sub_group, :user4_group]2997 returns correct members2998 subject_relations: [:direct, :descendants, :inherited], subject_group: :sub_group, expected_members: [:user1_sub_sub_group, :user2_group, :user3_sub_group, :user4_group]2999 returns correct members3000 subject_relations: nil, subject_group: :sub_sub_group, expected_members: [:user1_sub_sub_group, :user2_group, :user3_sub_group, :user4_group]3001 returns correct members3002 subject_relations: [:direct], subject_group: :sub_sub_group, expected_members: [:user1_sub_sub_group, :user2_sub_sub_group, :user3_sub_sub_group, :user4_sub_sub_group]3003 returns correct members3004 subject_relations: [:inherited], subject_group: :sub_sub_group, expected_members: [:user1_sub_group, :user2_group, :user3_sub_group, :user4_group]3005 returns correct members3006 subject_relations: [:descendants], subject_group: :sub_sub_group, expected_members: []3007 returns correct members3008 subject_relations: [:direct, :inherited], subject_group: :sub_sub_group, expected_members: [:user1_sub_sub_group, :user2_group, :user3_sub_group, :user4_group]3009 returns correct members3010 subject_relations: [:direct, :descendants], subject_group: :sub_sub_group, expected_members: [:user1_sub_sub_group, :user2_sub_sub_group, :user3_sub_sub_group, :user4_sub_sub_group]3011 returns correct members3012 subject_relations: [:descendants, :inherited], subject_group: :sub_sub_group, expected_members: [:user1_sub_group, :user2_group, :user3_sub_group, :user4_group]3013 returns correct members3014 subject_relations: [:direct, :descendants, :inherited], subject_group: :sub_sub_group, expected_members: [:user1_sub_sub_group, :user2_group, :user3_sub_group, :user4_group]3015 returns correct members3016 search3017 returns searched members if requested3018 returns nothing if search only in inherited relation3019 returns searched member only from sub_group if search only in inherited relation3020 filter by two-factor3021 returns members with two-factor auth if requested by owner3022 returns members without two-factor auth if requested by owner3023 returns direct members with two-factor auth if requested by owner3024 returns inherited members with two-factor auth if requested by owner3025 returns direct members without two-factor auth if requested by owner3026 returns inherited members without two-factor auth if requested by owner3027DesignManagement::DesignV432x230Uploader3028 resizes images3029 behaves like builds correct paths3030 #store_dir3031 behaves like matches the method pattern3032 is expected to match /uploads\/-\/system\/design_management\/action\/image_v432x230\//3033 #cache_dir3034 behaves like matches the method pattern3035 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3036 #work_dir3037 behaves like matches the method pattern3038 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3039 #upload_path3040 behaves like matches the method pattern3041 is expected to match /uploads\/-\/system\/design_management\/action\/image_v432x230\//3042 #relative_path3043 is relative (PENDING: Path not set, skipping.)3044 .absolute_path3045 behaves like matches the method pattern3046 is expected to match /\/builds\/gitlab-org\/gitlab\/tmp\/tests\/public\/uploads\/-\/system\/design_management\/action\/image_v432x230\//3047 .base_dir3048 behaves like matches the method pattern3049 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3050 path traversal exploits3051 throws an exception3052 object_store is REMOTE3053 behaves like builds correct paths3054 #store_dir3055 behaves like matches the method pattern3056 is expected to match /design_management\/action\/image_v432x230\//3057 #cache_dir3058 behaves like matches the method pattern3059 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3060 #work_dir3061 behaves like matches the method pattern3062 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3063 #upload_path3064 behaves like matches the method pattern3065 is expected to match /design_management\/action\/image_v432x230\//3066 #relative_path3067 is relative (PENDING: Path not set, skipping.)3068 .absolute_path3069 behaves like matches the method pattern3070 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3071 .base_dir3072 behaves like matches the method pattern3073 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3074 path traversal exploits3075 throws an exception3076 #migrate!3077 behaves like migrates3078 returns corresponding file type3079 does nothing when migrating to the current store3080 migrate to the specified store3081 removes the original file after the migration3082 can access to the original file during migration3083 when migrate! is not occupied by another process3084 executes migrate!3085 executes use_file3086 when migrate! is occupied by another process3087 does not execute migrate!3088 does not execute use_file3089 migration is unsuccessful3090 when the store is not supported3091 does not update the object_store3092 does not delete the original file3093 upon a fog failure3094 does not update the object_store3095 does not delete the original file3096 upon a database failure3097 does not update the object_store3098 does not delete the original file3099 behaves like migrates3100 returns corresponding file type3101 does nothing when migrating to the current store3102 migrate to the specified store3103 removes the original file after the migration3104 can access to the original file during migration3105 when migrate! is not occupied by another process3106 executes migrate!3107 executes use_file3108 when migrate! is occupied by another process3109 does not execute migrate!3110 does not execute use_file3111 migration is unsuccessful3112 when the store is not supported3113 does not update the object_store3114 does not delete the original file3115 upon a fog failure3116 does not update the object_store3117 does not delete the original file3118 upon a database failure3119 does not update the object_store3120 does not delete the original file3121 accept whitelist file content type3122 mime_type: "image/png"3123 behaves like accepted carrierwave upload3124 will accept upload3125 will cache uploaded file3126 mime_type: "image/jpeg"3127 behaves like accepted carrierwave upload3128 will accept upload3129 will cache uploaded file3130 mime_type: "image/bmp"3131 behaves like accepted carrierwave upload3132 will accept upload3133 will cache uploaded file3134 mime_type: "image/gif"3135 behaves like accepted carrierwave upload3136 will accept upload3137 will cache uploaded file3138 upload non-whitelisted file content type3139 behaves like denied carrierwave upload3140 will deny upload3141 upload misnamed non-whitelisted file content type3142 behaves like denied carrierwave upload3143 will deny upload3144Gitlab::UsageDataMetrics3145 .uncached_data3146 with instrumentation_class3147 includes top level keys3148 includes counts keys3149 includes counts keys3150 includes usage_activity_by_stage keys3151 includes usage_activity_by_stage_monthly keys3152 includes settings keys3153 Redis_HLL_counters3154 is included in the Service Ping hash structure3155 .suggested_names3156 includes Service Ping suggested names3157Ci::Runner3158 behaves like having unique enum values3159 has unique values in "access_level"3160 has unique values in "runner_type"3161 has unique values in "executor_type"3162 behaves like it has loose foreign keys3163 has at least one loose foreign key definition3164 has the deletion trigger present3165 records record deletions3166 cleans up record deletions3167 groups association3168 does not create a cross-database query3169 validation3170 is expected to validate that :access_level cannot be empty/falsy3171 is expected to validate that :runner_type cannot be empty/falsy3172 when runner is not allowed to pick untagged jobs3173 when runner does not have tags3174 is not valid3175 when runner has tags3176 is valid3177 #exactly_one_group3178 disallows assigning group if already assigned to a group3179 runner_type validations3180 disallows assigning group to project_type runner3181 disallows assigning group to instance_type runner3182 disallows assigning project to group_type runner3183 disallows assigning project to instance_type runner3184 fails to save a group assigned to a project runner even if the runner is already saved3185 when runner has config3186 is valid3187 when runner has an invalid config3188 is invalid3189 cost factors validations3190 dissalows :private_projects_minutes_cost_factor being nil3191 dissalows :public_projects_minutes_cost_factor being nil3192 dissalows :private_projects_minutes_cost_factor being negative3193 dissalows :public_projects_minutes_cost_factor being negative3194 constraints3195 .UPDATE_CONTACT_COLUMN_EVERY3196 #access_level3197 when creating new runner and access_level is nil3198 object is invalid3199 when creating new runner and access_level is defined in enum3200 object is valid3201 when creating new runner and access_level is not defined in enum3202 raises an error3203 .instance_type3204 returns only shared runners3205 .belonging_to_project3206 returns the specific project runner3207 .belonging_to_parent_group_of_project3208 returns the specific group runner3209 with a parent group with a runner3210 returns the group runner from the parent group3211 .owned_or_instance_wide3212 returns a globally shared, a project specific and a group specific runner3213 #display_name3214 returns the description if it has a value3215 returns the token if it does not have a description3216 returns the token if the description is an empty string3217 #assign_to3218 with shared_runner3219 transitions shared runner to project runner and assigns project3220 with group runner3221 raises an error3222 .recent3223 is expected to eq [#<Ci::Runner id: 21, token: nil, created_at: "2021-10-14 01:40:14.474282524 +0000", updated_at: "202...tor: 0.0, private_projects_minutes_cost_factor: 1.0, config: {}, executor_type: nil, tag_list: nil>]3224 .active3225 with active_value set to false3226 returns inactive runners3227 with active_value set to true3228 returns active runners3229 .paused3230 returns inactive runners3231 .stale3232 returns stale runners3233 #stale?3234 table tests3235 created_at: nil, contacted_at: nil, expected_stale?: false3236 no cache value3237 is expected to eq false3238 with cache value3239 is expected to eq false3240 created_at: Tue, 14 Sep 2021 01:28:10.156405855 UTC +00:00, contacted_at: Tue, 14 Sep 2021 01:28:11.155628164 UTC +00:00, expected_stale?: true3241 no cache value3242 is expected to eq true3243 with cache value3244 is expected to eq true3245 created_at: Tue, 14 Sep 2021 01:28:10.156728055 UTC +00:00, contacted_at: Tue, 14 Sep 2021 02:28:11.156801325 UTC +00:00, expected_stale?: false3246 no cache value3247 is expected to eq false3248 with cache value3249 is expected to eq false3250 created_at: Tue, 14 Sep 2021 01:28:10.156868225 UTC +00:00, contacted_at: nil, expected_stale?: true3251 no cache value3252 is expected to eq true3253 with cache value3254 is expected to eq true3255 created_at: Tue, 14 Sep 2021 02:28:11.156936165 UTC +00:00, contacted_at: nil, expected_stale?: false3256 no cache value3257 is expected to eq false3258 with cache value3259 is expected to eq false3260 .online3261 is expected to contain exactly #<Ci::Runner id: 46, token: nil, created_at: "2021-12-14 01:40:15.283654030 +0000", updated_at: "2021...ctor: 0.0, private_projects_minutes_cost_factor: 1.0, config: {}, executor_type: nil, tag_list: nil>3262 #online?3263 no cache value3264 never contacted3265 is expected to be falsey3266 contacted long time ago3267 is expected to be falsey3268 contacted 1s ago3269 is expected to be truthy3270 with cache value3271 contacted long time ago3272 is expected to be falsey3273 contacted 1s ago3274 is expected to be truthy3275 .offline3276 is expected to eq [#<Ci::Runner id: 52, token: nil, created_at: "2021-12-14 01:40:15.511772684 +0000", updated_at: "202...tor: 0.0, private_projects_minutes_cost_factor: 1.0, config: {}, executor_type: nil, tag_list: nil>]3277 #tick_runner_queue3278 sticks the runner to the primary and calls the original method3279 #can_pick?3280 a different runner3281 cannot handle builds3282 when runner does not have tags3283 can handle builds without tags3284 cannot handle build with tags3285 when runner has tags3286 when runner can pick untagged jobs3287 can handle builds without tags3288 behaves like tagged build picker3289 can handle build with matching tags3290 cannot handle build without matching tags3291 when runner cannot pick untagged jobs3292 cannot handle builds without tags3293 behaves like tagged build picker3294 can handle build with matching tags3295 cannot handle build without matching tags3296 when runner is shared3297 can handle builds3298 does not query for owned or instance runners3299 when runner is locked3300 can handle builds3301 when feature flag ci_runners_short_circuit_assignable_for is disabled3302 does not query for owned or instance runners3303 when runner is not shared3304 when runner is assigned to a project3305 can handle builds3306 when runner is assigned to another project3307 cannot handle builds3308 when runner is assigned to a group3309 can handle builds3310 knows namespace id it is assigned to3311 when access_level of runner is not_protected3312 when build is protected3313 is expected to be truthy3314 when build is unprotected3315 is expected to be truthy3316 when access_level of runner is ref_protected3317 when build is protected3318 is expected to be truthy3319 when build is unprotected3320 is expected to be falsey3321 matches tags3322 run_untagged: true, runner_tags: [], build_tags: [], result: true3323 is expected to eq true3324 run_untagged: true, runner_tags: [], build_tags: ["a"], result: false3325 is expected to eq false3326 run_untagged: true, runner_tags: ["a", "b"], build_tags: ["a"], result: true3327 is expected to eq true3328 run_untagged: true, runner_tags: ["a"], build_tags: ["a", "b"], result: false3329 is expected to eq false3330 run_untagged: true, runner_tags: ["a"], build_tags: ["a"], result: true3331 is expected to eq true3332 run_untagged: false, runner_tags: ["a"], build_tags: ["a"], result: true3333 is expected to eq true3334 run_untagged: false, runner_tags: ["b"], build_tags: ["a"], result: false3335 is expected to eq false3336 run_untagged: false, runner_tags: ["a", "b"], build_tags: ["a"], result: true3337 is expected to eq true3338 #status3339 never connected3340 with legacy_mode enabled3341 is expected to eq :not_connected3342 with legacy_mode disabled3343 is expected to eq :stale3344 created recently3345 is expected to eq :never_contacted3346 inactive but online3347 with legacy_mode enabled3348 is expected to eq :paused3349 with legacy_mode disabled3350 is expected to eq :online3351 contacted 1s ago3352 is expected to eq :online3353 contacted recently3354 is expected to eq :offline3355 contacted long time ago3356 with legacy_mode enabled3357 is expected to eq :offline3358 with legacy_mode disabled3359 is expected to eq :stale3360 #deprecated_rest_status3361 never connected3362 is expected to eq :not_connected3363 contacted 1s ago3364 is expected to eq :online3365 contacted long time ago3366 is expected to eq :offline3367 inactive3368 is expected to eq :paused3369 #tick_runner_queue3370 returns a new last_update value3371 #ensure_runner_queue_value3372 sets a new last_update value when it is called the first time3373 does not change if it is not expired and called again3374 updates runner queue after changing editable value3375 sets a new last_update value3376 does not update runner value after save3377 has an old last_update value3378 #heartbeat3379 when database was updated recently3380 updates cache3381 when database was not updated recently3382 updates redis cache and database3383 with invalid runner3384 still updates redis cache and database3385 with custom executor3386 updates with expected executor type3387 with shell executor3388 updates with expected executor type3389 with docker executor3390 updates with expected executor type3391 with docker-windows executor3392 updates with expected executor type3393 with docker-ssh executor3394 updates with expected executor type3395 with ssh executor3396 updates with expected executor type3397 with parallels executor3398 updates with expected executor type3399 with virtualbox executor3400 updates with expected executor type3401 with docker+machine executor3402 updates with expected executor type3403 with docker-ssh+machine executor3404 updates with expected executor type3405 with kubernetes executor3406 updates with expected executor type3407 with some-unknown-type executor3408 updates with expected executor type3409 #destroy3410 when there is a tick in the queue3411 cleans up the queue3412 .assignable_for3413 with already assigned project3414 is expected to be empty3415 with a different project3416 is expected to include #<Ci::Runner id: 109, token: nil, created_at: "2021-12-14 01:40:26.124911400 +0000", updated_at: "202...ctor: 0.0, private_projects_minutes_cost_factor: 1.0, config: {}, executor_type: nil, tag_list: nil>3417 is expected not to include #<Ci::Runner id: 115, token: nil, created_at: "2021-12-14 01:40:27.077950427 +0000", updated_at: "202...ctor: 0.0, private_projects_minutes_cost_factor: 1.0, config: {}, executor_type: nil, tag_list: nil>3418 is expected not to include #<Ci::Runner id: 118, token: nil, created_at: "2021-12-14 01:40:27.859738904 +0000", updated_at: "202...ctor: 0.0, private_projects_minutes_cost_factor: 1.0, config: {}, executor_type: nil, tag_list: nil>3419 is expected not to include #<Ci::Runner id: 124, token: nil, created_at: "2021-12-14 01:40:28.824683900 +0000", updated_at: "202...ctor: 0.0, private_projects_minutes_cost_factor: 1.0, config: {}, executor_type: nil, tag_list: nil>3420 belongs_to_one_project?3421 returns false if there are two projects runner assigned to3422 returns true3423 #belongs_to_more_than_one_project?3424 project runner3425 two projects assigned to runner3426 returns true3427 one project assigned to runner3428 returns false3429 group runner3430 returns false3431 shared runner3432 returns false3433 #has_tags?3434 when runner has tags3435 is expected to have tags3436 when runner does not have tags3437 is expected not to have tags3438 .search3439 returns runners with a matching token3440 does not return runners with a partially matching token3441 does not return runners with a matching token with different casing3442 returns runners with a matching description3443 returns runners with a partially matching description3444 returns runners with a matching description regardless of the casing3445 #assigned_to_group?3446 when project runner3447 is expected to be falsey3448 when shared runner3449 is expected to be falsey3450 when group runner3451 is expected to be truthy3452 #assigned_to_project?3453 when group runner3454 is expected to be falsey3455 when shared runner3456 is expected to be falsey3457 when project runner3458 is expected to be truthy3459 #pick_build!3460 runner can pick the build3461 calls #tick_runner_queue3462 runner cannot pick the build3463 does not call #tick_runner_queue3464 build picking improvement3465 does not check if the build is assignable to a runner3466 project runner without projects is destroyable3467 does not have projects3468 can be destroyed3469 .order_by3470 supports ordering by the contact date3471 supports ordering by the creation date3472 .runner_matchers3473 deduplicates on runner_type3474 creates two matchers3475 deduplicates on public_projects_minutes_cost_factor3476 creates two matchers3477 deduplicates on private_projects_minutes_cost_factor3478 creates two matchers3479 deduplicates on run_untagged3480 creates two matchers3481 deduplicates on access_level3482 creates two matchers3483 deduplicates on tag_list3484 creates two matchers3485 with runner_ids3486 includes runner_ids3487 #runner_matcher3488 is expected to eq [1247]3489 is expected to eq "instance_type"3490 is expected to eq 0.03491 is expected to eq 1.03492 is expected to eq true3493 is expected to eq "not_protected"3494 is expected to contain exactly "tag1" and "tag2"3495 #uncached_contacted_at3496 is expected to eq 2021-12-14 00:40:36.000000000 +00003497 .belonging_to_group3498 behaves like returns group runners3499 returns the specific group runner3500 runner belonging to parent group3501 when include_parent option is passed3502 returns the group runner from the parent group3503 when include_parent option is not passed3504 does not return the group runner from the parent group3505 when feature flag :linear_runner_ancestor_scopes is disabled3506 behaves like returns group runners3507 returns the specific group runner3508 runner belonging to parent group3509 when include_parent option is passed3510 returns the group runner from the parent group3511 when include_parent option is not passed3512 does not return the group runner from the parent group3513ProjectStatisticsPolicy3514 #rules3515 project_type: :public, user_type: :unauthenticated, outcome: false3516 is expected to eq false3517 when the user is external3518 is expected to eq false3519 project_type: :public, user_type: :non_member, outcome: false3520 is expected to eq false3521 when the user is external3522 is expected to eq false3523 project_type: :public, user_type: :guest, outcome: false3524 is expected to eq false3525 when the user is external3526 is expected to eq false3527 project_type: :public, user_type: :reporter, outcome: true3528 is expected to eq true3529 when the user is external3530 is expected to eq true3531 project_type: :public, user_type: :developer, outcome: true3532 is expected to eq true3533 when the user is external3534 is expected to eq true3535 project_type: :public, user_type: :maintainer, outcome: true3536 is expected to eq true3537 when the user is external3538 is expected to eq true3539 project_type: :private, user_type: :unauthenticated, outcome: false3540 is expected to eq false3541 when the user is external3542 is expected to eq false3543 project_type: :private, user_type: :non_member, outcome: false3544 is expected to eq false3545 when the user is external3546 is expected to eq false3547 project_type: :private, user_type: :guest, outcome: false3548 is expected to eq false3549 when the user is external3550 is expected to eq false3551 project_type: :private, user_type: :reporter, outcome: true3552 is expected to eq true3553 when the user is external3554 is expected to eq true3555 project_type: :private, user_type: :developer, outcome: true3556 is expected to eq true3557 when the user is external3558 is expected to eq true3559 project_type: :private, user_type: :maintainer, outcome: true3560 is expected to eq true3561 when the user is external3562 is expected to eq true3563 project_type: :internal, user_type: :unauthenticated, outcome: false3564 is expected to eq false3565 when the user is external3566 is expected to eq false3567 project_type: :internal, user_type: :non_member, outcome: false3568 is expected to eq false3569 when the user is external3570 is expected to eq false3571 project_type: :internal, user_type: :guest, outcome: false3572 is expected to eq false3573 when the user is external3574 is expected to eq false3575 project_type: :internal, user_type: :reporter, outcome: true3576 is expected to eq true3577 when the user is external3578 is expected to eq true3579 project_type: :internal, user_type: :developer, outcome: true3580 is expected to eq true3581 when the user is external3582 is expected to eq true3583 project_type: :internal, user_type: :maintainer, outcome: true3584 is expected to eq true3585 when the user is external3586 is expected to eq true3587MergeRequests::MergeService3588 #execute3589 valid params3590 is expected to be valid3591 is expected to be merged3592 persists merge_commit_sha and nullifies in_progress_merge_commit_sha3593 does not update squash_commit_sha if it is not a squash3594 sends email to user2 about merge of new merge_request3595 note creation3596 creates resource state event about merge_request merge3597 when squashing3598 merges the merge request with squashed commits3599 persists squash_commit_sha3600 running the service multiple time3601 is idempotent3602 when an invalid sha is passed3603 does not merge the MR3604 when the `sha` param is missing3605 returns the error3606 closes related issues3607 closes GitLab issue tracker issues3608 with Jira integration3609 closes issues on Jira issue tracker3610 wrong issue markdown3611 does not close issues on Jira issue tracker3612 closes related todos3613 is expected to be done3614 source branch removal3615 when the source branch is protected3616 does not delete the source branch3617 when the source branch is the default branch3618 does not delete the source branch3619 when the source branch can be removed3620 when MR author set the source branch to be removed3621 removes the source branch using the author user3622 when the merger set the source branch not to be removed3623 does not delete the source branch3624 when MR merger set the source branch to be removed3625 removes the source branch using the current user3626 error handling3627 logs and saves error if there is an exception3628 logs and saves error if user is not authorized3629 logs and saves error if there is an PreReceiveError exception3630 logs and saves error if commit is not created3631 when source is missing3632 logs and saves error3633 when squashing is required3634 raises an error if squashing is not done3635 when squashing3636 logs and saves error if there is an error when squashing3637 logs and saves error if there is an PreReceiveError exception3638 when fast-forward merge is not allowed3639 logs and saves error if merge is semi-linear only3640 logs and saves error if merge is ff only3641 when not mergeable3642 with failing CI3643 logs and saves error3644 with unresolved discussions3645 logs and saves error3646 when passing `skip_discussions_check: true` as `options` parameter3647 merges the merge request3648 when the other sidekiq worker has already been running3649 does not execute service3650Boards::Lists::MoveService3651 #execute3652 when board parent is a project3653 behaves like lists move service3654 keeps position of lists when list type is closed3655 when list type is set to label3656 keeps position of lists when new position is nil3657 keeps position of lists when new position is equal to old position3658 keeps position of lists when new position is negative3659 keeps position of lists when new position is equal to number of labels lists3660 keeps position of lists when new position is greater than number of labels lists3661 increments position of intermediate lists when new position is equal to first position3662 decrements position of intermediate lists when new position is equal to last position3663 decrements position of intermediate lists when new position is greater than old position3664 increments position of intermediate lists when new position is lower than old position3665 when board parent is a group3666 behaves like lists move service3667 keeps position of lists when list type is closed3668 when list type is set to label3669 keeps position of lists when new position is nil3670 keeps position of lists when new position is equal to old position3671 keeps position of lists when new position is negative3672 keeps position of lists when new position is equal to number of labels lists3673 keeps position of lists when new position is greater than number of labels lists3674 increments position of intermediate lists when new position is equal to first position3675 decrements position of intermediate lists when new position is equal to last position3676 decrements position of intermediate lists when new position is greater than old position3677 increments position of intermediate lists when new position is lower than old position3678BlobPolicy3679 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 13680 grants permission3681 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 13682 grants permission3683 project_level: :public, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 13684 grants permission3685 project_level: :public, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 13686 grants permission3687 project_level: :public, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 13688 grants permission3689 project_level: :public, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 13690 grants permission3691 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 13692 grants permission3693 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 03694 grants permission3695 project_level: :public, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 13696 grants permission3697 project_level: :public, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 13698 grants permission3699 project_level: :public, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 03700 grants permission3701 project_level: :public, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 03702 grants permission3703 project_level: :public, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 03704 grants permission3705 project_level: :public, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 03706 grants permission3707 project_level: :public, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 03708 grants permission3709 project_level: :public, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 03710 grants permission3711 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 13712 grants permission3713 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 13714 grants permission3715 project_level: :internal, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 13716 grants permission3717 project_level: :internal, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 13718 grants permission3719 project_level: :internal, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 13720 grants permission3721 project_level: :internal, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 03722 grants permission3723 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 13724 grants permission3725 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 03726 grants permission3727 project_level: :internal, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 13728 grants permission3729 project_level: :internal, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 13730 grants permission3731 project_level: :internal, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 03732 grants permission3733 project_level: :internal, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 03734 grants permission3735 project_level: :internal, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 03736 grants permission3737 project_level: :internal, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 03738 grants permission3739 project_level: :internal, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 03740 grants permission3741 project_level: :internal, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 03742 grants permission3743 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 13744 grants permission3745 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 03746 grants permission3747 project_level: :private, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 13748 grants permission3749 project_level: :private, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 03750 grants permission3751 project_level: :private, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 03752 grants permission3753 project_level: :private, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 03754 grants permission3755 project_level: :private, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 03756 grants permission3757 project_level: :private, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 03758 grants permission3759 project_level: :private, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 03760 grants permission3761 project_level: :private, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 03762 grants permission3763Integrations::Bamboo3764 Validations3765 when active3766 is expected to validate that :build_key cannot be empty/falsy3767 is expected to validate that :bamboo_url cannot be empty/falsy3768 behaves like issue tracker integration URL attribute3769 is expected to allow :bamboo_url to be ‹"https://example.com"›3770 is expected not to allow :bamboo_url to be ‹"example.com"›3771 is expected not to allow :bamboo_url to be ‹"ftp://example.com"›3772 is expected not to allow :bamboo_url to be ‹"herp-and-derp"›3773 #username3774 does not validate the presence of username if password is nil3775 validates the presence of username if password is present3776 #password3777 does not validate the presence of password if username is nil3778 validates the presence of password if username is present3779 when inactive3780 is expected not to validate that :build_key cannot be empty/falsy3781 is expected not to validate that :bamboo_url cannot be empty/falsy3782 is expected not to validate that :username cannot be empty/falsy3783 is expected not to validate that :password cannot be empty/falsy3784 Callbacks3785 before_validation :reset_password3786 saves password if new url is set together with password when no password was previously set3787 when a password was previously set3788 resets password if url changed3789 does not reset password if username changed3790 does not reset password if new url is set together with password, even if it's the same password3791 #execute3792 runs update and build action3793 #build_page3794 returns the contents of the reactive cache3795 #commit_status3796 returns the contents of the reactive cache3797 #calculate_reactive_cache3798 when Bamboo API returns single result3799 behaves like reactive cache calculation3800 #build_page3801 returns a specific URL when status is 5003802 returns a specific URL when response has no results3803 returns a build URL when bamboo_url has no trailing slash3804 bamboo_url has trailing slash3805 returns a build URL3806 #commit_status3807 sets commit status to :error when status is 5003808 sets commit status to "pending" when status is 4043809 sets commit status to "pending" when response has no results3810 sets commit status to "success" when build state contains Success3811 sets commit status to "failed" when build state contains Failed3812 sets commit status to "pending" when build state contains Pending3813 sets commit status to :error when build state is unknown3814 sets commit status to :error with a Net::OpenTimeout error3815 sets commit status to :error with a Net::ReadTimeout error3816 sets commit status to :error with a Net::WriteTimeout error3817 sets commit status to :error with a Gitlab::HTTP::ReadTotalTimeout error3818 sets commit status to :error with a EOFError error3819 sets commit status to :error with a SocketError error3820 sets commit status to :error with a OpenSSL::SSL::SSLError error3821 sets commit status to :error with a OpenSSL::OpenSSLError error3822 sets commit status to :error with a Errno::ECONNRESET error3823 sets commit status to :error with a Errno::ECONNREFUSED error3824 sets commit status to :error with a Errno::EHOSTUNREACH error3825 sets commit status to :error with a Errno::ENETUNREACH error3826 sets commit status to :error with a Gitlab::HTTP::BlockedUrlError error3827 sets commit status to :error with a Gitlab::HTTP::RedirectionTooDeep error3828 when Bamboo API returns an array of results and we only consider the last one3829 behaves like reactive cache calculation3830 #build_page3831 returns a specific URL when status is 5003832 returns a specific URL when response has no results3833 returns a build URL when bamboo_url has no trailing slash3834 bamboo_url has trailing slash3835 returns a build URL3836 #commit_status3837 sets commit status to :error when status is 5003838 sets commit status to "pending" when status is 4043839 sets commit status to "pending" when response has no results3840 sets commit status to "success" when build state contains Success3841 sets commit status to "failed" when build state contains Failed3842 sets commit status to "pending" when build state contains Pending3843 sets commit status to :error when build state is unknown3844 sets commit status to :error with a Net::OpenTimeout error3845 sets commit status to :error with a Net::ReadTimeout error3846 sets commit status to :error with a Net::WriteTimeout error3847 sets commit status to :error with a Gitlab::HTTP::ReadTotalTimeout error3848 sets commit status to :error with a EOFError error3849 sets commit status to :error with a SocketError error3850 sets commit status to :error with a OpenSSL::SSL::SSLError error3851 sets commit status to :error with a OpenSSL::OpenSSLError error3852 sets commit status to :error with a Errno::ECONNRESET error3853 sets commit status to :error with a Errno::ECONNREFUSED error3854 sets commit status to :error with a Errno::EHOSTUNREACH error3855 sets commit status to :error with a Errno::ENETUNREACH error3856 sets commit status to :error with a Gitlab::HTTP::BlockedUrlError error3857 sets commit status to :error with a Gitlab::HTTP::RedirectionTooDeep error3858Gitlab::Ci::Config::Entry::Job3859 behaves like with inheritable CI config3860 does prepend an Inheritable mixin3861 all inheritable entries are covered3862 all entries do have inherit flag3863 for non-inheritable entries3864 entry_key: :stage3865 inheritable_class does not define entry3866 entry_key: :only3867 inheritable_class does not define entry3868 entry_key: :except3869 inheritable_class does not define entry3870 entry_key: :rules3871 inheritable_class does not define entry3872 entry_key: :variables3873 inheritable_class does not define entry3874 entry_key: :inherit3875 inheritable_class does not define entry3876 entry_key: :script3877 inheritable_class does not define entry3878 entry_key: :type3879 inheritable_class does not define entry3880 entry_key: :needs3881 inheritable_class does not define entry3882 entry_key: :environment3883 inheritable_class does not define entry3884 entry_key: :coverage3885 inheritable_class does not define entry3886 entry_key: :release3887 inheritable_class does not define entry3888 entry_key: :parallel3889 inheritable_class does not define entry3890 entry_key: :allow_failure3891 inheritable_class does not define entry3892 entry_key: :dast_configuration3893 inheritable_class does not define entry3894 entry_key: :secrets3895 inheritable_class does not define entry3896 for inheritable entries3897 entry_key: :before_script, entry_class: Gitlab::Ci::Config::Entry::Script3898 inheritable_class does define entry3899 when is specified3900 does inherit value3901 when entry is specified3902 does not inherit value3903 when inheritable does not specify3904 does not inherit value3905 entry_key: :after_script, entry_class: Gitlab::Ci::Config::Entry::Script3906 inheritable_class does define entry3907 when is specified3908 does inherit value3909 when entry is specified3910 does not inherit value3911 when inheritable does not specify3912 does not inherit value3913 entry_key: :cache, entry_class: Gitlab::Ci::Config::Entry::Caches3914 inheritable_class does define entry3915 when is specified3916 does inherit value3917 when entry is specified3918 does not inherit value3919 when inheritable does not specify3920 does not inherit value3921 entry_key: :image, entry_class: Gitlab::Ci::Config::Entry::Image3922 inheritable_class does define entry3923 when is specified3924 does inherit value3925 when entry is specified3926 does not inherit value3927 when inheritable does not specify3928 does not inherit value3929 entry_key: :services, entry_class: Gitlab::Ci::Config::Entry::Services3930 inheritable_class does define entry3931 when is specified3932 does inherit value3933 when entry is specified3934 does not inherit value3935 when inheritable does not specify3936 does not inherit value3937 entry_key: :interruptible, entry_class: Gitlab::Config::Entry::Boolean3938 inheritable_class does define entry3939 when is specified3940 does inherit value3941 when entry is specified3942 does not inherit value3943 when inheritable does not specify3944 does not inherit value3945 entry_key: :timeout, entry_class: Gitlab::Ci::Config::Entry::Timeout3946 inheritable_class does define entry3947 when is specified3948 does inherit value3949 when entry is specified3950 does not inherit value3951 when inheritable does not specify3952 does not inherit value3953 entry_key: :retry, entry_class: Gitlab::Ci::Config::Entry::Retry3954 inheritable_class does define entry3955 when is specified3956 does inherit value3957 when entry is specified3958 does not inherit value3959 when inheritable does not specify3960 does not inherit value3961 entry_key: :tags, entry_class: Gitlab::Ci::Config::Entry::Tags3962 inheritable_class does define entry3963 when is specified3964 does inherit value3965 when entry is specified3966 does not inherit value3967 when inheritable does not specify3968 does not inherit value3969 entry_key: :artifacts, entry_class: Gitlab::Ci::Config::Entry::Artifacts3970 inheritable_class does define entry3971 when is specified3972 does inherit value3973 when entry is specified3974 does not inherit value3975 when inheritable does not specify3976 does not inherit value3977 .nodes3978 when filtering all the entry/node names3979 is expected to include :before_script, :script, :stage, :type, :after_script, :cache, :image, :services, :only, :except, :rules, :needs, :variables, :artifacts, :environment, :coverage, :retry, :interruptible, :timeout, :release, :tags, :inherit, and :parallel3980 .matching?3981 when config is not a hash3982 is expected to be falsey3983 when config is a regular job3984 is expected to be truthy3985 when config is a bridge job3986 is expected to be falsey3987 when config is a hidden job3988 is expected to be falsey3989 when using the default job without script3990 is expected to be falsey3991 when using the default job with script3992 is expected to be truthy3993 validations3994 when entry config value is correct3995 #valid?3996 is valid3997 when job name is empty3998 reports error3999 when delayed job4000 when start_in is specified4001 is expected to be valid4002 when has needs4003 is expected to be valid4004 returns scheduling_type as :dag4005 when has dependencies4006 is expected to be valid4007 when it is a release4008 is expected to be valid4009 when rules are used4010 is expected to be valid4011 when entry value is not correct4012 incorrect config value type4013 #errors4014 reports error about a config type4015 when config is empty4016 #valid4017 is invalid4018 when unknown keys detected4019 #valid4020 is not valid4021 when script is not provided4022 returns error about missing script entry4023 when extends key is not a string4024 returns error about wrong value type4025 when parallel value is not correct4026 when it is not a numeric value4027 returns error about invalid type4028 when it is lower than two4029 returns error about value too low4030 when it is an empty hash4031 returns error about missing matrix4032 when it uses both "when:" and "rules:"4033 returns an error about when: being combined with rules4034 when delayed job4035 when start_in is specified4036 is expected to be valid4037 when start_in is empty4038 returns error about invalid type4039 when start_in is not formatted as a duration4040 returns error about invalid type4041 when start_in is longer than one week4042 returns error about exceeding the limit4043 when only: is used with rules:4044 returns error about mixing only: with rules:4045 and only: is blank4046 returns error about mixing only: with rules:4047 and rules: is blank4048 returns error about mixing only: with rules:4049 when except: is used with rules:4050 returns error about mixing except: with rules:4051 and except: is blank4052 returns error about mixing except: with rules:4053 and rules: is blank4054 returns error about mixing except: with rules:4055 when only: and except: are both used with rules:4056 returns errors about mixing both only: and except: with rules:4057 when only: and except: as both blank4058 returns errors about mixing both only: and except: with rules:4059 when rules: is blank4060 returns errors about mixing both only: and except: with rules:4061 when start_in specified without delayed specification4062 returns error about invalid type4063 when has dependencies4064 that are not a array of strings4065 returns error about invalid type4066 when has needs4067 when have dependencies that are not subset of needs4068 returns error about invalid data4069 when timeout value is not correct4070 when it is higher than instance wide timeout4071 returns error about value too high4072 when it is not a duration4073 returns error about wrong value4074 when timeout value is correct4075 returns correct timeout4076 when it is a release4077 when `release:description` is missing4078 returns error4079 when invalid rules are used4080 with rules nested more than max allowed levels4081 is expected not to be valid4082 with rules with invalid keys4083 is expected not to be valid4084 #relevant?4085 is a relevant entry4086 #compose!4087 when job config overrides default config4088 overrides default config4089 when job config does not override default config4090 uses config from default entry4091 with workflow rules4092 name: "uses default only", has_workflow_rules?: false, only: nil, rules: nil, result: {:refs=>["branches", "tags"]}4093 RSpec::ExampleGroups::GitlabCiConfigEntryJob::Compose::WithWorkflowRules::NameUsesDefaultOnlyHasWorkflowRulesFalseOnlyNilRulesNilResultRefsBranchesTags4094 name: "uses user only", has_workflow_rules?: false, only: ["branches"], rules: nil, result: {:refs=>["branches"]}4095 RSpec::ExampleGroups::GitlabCiConfigEntryJob::Compose::WithWorkflowRules::NameUsesUserOnlyHasWorkflowRulesFalseOnlyBranchesRulesNilResultRefsBranches4096 name: "does not define only", has_workflow_rules?: false, only: nil, rules: [], result: nil4097 RSpec::ExampleGroups::GitlabCiConfigEntryJob::Compose::WithWorkflowRules::NameDoesNotDefineOnlyHasWorkflowRulesFalseOnlyNilRulesResultNil4098 name: "does not define only", has_workflow_rules?: true, only: nil, rules: nil, result: nil4099 RSpec::ExampleGroups::GitlabCiConfigEntryJob::Compose::WithWorkflowRules::NameDoesNotDefineOnlyHasWorkflowRulesTrueOnlyNilRulesNilResultNil4100 name: "uses user only", has_workflow_rules?: true, only: ["branches"], rules: nil, result: {:refs=>["branches"]}4101 RSpec::ExampleGroups::GitlabCiConfigEntryJob::Compose::WithWorkflowRules::NameUsesUserOnlyHasWorkflowRulesTrueOnlyBranchesRulesNilResultRefsBranches4102 name: "does not define only", has_workflow_rules?: true, only: nil, rules: [], result: nil4103 RSpec::ExampleGroups::GitlabCiConfigEntryJob::Compose::WithWorkflowRules::NameDoesNotDefineOnlyHasWorkflowRulesTrueOnlyNilRulesResultNil4104 when workflow rules is used4105 when rules are used4106 does not define only4107 when rules are not used4108 does not define only4109 when composed4110 #value4111 when entry is correct4112 returns correct value4113 when job is using tags4114 when limit is reached4115 returns error4116 when limit is not reached4117 returns a valid entry4118 #manual_action?4119 when job is a manual action4120 is a manual action4121 when job is not a manual action4122 is not a manual action4123 #delayed?4124 when job is a delayed4125 is a delayed4126 when job is not a delayed4127 is not a delayed4128 #ignored?4129 when job is a manual action4130 when it is not specified if job is allowed to fail4131 is an ignored job4132 when job is allowed to fail4133 is an ignored job4134 when job is not allowed to fail4135 is not an ignored job4136 when job is dynamically allowed to fail4137 is not an ignored job4138 when job is not a manual action4139 when it is not specified if job is allowed to fail4140 is not an ignored job4141 does not return allow_failure4142 when job is allowed to fail4143 is an ignored job4144 does not return allow_failure_criteria4145 when job is not allowed to fail4146 is not an ignored job4147 does not return allow_failure_criteria4148 when job is dynamically allowed to fail4149 is not an ignored job4150 returns allow_failure_criteria4151Banzai::ColorParser4152 .parse4153 HEX format4154 parses the valid hex color #abc4155 parses the valid hex color #ABC4156 parses the valid hex color #d2d2d24157 parses the valid hex color #D2D2D24158 parses the valid hex color #123a4159 parses the valid hex color #123A4160 parses the valid hex color #123456aa4161 parses the valid hex color #123456AA4162 does not parse the invalid hex color #4163 does not parse the invalid hex color #14164 does not parse the invalid hex color #124165 does not parse the invalid hex color #12g4166 does not parse the invalid hex color #12G4167 does not parse the invalid hex color #123454168 does not parse the invalid hex color #r2r2r24169 does not parse the invalid hex color #R2R2R24170 does not parse the invalid hex color #12345674171 does not parse the invalid hex color # 1234172 does not parse the invalid hex color # 12344173 does not parse the invalid hex color # 1234564174 does not parse the invalid hex color # 123456784175 does not parse the invalid hex color #1 2 34176 does not parse the invalid hex color #123 44177 does not parse the invalid hex color #12 34 564178 does not parse the invalid hex color #123456 784179 RGB format4180 parses the valid rgb color rgb(0,0,0)4181 parses the valid rgb color rgb(255,255,255)4182 parses the valid rgb color rgb(0, 0, 0)4183 parses the valid rgb color RGB(0,0,0)4184 parses the valid rgb color rgb(0,0,0,0)4185 parses the valid rgb color rgb(0,0,0,0.0)4186 parses the valid rgb color rgb(0,0,0,.0)4187 parses the valid rgb color rgb(0,0,0, 0)4188 parses the valid rgb color rgb(0,0,0, 0.0)4189 parses the valid rgb color rgb(0,0,0, .0)4190 parses the valid rgb color rgb(0,0,0,1)4191 parses the valid rgb color rgb(0,0,0,1.0)4192 parses the valid rgb color rgba(0,0,0)4193 parses the valid rgb color rgba(0,0,0,0)4194 parses the valid rgb color RGBA(0,0,0)4195 parses the valid rgb color rgb(0%,0%,0%)4196 parses the valid rgb color rgba(0%,0%,0%,0%)4197 does not parse the invalid rgb color FOOrgb(0,0,0)4198 does not parse the invalid rgb color rgb(0,0,0)BAR4199 does not parse the invalid rgb color rgb(0,0,-1)4200 does not parse the invalid rgb color rgb(0,0,-0)4201 does not parse the invalid rgb color rgb(0,0,256)4202 does not parse the invalid rgb color rgb(0,0,0,-0.1)4203 does not parse the invalid rgb color rgb(0,0,0,-0.0)4204 does not parse the invalid rgb color rgb(0,0,0,-.1)4205 does not parse the invalid rgb color rgb(0,0,0,1.1)4206 does not parse the invalid rgb color rgb(0,0,0,2)4207 does not parse the invalid rgb color rgba(0,0,0,)4208 does not parse the invalid rgb color rgba(0,0,0,0.)4209 does not parse the invalid rgb color rgba(0,0,0,1.)4210 does not parse the invalid rgb color rgb(0,0,0%)4211 does not parse the invalid rgb color rgb(101%,0%,0%)4212 HSL format4213 parses the valid hsl color hsl(0,0%,0%)4214 parses the valid hsl color hsl(0,100%,100%)4215 parses the valid hsl color hsl(540,0%,0%)4216 parses the valid hsl color hsl(-720,0%,0%)4217 parses the valid hsl color hsl(0deg,0%,0%)4218 parses the valid hsl color hsl(0DEG,0%,0%)4219 parses the valid hsl color hsl(0, 0%, 0%)4220 parses the valid hsl color HSL(0,0%,0%)4221 parses the valid hsl color hsl(0,0%,0%,0)4222 parses the valid hsl color hsl(0,0%,0%,0.0)4223 parses the valid hsl color hsl(0,0%,0%,.0)4224 parses the valid hsl color hsl(0,0%,0%, 0)4225 parses the valid hsl color hsl(0,0%,0%, 0.0)4226 parses the valid hsl color hsl(0,0%,0%, .0)4227 parses the valid hsl color hsl(0,0%,0%,1)4228 parses the valid hsl color hsl(0,0%,0%,1.0)4229 parses the valid hsl color hsla(0,0%,0%)4230 parses the valid hsl color hsla(0,0%,0%,0)4231 parses the valid hsl color HSLA(0,0%,0%)4232 parses the valid hsl color hsl(1rad,0%,0%)4233 parses the valid hsl color hsl(1.1rad,0%,0%)4234 parses the valid hsl color hsl(.1rad,0%,0%)4235 parses the valid hsl color hsl(-1rad,0%,0%)4236 parses the valid hsl color hsl(1RAD,0%,0%)4237 does not parse the invalid hsl color hsl(+0,0%,0%)4238 does not parse the invalid hsl color hsl(0,0,0%)4239 does not parse the invalid hsl color hsl(0,0%,0)4240 does not parse the invalid hsl color hsl(0 deg,0%,0%)4241 does not parse the invalid hsl color hsl(0,-0%,0%)4242 does not parse the invalid hsl color hsl(0,101%,0%)4243 does not parse the invalid hsl color hsl(0,-1%,0%)4244 does not parse the invalid hsl color hsl(0,0%,0%,-0.1)4245 does not parse the invalid hsl color hsl(0,0%,0%,-.1)4246 does not parse the invalid hsl color hsl(0,0%,0%,1.1)4247 does not parse the invalid hsl color hsl(0,0%,0%,2)4248 does not parse the invalid hsl color hsl(0,0%,0%,)4249 does not parse the invalid hsl color hsl(0,0%,0%,0.)4250 does not parse the invalid hsl color hsl(0,0%,0%,1.)4251 does not parse the invalid hsl color hsl(deg,0%,0%)4252 does not parse the invalid hsl color hsl(rad,0%,0%)4253Gitlab::GitalyClient::CommitService4254 #diff_from_parent4255 returns a Gitlab::GitalyClient::DiffStitcher4256 encodes paths correctly4257 when a commit has a parent4258 sends an RPC request with the parent ID as left commit4259 when a commit does not have a parent4260 sends an RPC request with empty tree ref as left commit4261 #commit_deltas4262 when a commit has a parent4263 sends an RPC request with the parent ID as left commit4264 when a commit does not have a parent4265 sends an RPC request with empty tree ref as left commit4266 #diff_stats4267 sends an RPC request and returns the stats4268 #find_changed_paths4269 sends an RPC request and returns the stats4270 #tree_entries4271 sends a get_tree_entries message4272 with UTF-8 params strings4273 handles string encodings correctly4274 with pagination parameters4275 responds with a pagination cursor4276 #commit_count4277 sends a commit_count message4278 with UTF-8 params strings4279 handles string encodings correctly4280 #find_commit4281 sends an RPC request4282 caching4283 when passed revision is a branch name4284 calls Gitaly4285 when passed revision is a commit ID4286 returns a cached commit4287 when caching of the ref name is enabled4288 caches negative entries4289 returns a cached commit4290 #list_commits4291 behaves like a ListCommits request4292 sends a list_commits message4293 with multiple revisions4294 behaves like a ListCommits request4295 sends a list_commits message4296 with reverse: true4297 behaves like a ListCommits request4298 sends a list_commits message4299 with pagination params4300 behaves like a ListCommits request4301 sends a list_commits message4302 #list_new_commits4303 with hook environment4304 with allowed quarantine4305 behaves like a #list_all_commits message4306 sends a list_all_commits message4307 with disallowed quarantine4308 behaves like a #list_commits message4309 sends a list_commits message4310 without hook environment4311 with allowed quarantine4312 behaves like a #list_commits message4313 sends a list_commits message4314 with disallowed quarantine4315 behaves like a #list_commits message4316 sends a list_commits message4317 #commit_stats4318 sends an RPC request4319 #find_commits4320 sends an RPC request with NONE when default4321 sends an RPC request4322 sends an RPC request with an author4323 #commits_by_message4324 when only the query is provided4325 sends an RPC request with the correct payload4326 when all arguments are provided4327 sends an RPC request with the correct payload4328 when limit and offset are not integers4329 sends an RPC request with the correct payload4330 when revision and path contain non-ASCII characters4331 sends an RPC request with the correct payload4332 #list_commits_by_ref_name4333 lists latest commits grouped by a ref name4334Gitlab::ProjectAuthorizations4335 user added to group and project4336 returns the correct number of authorizations4337 includes the correct projects4338 includes the correct access levels4339 unapproved access request4340 group membership4341 does not create authorization4342 inherited group membership4343 does not create authorization4344 project membership4345 does not create authorization4346 shared group4347 does not create authorization4348 shared project4349 does not create authorization4350 user with minimal access to group4351 group membership4352 does not create authorization4353 inherited group membership4354 does not create authorization4355 shared group4356 does not create authorization4357 shared project4358 does not create authorization4359 with nested groups4360 includes nested groups4361 inherits access levels when the user is not a member of a nested group4362 uses the greatest access level when a user is a member of a nested group4363 with shared projects4364 creates proper authorizations4365 even when the `lock_memberships_to_ldap` setting has been turned ON4366 creates proper authorizations4367 when the group containing the project has forbidden group shares for any of its projects4368 does not create authorizations4369 with shared groups4370 group user4371 creates proper authorizations4372 with lower group access level than max access level for share4373 creates proper authorizations4374 parent group user4375 creates proper authorizations4376 child group user4377 creates proper authorizations4378 user without accepted access request4379 does not have access to group and its projects4380 unrelated project owner4381 does not have access to group and its projects4382PagesDomain4383 associations4384 is expected to belong to project required: false4385 is expected to have many serverless_domain_clusters4386 .for_project4387 returns domains assigned to project4388 validate domain4389 is unique4390 is expected to validate that :domain is case-insensitively unique4391 hostname4392 domain "my.domain.com" validity4393 is expected to eq true4394 domain "123.456.789" validity4395 is expected to eq true4396 domain "0x12345.com" validity4397 is expected to eq true4398 domain "0123123" validity4399 is expected to eq true4400 domain "_foo.com" validity4401 is expected to eq false4402 domain "reserved.com" validity4403 is expected to eq false4404 domain "a.reserved.com" validity4405 is expected to eq false4406 domain nil validity4407 is expected to eq false4408 HTTPS-only4409 pages_https_only: true, certificate: nil, key: nil, auto_ssl_enabled: false, errors_on: [:certificate, :key]4410 is adds the expected errors4411 pages_https_only: true, certificate: nil, key: nil, auto_ssl_enabled: true, errors_on: []4412 is adds the expected errors4413 pages_https_only: true, certificate: "-----BEGIN CERTIFICATE-----\nMIIBrzCCARgCCQDbfQx2zdkNYTANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQDDBB0\nZXN0LWNlcnRpZmljYXRlMCAXDTIwMDMxNjE0MjAzNFoYDzIyMjAwMTI4MTQyMDM0\nWjAbMRkwFwYDVQQDDBB0ZXN0LWNlcnRpZmljYXRlMIGfMA0GCSqGSIb3DQEBAQUA\nA4GNADCBiQKBgQCkvgn0vRnEUnWEjUs8h+UCUAa+bpkS+hPiopTld/YmBTv/aB41\nHWqU0VpK8JzTwqe6mnnJOCa/Ir9eLT1TQ3za++nhm+v92JJzgD9EDoy1rp6AvJI1\nPjfyR1Odja1Hl96hMvBClfS3ggyXAZAZPmHo5/Z8qYPHO7C7J99wgeot2wIDAQAB\nMA0GCSqGSIb3DQEBCwUAA4GBACc+chrTAuvnMBTedc4/dy16pEesK6oGjywYUd/0\n/FBr8Vry7QUXMSgfraza9S0V+JvFvZFqkkOyJKW+m30kThWzyc/2e+BRxTh/QrxP\n0j84QXtmnVtW4jsAwfBBfg78ST27eyp/WhruI6F/kZlXhfAed0RcPbRnbi3yvUPL\nLo4T\n-----END CERTIFICATE-----\n", key: nil, auto_ssl_enabled: false, errors_on: [:key]4414 is adds the expected errors4415 pages_https_only: true, certificate: "-----BEGIN CERTIFICATE-----\nMIIBrzCCARgCCQDbfQx2zdkNYTANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQDDBB0\nZXN0LWNlcnRpZmljYXRlMCAXDTIwMDMxNjE0MjAzNFoYDzIyMjAwMTI4MTQyMDM0\nWjAbMRkwFwYDVQQDDBB0ZXN0LWNlcnRpZmljYXRlMIGfMA0GCSqGSIb3DQEBAQUA\nA4GNADCBiQKBgQCkvgn0vRnEUnWEjUs8h+UCUAa+bpkS+hPiopTld/YmBTv/aB41\nHWqU0VpK8JzTwqe6mnnJOCa/Ir9eLT1TQ3za++nhm+v92JJzgD9EDoy1rp6AvJI1\nPjfyR1Odja1Hl96hMvBClfS3ggyXAZAZPmHo5/Z8qYPHO7C7J99wgeot2wIDAQAB\nMA0GCSqGSIb3DQEBCwUAA4GBACc+chrTAuvnMBTedc4/dy16pEesK6oGjywYUd/0\n/FBr8Vry7QUXMSgfraza9S0V+JvFvZFqkkOyJKW+m30kThWzyc/2e+BRxTh/QrxP\n0j84QXtmnVtW4jsAwfBBfg78ST27eyp/WhruI6F/kZlXhfAed0RcPbRnbi3yvUPL\nLo4T\n-----END CERTIFICATE-----\n", key: nil, auto_ssl_enabled: true, errors_on: [:key]4416 is adds the expected errors4417 pages_https_only: true, certificate: nil, key: "-----BEGIN PRIVATE KEY-----\nMIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKS+CfS9GcRSdYSN\nSzyH5QJQBr5umRL6E+KilOV39iYFO/9oHjUdapTRWkrwnNPCp7qaeck4Jr8iv14t\nPVNDfNr76eGb6/3YknOAP0QOjLWunoC8kjU+N/JHU52NrUeX3qEy8EKV9LeCDJcB\nkBk+Yejn9nypg8c7sLsn33CB6i3bAgMBAAECgYA2D26w80T7WZvazYr86BNMePpd\nj2mIAqx32KZHzt/lhh40J/SRtX9+Kl0Y7nBoRR5Ja9u/HkAIxNxLiUjwg9r6cpg/\nuITEF5nMt7lAk391BuI+7VOZZGbJDsq2ulPd6lO+C8Kq/PI/e4kXcIjeH6KwQsuR\n5vrXfBZ3sQfflaiN4QJBANBt8JY2LIGQF8o89qwUpRL5vbnKQ4IzZ5+TOl4RLR7O\nAQpJ81tGuINghO7aunctb6rrcKJrxmEH1whzComybrMCQQDKV49nOBudRBAIgG4K\nEnLzsRKISUHMZSJiYTYnablof8cKw1JaQduw7zgrUlLwnroSaAGX88+Jw1f5n2Lh\nVlg5AkBDdUGnrDLtYBCDEQYZHblrkc7ZAeCllDOWjxUV+uMqlCv8A4Ey6omvY57C\nm6I8DkWVAQx8VPtozhvHjUw80rZHAkB55HWHAM3h13axKG0htCt7klhPsZHpx6MH\nEPjGlXIT+aW2XiPmK3ZlCDcWIenE+lmtbOpI159Wpk8BGXs/s/xBAkEAlAY3ymgx\n63BDJEwvOb2IaP8lDDxNsXx9XJNVvQbv5n15vNsLHbjslHfAhAbxnLQ1fLhUPqSi\nnNp/xedE1YxutQ==\n-----END PRIVATE KEY-----\n", auto_ssl_enabled: false, errors_on: [:certificate, :key]4418 is adds the expected errors4419 pages_https_only: true, certificate: nil, key: "-----BEGIN PRIVATE KEY-----\nMIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKS+CfS9GcRSdYSN\nSzyH5QJQBr5umRL6E+KilOV39iYFO/9oHjUdapTRWkrwnNPCp7qaeck4Jr8iv14t\nPVNDfNr76eGb6/3YknOAP0QOjLWunoC8kjU+N/JHU52NrUeX3qEy8EKV9LeCDJcB\nkBk+Yejn9nypg8c7sLsn33CB6i3bAgMBAAECgYA2D26w80T7WZvazYr86BNMePpd\nj2mIAqx32KZHzt/lhh40J/SRtX9+Kl0Y7nBoRR5Ja9u/HkAIxNxLiUjwg9r6cpg/\nuITEF5nMt7lAk391BuI+7VOZZGbJDsq2ulPd6lO+C8Kq/PI/e4kXcIjeH6KwQsuR\n5vrXfBZ3sQfflaiN4QJBANBt8JY2LIGQF8o89qwUpRL5vbnKQ4IzZ5+TOl4RLR7O\nAQpJ81tGuINghO7aunctb6rrcKJrxmEH1whzComybrMCQQDKV49nOBudRBAIgG4K\nEnLzsRKISUHMZSJiYTYnablof8cKw1JaQduw7zgrUlLwnroSaAGX88+Jw1f5n2Lh\nVlg5AkBDdUGnrDLtYBCDEQYZHblrkc7ZAeCllDOWjxUV+uMqlCv8A4Ey6omvY57C\nm6I8DkWVAQx8VPtozhvHjUw80rZHAkB55HWHAM3h13axKG0htCt7klhPsZHpx6MH\nEPjGlXIT+aW2XiPmK3ZlCDcWIenE+lmtbOpI159Wpk8BGXs/s/xBAkEAlAY3ymgx\n63BDJEwvOb2IaP8lDDxNsXx9XJNVvQbv5n15vNsLHbjslHfAhAbxnLQ1fLhUPqSi\nnNp/xedE1YxutQ==\n-----END PRIVATE KEY-----\n", auto_ssl_enabled: true, errors_on: [:key]4420 is adds the expected errors4421 pages_https_only: true, certificate: "-----BEGIN CERTIFICATE-----\nMIIBrzCCARgCCQDbfQx2zdkNYTANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQDDBB0\nZXN0LWNlcnRpZmljYXRlMCAXDTIwMDMxNjE0MjAzNFoYDzIyMjAwMTI4MTQyMDM0\nWjAbMRkwFwYDVQQDDBB0ZXN0LWNlcnRpZmljYXRlMIGfMA0GCSqGSIb3DQEBAQUA\nA4GNADCBiQKBgQCkvgn0vRnEUnWEjUs8h+UCUAa+bpkS+hPiopTld/YmBTv/aB41\nHWqU0VpK8JzTwqe6mnnJOCa/Ir9eLT1TQ3za++nhm+v92JJzgD9EDoy1rp6AvJI1\nPjfyR1Odja1Hl96hMvBClfS3ggyXAZAZPmHo5/Z8qYPHO7C7J99wgeot2wIDAQAB\nMA0GCSqGSIb3DQEBCwUAA4GBACc+chrTAuvnMBTedc4/dy16pEesK6oGjywYUd/0\n/FBr8Vry7QUXMSgfraza9S0V+JvFvZFqkkOyJKW+m30kThWzyc/2e+BRxTh/QrxP\n0j84QXtmnVtW4jsAwfBBfg78ST27eyp/WhruI6F/kZlXhfAed0RcPbRnbi3yvUPL\nLo4T\n-----END CERTIFICATE-----\n", key: "-----BEGIN PRIVATE KEY-----\nMIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKS+CfS9GcRSdYSN\nSzyH5QJQBr5umRL6E+KilOV39iYFO/9oHjUdapTRWkrwnNPCp7qaeck4Jr8iv14t\nPVNDfNr76eGb6/3YknOAP0QOjLWunoC8kjU+N/JHU52NrUeX3qEy8EKV9LeCDJcB\nkBk+Yejn9nypg8c7sLsn33CB6i3bAgMBAAECgYA2D26w80T7WZvazYr86BNMePpd\nj2mIAqx32KZHzt/lhh40J/SRtX9+Kl0Y7nBoRR5Ja9u/HkAIxNxLiUjwg9r6cpg/\nuITEF5nMt7lAk391BuI+7VOZZGbJDsq2ulPd6lO+C8Kq/PI/e4kXcIjeH6KwQsuR\n5vrXfBZ3sQfflaiN4QJBANBt8JY2LIGQF8o89qwUpRL5vbnKQ4IzZ5+TOl4RLR7O\nAQpJ81tGuINghO7aunctb6rrcKJrxmEH1whzComybrMCQQDKV49nOBudRBAIgG4K\nEnLzsRKISUHMZSJiYTYnablof8cKw1JaQduw7zgrUlLwnroSaAGX88+Jw1f5n2Lh\nVlg5AkBDdUGnrDLtYBCDEQYZHblrkc7ZAeCllDOWjxUV+uMqlCv8A4Ey6omvY57C\nm6I8DkWVAQx8VPtozhvHjUw80rZHAkB55HWHAM3h13axKG0htCt7klhPsZHpx6MH\nEPjGlXIT+aW2XiPmK3ZlCDcWIenE+lmtbOpI159Wpk8BGXs/s/xBAkEAlAY3ymgx\n63BDJEwvOb2IaP8lDDxNsXx9XJNVvQbv5n15vNsLHbjslHfAhAbxnLQ1fLhUPqSi\nnNp/xedE1YxutQ==\n-----END PRIVATE KEY-----\n", auto_ssl_enabled: false, errors_on: []4422 is adds the expected errors4423 pages_https_only: true, certificate: "-----BEGIN CERTIFICATE-----\nMIIBrzCCARgCCQDbfQx2zdkNYTANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQDDBB0\nZXN0LWNlcnRpZmljYXRlMCAXDTIwMDMxNjE0MjAzNFoYDzIyMjAwMTI4MTQyMDM0\nWjAbMRkwFwYDVQQDDBB0ZXN0LWNlcnRpZmljYXRlMIGfMA0GCSqGSIb3DQEBAQUA\nA4GNADCBiQKBgQCkvgn0vRnEUnWEjUs8h+UCUAa+bpkS+hPiopTld/YmBTv/aB41\nHWqU0VpK8JzTwqe6mnnJOCa/Ir9eLT1TQ3za++nhm+v92JJzgD9EDoy1rp6AvJI1\nPjfyR1Odja1Hl96hMvBClfS3ggyXAZAZPmHo5/Z8qYPHO7C7J99wgeot2wIDAQAB\nMA0GCSqGSIb3DQEBCwUAA4GBACc+chrTAuvnMBTedc4/dy16pEesK6oGjywYUd/0\n/FBr8Vry7QUXMSgfraza9S0V+JvFvZFqkkOyJKW+m30kThWzyc/2e+BRxTh/QrxP\n0j84QXtmnVtW4jsAwfBBfg78ST27eyp/WhruI6F/kZlXhfAed0RcPbRnbi3yvUPL\nLo4T\n-----END CERTIFICATE-----\n", key: "-----BEGIN PRIVATE KEY-----\nMIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKS+CfS9GcRSdYSN\nSzyH5QJQBr5umRL6E+KilOV39iYFO/9oHjUdapTRWkrwnNPCp7qaeck4Jr8iv14t\nPVNDfNr76eGb6/3YknOAP0QOjLWunoC8kjU+N/JHU52NrUeX3qEy8EKV9LeCDJcB\nkBk+Yejn9nypg8c7sLsn33CB6i3bAgMBAAECgYA2D26w80T7WZvazYr86BNMePpd\nj2mIAqx32KZHzt/lhh40J/SRtX9+Kl0Y7nBoRR5Ja9u/HkAIxNxLiUjwg9r6cpg/\nuITEF5nMt7lAk391BuI+7VOZZGbJDsq2ulPd6lO+C8Kq/PI/e4kXcIjeH6KwQsuR\n5vrXfBZ3sQfflaiN4QJBANBt8JY2LIGQF8o89qwUpRL5vbnKQ4IzZ5+TOl4RLR7O\nAQpJ81tGuINghO7aunctb6rrcKJrxmEH1whzComybrMCQQDKV49nOBudRBAIgG4K\nEnLzsRKISUHMZSJiYTYnablof8cKw1JaQduw7zgrUlLwnroSaAGX88+Jw1f5n2Lh\nVlg5AkBDdUGnrDLtYBCDEQYZHblrkc7ZAeCllDOWjxUV+uMqlCv8A4Ey6omvY57C\nm6I8DkWVAQx8VPtozhvHjUw80rZHAkB55HWHAM3h13axKG0htCt7klhPsZHpx6MH\nEPjGlXIT+aW2XiPmK3ZlCDcWIenE+lmtbOpI159Wpk8BGXs/s/xBAkEAlAY3ymgx\n63BDJEwvOb2IaP8lDDxNsXx9XJNVvQbv5n15vNsLHbjslHfAhAbxnLQ1fLhUPqSi\nnNp/xedE1YxutQ==\n-----END PRIVATE KEY-----\n", auto_ssl_enabled: true, errors_on: []4424 is adds the expected errors4425 pages_https_only: false, certificate: nil, key: nil, auto_ssl_enabled: false, errors_on: []4426 is adds the expected errors4427 pages_https_only: false, certificate: nil, key: nil, auto_ssl_enabled: true, errors_on: []4428 is adds the expected errors4429 pages_https_only: false, certificate: "-----BEGIN CERTIFICATE-----\nMIIBrzCCARgCCQDbfQx2zdkNYTANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQDDBB0\nZXN0LWNlcnRpZmljYXRlMCAXDTIwMDMxNjE0MjAzNFoYDzIyMjAwMTI4MTQyMDM0\nWjAbMRkwFwYDVQQDDBB0ZXN0LWNlcnRpZmljYXRlMIGfMA0GCSqGSIb3DQEBAQUA\nA4GNADCBiQKBgQCkvgn0vRnEUnWEjUs8h+UCUAa+bpkS+hPiopTld/YmBTv/aB41\nHWqU0VpK8JzTwqe6mnnJOCa/Ir9eLT1TQ3za++nhm+v92JJzgD9EDoy1rp6AvJI1\nPjfyR1Odja1Hl96hMvBClfS3ggyXAZAZPmHo5/Z8qYPHO7C7J99wgeot2wIDAQAB\nMA0GCSqGSIb3DQEBCwUAA4GBACc+chrTAuvnMBTedc4/dy16pEesK6oGjywYUd/0\n/FBr8Vry7QUXMSgfraza9S0V+JvFvZFqkkOyJKW+m30kThWzyc/2e+BRxTh/QrxP\n0j84QXtmnVtW4jsAwfBBfg78ST27eyp/WhruI6F/kZlXhfAed0RcPbRnbi3yvUPL\nLo4T\n-----END CERTIFICATE-----\n", key: nil, auto_ssl_enabled: false, errors_on: [:key]4430 is adds the expected errors4431 pages_https_only: false, certificate: "-----BEGIN CERTIFICATE-----\nMIIBrzCCARgCCQDbfQx2zdkNYTANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQDDBB0\nZXN0LWNlcnRpZmljYXRlMCAXDTIwMDMxNjE0MjAzNFoYDzIyMjAwMTI4MTQyMDM0\nWjAbMRkwFwYDVQQDDBB0ZXN0LWNlcnRpZmljYXRlMIGfMA0GCSqGSIb3DQEBAQUA\nA4GNADCBiQKBgQCkvgn0vRnEUnWEjUs8h+UCUAa+bpkS+hPiopTld/YmBTv/aB41\nHWqU0VpK8JzTwqe6mnnJOCa/Ir9eLT1TQ3za++nhm+v92JJzgD9EDoy1rp6AvJI1\nPjfyR1Odja1Hl96hMvBClfS3ggyXAZAZPmHo5/Z8qYPHO7C7J99wgeot2wIDAQAB\nMA0GCSqGSIb3DQEBCwUAA4GBACc+chrTAuvnMBTedc4/dy16pEesK6oGjywYUd/0\n/FBr8Vry7QUXMSgfraza9S0V+JvFvZFqkkOyJKW+m30kThWzyc/2e+BRxTh/QrxP\n0j84QXtmnVtW4jsAwfBBfg78ST27eyp/WhruI6F/kZlXhfAed0RcPbRnbi3yvUPL\nLo4T\n-----END CERTIFICATE-----\n", key: nil, auto_ssl_enabled: true, errors_on: [:key]4432 is adds the expected errors4433 pages_https_only: false, certificate: nil, key: "-----BEGIN PRIVATE KEY-----\nMIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKS+CfS9GcRSdYSN\nSzyH5QJQBr5umRL6E+KilOV39iYFO/9oHjUdapTRWkrwnNPCp7qaeck4Jr8iv14t\nPVNDfNr76eGb6/3YknOAP0QOjLWunoC8kjU+N/JHU52NrUeX3qEy8EKV9LeCDJcB\nkBk+Yejn9nypg8c7sLsn33CB6i3bAgMBAAECgYA2D26w80T7WZvazYr86BNMePpd\nj2mIAqx32KZHzt/lhh40J/SRtX9+Kl0Y7nBoRR5Ja9u/HkAIxNxLiUjwg9r6cpg/\nuITEF5nMt7lAk391BuI+7VOZZGbJDsq2ulPd6lO+C8Kq/PI/e4kXcIjeH6KwQsuR\n5vrXfBZ3sQfflaiN4QJBANBt8JY2LIGQF8o89qwUpRL5vbnKQ4IzZ5+TOl4RLR7O\nAQpJ81tGuINghO7aunctb6rrcKJrxmEH1whzComybrMCQQDKV49nOBudRBAIgG4K\nEnLzsRKISUHMZSJiYTYnablof8cKw1JaQduw7zgrUlLwnroSaAGX88+Jw1f5n2Lh\nVlg5AkBDdUGnrDLtYBCDEQYZHblrkc7ZAeCllDOWjxUV+uMqlCv8A4Ey6omvY57C\nm6I8DkWVAQx8VPtozhvHjUw80rZHAkB55HWHAM3h13axKG0htCt7klhPsZHpx6MH\nEPjGlXIT+aW2XiPmK3ZlCDcWIenE+lmtbOpI159Wpk8BGXs/s/xBAkEAlAY3ymgx\n63BDJEwvOb2IaP8lDDxNsXx9XJNVvQbv5n15vNsLHbjslHfAhAbxnLQ1fLhUPqSi\nnNp/xedE1YxutQ==\n-----END PRIVATE KEY-----\n", auto_ssl_enabled: false, errors_on: [:key]4434 is adds the expected errors4435 pages_https_only: false, certificate: nil, key: "-----BEGIN PRIVATE KEY-----\nMIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKS+CfS9GcRSdYSN\nSzyH5QJQBr5umRL6E+KilOV39iYFO/9oHjUdapTRWkrwnNPCp7qaeck4Jr8iv14t\nPVNDfNr76eGb6/3YknOAP0QOjLWunoC8kjU+N/JHU52NrUeX3qEy8EKV9LeCDJcB\nkBk+Yejn9nypg8c7sLsn33CB6i3bAgMBAAECgYA2D26w80T7WZvazYr86BNMePpd\nj2mIAqx32KZHzt/lhh40J/SRtX9+Kl0Y7nBoRR5Ja9u/HkAIxNxLiUjwg9r6cpg/\nuITEF5nMt7lAk391BuI+7VOZZGbJDsq2ulPd6lO+C8Kq/PI/e4kXcIjeH6KwQsuR\n5vrXfBZ3sQfflaiN4QJBANBt8JY2LIGQF8o89qwUpRL5vbnKQ4IzZ5+TOl4RLR7O\nAQpJ81tGuINghO7aunctb6rrcKJrxmEH1whzComybrMCQQDKV49nOBudRBAIgG4K\nEnLzsRKISUHMZSJiYTYnablof8cKw1JaQduw7zgrUlLwnroSaAGX88+Jw1f5n2Lh\nVlg5AkBDdUGnrDLtYBCDEQYZHblrkc7ZAeCllDOWjxUV+uMqlCv8A4Ey6omvY57C\nm6I8DkWVAQx8VPtozhvHjUw80rZHAkB55HWHAM3h13axKG0htCt7klhPsZHpx6MH\nEPjGlXIT+aW2XiPmK3ZlCDcWIenE+lmtbOpI159Wpk8BGXs/s/xBAkEAlAY3ymgx\n63BDJEwvOb2IaP8lDDxNsXx9XJNVvQbv5n15vNsLHbjslHfAhAbxnLQ1fLhUPqSi\nnNp/xedE1YxutQ==\n-----END PRIVATE KEY-----\n", auto_ssl_enabled: true, errors_on: [:key]4436 is adds the expected errors4437 pages_https_only: false, certificate: "-----BEGIN CERTIFICATE-----\nMIIBrzCCARgCCQDbfQx2zdkNYTANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQDDBB0\nZXN0LWNlcnRpZmljYXRlMCAXDTIwMDMxNjE0MjAzNFoYDzIyMjAwMTI4MTQyMDM0\nWjAbMRkwFwYDVQQDDBB0ZXN0LWNlcnRpZmljYXRlMIGfMA0GCSqGSIb3DQEBAQUA\nA4GNADCBiQKBgQCkvgn0vRnEUnWEjUs8h+UCUAa+bpkS+hPiopTld/YmBTv/aB41\nHWqU0VpK8JzTwqe6mnnJOCa/Ir9eLT1TQ3za++nhm+v92JJzgD9EDoy1rp6AvJI1\nPjfyR1Odja1Hl96hMvBClfS3ggyXAZAZPmHo5/Z8qYPHO7C7J99wgeot2wIDAQAB\nMA0GCSqGSIb3DQEBCwUAA4GBACc+chrTAuvnMBTedc4/dy16pEesK6oGjywYUd/0\n/FBr8Vry7QUXMSgfraza9S0V+JvFvZFqkkOyJKW+m30kThWzyc/2e+BRxTh/QrxP\n0j84QXtmnVtW4jsAwfBBfg78ST27eyp/WhruI6F/kZlXhfAed0RcPbRnbi3yvUPL\nLo4T\n-----END CERTIFICATE-----\n", key: "-----BEGIN PRIVATE KEY-----\nMIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKS+CfS9GcRSdYSN\nSzyH5QJQBr5umRL6E+KilOV39iYFO/9oHjUdapTRWkrwnNPCp7qaeck4Jr8iv14t\nPVNDfNr76eGb6/3YknOAP0QOjLWunoC8kjU+N/JHU52NrUeX3qEy8EKV9LeCDJcB\nkBk+Yejn9nypg8c7sLsn33CB6i3bAgMBAAECgYA2D26w80T7WZvazYr86BNMePpd\nj2mIAqx32KZHzt/lhh40J/SRtX9+Kl0Y7nBoRR5Ja9u/HkAIxNxLiUjwg9r6cpg/\nuITEF5nMt7lAk391BuI+7VOZZGbJDsq2ulPd6lO+C8Kq/PI/e4kXcIjeH6KwQsuR\n5vrXfBZ3sQfflaiN4QJBANBt8JY2LIGQF8o89qwUpRL5vbnKQ4IzZ5+TOl4RLR7O\nAQpJ81tGuINghO7aunctb6rrcKJrxmEH1whzComybrMCQQDKV49nOBudRBAIgG4K\nEnLzsRKISUHMZSJiYTYnablof8cKw1JaQduw7zgrUlLwnroSaAGX88+Jw1f5n2Lh\nVlg5AkBDdUGnrDLtYBCDEQYZHblrkc7ZAeCllDOWjxUV+uMqlCv8A4Ey6omvY57C\nm6I8DkWVAQx8VPtozhvHjUw80rZHAkB55HWHAM3h13axKG0htCt7klhPsZHpx6MH\nEPjGlXIT+aW2XiPmK3ZlCDcWIenE+lmtbOpI159Wpk8BGXs/s/xBAkEAlAY3ymgx\n63BDJEwvOb2IaP8lDDxNsXx9XJNVvQbv5n15vNsLHbjslHfAhAbxnLQ1fLhUPqSi\nnNp/xedE1YxutQ==\n-----END PRIVATE KEY-----\n", auto_ssl_enabled: false, errors_on: []4438 is adds the expected errors4439 pages_https_only: false, certificate: "-----BEGIN CERTIFICATE-----\nMIIBrzCCARgCCQDbfQx2zdkNYTANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQDDBB0\nZXN0LWNlcnRpZmljYXRlMCAXDTIwMDMxNjE0MjAzNFoYDzIyMjAwMTI4MTQyMDM0\nWjAbMRkwFwYDVQQDDBB0ZXN0LWNlcnRpZmljYXRlMIGfMA0GCSqGSIb3DQEBAQUA\nA4GNADCBiQKBgQCkvgn0vRnEUnWEjUs8h+UCUAa+bpkS+hPiopTld/YmBTv/aB41\nHWqU0VpK8JzTwqe6mnnJOCa/Ir9eLT1TQ3za++nhm+v92JJzgD9EDoy1rp6AvJI1\nPjfyR1Odja1Hl96hMvBClfS3ggyXAZAZPmHo5/Z8qYPHO7C7J99wgeot2wIDAQAB\nMA0GCSqGSIb3DQEBCwUAA4GBACc+chrTAuvnMBTedc4/dy16pEesK6oGjywYUd/0\n/FBr8Vry7QUXMSgfraza9S0V+JvFvZFqkkOyJKW+m30kThWzyc/2e+BRxTh/QrxP\n0j84QXtmnVtW4jsAwfBBfg78ST27eyp/WhruI6F/kZlXhfAed0RcPbRnbi3yvUPL\nLo4T\n-----END CERTIFICATE-----\n", key: "-----BEGIN PRIVATE KEY-----\nMIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKS+CfS9GcRSdYSN\nSzyH5QJQBr5umRL6E+KilOV39iYFO/9oHjUdapTRWkrwnNPCp7qaeck4Jr8iv14t\nPVNDfNr76eGb6/3YknOAP0QOjLWunoC8kjU+N/JHU52NrUeX3qEy8EKV9LeCDJcB\nkBk+Yejn9nypg8c7sLsn33CB6i3bAgMBAAECgYA2D26w80T7WZvazYr86BNMePpd\nj2mIAqx32KZHzt/lhh40J/SRtX9+Kl0Y7nBoRR5Ja9u/HkAIxNxLiUjwg9r6cpg/\nuITEF5nMt7lAk391BuI+7VOZZGbJDsq2ulPd6lO+C8Kq/PI/e4kXcIjeH6KwQsuR\n5vrXfBZ3sQfflaiN4QJBANBt8JY2LIGQF8o89qwUpRL5vbnKQ4IzZ5+TOl4RLR7O\nAQpJ81tGuINghO7aunctb6rrcKJrxmEH1whzComybrMCQQDKV49nOBudRBAIgG4K\nEnLzsRKISUHMZSJiYTYnablof8cKw1JaQduw7zgrUlLwnroSaAGX88+Jw1f5n2Lh\nVlg5AkBDdUGnrDLtYBCDEQYZHblrkc7ZAeCllDOWjxUV+uMqlCv8A4Ey6omvY57C\nm6I8DkWVAQx8VPtozhvHjUw80rZHAkB55HWHAM3h13axKG0htCt7klhPsZHpx6MH\nEPjGlXIT+aW2XiPmK3ZlCDcWIenE+lmtbOpI159Wpk8BGXs/s/xBAkEAlAY3ymgx\n63BDJEwvOb2IaP8lDDxNsXx9XJNVvQbv5n15vNsLHbjslHfAhAbxnLQ1fLhUPqSi\nnNp/xedE1YxutQ==\n-----END PRIVATE KEY-----\n", auto_ssl_enabled: true, errors_on: []4440 is adds the expected errors4441 when certificate is specified4442 saves validity time4443 validate certificate4444 serverless domain4445 requires certificate and key to be present4446 with matching key4447 is expected to be valid4448 when no certificate is specified4449 is expected not to be valid4450 when no key is specified4451 is expected not to be valid4452 for not matching key4453 is expected not to be valid4454 when certificate is expired4455 when certificate is being changed4456 adds error to certificate4457 when certificate is already saved4458 doesn't add error to certificate4459 with ecdsa certificate4460 is valid4461 when curve is set explicitly by parameters4462 adds errors to private key4463 validations4464 is expected to validate that :verification_code cannot be empty/falsy4465 default values4466 defaults wildcard to false4467 defaults scope to project4468 defaults usage to pages4469 #verification_code4470 is set automatically with 128 bits of SecureRandom data4471 #keyed_verification_code4472 is expected to eq "gitlab-pages-verification-code=e04c15702513e6a2236fac52951b4187"4473 #verification_domain4474 is expected to be nil4475 is a well-known subdomain if the domain is present4476 #url4477 is expected to eq "https://my32.domain.com"4478 without the certificate4479 is expected to eq "http://my33.domain.com"4480 #has_matching_key?4481 is expected to be truthy4482 for invalid key4483 is expected to be falsey4484 #has_intermediates?4485 for self signed4486 is expected to be truthy4487 for missing certificate chain4488 is expected to be falsey4489 for trusted certificate chain4490 is expected to be truthy4491 with a LetsEncrypt bundle with an expired DST Root CA X34492 is expected to be truthy4493 #expired?4494 for valid4495 is expected to be falsey4496 for expired4497 is expected to be truthy4498 #subject4499 is expected to eq "/CN=test-certificate"4500 #certificate_text4501 is expected not to be empty4502 #https?4503 when a certificate is present4504 is expected to be https4505 when no certificate is present4506 is expected not to be https4507 #update_daemon4508 runs when the domain is created4509 runs when the domain is destroyed4510 schedules a PagesUpdateConfigurationWorker4511 when usage is serverless4512 does not call the UpdatePagesConfigurationService4513 when the pages aren't deployed4514 does not schedule a PagesUpdateConfigurationWorker4515 configuration updates when attributes change4516 attribute: :project, old_value: nil, new_value: :project1, update_expected: true4517 runs if a relevant attribute has changed4518 attribute: :project, old_value: :project1, new_value: :project1, update_expected: false4519 runs if a relevant attribute has changed4520 attribute: :project, old_value: :project1, new_value: :project2, update_expected: true4521 runs if a relevant attribute has changed4522 attribute: :project, old_value: :project1, new_value: nil, update_expected: true4523 runs if a relevant attribute has changed4524 attribute: :domain, old_value: "a.com", new_value: "a.com", update_expected: false4525 runs if a relevant attribute has changed4526 attribute: :domain, old_value: "a.com", new_value: "b.com", update_expected: true4527 runs if a relevant attribute has changed4528 attribute: :verification_code, old_value: "foo", new_value: "foo", update_expected: false4529 runs if a relevant attribute has changed4530 attribute: :verification_code, old_value: "foo", new_value: "bar", update_expected: false4531 runs if a relevant attribute has changed4532 attribute: :verified_at, old_value: nil, new_value: Tue, 14 Dec 2021 01:28:11.887408512 UTC +00:00, update_expected: false4533 runs if a relevant attribute has changed4534 attribute: :verified_at, old_value: Tue, 14 Dec 2021 01:28:11.887408512 UTC +00:00, new_value: Tue, 14 Dec 2021 01:28:11.887408512 UTC +00:00, update_expected: false4535 runs if a relevant attribute has changed4536 attribute: :verified_at, old_value: Tue, 14 Dec 2021 01:28:11.887408512 UTC +00:00, new_value: Wed, 15 Dec 2021 01:28:11.887408512 UTC +00:00, update_expected: false4537 runs if a relevant attribute has changed4538 attribute: :verified_at, old_value: Tue, 14 Dec 2021 01:28:11.887408512 UTC +00:00, new_value: nil, update_expected: false4539 runs if a relevant attribute has changed4540 attribute: :enabled_until, old_value: nil, new_value: Tue, 14 Dec 2021 01:28:11.887408512 UTC +00:00, update_expected: true4541 runs if a relevant attribute has changed4542 attribute: :enabled_until, old_value: Tue, 14 Dec 2021 01:28:11.887408512 UTC +00:00, new_value: Tue, 14 Dec 2021 01:28:11.887408512 UTC +00:00, update_expected: false4543 runs if a relevant attribute has changed4544 attribute: :enabled_until, old_value: Tue, 14 Dec 2021 01:28:11.887408512 UTC +00:00, new_value: Wed, 15 Dec 2021 01:28:11.887408512 UTC +00:00, update_expected: false4545 runs if a relevant attribute has changed4546 attribute: :enabled_until, old_value: Tue, 14 Dec 2021 01:28:11.887408512 UTC +00:00, new_value: nil, update_expected: true4547 runs if a relevant attribute has changed4548 TLS configuration4549 updates when added4550 updates when changed4551 updates when removed4552 #user_provided_key4553 when certificate is provided by user4554 returns key4555 when certificate is provided by gitlab4556 returns nil4557 #user_provided_certificate4558 when certificate is provided by user4559 returns key4560 when certificate is provided by gitlab4561 returns nil4562 #user_provided_key=4563 when value has been changed4564 assignes new value to key4565 changes certificate source4566 when value has not been not changed4567 does not change certificate source4568 #gitlab_provided_key=4569 when value has been changed4570 assignes new value to key4571 changes certificate source4572 when value has not been not changed4573 does not change certificate source4574 #user_provided_certificate=4575 when value has been changed4576 assignes new value to certificate4577 changes certificate source4578 when value has not been not changed4579 does not change certificate source4580 #gitlab_provided_certificate=4581 when value has been changed4582 assignes new value to certificate4583 changes certificate source4584 when value has not been not changed4585 does not change certificate source4586 #save4587 when we failed to obtain ssl certificate4588 clears failure if auto ssl is disabled4589 does not clear failure on unrelated updates4590 .for_removal4591 when domain is not schedule for removal4592 does not return domain4593 when domain is scheduled for removal yesterday4594 returns domain4595 when domain is scheduled for removal tomorrow4596 does not return domain4597 .instance_serverless4598 returns domains that are wildcard, instance-level, and serverless4599 .need_auto_ssl_renewal4600 contains only domains needing ssl renewal4601 #pages_virtual_domain4602 returns the virual domain when there are pages deployed for the project4603 when there are no pages deployed for the project4604 returns nil4605 .find_by_domain_case_insensitive4606 lookup is case-insensitive4607NamespacesHelper4608 #namespaces_as_json4609 returns the user's groups4610 returns the user's namespace4611 #namespaces_options4612 returns only allowed namespaces for user4613 avoids duplicate groups when extra_group is used4614 selects the new group by default4615 falls back to current user selection4616 returns only groups if groups_only option is true4617 when admin mode is enabled4618 returns groups without being a member for admin4619 when admin mode is disabled4620 returns only allowed namespaces for admin4621 when admin mode is disabled4622 selects existing group4623 when nested groups are available4624 includes groups nested in groups the user can administer4625 orders the groups correctly4626 include_groups_with_developer_maintainer_access parameter4627 when DEVELOPER_MAINTAINER_PROJECT_ACCESS is set for a project4628 returns groups where user is a developer4629 when DEVELOPER_MAINTAINER_PROJECT_ACCESS is set globally4630 return groups where default is not overridden4631 #cascading_namespace_settings_popover_data4632 when locked by an application setting4633 returns expected hash4634 when locked by an ancestor namespace4635 returns expected hash4636 #cascading_namespace_setting_locked?4637 when `group` argument is `nil`4638 returns `false`4639 when `*_locked?` method does not exist4640 returns `false`4641 when `*_locked?` method does exist4642 calls corresponding `*_locked?` method4643EnvironmentSerializer4644 behaves like avoid N+1 on environments serialization4645 avoids N+1 database queries with grouping4646 avoids N+1 database queries without grouping4647 does not preload for environments that does not exist in the page4648 when there is a collection of objects provided4649 contains important elements of environment4650 generates payload for collection4651 when representing environments within folders4652 when there is a single environment4653 represents one standalone environment4654 when there are multiple environments in folder4655 represents one item that is a folder4656 when there are multiple folders and standalone environments4657 represents multiple items grouped within folders4658 when used with pagination4659 creates a paginated serializer4660 when resource is paginatable relation4661 when there is a single environment object in relation4662 serializes environments4663 when multiple environment objects are serialized4664 serializes appropriate number of objects4665 appends relevant headers4666 when grouping environments within folders4667 paginates grouped items including ordering4668 appends correct total page count header4669 appends correct page count headers4670NotificationRecipient4671 #notifiable?4672 when emails are disabled4673 returns false if group disabled4674 returns false if project disabled4675 when emails are enabled4676 returns true if group enabled4677 returns true if project enabled4678 #has_access?4679 user cannot read cross project4680 returns false4681 user cannot read build4682 returns false4683 user cannot read commit4684 returns false4685 target has no policy4686 returns true4687 #notification_setting4688 for child groups4689 when notification setting is global4690 considers notification setting from the first parent without global setting4691 when notification setting is not global4692 considers notification setting from lowest group member in hierarchy4693 #suitable_notification_level?4694 when notification level is mention4695 when type is mention4696 returns true4697 when type is not mention4698 returns false4699 when notification level is participating4700 when type is participating4701 returns true4702 when type is mention4703 returns true4704 with custom action4705 when action is failed_pipeline4706 returns true4707 when action is fixed_pipeline4708 returns true4709 when action is not fixed_pipeline or failed_pipeline4710 returns false4711 when notification level is custom4712 when type is participating4713 with custom event enabled4714 returns true4715 without custom event enabled4716 returns true4717 when type is mention4718 with custom event enabled4719 returns true4720 without custom event enabled4721 returns true4722 when type is watch4723 with custom event enabled4724 returns true4725 without custom event enabled4726 returns false4727 when custom_action is fixed_pipeline and success_pipeline event is enabled4728 returns true4729 with merge_when_pipeline_succeeds4730 custom event enabled4731 returns true4732 custom event disabled4733 returns false4734 when notification level is watch4735 when type is watch4736 without excluded watcher events4737 returns true4738 with excluded watcher events4739 returns false4740 when type is not watch4741 without excluded watcher events4742 returns true4743 with excluded watcher events4744 returns true4745ObjectStorage::MigrateUploadsWorker4746 for AvatarUploader4747 behaves like uploads migration worker4748 .enqueue!4749 is guarded by .sanity_check!4750 sanity_check! fails4751 does not enqueue a job4752 .sanity_check!4753 uploader types mismatch4754 is expected to raise ObjectStorage::MigrateUploadsWorker::SanityCheckError with message matching /Multiple uploaders found/4755 mount point not found4756 is expected to raise ObjectStorage::MigrateUploadsWorker::SanityCheckError with message matching /Mount point [a-z:]+ not found in/4757 #perform4758 migrates files to remote storage4759 reversed4760 migrates files to local storage4761 migration is unsuccessful4762 does not migrate files to remote storage4763 limits N+1 queries4764 to N*54765 for FileUploader4766 behaves like uploads migration worker4767 .enqueue!4768 is guarded by .sanity_check!4769 sanity_check! fails4770 does not enqueue a job4771 .sanity_check!4772 uploader types mismatch4773 is expected to raise ObjectStorage::MigrateUploadsWorker::SanityCheckError with message matching /Multiple uploaders found/4774 mount point not found4775 is expected to raise ObjectStorage::MigrateUploadsWorker::SanityCheckError with message matching /Mount point [a-z:]+ not found in/4776 #perform4777 migrates files to remote storage4778 reversed4779 migrates files to local storage4780 migration is unsuccessful4781 does not migrate files to remote storage4782 limits N+1 queries4783 to N*54784 for DesignManagement::DesignV432x230Uploader4785 behaves like uploads migration worker4786 .enqueue!4787 is guarded by .sanity_check!4788 sanity_check! fails4789 does not enqueue a job4790 .sanity_check!4791 uploader types mismatch4792 is expected to raise ObjectStorage::MigrateUploadsWorker::SanityCheckError with message matching /Multiple uploaders found/4793 mount point not found4794 is expected to raise ObjectStorage::MigrateUploadsWorker::SanityCheckError with message matching /Mount point [a-z:]+ not found in/4795 #perform4796 migrates files to remote storage4797 reversed4798 migrates files to local storage4799 migration is unsuccessful4800 does not migrate files to remote storage4801Members::UpdateService4802 when current user cannot update the given member4803 behaves like a service raising Gitlab::Access::AccessDeniedError4804 raises Gitlab::Access::AccessDeniedError4805 behaves like a service raising Gitlab::Access::AccessDeniedError4806 raises Gitlab::Access::AccessDeniedError4807 when current user can update the given member4808 behaves like a service updating a member4809 updates the member4810 returns success status4811 when member is downgraded to guest4812 with Gitlab::Access::GUEST level as a string4813 behaves like schedules to delete confidential todos4814 is expected to eq 104815 with Gitlab::Access::GUEST level as an integer4816 behaves like schedules to delete confidential todos4817 is expected to eq 104818 when access_level is invalid4819 raises an error4820 when member is not valid4821 returns error status4822 behaves like a service updating a member4823 updates the member4824 returns success status4825 when member is downgraded to guest4826 with Gitlab::Access::GUEST level as a string4827 behaves like schedules to delete confidential todos4828 is expected to eq 104829 with Gitlab::Access::GUEST level as an integer4830 behaves like schedules to delete confidential todos4831 is expected to eq 104832 when access_level is invalid4833 raises an error4834 when member is not valid4835 returns error status4836MergeRequestDiffFile4837 behaves like a BulkInsertSafe model4838 when calling class methods directly4839 raises an error when method is not bulk-insert safe4840 does not raise an error when method is bulk-insert safe4841 .bulk_insert!4842 when all items are valid4843 inserts them all4844 returns an empty array4845 when some items are invalid4846 does not insert any of them and raises an error4847 inserts them anyway when bypassing validations4848 #diff4849 when diff is not stored4850 when the diff is marked as binary4851 unpacks from base 644852 invalid base644853 returns the raw diff4854 when the diff is not marked as binary4855 returns the raw diff4856 when diff is stored in DB4857 returns UTF-8 string4858 when diff is stored in external storage4859 returns UTF-8 string4860 #utf8_diff4861 does not raise error when the diff is binary4862Packages::Debian::ProcessChangesWorker4863 #perform4864 with mocked service4865 calls ProcessChangesService4866 with non existing package file4867 returns early without error4868 with nil package file id4869 returns early without error4870 with non existing user4871 returns early without error4872 with nil user id4873 returns early without error4874 when the service raises an error4875 removes package file4876 behaves like an idempotent worker4877 is labeled as idempotent4878 performs multiple times sequentially without raising an exception4879 sets the Debian file type as changes4880ErrorTracking::SentryClient::Issue4881 #list_issues4882 behaves like calls sentry api4883 calls sentry api4884 behaves like issues have correct return type4885 returns objects of type Gitlab::ErrorTracking::Error4886 behaves like issues have correct length4887 is expected to eq 34888 when response has a pagination info4889 parses the pagination4890 error object created from sentry response4891 error_object: :id, sentry_response: :id4892 is expected to eq "11"4893 error_object: :first_seen, sentry_response: :firstSeen4894 is expected to eq "2018-12-17T12:00:14Z"4895 error_object: :last_seen, sentry_response: :lastSeen4896 is expected to eq "2018-12-31T12:00:11Z"4897 error_object: :title, sentry_response: :title4898 is expected to eq "gaierror: [Errno -2] Name or service not known"4899 error_object: :type, sentry_response: :type4900 is expected to eq "error"4901 error_object: :user_count, sentry_response: :userCount4902 is expected to eq 04903 error_object: :count, sentry_response: :count4904 is expected to eq "21"4905 error_object: :message, sentry_response: [:metadata, :value]4906 is expected to eq "[Errno -2] Name or service not known"4907 error_object: :culprit, sentry_response: :culprit4908 is expected to eq "sentry.tasks.reports.deliver_organization_user_report"4909 error_object: :short_id, sentry_response: :shortId4910 is expected to eq "INTERNAL-4"4911 error_object: :status, sentry_response: :status4912 is expected to eq "unresolved"4913 error_object: :frequency, sentry_response: [:stats, "24h"]4914 is expected to eq [[1546437600, 0]]4915 error_object: :project_id, sentry_response: [:project, :id]4916 is expected to eq "1"4917 error_object: :project_name, sentry_response: [:project, :name]4918 is expected to eq "Internal"4919 error_object: :project_slug, sentry_response: [:project, :slug]4920 is expected to eq "internal"4921 behaves like has correct external_url4922 external_url4923 is constructed correctly4924 redirects4925 behaves like no Sentry redirects4926 does not follow redirects4927 requests with sort parameter in sentry api4928 calls the sentry api with sort params4929 with invalid sort params4930 throws an error4931 Older sentry versions where keys are not present4932 behaves like calls sentry api4933 calls sentry api4934 behaves like issues have correct return type4935 returns objects of type Gitlab::ErrorTracking::Error4936 behaves like issues have correct length4937 is expected to eq 14938 behaves like has correct external_url4939 external_url4940 is constructed correctly4941 essential keys missing in API response4942 raises exception4943 sentry api response too large4944 raises exception4945 behaves like maps Sentry exceptions4946 HTTParty::Error4947 is expected to raise ErrorTracking::SentryClient::Error with "Error when connecting to Sentry"4948 Net::OpenTimeout4949 is expected to raise ErrorTracking::SentryClient::Error with "Connection to Sentry timed out"4950 SocketError4951 is expected to raise ErrorTracking::SentryClient::Error with "Received SocketError when trying to connect to Sentry"4952 OpenSSL::SSL::SSLError4953 is expected to raise ErrorTracking::SentryClient::Error with "Sentry returned invalid SSL data"4954 Errno::ECONNREFUSED4955 is expected to raise ErrorTracking::SentryClient::Error with "Connection refused"4956 StandardError4957 is expected to raise ErrorTracking::SentryClient::Error with "Sentry request failed due to StandardError"4958 when search term is present4959 behaves like calls sentry api4960 calls sentry api4961 behaves like issues have correct return type4962 returns objects of type Gitlab::ErrorTracking::Error4963 behaves like issues have correct length4964 is expected to eq 34965 when cursor is present4966 behaves like calls sentry api4967 calls sentry api4968 behaves like issues have correct return type4969 returns objects of type Gitlab::ErrorTracking::Error4970 behaves like issues have correct length4971 is expected to eq 34972 #issue_details4973 error object created from sentry response4974 has a correct external URL4975 issue has a correct external base url4976 has a correct GitLab issue url4977 has an integrated attribute set to false4978 has the correct tags4979 error_object: :id, sentry_response: :id4980 is expected to eq "11"4981 error_object: :first_seen, sentry_response: :firstSeen4982 is expected to eq "2018-11-06T21:19:55Z"4983 error_object: :last_seen, sentry_response: :lastSeen4984 is expected to eq "2018-11-06T21:19:55Z"4985 error_object: :title, sentry_response: :title4986 is expected to eq "This is an example Python exception"4987 error_object: :type, sentry_response: :type4988 is expected to eq "default"4989 error_object: :user_count, sentry_response: :userCount4990 is expected to eq 04991 error_object: :count, sentry_response: :count4992 is expected to eq "1"4993 error_object: :message, sentry_response: [:metadata, :value]4994 is expected to eq nil4995 error_object: :culprit, sentry_response: :culprit4996 is expected to eq "raven.scripts.runner in main"4997 error_object: :short_id, sentry_response: :shortId4998 is expected to eq "PUMP-STATION-1"4999 error_object: :status, sentry_response: :status5000 is expected to eq "unresolved"5001 error_object: :frequency, sentry_response: [:stats, "24h"]5002 is expected to eq [[1541451600.0, 557], [1541455200.0, 473], [1541458800.0, 914], [1541462400.0, 991], [1541466000.0, 9...1523600.0, 111], [1541527200.0, 926], [1541530800.0, 772], [1541534400.0, 400], [1541538000.0, 943]]5003 error_object: :project_id, sentry_response: [:project, :id]5004 is expected to eq "2"5005 error_object: :project_name, sentry_response: [:project, :name]5006 is expected to eq "Pump Station"5007 error_object: :project_slug, sentry_response: [:project, :slug]5008 is expected to eq "pump-station"5009 error_object: :first_release_last_commit, sentry_response: [:firstRelease, :lastCommit]5010 is expected to eq nil5011 error_object: :last_release_last_commit, sentry_response: [:lastRelease, :lastCommit]5012 is expected to eq {}5013 error_object: :first_release_short_version, sentry_response: [:firstRelease, :shortVersion]5014 is expected to eq "1764232"5015 error_object: :last_release_short_version, sentry_response: [:lastRelease, :shortVersion]5016 is expected to eq "27de6b42eb4"5017 error_object: :first_release_version, sentry_response: [:firstRelease, :version]5018 is expected to eq "17642328ead24b51867165985996d04b29310337"5019 error_object: :last_release_version, sentry_response: [:lastRelease, :version]5020 is expected to eq "17642328ead24b51867165985996d04b29321448"5021 when issue annotations exist5022 has a correct GitLab issue url5023 when no GitLab issue is linked5024 does not find a GitLab issue5025 #update_issue5026 returns a truthy result5027 behaves like calls sentry api5028 calls sentry api5029 error encountered5030 raises the error5031Gitlab::Usage::MetricDefinition5032 has all definitons valid5033 #with_instrumentation_class5034 includes definitions with instrumentation_class5035 with removed metric5036 excludes removed definitions5037 #key5038 returns a symbol from name5039 #validate5040 attribute: :description, value: nil5041 raise exception5042 with skip_validation5043 raise exception if skip_validation: false5044 does not raise exception if has skip_validation: true5045 attribute: :value_type, value: nil5046 raise exception5047 with skip_validation5048 raise exception if skip_validation: false5049 does not raise exception if has skip_validation: true5050 attribute: :value_type, value: "test"5051 raise exception5052 with skip_validation5053 raise exception if skip_validation: false5054 does not raise exception if has skip_validation: true5055 attribute: :status, value: nil5056 raise exception5057 with skip_validation5058 raise exception if skip_validation: false5059 does not raise exception if has skip_validation: true5060 attribute: :milestone, value: nil5061 raise exception5062 with skip_validation5063 raise exception if skip_validation: false5064 does not raise exception if has skip_validation: true5065 attribute: :data_category, value: nil5066 raise exception5067 with skip_validation5068 raise exception if skip_validation: false5069 does not raise exception if has skip_validation: true5070 attribute: :key_path, value: nil5071 raise exception5072 with skip_validation5073 raise exception if skip_validation: false5074 does not raise exception if has skip_validation: true5075 attribute: :product_group, value: nil5076 raise exception5077 with skip_validation5078 raise exception if skip_validation: false5079 does not raise exception if has skip_validation: true5080 attribute: :time_frame, value: nil5081 raise exception5082 with skip_validation5083 raise exception if skip_validation: false5084 does not raise exception if has skip_validation: true5085 attribute: :time_frame, value: "29d"5086 raise exception5087 with skip_validation5088 raise exception if skip_validation: false5089 does not raise exception if has skip_validation: true5090 attribute: :data_source, value: "other"5091 raise exception5092 with skip_validation5093 raise exception if skip_validation: false5094 does not raise exception if has skip_validation: true5095 attribute: :data_source, value: nil5096 raise exception5097 with skip_validation5098 raise exception if skip_validation: false5099 does not raise exception if has skip_validation: true5100 attribute: :distribution, value: nil5101 raise exception5102 with skip_validation5103 raise exception if skip_validation: false5104 does not raise exception if has skip_validation: true5105 attribute: :distribution, value: "test"5106 raise exception5107 with skip_validation5108 raise exception if skip_validation: false5109 does not raise exception if has skip_validation: true5110 attribute: :tier, value: ["test", "ee"]5111 raise exception5112 with skip_validation5113 raise exception if skip_validation: false5114 does not raise exception if has skip_validation: true5115 attribute: :name, value: "count_<adjective_describing>_boards"5116 raise exception5117 with skip_validation5118 raise exception if skip_validation: false5119 does not raise exception if has skip_validation: true5120 attribute: :repair_issue_url, value: nil5121 raise exception5122 with skip_validation5123 raise exception if skip_validation: false5124 does not raise exception if has skip_validation: true5125 attribute: :instrumentation_class, value: "Metric_Class"5126 raise exception5127 with skip_validation5128 raise exception if skip_validation: false5129 does not raise exception if has skip_validation: true5130 attribute: :instrumentation_class, value: "metricClass"5131 raise exception5132 with skip_validation5133 raise exception if skip_validation: false5134 does not raise exception if has skip_validation: true5135 conditional validations5136 when metric has broken status5137 has to have repair issue url provided5138 statuses5139 status: "deprecated", skip_validation?: true5140 returns true/false for skip_validation5141 status: "removed", skip_validation?: true5142 returns true/false for skip_validation5143 status: "active", skip_validation?: false5144 returns true/false for skip_validation5145 .load_all!5146 has empty list when there are no definition files5147 has one metric when there is one file5148 when the same metric is defined multiple times raises exception5149 dump_metrics_yaml5150 returns a YAML with both metrics in a sequence5151ChronicDurationAttribute5152 when default value is not set5153 behaves like ChronicDurationAttribute reader5154 contains dynamically created reader method5155 outputs chronic duration formatted value5156 when value is set to nil5157 outputs nil5158 behaves like ChronicDurationAttribute writer5159 contains dynamically created writer method5160 parses chronic duration input5161 passes validation5162 when negative input is used5163 doesn't raise exception5164 doesn't change value5165 doesn't pass validation5166 when empty input is used5167 writes default value5168 passes validation5169 when nil input is used5170 writes default value5171 passes validation5172 doesn't raise exception5173 when default value is set5174 behaves like ChronicDurationAttribute reader5175 contains dynamically created reader method5176 outputs chronic duration formatted value5177 when value is set to nil5178 outputs nil5179 behaves like ChronicDurationAttribute writer5180 contains dynamically created writer method5181 parses chronic duration input5182 passes validation5183 when negative input is used5184 doesn't raise exception5185 doesn't change value5186 doesn't pass validation5187 when empty input is used5188 writes default value5189 passes validation5190 when nil input is used5191 writes default value5192 passes validation5193 doesn't raise exception5194ChronicDurationAttribute - reader5195 doesn't contain dynamically created writer method5196 behaves like ChronicDurationAttribute reader5197 contains dynamically created reader method5198 outputs chronic duration formatted value5199 when value is set to nil5200 outputs nil5201Gitlab::HashedStorage::Migrator5202 #bulk_schedule_migration5203 schedules job to HashedStorage::MigratorWorker5204 #bulk_schedule_rollback5205 schedules job to HashedStorage::RollbackerWorker5206 #bulk_migrate5207 enqueue jobs to HashedStorage::ProjectMigrateWorker5208 rescues and log exceptions5209 delegates each project in specified range to #migrate5210 has all projects migrated and set as writable5211 #bulk_rollback5212 enqueue jobs to HashedStorage::ProjectRollbackWorker5213 rescues and log exceptions5214 delegates each project in specified range to #rollback5215 has all projects rolledback and set as writable5216 #migrate5217 enqueues project migration job5218 rescues and log exceptions5219 migrates project storage5220 has migrated project set as writable5221 when project is already on hashed storage5222 doesnt enqueue any migration job5223 returns false5224 #rollback5225 enqueues project rollback job5226 rescues and log exceptions5227 rolls-back project storage5228 has rolled-back project set as writable5229 when project is already on legacy storage5230 doesnt enqueue any rollback job5231 returns false5232 migration_pending?5233 returns true when there are MigratorWorker jobs scheduled5234 returns true when there are ProjectMigrateWorker jobs scheduled5235 returns false when queues are empty5236 rollback_pending?5237 returns true when there are RollbackerWorker jobs scheduled5238 returns true when there are jobs scheduled5239 returns false when queues are empty5240 abort_rollback!5241 removes any rollback related scheduled job5242ProcessCommitWorker5243 #perform5244 does not process the commit when the project does not exist5245 does not process the commit when the user does not exist5246 is labeled as idempotent5247 performs multiple times sequentially without raising an exception5248 processes the commit message5249 updates the issue metrics5250 #process_commit_message5251 when pushing to the default branch5252 closes issues that should be closed per the commit message5253 creates cross references5254 when pushing to a non-default branch5255 does not close any issues5256 does not create cross references5257 when commit is a merge request merge commit to the default branch5258 does not close any issues from the commit message5259 still creates cross references5260 #close_issues5261 when the user can update the issues5262 closes the issues5263 when the user can not update the issues5264 does not close the issues5265 #update_issue_metrics5266 when commit has issue reference5267 when issue has no first_mentioned_in_commit_at set5268 updates issue metrics5269 when issue has first_mentioned_in_commit_at earlier than given committed_date5270 doesn't update issue metrics5271 when issue has first_mentioned_in_commit_at later than given committed_date5272 doesn't update issue metrics5273 when commit has no issue references5274 doesn't execute any queries with false conditions5275 #build_commit5276 returns a Commit5277 parses date strings into Time instances5278IssueEntity5279 has Issuable attributes5280 has time estimation attributes5281 when issue got moved5282 when user cannot read target project5283 does not return moved_to_id5284 when user can read target project5285 returns moved moved_to_id5286 when issue got duplicated5287 when user cannot read new issue5288 does not return duplicated_to_id5289 when user can read target project5290 returns duplicated duplicated_to_id5291 when issuable in active or archived project5292 when project is active5293 returns archived false5294 returns nil for archived project doc5295 when project is archived5296 returns archived true5297 returns archived project doc5298Gitlab::Json5299 .parse5300 legacy_mode is disabled by default5301 parses an object5302 parses an array5303 parses a string5304 parses a true bool5305 parses a false bool5306 legacy_mode is enabled5307 parses an object5308 parses an array5309 raises an error on a string5310 raises an error on a true bool5311 raises an error on a false bool5312 feature flag is disabled5313 parses an object5314 parses an array5315 parses a string5316 parses a true bool5317 parses a false bool5318 .parse!5319 legacy_mode is disabled by default5320 parses an object5321 parses an array5322 parses a string5323 parses a true bool5324 parses a false bool5325 legacy_mode is enabled5326 parses an object5327 parses an array5328 raises an error on a string5329 raises an error on a true bool5330 raises an error on a false bool5331 feature flag is disabled5332 parses an object5333 parses an array5334 parses a string5335 parses a true bool5336 parses a false bool5337 .dump5338 dumps an object5339 dumps an array5340 dumps a string5341 dumps a true bool5342 dumps a false bool5343 .generate5344 generates JSON5345 allows you to customise the output5346 .pretty_generate5347 generates pretty JSON5348 allows you to customise the output5349 the feature table is missing5350 skips legacy mode handling5351 the database is missing5352 still parses json5353 still generates json5354 Gitlab::Json::GrapeFormatter5355 grape_gitlab_json flag is enabled5356 generates JSON5357 uses Gitlab::Json5358 grape_gitlab_json flag is disabled5359 generates JSON5360 uses Grape::Formatter::Json5361 precompiled JSON5362 renders the string directly5363 calls #to_s on the object5364 doesn't run the JSON formatter5365 Gitlab::Json::PrecompiledJson5366 #to_s5367 obj is a string5368 returns a string5369 obj is an array5370 returns a string5371 obj is an array of un-stringables5372 raises an error5373 obj is something else5374 raises an error5375 Gitlab::Json::LimitedEncoder5376 when object size is acceptable5377 returns json string5378 when object is too big5379 raises LimitExceeded error5380 when object contains ASCII-8BIT encoding5381 does not raise encoding error5382 when json_limited_encoder is disabled5383 does not raise an error5384Group Routable5385 behaves like routable resource5386 .find_by_full_path5387 finds records by their full path5388 returns nil for unknown paths5389 includes route information when loading a record5390 with redirect routes5391 without follow_redirects option5392 does not find records by their redirected path5393 with follow_redirects option set to true5394 finds records by their canonical path5395 finds records by their redirected path5396 returns nil for unknown paths5397 behaves like routable resource with parent5398 behaves like routable resource5399 .find_by_full_path5400 finds records by their full path5401 returns nil for unknown paths5402 includes route information when loading a record5403 with redirect routes5404 without follow_redirects option5405 does not find records by their redirected path5406 with follow_redirects option set to true5407 finds records by their canonical path5408 finds records by their redirected path5409 returns nil for unknown paths5410 #full_path5411 is expected to eq "foo/group649"5412 hits the cache when not preloaded5413 #full_name5414 is expected to eq "foo / group649"5415 hits the cache when not preloaded5416 Validations5417 is expected to validate that :route cannot be empty/falsy5418 Associations5419 is expected to have one route dependent => destroy5420 is expected to have many redirect_routes dependent => destroy5421 Callbacks5422 for a group5423 creates route record on create5424 updates route record on path change5425 ensure route path uniqueness across different objects5426 for a user5427 creates the route for a record on create5428 updates routes and nested routes on name change5429 .where_full_path_in5430 without any paths5431 returns an empty relation5432 without any valid paths5433 returns an empty relation5434 with valid paths5435 returns the projects matching the paths5436 returns projects regardless of the casing of paths5437 #parent_loaded?5438 is false when the parent is not loaded5439 is true when the parent is loaded5440 #route_loaded?5441 is false when the route is not loaded5442 is true when the route is loaded5443Project Routable5444 behaves like routable resource with parent5445 behaves like routable resource5446 .find_by_full_path5447 finds records by their full path5448 returns nil for unknown paths5449 includes route information when loading a record5450 with redirect routes5451 without follow_redirects option5452 does not find records by their redirected path5453 with follow_redirects option set to true5454 finds records by their canonical path5455 finds records by their redirected path5456 returns nil for unknown paths5457 #full_path5458 is expected to eq "namespace686/project923"5459 hits the cache when not preloaded5460 #full_name5461 is expected to eq "Sidney Jones1408 / project923"5462 hits the cache when not preloaded5463Namespaces::ProjectNamespace Routable5464 ignores project namespace when searching for generic namespace5465Gitlab::Experimentation::ControllerConcern5466 #set_experimentation_subject_id_cookie5467 cookie is present5468 does not change the cookie5469 cookie is not present5470 sets a permanent signed cookie5471 DNT: 05472 sets a permanent signed cookie5473 DNT: 15474 does nothing5475 when not on gitlab.com5476 when cookie was set5477 cookie gets deleted5478 when no cookie was set before5479 does nothing5480 #push_frontend_experiment5481 pushes an experiment to the frontend5482 #experiment_enabled?5483 cookie is not present5484 is expected to eq false5485 cookie is present5486 calls Gitlab::Experimentation.in_experiment_group? with the name of the experiment and the calculated experimentation_subject_index based on the uuid5487 when subject is given5488 uses the subject5489 do not track5490 when do not track is disabled5491 is expected to eq true5492 when do not track is enabled5493 is expected to eq false5494 URL parameter to force enable experiment5495 returns true unconditionally5496 Cookie parameter to force enable experiment5497 returns true unconditionally5498 #track_experiment_event5499 when the experiment is enabled5500 the user is part of the experimental group5501 tracks the event with the right parameters5502 the user is part of the control group5503 tracks the event with the right parameters5504 do not track is disabled5505 does track the event5506 do not track enabled5507 does not track the event5508 subject is provided5509 provides the subject's hashed global_id as label5510 provides the subject's hashed string representation as label5511 no subject is provided but cookie is set5512 uses the experimentation_subject_id as fallback5513 when the experiment is disabled5514 does not track the event5515 #frontend_experimentation_tracking_data5516 when the experiment is enabled5517 the user is part of the experimental group5518 pushes the right parameters to gon5519 the user is part of the control group5520 pushes the right parameters to gon5521 does not send nil value to gon5522 do not track disabled5523 pushes the right parameters to gon5524 do not track enabled5525 does not push data to gon5526 when the experiment is disabled5527 does not push data to gon5528 #record_experiment_user5529 when the experiment is enabled5530 the user is part of the experimental group5531 calls add_user on the Experiment model5532 with a cookie based rollout strategy5533 calls tracking_group with a nil subject5534 with a user based rollout strategy5535 calls tracking_group with a user subject5536 the user is part of the control group5537 calls add_user on the Experiment model5538 when the experiment is disabled5539 does not call add_user on the Experiment model5540 when there is no current_user5541 does not call add_user on the Experiment model5542 do not track5543 is disabled5544 calls add_user on the Experiment model5545 is enabled5546 does not call add_user on the Experiment model5547 #record_experiment_group5548 when DNT is enabled5549 returns early without recording the group as an ExperimentSubject5550 when the experiment is not active5551 returns early without recording the group as an ExperimentSubject5552 when a nil group is given5553 returns early without recording the group as an ExperimentSubject5554 when the experiment uses a cookie-based rollout strategy5555 calls tracking_group with a nil subject5556 records the group5557 when the experiment uses a non-cookie-based rollout strategy5558 calls tracking_group with the group as the subject5559 records the group5560 #record_experiment_conversion_event5561 records the conversion event for the experiment & user5562 when DNT is enabled5563 does not record the conversion event5564 when there is no current user5565 does not record the conversion event5566 when the experiment is not enabled5567 does not record the conversion event5568 #experiment_tracking_category_and_group5569 returns a string with the experiment tracking category & group joined with a ":"5570Jira::Requests::Projects::ListService5571 #execute5572 without jira_integration5573 returns an error response5574 when jira_integration is nil5575 returns an error response5576 with jira_integration5577 when validations and params are ok5578 behaves like a service that handles Jira API errors5579 allows unknown exception classes to bubble5580 logs the error5581 exception_class: Errno::ECONNRESET, exception_message: "", expected_message: "A connection error occurred"5582 handles the error5583 exception_class: Errno::ECONNREFUSED, exception_message: "", expected_message: "A connection error occurred"5584 handles the error5585 exception_class: Errno::ETIMEDOUT, exception_message: "", expected_message: "A timeout error occurred"5586 handles the error5587 exception_class: Timeout::Error, exception_message: "", expected_message: "A timeout error occurred"5588 handles the error5589 exception_class: URI::InvalidURIError, exception_message: "", expected_message: "The Jira API URL"5590 handles the error5591 exception_class: SocketError, exception_message: "", expected_message: "The Jira API URL"5592 handles the error5593 exception_class: OpenSSL::SSL::SSLError, exception_message: "foo", expected_message: "An SSL error occurred while connecting to Jira: foo"5594 handles the error5595 exception_class: JIRA::HTTPError, exception_message: "Unauthorized", expected_message: "The credentials for accessing Jira are not valid"5596 handles the error5597 exception_class: JIRA::HTTPError, exception_message: "Forbidden", expected_message: "The credentials for accessing Jira are not allowed"5598 handles the error5599 exception_class: JIRA::HTTPError, exception_message: "Bad Request", expected_message: "An error occurred while requesting data from Jira"5600 handles the error5601 exception_class: JIRA::HTTPError, exception_message: "Foo", expected_message: "An error occurred while requesting data from Jira."5602 handles the error5603 exception_class: JIRA::HTTPError, exception_message: "{\"errorMessages\":[\"foo\",\"bar\"]}", expected_message: "An error occurred while requesting data from Jira: foo and bar"5604 handles the error5605 exception_class: JIRA::HTTPError, exception_message: "{\"errorMessages\":[\"\"]}", expected_message: "An error occurred while requesting data from Jira."5606 handles the error5607 when the JSON in JIRA::HTTPError is unsafe5608 when JSON is malformed5609 returns the default error message5610 when JSON contains tags5611 sanitizes it5612 when jira runs on a subpath5613 takes the subpath into account5614 when the request does not return any values5615 returns a paylod with no projects returned5616 when the request returns values5617 returns a paylod with Jira projects5618 when filtering projects by name5619 returns a paylod with Jira procjets5620Ci::DailyBuildGroupReportResult5621 associations5622 is expected to belong to last_pipeline required: false5623 is expected to belong to project required: false5624 is expected to belong to group required: false5625 validations5626 when attributes are valid5627 returns no errors5628 when data is invalid5629 returns errors5630 .upsert_reports5631 creates or updates matching report results5632 when given data is empty5633 does nothing5634 scopes5635 .by_projects5636 returns records by projects5637 .by_group5638 returns records by group5639 .by_ref_path5640 returns coverages by ref_path5641 .ordered_by_date_and_group_name5642 returns coverages ordered by data and group name5643 .by_dates5644 when daily coverages exist during those dates5645 returns coverages5646 .with_coverage5647 returns data with coverage5648 .with_default_branch5649 when coverage for the default branch exist5650 returns coverage with the default branch5651 when coverage for the default branch does not exist5652 returns an empty collection5653Projects::ProtectDefaultBranchService5654 #execute5655 without a default branch5656 does nothing5657 with a default branch5658 protects the default branch5659 #protect_default_branch5660 when branch protection is needed5661 changes the HEAD of the project5662 protects the default branch5663 when branch protection is not needed5664 changes the HEAD of the project5665 does not protect the default branch5666 when protected branch does not exist5667 changes the HEAD of the project5668 protects the default branch5669 when protected branch already exists5670 changes the HEAD of the project5671 does not protect the default branch5672 #create_protected_branch5673 creates the protected branch5674 #protect_branch?5675 when default branch protection is disabled5676 returns false5677 when default branch protection is enabled5678 returns false if the branch is already protected5679 returns true if the branch is not yet protected5680 #default_branch5681 returns the default branch of the project5682 #push_access_level5683 when developers can push5684 returns the DEVELOPER access level5685 when developers can not push5686 returns the MAINTAINER access level5687 #merge_access_level5688 when developers can merge5689 returns the DEVELOPER access level5690 when developers can not merge5691 returns the MAINTAINER access level5692Gitlab::ImportExport::Group::RelationTreeRestorer5693 restores group tree5694 when log_import_export_relation_creation feature flag is enabled5695 logs top-level relation creation5696 when log_import_export_relation_creation feature flag is disabled5697 does not log top-level relation creation5698Snippets::DestroyService5699 #execute5700 when snippet is nil5701 returns a ServiceResponse error5702 when ProjectSnippet5703 when user is able to admin_project_snippet5704 behaves like a successful destroy5705 deletes the snippet5706 returns ServiceResponse success5707 behaves like deletes the snippet repository5708 removes the snippet repository5709 when the repository deletion service raises an error5710 does not try to rollback repository5711 behaves like an unsuccessful destroy5712 does not delete the snippet5713 returns ServiceResponse error5714 when a destroy error is raised5715 attempts to rollback the repository5716 behaves like an unsuccessful destroy5717 does not delete the snippet5718 returns ServiceResponse error5719 when repository is nil5720 does not schedule anything and return success5721 project statistics5722 updates stats after deletion5723 schedules a namespace statistics update5724 when user is not able to admin_project_snippet5725 behaves like an unsuccessful destroy5726 does not delete the snippet5727 returns ServiceResponse error5728 when PersonalSnippet5729 when user is able to admin_personal_snippet5730 schedules a namespace statistics update5731 behaves like a successful destroy5732 deletes the snippet5733 returns ServiceResponse success5734 behaves like deletes the snippet repository5735 removes the snippet repository5736 when the repository deletion service raises an error5737 does not try to rollback repository5738 behaves like an unsuccessful destroy5739 does not delete the snippet5740 returns ServiceResponse error5741 when a destroy error is raised5742 attempts to rollback the repository5743 behaves like an unsuccessful destroy5744 does not delete the snippet5745 returns ServiceResponse error5746 when repository is nil5747 does not schedule anything and return success5748 when user is not able to admin_personal_snippet5749 behaves like an unsuccessful destroy5750 does not delete the snippet5751 returns ServiceResponse error5752 when the repository does not exists5753 does not schedule anything and return success5754Gitlab::Kubernetes::Helm::V2::InitCommand5755 behaves like helm command generator5756 #generate_script5757 returns appropriate command5758 on a rbac-enabled cluster5759 behaves like helm command generator5760 #generate_script5761 returns appropriate command5762 behaves like helm command5763 HELM_VERSION5764 is expected to match /\d+\.\d+\.\d+/5765 #env5766 is expected to be a kind of Hash5767 #rbac?5768 rbac is enabled5769 is expected to be truthy5770 rbac is not enabled5771 is expected to be falsey5772 #pod_resource5773 rbac is enabled5774 is expected to be an instance of Kubeclient::Resource5775 generates a pod that uses the tiller serviceAccountName5776 rbac is not enabled5777 is expected to be an instance of Kubeclient::Resource5778 generates a pod that uses the default serviceAccountName5779 #config_map_resource5780 returns a KubeClient resource with config map content for the application5781 #service_account_resource5782 rbac is enabled5783 generates a Kubeclient resource for the tiller ServiceAccount5784 rbac is not enabled5785 generates nothing5786 #cluster_role_binding_resource5787 rbac is enabled5788 generates a Kubeclient resource for the ClusterRoleBinding for tiller5789 binds the account in #service_account_resource5790 rbac is not enabled5791 generates nothing5792Gitlab::Database::MigrationHelpers::V25793 #rename_column_concurrently5794 behaves like Setting up to rename a column5795 creates the renamed column, syncing existing data5796 installs triggers to sync new data5797 when called inside a transaction block5798 raises an error5799 when the existing column has a default value5800 raises an error5801 when passing a batch column5802 when the batch column does not exist5803 raises an error5804 when the batch column does exist5805 passes it when creating the column5806 when the column to rename does not exist5807 raises an error5808 #undo_cleanup_concurrent_column_rename5809 behaves like Setting up to rename a column5810 creates the renamed column, syncing existing data5811 installs triggers to sync new data5812 when called inside a transaction block5813 raises an error5814 when the existing column has a default value5815 raises an error5816 when passing a batch column5817 when the batch column does not exist5818 raises an error5819 when the batch column does exist5820 passes it when creating the column5821 when the renamed column does not exist5822 raises an error5823 #undo_rename_column_concurrently5824 behaves like Cleaning up from renaming a column5825 when the helper is called repeatedly5826 does not make repeated attempts to cleanup5827 when the renamed column exists5828 removes the sync triggers and renamed columns5829 #cleanup_concurrent_column_rename5830 behaves like Cleaning up from renaming a column5831 when the helper is called repeatedly5832 does not make repeated attempts to cleanup5833 when the renamed column exists5834 removes the sync triggers and renamed columns5835 #create_table5836 using a limit: attribute on .text5837 creates the table as expected5838 #with_lock_retries5839-- transaction_open?()5840 -> 0.0002s5841 sets the migration class name in the logs5842-- transaction_open?()5843 -> 0.0002s5844 does not raise on exhaustion by default5845-- transaction_open?()5846 -> 0.0002s5847 defaults to disallowing subtransactions5848 raise_on_exhaustion: true5849-- transaction_open?()5850 -> 0.0001s5851 sets raise_on_exhaustion as requested5852 raise_on_exhaustion: false5853-- transaction_open?()5854 -> 0.0002s5855 sets raise_on_exhaustion as requested5856 when in transaction5857 when lock retries are enabled5858 does not use Gitlab::Database::WithLockRetries and executes the provided block directly5859 when lock retries are not enabled5860 raises an error5861Gitlab::Ci::Trace::Checksum5862 when build pending state exists5863 when matching persisted trace chunks exist5864 calculates combined trace chunks CRC32 correctly5865 when trace chunks were persisted in a wrong order5866 makes trace checksum invalid but not corrupted5867 when one of the trace chunks is missing5868 makes trace checksum invalid and corrupted5869 when checksums of persisted trace chunks do not match5870 makes trace checksum invalid but not corrupted5871 when persisted trace chunks are missing5872 makes trace checksum invalid5873 when build pending state is missing5874 #state_crc325875 returns nil5876 #valid?5877 is expected not to be valid5878 #trace_chunks5879 does not load raw_data from a database store5880 #last_chunk5881 when there are no chunks5882 returns nil5883 is not a valid trace5884 is not a corrupted trace5885 when there are multiple chunks5886 returns chunk with the highest index5887 is not a valid trace5888 is not a corrupted trace5889 #trace_size5890 returns total trace size in bytes5891Ci::PipelinePolicy5892 rules5893 rules for protected ref5894 when no one can push or merge to the branch5895 does not include ability to update pipeline5896 when developers can push to the branch5897 includes ability to update pipeline5898 when no one can create the tag5899 does not include ability to update pipeline5900 when no one can create the tag but it is not a tag5901 includes ability to update pipeline5902 when maintainer is allowed to push to pipeline branch5903 enables update_pipeline if user is maintainer5904 when user does not have access to internal CI5905 disallows the user from reading the pipeline5906 destroy_pipeline5907 when user has owner access5908 is enabled5909 when user is not owner5910 is disabled5911 read_pipeline_variable5912 when user has owner access5913 is enabled5914 when user is developer and the creator of the pipeline5915 is enabled5916 when user is developer and it is not the creator of the pipeline5917 is disabled5918 when user is not owner nor developer5919 is disabled5920ContainerRegistry::Blob5921 is expected to respond to #repository5922 is expected to delegate #registry to the #repository object5923 is expected to delegate #client to the #repository object5924 #path5925 returns a valid path to the blob5926 #digest5927 return correct digest value5928 #type5929 returns a correct type5930 #revision5931 returns a correct blob SHA5932 #short_revision5933 return a short SHA5934 #delete5935 returns true when blob has been successfully deleted5936 #data5937 when locally stored5938 returns a correct blob data5939 when externally stored5940 for a valid address5941 returns correct data5942 for a relative address5943 returns correct data5944 for invalid file5945 raises an error5946Clusters::Applications::CheckIngressIpAddressService5947 #execute5948 when the ingress ip address is available5949 updates the external_ip for the app5950 when the ingress external hostname is available5951 updates the external_hostname for the app5952 when the ingress ip address is not available5953 does not error5954 when the exclusive lease cannot be obtained5955 does not call kubeclient5956 #execute5957 when the ingress ip address is available5958 updates the external_ip for the app5959 when the ingress external hostname is available5960 updates the external_hostname for the app5961 when the ingress ip address is not available5962 does not error5963 when the exclusive lease cannot be obtained5964 does not call kubeclient5965ForkProjectsFinder5966 #execute5967 without a user5968 is expected to eq [#<Project id:972 group673/project1032>>]5969 with a user5970 is expected to eq [#<Project id:976 group676/project1036>>, #<Project id:975 group675/project1035>>]5971 with a member5972 is expected to eq [#<Project id:980 group679/project1040>>, #<Project id:979 group678/project1039>>, #<Project id:978 group677/project1038>>]5973Gitlab::Pagination::Keyset::Paginator5974 pagination5975 when per_page is greater than the record count5976 is expected to eq [#<Project id:981 namespace795/project1041>>, #<Project id:984 namespace798/project1044>>, #<Project ...ect1043>>, #<Project id:982 namespace796/project1042>>, #<Project id:985 namespace799/project1045>>]5977 is expected not to have next page5978 is expected not to have previous page5979 has no next and previous cursor values5980 when 0 records are returned5981 is expected to be empty5982 is expected not to have next page5983 is expected not to have previous page5984 when page size is smaller than the record count5985 is expected to eq [#<Project id:981 namespace795/project1041>>, #<Project id:984 namespace798/project1044>>]5986 is expected to have next page5987 is expected not to have previous page5988 has next page cursor5989 does not have previous page cursor5990 when on the second page5991 is expected to eq [#<Project id:983 namespace797/project1043>>, #<Project id:982 namespace796/project1042>>]5992 is expected to have next page5993 is expected to have previous page5994 and then going back to the first page5995 is expected to eq [#<Project id:981 namespace795/project1041>>, #<Project id:984 namespace798/project1044>>]5996 is expected to have next page5997 is expected not to have previous page5998 when jumping to the last page5999 is expected to eq [#<Project id:982 namespace796/project1042>>, #<Project id:985 namespace799/project1045>>]6000 is expected not to have next page6001 is expected to have previous page6002 when paginating backwards6003 is expected to eq [#<Project id:984 namespace798/project1044>>, #<Project id:983 namespace797/project1043>>]6004 is expected to have next page6005 is expected to have previous page6006 when jumping to the first page6007 is expected to eq [#<Project id:981 namespace795/project1041>>, #<Project id:984 namespace798/project1044>>]6008 is expected to have next page6009 is expected not to have previous page6010 default keyset direction parameter6011 exposes the direction parameter in the cursor6012 when unsupported order is given6013 raises error6014 when use_union_optimization option is true and ordering by two columns6015 uses UNION queries6016Issues::SetCrmContactsService6017 #execute6018 when the user has no permission6019 returns expected error response6020 when user has permission6021 when the contact does not exist6022 returns expected error response6023 when the contact belongs to a different group6024 returns expected error response6025 replace6026 updates the issue with correct contacts6027 add6028 updates the issue with correct contacts6029 add by email6030 updates the issue with correct contacts6031 remove6032 updates the issue with correct contacts6033 remove by email6034 updates the issue with correct contacts6035 when attempting to add more than 66036 returns expected error message6037 when trying to remove non-existent contact6038 returns expected error message6039 when combining params6040 add and remove6041 updates the issue with correct contacts6042 replace and remove6043 returns expected error response6044 replace and add6045 returns expected error response6046 when trying to add an existing issue contact6047 does not return an error6048 when trying to add the same contact twice6049 does not return an error6050 when trying to remove a contact not attached to the issue6051 does not return an error6052Ci::ArchiveTraceService#execute6053 when job is finished6054 creates an archived trace6055 when trace is already archived6056 ignores an exception6057 does not create an archived trace6058 when live trace chunks still exist6059 removes the trace chunks6060 when associated data does not exist6061 removes the trace artifact and builds a new one6062 when job does not have trace6063 leaves a warning message in sidekiq log6064 when the job is out of archival attempts6065 skips archiving6066 leaves a warning message in sidekiq log6067 job has archive and chunks6068 removes trace chunks6069 archive is not completed6070 cleanups any stale archive data6071 when the archival process is backed off6072 skips archiving6073 leaves a warning message in sidekiq log6074 when job failed to archive trace but did not raise an exception6075 leaves a warning message in sidekiq log6076 when job is running6077 increments Prometheus counter, sends crash report to Sentry and ignore an error for continuing to archive6078Snippets::UpdateStatisticsService6079 #execute6080 with PersonalSnippet6081 behaves like updates statistics6082 returns a successful response6083 expires statistics cache6084 schedules a namespace storage statistics update6085 when snippet statistics does not exist6086 creates snippet statistics6087 when snippet statistics exists6088 updates snippet statistics6089 when snippet does not have a repository6090 returns an error response6091 with ProjectSnippet6092 updates projects statistics "snippets_size"6093 behaves like updates statistics6094 returns a successful response6095 expires statistics cache6096 schedules a namespace storage statistics update6097 when snippet statistics does not exist6098 creates snippet statistics6099 when snippet statistics exists6100 updates snippet statistics6101 when snippet does not have a repository6102 returns an error response6103Projects::GroupsFinder6104 #execute6105 Public project6106 behaves like finding related groups6107 returns ancestor groups for this project6108 when the project does not belong to any group6109 is expected to eq []6110 when shared groups option is on6111 returns ancestor and all shared groups6112 when shared_min_access_level is developer6113 returns ancestor and shared groups with at least developer access6114 when shared_visible_only is on6115 returns ancestor and public shared groups6116 when user has access to the private shared group6117 returns ancestor and shared groups user has access to6118 when skip group option is on6119 excludes provided groups6120 when user is not authorized6121 returns ancestor groups for this project6122 when visible shared groups are requested6123 returns ancestor groups and public shared groups for this project6124 Private project6125 behaves like finding related groups6126 returns ancestor groups for this project6127 when the project does not belong to any group6128 is expected to eq []6129 when shared groups option is on6130 returns ancestor and all shared groups6131 when shared_min_access_level is developer6132 returns ancestor and shared groups with at least developer access6133 when shared_visible_only is on6134 returns ancestor and public shared groups6135 when user has access to the private shared group6136 returns ancestor and shared groups user has access to6137 when skip group option is on6138 excludes provided groups6139 when user is not authorized6140 is expected to eq []6141 Missing project6142 is expected to eq []6143Ci::JobArtifacts::CreateService6144 #execute6145 when artifacts file is uploaded6146 saves artifact for the given type6147 does not track the job user_id6148 when metadata file is also uploaded6149 saves metadata artifact6150 sets expiration date according to application settings6151 when expire_in params is set to a specific value6152 sets expiration date according to the parameter6153 when expire_in params is set to `never`6154 sets expiration date according to the parameter6155 when artifacts file already exists6156 when sha256 of uploading artifact is the same of the existing one6157 ignores the changes6158 when sha256 of uploading artifact is different than the existing one6159 returns error status6160 when artifact type is dotenv6161 calls parse service6162 when artifact_type is metrics6163 tracks the job user_id6164 behaves like rescues object storage error6165 handles Errno::EIO6166 behaves like rescues object storage error6167 handles Google::Apis::ServerError6168 behaves like rescues object storage error6169 handles Signet::RemoteServerError6170Gitlab::ErrorTracking6171 .track_and_raise_for_dev_exception6172 when exceptions for dev should be raised6173 raises the exception6174 when exceptions for dev should not be raised6175 logs the exception with all attributes passed6176 calls Gitlab::ErrorTracking::Logger.error with formatted payload6177 .track_and_raise_exception6178 always raises the exception6179 calls Gitlab::ErrorTracking::Logger.error with formatted payload6180 .track_exception6181 calls Raven.capture_exception6182 calls Gitlab::ErrorTracking::Logger.error with formatted payload6183 with filterable parameters6184 filters parameters6185 the exception implements :sentry_extra_data6186 includes the extra data from the exception in the tracking information6187 the exception implements :sentry_extra_data, which returns nil6188 just includes the other extra info6189 when the error is kind of an `ActiveRecord::StatementInvalid`6190 injects the normalized sql query into extra6191 when the `ActiveRecord::StatementInvalid` is wrapped in another exception6192 injects the normalized sql query into extra6193 when the `ActiveRecord::StatementInvalid` is a bad query6194 injects the query as-is into extra6195 event processors6196 custom GitLab context when using Raven.capture_exception directly6197 merges a default set of tags into the existing tags6198 merges the current user information into the existing user information6199 with sidekiq args6200 when the args does not have anything sensitive6201 ensures extra.sidekiq.args is a string6202 does not filter parameters when sending to Sentry6203 when the args has sensitive information6204 filters sensitive arguments before sending and logging6205 when the error is a GRPC error6206 when the GRPC error contains a debug_error_string value6207 sets the GRPC debug error string in the Sentry event and adds a custom fingerprint6208 when the GRPC error does not contain a debug_error_string value6209 does not do any processing on the event6210Projects::Settings::DeployKeysPresenter6211 inherits from Gitlab::View::Presenter::Simple6212 deploy key groups6213 with enabled keys6214 returns correct deploy keys6215 with available keys6216 returns correct deploy keys6217 with available project keys6218 returns correct deploy keys6219 with available public keys6220 returns correct deploy keys6221 #enabled_keys6222 returns currently enabled keys6223 does not contain enabled_keys inside available_keys6224 returns the enabled_keys size6225 #available_keys/#available_project_keys6226 returns the current available_keys6227 returns the current available_project_keys6228 returns the available_project_keys size6229 prevent N + 1 queries6230 returns correct counts6231 does not increase the query count6232Gitlab::SlashCommands::Presenters::IssueMove6233 is expected to be a kind of Hash6234 shows the new issue6235 mentions the old issue and the new issue in the pretext6236notify/pipeline_failed_email.html.haml6237 behaves like pipeline status changes email6238 when the pipeline contains a failed job6239 behaves like renders the pipeline status changes email correctly6240 pipeline with user6241 renders the email correctly6242 behaves like correct pipeline information for pipelines for merge requests6243 when pipeline for merge request6244 renders a source ref of the pipeline6245 pipeline without user6246 renders the email correctly6247 when the latest failed job is a bridge job6248 behaves like renders the pipeline status changes email correctly6249 pipeline with user6250 renders the email correctly6251 behaves like correct pipeline information for pipelines for merge requests6252 when pipeline for merge request6253 renders a source ref of the pipeline6254 pipeline without user6255 renders the email correctly6256Labels::CreateService6257 #execute6258 in a project6259 with color in hex-code6260 creates a label6261 with color in allowed name6262 creates a label6263 with color in up-case allowed name6264 creates a label6265 with color surrounded by spaces6266 creates a label6267 with unknown color6268 doesn't create a label6269 with no color6270 doesn't create a label6271 in a group6272 with color in hex-code6273 creates a label6274 with color in allowed name6275 creates a label6276 with color in up-case allowed name6277 creates a label6278 with color surrounded by spaces6279 creates a label6280 with unknown color6281 doesn't create a label6282 with no color6283 doesn't create a label6284 in admin area6285 with color in hex-code6286 creates a label6287 with color in allowed name6288 creates a label6289 with color in up-case allowed name6290 creates a label6291 with color surrounded by spaces6292 creates a label6293 with unknown color6294 doesn't create a label6295 with no color6296 doesn't create a label6297Gitlab::Metrics::Methods6298 #define_metrics6299 metrics access method not defined6300 defines metrics accessing method6301 metrics access method defined6302 raises error when trying to redefine method6303 metric is not cached6304 calls fetch_metric6305 metric is cached6306 returns cached metric6307 #fetch_metric6308 when counter is not cached6309 initializes counter metric6310 when counter is cached6311 uses class metric cache6312 when metric is reloaded6313 initializes counter metric6314 when metric is configured with feature6315 when feature is enabled6316 initializes counter metric6317 when feature is disabled6318 returns NullMetric6319 #define_metrics6320 metrics access method not defined6321 defines metrics accessing method6322 metrics access method defined6323 raises error when trying to redefine method6324 metric is not cached6325 calls fetch_metric6326 metric is cached6327 returns cached metric6328 #fetch_metric6329 when gauge is not cached6330 initializes counter metric6331 when gauge is cached6332 uses class metric cache6333 when metric is reloaded6334 initializes gauge metric6335 when metric is configured with feature6336 when feature is enabled6337 initializes gauge metric6338 when feature is disabled6339 returns NullMetric6340 #define_metrics6341 metrics access method not defined6342 defines metrics accessing method6343 metrics access method defined6344 raises error when trying to redefine method6345 metric is not cached6346 calls fetch_metric6347 metric is cached6348 returns cached metric6349 #fetch_metric6350 when histogram is not cached6351 initializes counter metric6352 when histogram is cached6353 uses class metric cache6354 when metric is reloaded6355 initializes histogram metric6356 when metric is configured with feature6357 when feature is enabled6358 initializes histogram metric6359 when feature is disabled6360 returns NullMetric6361ProjectHook6362 associations6363 is expected to belong to project required: false6364 validations6365 is expected to validate that :project cannot be empty/falsy6366 behaves like includes Limitable concern6367 validations6368 is expected to be a kind of Limitable6369 without plan limits configured6370 can create new models6371 with plan limits configured6372 can create new models6373 with an existing model6374 cannot create new models exceeding the plan limits6375 .push_hooks6376 returns hooks for push events only6377 .tag_push_hooks6378 returns hooks for tag push events only6379 #rate_limit6380 returns the default limit6381 #application_context6382 includes the type and project6383projects/merge_requests/show.html.haml6384 when the merge request is open6385 shows the "Mark as draft" button6386 when the merge request is closed6387 shows the "Reopen" button6388 when source project does not exist6389 does not show the "Reopen" button6390 gitpod modal6391 site_enabled: false, current_user: user, should_show: false6392 handles rendering gitpod user enable modal6393 site_enabled: true, current_user: user, should_show: true6394 handles rendering gitpod user enable modal6395 site_enabled: true, current_user: nil, should_show: true6396 handles rendering gitpod user enable modal6397 site_enabled: true, current_user: user_gitpod_enabled, should_show: false6398 handles rendering gitpod user enable modal6399Schedulable6400 for a pipeline_schedule6401 behaves like #schedule_next_run!6402 saves the object and sets next_run_at6403 sets next_run_at to nil on error6404 behaves like before_save callback6405 updates next_run_at6406 behaves like .runnable_schedules6407 returns the runnable schedules6408 for a container_expiration_policy6409 behaves like #schedule_next_run!6410 saves the object and sets next_run_at6411 sets next_run_at to nil on error6412 behaves like before_save callback6413 updates next_run_at6414 behaves like .runnable_schedules6415 returns the runnable schedules6416 #next_run_at6417 works6418DiscussionDiffFileEntity6419 when there is no merge request6420 behaves like diff file discussion entity6421 behaves like diff file base entity6422 exposes essential attributes6423 when diff file does not have a blob and content sha6424 exposes some attributes as nil6425 when there is a merge request6426 exposes additional attributes6427 exposes no diff lines6428 behaves like diff file discussion entity6429 behaves like diff file base entity6430 exposes essential attributes6431 when diff file does not have a blob and content sha6432 exposes some attributes as nil6433ContributedProjectsFinder6434 activity without a current user6435 is expected to contain exactly #<Project id:1075 namespace890/project1136>>6436 activity with a current user6437 is expected to contain exactly #<Project id:1079 namespace894/project1140>>, #<Project id:1080 namespace895/project1141>>, and #<Project id:1078 namespace893/project1139>>6438 user with private profile6439 does not return contributed projects6440Gitlab::Database::Count6441 .approximate_counts6442 fallbacks6443 gets results from first strategy6444 gets more results from second strategy if some counts are missing6445 does not get more results as soon as all counts are present6446 default strategies6447 with a read-only database6448 only uses the ExactCountStrategy6449 with a read-write database6450 uses the available strategies6451ProjectFeaturesCompatibility6452 converts fields from 'true' to ProjectFeature::ENABLED6453 converts fields from 'false' to ProjectFeature::DISABLED6454 converts fields from true to ProjectFeature::ENABLED6455 converts fields from false to ProjectFeature::DISABLED6456 access levels6457 access_level: "disabled", expected_result: 06458 accepts access level6459 access_level: "private", expected_result: 106460 accepts access level6461 access_level: "enabled", expected_result: 206462 accepts access level6463 access_level: "public", expected_result: 306464 accepts access level6465RateLimitedService6466 RateLimitedError6467 #headers6468 returns a Hash of HTTP headers6469 #log_request6470 logs the request6471 RateLimiterScopedAndKeyed6472 #rate_limit!6473 when :rate_limited_service_issues_create feature is globally disabled6474 behaves like a service that does not attempt to throttle6475 does not attempt to throttle6476 when :rate_limited_service_issues_create feature is globally enabled6477 behaves like a service that does attempt to throttle6478 when rate limiting is not in effect6479 does not raise an exception6480 when rate limiting is in effect6481 raises a RateLimitedError exception6482 when :rate_limited_service_issues_create feature is enabled for project_with_feature_enabled6483 for project_without_feature_enabled6484 behaves like a service that does not attempt to throttle6485 does not attempt to throttle6486 for project_with_feature_enabled6487 behaves like a service that does attempt to throttle6488 when rate limiting is not in effect6489 does not raise an exception6490 when rate limiting is in effect6491 raises a RateLimitedError exception6492 #execute_without_rate_limiting6493 bypasses rate limiting6494 calls super6495 #execute6496 when rate_limit has not been called6497 raises an RateLimitedNotSetupError exception6498 when rate_limit has been called6499 and applies rate limiting6500 raises an RateLimitedService::RateLimitedError exception6501 but does not apply rate limiting6502 calls super6503Gitlab::RackAttack6504 .configure6505 extends the request class6506 configures the throttle response6507 configures the safelist6508 configures throttles if no dry-run was configured6509 configures tracks if dry-run was configured for all throttles6510 configures tracks and throttles with a selected set of dry-runs6511 enables dry-runs for `throttle_unauthenticated_api` and `throttle_unauthenticated_web` when selecting `throttle_unauthenticated`6512 user allowlist6513 is empty6514 reflects GITLAB_THROTTLE_USER_ALLOWLIST6515 .throttled_response_headers6516 matched: "throttle_unauthenticated", match_data: {:discriminator=>"127.0.0.1", :count=>3700, :period=>1 hour, :limit=>3600, :epoch_time=>1609842570}, headers: {"RateLimit-Name"=>"throttle_unauthenticated", "RateLimit-Limit"=>"60", "RateLimit-Observed"=>"3700", "RateLimit-Remaining"=>"0", "RateLimit-Reset"=>"1609844400", "RateLimit-ResetTime"=>"Tue, 05 Jan 2021 11:00:00 GMT", "Retry-After"=>"1830"}6517 generates accurate throttled headers6518 matched: "throttle_unauthenticated", match_data: {:discriminator=>"127.0.0.1", :count=>3700, :period=>1 hour, :limit=>3600, :epoch_time=>1609844399}, headers: {"RateLimit-Name"=>"throttle_unauthenticated", "RateLimit-Limit"=>"60", "RateLimit-Observed"=>"3700", "RateLimit-Remaining"=>"0", "RateLimit-Reset"=>"1609844400", "RateLimit-ResetTime"=>"Tue, 05 Jan 2021 11:00:00 GMT", "Retry-After"=>"1"}6519 generates accurate throttled headers6520 matched: "throttle_unauthenticated", match_data: {:discriminator=>"127.0.0.1", :count=>3700, :period=>1 hour, :limit=>3600, :epoch_time=>1609840800}, headers: {"RateLimit-Name"=>"throttle_unauthenticated", "RateLimit-Limit"=>"60", "RateLimit-Observed"=>"3700", "RateLimit-Remaining"=>"0", "RateLimit-Reset"=>"1609844400", "RateLimit-ResetTime"=>"Tue, 05 Jan 2021 11:00:00 GMT", "Retry-After"=>"3600"}6521 generates accurate throttled headers6522 matched: "throttle_unauthenticated", match_data: {:discriminator=>"127.0.0.1", :count=>3700, :period=>1 hour, :limit=>3600, :epoch_time=>1609889400}, headers: {"RateLimit-Name"=>"throttle_unauthenticated", "RateLimit-Limit"=>"60", "RateLimit-Observed"=>"3700", "RateLimit-Remaining"=>"0", "RateLimit-Reset"=>"1609891200", "RateLimit-ResetTime"=>"Wed, 06 Jan 2021 00:00:00 GMT", "Retry-After"=>"1800"}6523 generates accurate throttled headers6524 matched: "throttle_unauthenticated", match_data: {:discriminator=>"127.0.0.1", :count=>3700, :period=>1 hour, :limit=>3400, :epoch_time=>1609842600}, headers: {"RateLimit-Name"=>"throttle_unauthenticated", "RateLimit-Limit"=>"57", "RateLimit-Observed"=>"3700", "RateLimit-Remaining"=>"0", "RateLimit-Reset"=>"1609844400", "RateLimit-ResetTime"=>"Tue, 05 Jan 2021 11:00:00 GMT", "Retry-After"=>"1800"}6525 generates accurate throttled headers6526 matched: "throttle_unauthenticated", match_data: {:discriminator=>"127.0.0.1", :count=>3700, :period=>1 hour, :limit=>3700, :epoch_time=>1609842600}, headers: {"RateLimit-Name"=>"throttle_unauthenticated", "RateLimit-Limit"=>"62", "RateLimit-Observed"=>"3700", "RateLimit-Remaining"=>"0", "RateLimit-Reset"=>"1609844400", "RateLimit-ResetTime"=>"Tue, 05 Jan 2021 11:00:00 GMT", "Retry-After"=>"1800"}6527 generates accurate throttled headers6528 matched: "throttle_unauthenticated", match_data: {:discriminator=>"127.0.0.1", :count=>3700, :period=>1 hour, :limit=>59, :epoch_time=>1609842600}, headers: {"RateLimit-Name"=>"throttle_unauthenticated", "RateLimit-Limit"=>"1", "RateLimit-Observed"=>"3700", "RateLimit-Remaining"=>"0", "RateLimit-Reset"=>"1609844400", "RateLimit-ResetTime"=>"Tue, 05 Jan 2021 11:00:00 GMT", "Retry-After"=>"1800"}6529 generates accurate throttled headers6530 matched: "throttle_unauthenticated", match_data: {:discriminator=>"127.0.0.1", :count=>3700, :period=>1 hour, :limit=>61, :epoch_time=>1609842600}, headers: {"RateLimit-Name"=>"throttle_unauthenticated", "RateLimit-Limit"=>"2", "RateLimit-Observed"=>"3700", "RateLimit-Remaining"=>"0", "RateLimit-Reset"=>"1609844400", "RateLimit-ResetTime"=>"Tue, 05 Jan 2021 11:00:00 GMT", "Retry-After"=>"1800"}6531 generates accurate throttled headers6532 matched: "throttle_unauthenticated", match_data: {:discriminator=>"127.0.0.1", :count=>3700, :period=>15 seconds, :limit=>10, :epoch_time=>1609842600}, headers: {"RateLimit-Name"=>"throttle_unauthenticated", "RateLimit-Limit"=>"40", "RateLimit-Observed"=>"3700", "RateLimit-Remaining"=>"0", "RateLimit-Reset"=>"1609842615", "RateLimit-ResetTime"=>"Tue, 05 Jan 2021 10:30:15 GMT", "Retry-After"=>"15"}6533 generates accurate throttled headers6534 matched: "throttle_unauthenticated", match_data: {:discriminator=>"127.0.0.1", :count=>3700, :period=>27 seconds, :limit=>10, :epoch_time=>1609842600}, headers: {"RateLimit-Name"=>"throttle_unauthenticated", "RateLimit-Limit"=>"23", "RateLimit-Observed"=>"3700", "RateLimit-Remaining"=>"0", "RateLimit-Reset"=>"1609842627", "RateLimit-ResetTime"=>"Tue, 05 Jan 2021 10:30:27 GMT", "Retry-After"=>"27"}6535 generates accurate throttled headers6536Gitlab::Ci::Reports::TestReports6537 #get_suite6538 when suite name is rspec6539 is expected to eq "rspec"6540 initializes a new test suite and returns it6541 when suite name is already allocated6542 does not initialize a new test suite6543 #total_time6544 returns the total time6545 #total_count6546 returns the total count6547 #total_status6548 when all test cases succeeded6549 returns correct total status6550 when there is a failed test case6551 returns correct total status6552 when there is a skipped test case6553 returns correct total status6554 when there is an error test case6555 returns correct total status6556 #with_attachment6557 when test suites do not contain an attachment6558 returns empty test suites6559 when test suites contain an attachment6560 returns test suites with attachment6561 #suite_errors6562 when a suite has normal spec errors or failures6563 is expected to be empty6564 when there is an error test case6565 is expected to eq {"junit"=>"Existential parsing error"}6566 #error_count6567 when error test case exists6568 returns the count6569 when error test case do not exist6570 returns nothing6571 #failed_count6572 when failed test case exists6573 returns the count6574 when failed test case do not exist6575 returns nothing6576 #success_count6577 when success test case exists6578 returns the count6579 when success test case do not exist6580 returns nothing6581 #skipped_count6582 when skipped test case exists6583 returns the count6584 when skipped test case do not exist6585 returns nothing6586gettext6587 :compile6588 creates a pot file and invokes the 'gettext:po_to_json' task6589 :regenerate6590 when the locale folder is not found6591 raises an error6592 where there are existing /**/gitlab.po files6593 does not remove that locale6594 when there are locale folders without a gitlab.po file6595 removes those folders6596 when the gitlab.pot file cannot be generated6597 prints an error6598 when gettext:find changes the revision dates6599 resets the changes6600 :lint6601 when all PO files are valid6602Linting po files: |============================================================|6603 completes without error6604 when there are invalid PO files6605Linting po files: |============================================================|6606 raises an error6607 when the .pot file is invalid6608Linting po files: |============================================================|6609 raises an error6610Ci::RunScheduledBuildService6611 when user can update build6612 when build is scheduled6613 when scheduled_at is expired6614 can run the build6615 when build requires resource6616 transits to waiting for resource status6617 when scheduled_at is not expired6618 can not run the build6619 when build is not scheduled6620 can not run the build6621 when user can not update build6622 when build is scheduled6623 can not run the build6624Gitlab::VisibilityLevelChecker6625 #level_restricted?6626 when visibility level is allowed6627 returns false with nil for visibility level6628 when visibility level is restricted6629 for public project6630 for non-admin user6631 returns true and visibility name6632 for admin user6633 returns false and a nil visibility level6634 overridden visibility6635 when restricted6636 returns true and visibility name6637 when misspelled6638 returns false with nil for visibility level6639 when import_data is missing6640 returns false with nil for visibility level6641Gitlab::SlashCommands::Presenters::IssueShow6642 is expected to be a kind of Hash6643 shows the issue6644 with upvotes6645 shows the upvote count6646 with labels6647 shows the labels6648 confidential issue6649 shows an ephemeral response6650Ci::DeleteUnitTestsWorker6651 #perform6652 executes a service6653 behaves like an idempotent worker6654 is labeled as idempotent6655 performs multiple times sequentially without raising an exception6656 only deletes old unit tests and their failures6657Packages::DependencyLink6658 relationships6659 is expected to belong to package required: false inverse_of => dependency_links6660 is expected to belong to dependency required: false inverse_of => dependency_links6661 is expected to have one nuget_metadatum inverse_of => dependency_link6662 validations6663 is expected to validate that :package cannot be empty/falsy6664 is expected to validate that :dependency cannot be empty/falsy6665 package_id and package_dependency_id uniqueness for dependency_type6666 is not valid6667 with multiple links6668 .with_dependency_type6669 returns links of the given type6670 .for_package6671 returns the link for the given package6672Gitlab::Kubernetes::Helm::V2::InstallCommand6673 behaves like helm command generator6674 #generate_script6675 returns appropriate command6676 when rbac is true6677 behaves like helm command generator6678 #generate_script6679 returns appropriate command6680 when there is a pre-install script6681 behaves like helm command generator6682 #generate_script6683 returns appropriate command6684 when there is a post-install script6685 behaves like helm command generator6686 #generate_script6687 returns appropriate command6688 when there is no version6689 behaves like helm command generator6690 #generate_script6691 returns appropriate command6692 behaves like helm command6693 HELM_VERSION6694 is expected to match /\d+\.\d+\.\d+/6695 #env6696 is expected to be a kind of Hash6697 #rbac?6698 rbac is enabled6699 is expected to be truthy6700 rbac is not enabled6701 is expected to be falsey6702 #pod_resource6703 rbac is enabled6704 is expected to be an instance of Kubeclient::Resource6705 generates a pod that uses the tiller serviceAccountName6706 rbac is not enabled6707 is expected to be an instance of Kubeclient::Resource6708 generates a pod that uses the default serviceAccountName6709 #config_map_resource6710 returns a KubeClient resource with config map content for the application6711 #service_account_resource6712 rbac is enabled6713 generates a Kubeclient resource for the tiller ServiceAccount6714 rbac is not enabled6715 generates nothing6716 #cluster_role_binding_resource6717 rbac is enabled6718 generates a Kubeclient resource for the ClusterRoleBinding for tiller6719 binds the account in #service_account_resource6720 rbac is not enabled6721 generates nothing6722InjectEnterpriseEditionModule6723 #prepend_mod_with6724 behaves like expand the extension with6725 when extension namespace is set at top-level6726 calls prepend with the extension module6727 when extension namespace is set at another namespace6728 calls prepend with the extension module from the additional namespace6729 when extension namespace exists but not the extension6730 does not call prepend6731 when extension namespace does not exist6732 does not call prepend6733 #extend_mod_with6734 behaves like expand the extension with6735 when extension namespace is set at top-level6736 calls extend with the extension module6737 when extension namespace is set at another namespace6738 calls extend with the extension module from the additional namespace6739 when extension namespace exists but not the extension6740 does not call extend6741 when extension namespace does not exist6742 does not call extend6743 #include_mod_with6744 behaves like expand the extension with6745 when extension namespace is set at top-level6746 calls include with the extension module6747 when extension namespace is set at another namespace6748 calls include with the extension module from the additional namespace6749 when extension namespace exists but not the extension6750 does not call include6751 when extension namespace does not exist6752 does not call include6753 #prepend_mod6754 behaves like expand the assumed extension with6755 when extension namespace is set at top-level6756 calls prepend with the extension module6757 when extension namespace exists but not the extension6758 does not call prepend6759 when extension namespace does not exist6760 does not call prepend6761 #extend_mod6762 behaves like expand the assumed extension with6763 when extension namespace is set at top-level6764 calls extend with the extension module6765 when extension namespace exists but not the extension6766 does not call extend6767 when extension namespace does not exist6768 does not call extend6769 #include_mod6770 behaves like expand the assumed extension with6771 when extension namespace is set at top-level6772 calls include with the extension module6773 when extension namespace exists but not the extension6774 does not call include6775 when extension namespace does not exist6776 does not call include6777LfsDownloadObject6778 #headers6779 returns specified Hash6780 with nil headers6781 returns a Hash6782 #has_authorization_header?6783 returns false6784 with uppercase form6785 returns true6786 with lowercase form6787 returns true6788 validations6789 is expected to validate that :size looks like a number greater than or equal to 06790 oid attribute6791 must be 64 characters long6792 must contain only hexadecimal characters6793 link attribute6794 only http and https protocols are valid6795 cannot be empty6796 when localhost or local network addresses6797 are allowed6798 is expected to be valid6799 are not allowed6800 is expected to be invalid6801 headers attribute6802 only nil and Hash values are valid6803Gitlab::Ci::Config::Entry::Service6804 when configuration is a string6805 #valid?6806 is valid6807 #value6808 returns valid hash6809 #image6810 returns service's image name6811 #alias6812 returns service's alias6813 #command6814 returns service's command6815 #ports6816 returns service's ports6817 when configuration is a hash6818 #valid?6819 is valid6820 #value6821 returns valid hash6822 #image6823 returns service's image name6824 #alias6825 returns service's alias6826 #command6827 returns service's command6828 #entrypoint6829 returns service's entrypoint6830 when configuration has ports6831 when with_image_ports metadata is not enabled6832 #valid?6833 is not valid6834 when with_image_ports metadata is enabled6835 #valid?6836 is valid6837 when unknown port keys detected6838 is not valid6839 #ports6840 returns image's ports6841 when entry value is not correct6842 #errors6843 saves errors6844 #valid?6845 is not valid6846 when unexpected key is specified6847 #errors6848 saves errors6849 #valid?6850 is not valid6851 when service has ports6852 alias field is mandatory6853 when service does not have ports6854 alias field is optional6855FinderWithGroupHierarchy6856 when specifying group6857 returns only the group by default6858 when specifying group_id6859 returns only the group by default6860 when including items from group ancestors6861 returns group and its ancestors6862 ignores groups which user can not read6863 returns them all when skip_authorization is true6864 when including items from group descendants6865 returns items from group and its descendants6866 ignores items from groups which user can not read6867 returns them all when skip_authorization is true6868Gitlab::Ci::Reports::Security::Report6869 is expected to eq "sast"6870 is expected to delegate #project_id to the #pipeline object6871 #add_scanner6872 stores given scanner params in the map6873 returns the added scanner6874 #add_identifier6875 stores given identifier params in the map6876 returns the added identifier6877 #add_finding6878 enriches given finding and stores it in the collection6879 #clone_as_blank6880 creates a blank report with copied type and pipeline6881 #replace_with!6882 replaces report contents with other reports contents6883 #merge!6884 invokes the merge with other report and then replaces this report contents by merge result6885 #primary_scanner6886 is expected to eq #<Gitlab::Ci::Reports::Security::Scanner:0x00007fecb448ee70 @external_id="external_id_1", @name="Find Security Bugs", @vendor="Security Scanner Vendor", @version="1.0.0">6887 #add_error6888 when the message is not given6889 adds a new error to report with the generic error message6890 when the message is given6891 adds a new error to report6892 errored?6893 when the report does not have any errors6894 is expected to be falsey6895 when the report has errors6896 is expected to be truthy6897 #primary_scanner_order_to6898 when the primary scanner of the receiver is nil6899 when the primary scanner of the other is nil6900 is expected to equal 16901 when the primary scanner of the other is not nil6902 is expected to equal 16903 when the primary scanner of the receiver is not nil6904 when the primary scanner of the other is nil6905 is expected to equal -16906 when the primary scanner of the other is not nil6907 compares two scanners6908 #has_signatures?6909 when the findings of the report does not have signatures6910 is expected to be falsey6911 when the findings of the report have signatures6912 is expected to be truthy6913Gitlab::Shell6914 is expected to respond to #remove_repository6915 memoized secret_token6916 creates and links the secret token file6917 projects commands6918 #remove_repository6919 returns true when the command succeeds6920 keeps the namespace directory6921 #mv_repository6922 returns true when the command succeeds6923 returns false when the command fails6924 namespace actions6925 #add_namespace6926 creates a namespace6927 #repository_exists?6928 when the repository does not exist6929 returns false6930 when the repository exists6931 returns true6932 #remove6933 removes the namespace6934 #mv_namespace6935 renames the namespace6936Terraform::RemoteStateHandler6937 #find_with_lock6938 without a state name6939 raises an exception6940 with a state name6941 with no matching state6942 raises an exception6943 with a matching state6944 returns the state6945 when state locking is not being used6946 #handle_with_lock6947 allows to modify a state using database locking6948 returns nil6949 #lock!6950 raises an error6951 when using locking6952 #handle_with_lock6953 handles a locked state using exclusive read lock6954 raises exception if lock has not been acquired before6955 user does not have permission to modify state6956 raises an exception6957 #lock!6958 allows to lock state if it does not exist yet6959 allows to lock state if it exists and is not locked6960 raises an exception when trying to unlocked state locked by someone else6961 #unlock!6962 unlocks the state6963 with no lock ID (force-unlock)6964 unlocks the state6965 with different lock ID6966 raises an exception6967Routing::PseudonymizationHelper6968 when url has params to mask6969 with controller for MR6970 behaves like masked url6971 generates masked page url6972 with controller for issue6973 behaves like masked url6974 generates masked page url6975 with controller for groups with subgroups and project6976 behaves like masked url6977 generates masked page url6978 with controller for groups and subgroups6979 behaves like masked url6980 generates masked page url6981 with controller for blob with file path6982 behaves like masked url6983 generates masked page url6984 when assignee_username is present6985 behaves like masked url6986 generates masked page url6987 when author_username is present6988 behaves like masked url6989 generates masked page url6990 when some query params are not required to be masked6991 behaves like masked url6992 generates masked page url6993 when query string has keys with the same names as path params6994 behaves like masked url6995 generates masked page url6996 when url has no params to mask6997 returns root url6998 masked_page_url6999 when it raises exception7000 calls error tracking7001 sends error to sentry and returns nil7002 when feature flag is disabled7003 returns nil7004Gitlab::Database::Partitioning::TimePartition7005 .from_sql7006 uses specified table name7007 uses specified partition name7008 parses start date7009 parses end date7010 with MINVALUE as a start date7011 sets from to nil7012 with MAXVALUE as an end date7013 raises a NotImplementedError7014 #partition_name7015 uses table as prefix7016 uses Year-Month (from) as suffix7017 without from date7018 uses 000000 as suffix for first partition7019 with partition name explicitly given7020 uses given partition name7021 #to_sql7022 transforms to a CREATE TABLE statement7023 without from date7024 uses MINVALUE instead7025 object equality - #eql7026 treats objects identical with identical attributes7027 different table leads to in-equality7028 different from leads to in-equality7029 different to leads to in-equality7030 different partition_name leads to in-equality7031 nil partition_name is ignored if auto-generated matches7032 Comparable, #<=>7033 sorts by partition name, i.e. by month - MINVALUE partition first7034 returns nil for partitions of different tables7035projects/commit/show.html.haml7036 inline diff view7037 has limited width7038 parallel diff view7039 spans full width7040 in the context of a merge request7041 shows that it is in the context of a merge request7042Banzai::ReferenceParser::LabelParser7043 #nodes_visible_to_user7044 when the link has a data-issue attribute7045 behaves like referenced feature visibility7046 when feature is disabled7047 does not create reference7048 when feature is enabled only for team members7049 does not create reference for non member7050 creates reference for member7051 when feature is enabled7052 creates reference7053 #referenced_by7054 when the link has a data-label attribute7055 using an existing label ID7056 returns an Array of labels7057 using a non-existing label ID7058 returns an empty Array7059Banzai::Filter::WikiLinkFilter7060 doesn't rewrite absolute links7061 doesn't rewrite links to project uploads7062 when links are rewritable7063 stores original url in the data-canonical-src attribute7064 when links are not rewritable7065 does not store original url in the data-canonical-src attribute7066 when links point to the relative wiki path7067 does not rewrite links7068 when links point to the uploads folder7069 with an "a" html tag7070 rewrites links7071 with "img" html tag7072 inside an "a" html tag7073 rewrites links7074 outside an "a" html tag7075 rewrites links7076 with "video" html tag7077 rewrites links7078 with "audio" html tag7079 rewrites links7080 invalid links7081 doesn't rewrite invalid invalid_links like http://:80807082 doesn't rewrite invalid invalid_links like http://7083 doesn't rewrite invalid invalid_links like http://:8080/path7084shared/_global_alert.html.haml7085 renders the title7086 variants7087 renders an info alert by default7088 renders a warning variant7089 renders a success variant7090 renders a danger variant7091 renders a tip variant7092 dismissible option7093 shows the dismiss button by default7094 does not show the dismiss button when dismissible is false7095 fixed layout7096 does not add layout limited class7097 adds container classes7098 does not add container classes if is_contained is true7099 fluid layout7100 adds layout limited class7101 does not add container classes7102AlertManagement::Alerts::Todo::CreateService7103 #execute7104 when the user is anonymous7105 behaves like permissions error7106 returns an error7107 when the user does not have permission7108 behaves like permissions error7109 returns an error7110 when user has permission7111 creates a todo7112 returns the alert and todo in the payload7113 when the user has a marked todo for the alert7114 when todo is pending7115 does not create a todo7116 returns an error7117 when todo is done7118 is expected to equal true7119 is expected to change `Todo.count` by 17120Resolvers::DesignManagement::Version::DesignAtVersionResolver7121 #resolve7122 passing combinations of arguments7123 passing no arguments7124 behaves like a bad argument7125 raises an appropriate error7126 passing all arguments7127 behaves like a bad argument7128 raises an appropriate error7129 passing any two arguments7130 behaves like a bad argument7131 raises an appropriate error7132 passing id7133 finds the design7134 when the user cannot see designs7135 returns nothing7136 passing design_id7137 finds the design7138 when the user cannot see designs7139 returns nothing7140 passing filename7141 finds the design7142 when the user cannot see designs7143 returns nothing7144 attempting to retrieve an object not visible at this version7145 passing id7146 does not find the design7147 passing design_id7148 does not find the design7149 passing filename7150 does not find the design7151Gitlab::Kubernetes::Helm::V3::PatchCommand7152 behaves like helm command generator7153 #generate_script7154 returns appropriate command7155 when rbac is true7156 behaves like helm command generator7157 #generate_script7158 returns appropriate command7159 when there is no version7160 is expected to raise ArgumentError with "version is required"7161 #pod_name7162 is expected to eq "install-app-name"7163 behaves like helm command7164 HELM_VERSION7165 is expected to match /\d+\.\d+\.\d+/7166 #env7167 is expected to be a kind of Hash7168 #rbac?7169 rbac is enabled7170 is expected to be truthy7171 rbac is not enabled7172 is expected to be falsey7173 #pod_resource7174 rbac is enabled7175 is expected to be an instance of Kubeclient::Resource7176 generates a pod that uses the tiller serviceAccountName7177 rbac is not enabled7178 is expected to be an instance of Kubeclient::Resource7179 generates a pod that uses the default serviceAccountName7180 #config_map_resource7181 returns a KubeClient resource with config map content for the application7182 #service_account_resource7183 rbac is enabled7184 generates a Kubeclient resource for the tiller ServiceAccount7185 rbac is not enabled7186 generates nothing7187 #cluster_role_binding_resource7188 rbac is enabled7189 generates a Kubeclient resource for the ClusterRoleBinding for tiller7190 binds the account in #service_account_resource7191 rbac is not enabled7192 generates nothing7193ChatNames::FindUserService7194 #execute7195 find user mapping7196 when existing user is requested7197 returns the existing chat_name7198 updates the last used timestamp if one is not already set7199 only updates an existing timestamp once within a certain time frame7200 when different user is requested7201 returns existing user7202Mutations::Terraform::State::Delete7203 is expected to eq "TerraformStateDelete"7204 is expected to require graphql authorizations :admin_terraform_state7205 #resolve7206 user does not have permission7207 raises an error7208 user has permission7209 deletes the state7210 with invalid params7211 raises an error7212Metrics::Dashboard::TransientEmbedService7213 .valid_params?7214 is expected to be truthy7215 missing embedded7216 is expected to be falsey7217 not embedded7218 is expected to be falsey7219 missing embed_json7220 is expected to be falsey7221 #get_dashboard7222 caches the unprocessed dashboard for subsequent calls7223 caches unique requests separately7224 behaves like valid embedded dashboard service response7225 behaves like valid dashboard service response for schema7226 returns a json representation of the dashboard7227 behaves like raises error for users with insufficient permissions7228 when the user does not have sufficient access7229 behaves like misconfigured dashboard service response7230 returns an appropriate message and status code7231 when the user is anonymous7232 behaves like misconfigured dashboard service response7233 returns an appropriate message and status code7234 when embed_json cannot be parsed as json7235 behaves like misconfigured dashboard service response7236 returns an appropriate message and status code7237Gitlab::NullRequestStore7238 #store7239 returns an empty hash7240 #active?7241 returns falsey7242 #read7243 returns nil7244 #[]7245 returns nil7246 #write7247 returns the same value7248 #[]=7249 returns the same value7250 #exist?7251 returns falsey7252 #fetch7253 returns the block result7254 #delete7255 when a block is given7256 yields the key to the block7257 returns the block result7258 when a block is not given7259 returns nil7260ExperimentSubject7261 associations7262 is expected to belong to experiment required: false7263 is expected to belong to user required: false7264 is expected to belong to namespace required: false7265 is expected to belong to project required: false7266 validations7267 is expected to validate that :experiment cannot be empty/falsy7268 must_have_one_subject_present7269 fails when no subject is present7270 passes when user subject is present7271 passes when namespace subject is present7272 passes when project subject is present7273 fails when more than one subject is present7274 .valid_subject?7275 when passing a Group, Namespace, User or Project7276 is expected to equal true7277 is expected to equal true7278 is expected to equal true7279 is expected to equal true7280 when passing another object7281 is expected to equal false7282Integrations::Bugzilla7283 Validations7284 when integration is active7285 is expected to validate that :project_url cannot be empty/falsy7286 is expected to validate that :issues_url cannot be empty/falsy7287 is expected to validate that :new_issue_url cannot be empty/falsy7288 behaves like issue tracker integration URL attribute7289 is expected to allow :project_url to be ‹"https://example.com"›7290 is expected not to allow :project_url to be ‹"example.com"›7291 is expected not to allow :project_url to be ‹"ftp://example.com"›7292 is expected not to allow :project_url to be ‹"herp-and-derp"›7293 behaves like issue tracker integration URL attribute7294 is expected to allow :issues_url to be ‹"https://example.com"›7295 is expected not to allow :issues_url to be ‹"example.com"›7296 is expected not to allow :issues_url to be ‹"ftp://example.com"›7297 is expected not to allow :issues_url to be ‹"herp-and-derp"›7298 behaves like issue tracker integration URL attribute7299 is expected to allow :new_issue_url to be ‹"https://example.com"›7300 is expected not to allow :new_issue_url to be ‹"example.com"›7301 is expected not to allow :new_issue_url to be ‹"ftp://example.com"›7302 is expected not to allow :new_issue_url to be ‹"herp-and-derp"›7303 when integration is inactive7304 is expected not to validate that :project_url cannot be empty/falsy7305 is expected not to validate that :issues_url cannot be empty/falsy7306 is expected not to validate that :new_issue_url cannot be empty/falsy7307Gitlab::WikiPages::FrontMatterParser7308 #parse7309 there is front matter7310 is expected to have attributes {:content => "This is the content\n", :error => (be nil), :front_matter => (include {:a => 1, :b => 2, :c => ["foo", "bar"]})}7311 there is no content7312 is expected to have attributes {:content => "", :error => (be nil), :front_matter => {}}7313 there is no front_matter7314 is expected to have attributes {:content => "This is the content", :front_matter => (be empty)}7315 is expected to have attributes {:reason => :no_match}7316 the feature flag is disabled7317 is expected to have attributes {:content => "---\na: 1\nb: 2\nc:\n - foo\n - bar\ndate: I am safe. Not actually a date\n---\nThis is the content\n", :front_matter => (be empty)}7318 the feature flag is enabled for the gated object7319 is expected to have attributes {:content => "This is the content\n", :front_matter => (include {:a => 1, :b => 2, :c => ["foo", "bar"]}), :reason => (be nil)}7320 the end divider is ...7321 is expected to have attributes {:front_matter => (include {:a => 1, :b => 2, :c => ["foo", "bar"]})}7322 the front-matter is not a mapping7323 is expected to have attributes {:reason => :not_mapping}7324 there is nothing in the front-matter block7325 is expected to have attributes {:reason => :no_match}7326 there is a string in the YAML block7327 is expected to have attributes {:reason => :not_mapping}7328 there is dangerous YAML in the block7329 is expected to have attributes {:error => (be present), :reason => :parse_error}7330 there is acceptably long YAML in the front-matter block7331 is expected to have attributes {:front_matter => (include {:title => (be present)})}7332 there is suspiciously long YAML in the front-matter block7333 is expected to have attributes {:reason => :too_long}7334 TOML front matter7335 is expected to have attributes {:reason => :not_yaml}7336 TOML style fences, advertised as YAML7337 is expected to have attributes {:front_matter => (include {:title => "My title"})}7338 YAML, advertised as something else7339 is expected to have attributes {:reason => :not_yaml}7340 there is text content in the YAML block, in comments7341 is expected to have attributes {:front_matter => (include {:foo => 1})}7342 there is text content in the YAML block7343 is expected to have attributes {:reason => :not_mapping}7344Gitlab::Checks::DiffCheck7345 #validate!7346 when commits is empty7347 does not call find_changed_paths7348 when commits is not empty7349 when deletion is true7350 does not call find_changed_paths7351 with LFS not enabled7352 does not invoke :lfs_file_locks_validation7353 with LFS enabled7354 when change is sent by a different user7355 raises an error if the user is not allowed to update the file7356 when change is sent by the author of the lock7357 doesn't raise any error7358LimitedCapacity::Worker7359 required methods7360 is expected to raise NotImplementedError7361 is expected to raise NotImplementedError7362 is expected to raise NotImplementedError7363 Sidekiq options7364 does not retry failed jobs7365 does not deduplicate jobs7366 .perform_with_capacity7367 enqueues jobs7368 #perform7369 with capacity7370 calls perform_work7371 re-enqueues itself7372 reports prometheus metrics7373 updates the running set7374 with capacity and without work7375 does not re-enqueue itself7376 without capacity7377 does not call perform_work7378 does not re-enqueue itself7379 when perform_work fails7380 does not re-enqueue itself7381 removes itself from the running set7382 reports prometheus metrics7383 #remove_failed_jobs7384 removes failed jobs7385 #report_prometheus_metrics7386 reports number of running jobs7387ProtectedBranchesFinder7388 #execute7389 returns all protected branches of project by default7390 when search param is present7391 filters by search param7392 when there are more protected branches than the limit7393 returns limited protected branches of project7394Packages::Debian::GroupDistributionKey7395 behaves like Debian Distribution Key7396 relationships7397 is expected to belong to distribution class_name => Packages::Debian::GroupDistribution required: false inverse_of => key7398 validations7399 #distribution7400 is expected to validate that :distribution cannot be empty/falsy7401 #private_key7402 is expected to validate that :private_key cannot be empty/falsy7403 is expected to allow :private_key to be ‹"-----BEGIN PGP PRIVATE KEY BLOCK-----\n..."›7404 is expected not to allow :private_key to be ‹"A"›, producing a custom validation error on failure7405 #passphrase7406 is expected to validate that :passphrase cannot be empty/falsy7407 is expected to allow :passphrase to be ‹"P@$$w0rd"›7408 is expected to allow :passphrase to be ‹"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"›7409 is expected not to allow :passphrase to be ‹"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"›7410 #public_key7411 is expected to validate that :public_key cannot be empty/falsy7412 is expected to allow :public_key to be ‹"-----BEGIN PGP PUBLIC KEY BLOCK-----\n..."›7413 is expected not to allow :public_key to be ‹"A"›, producing a custom validation error on failure7414 #fingerprint7415 is expected to validate that :passphrase cannot be empty/falsy7416 is expected to allow :passphrase to be ‹"abc"›7417 is expected to allow :passphrase to be ‹"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"›7418 is expected not to allow :passphrase to be ‹"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"›7419Gitlab::Ci::Config::External::File::Project7420 #matching?7421 when a file and project is specified7422 returns true7423 with only file is specified7424 returns false7425 with only project is specified7426 returns false7427 with a missing local key7428 returns false7429 #valid?7430 when a valid path is used7431 returns true7432 when user does not have permission to access file7433 returns false7434 when a valid path with custom ref is used7435 returns true7436 when an empty file is used7437 returns false7438 when non-existing ref is used7439 returns false7440 when non-existing file is requested7441 returns false7442 when file is not a yaml file7443 returns false7444 #expand_context7445 inherits user, and target project and sha7446Gitlab::Database::PartitioningMigrationHelpers::IndexHelpers7447 #add_concurrent_partitioned_index7448 when the index does not exist on the parent table7449 creates the index on each partition, and the parent table7450 when the index exists on the parent table7451 does not attempt to create any indexes7452 when additional index options are given7453 forwards them to the index helper methods7454 when a name argument for the index is not given7455 raises an error7456 when the given table is not a partitioned table7457 raises an error7458 when run inside a transaction block7459 raises an error7460 #remove_concurrent_partitioned_index_by_name7461 when the index exists7462 drops the index on the parent table, cascading to all partitions7463 when the index does not exist7464 does not attempt to drop the index7465 when the given table is not a partitioned table7466 raises an error7467 when run inside a transaction block7468 raises an error7469Ci::FreezePeriod7470 is expected to belong to project required: false7471 is expected to respond to #freeze_start7472 is expected to respond to #freeze_end7473 is expected to respond to #cron_timezone7474 cron validations7475 allows valid cron patterns7476 does not allow invalid cron patterns on freeze_start7477 does not allow invalid cron patterns on freeze_end7478 does not allow an invalid timezone7479 when cron contains trailing whitespaces7480 strips the attribute7481Gitlab::Suggestions::SuggestionSet7482 #project7483 returns the project associated with the suggestions7484 #branch7485 returns the branch associated with the suggestions7486 #valid?7487 returns true if no errors are found7488 returns false if an error is found7489 #error_message7490 returns an error message if an error is found7491 returns nil if no errors are found7492 #actions7493 returns an array of hashes with proper key/value pairs7494 #file_paths7495 returns an array of unique file paths associated with the suggestions7496Banzai::ReferenceParser::MentionedUserParser7497 #gather_references7498 when the link has a data-group attribute7499 using an existing group ID7500 returns empty list of users7501 when the link has a data-project attribute7502 using an existing project ID7503 returns empty list of users7504 when the link has a data-user attribute7505 returns an Array of users7506Gitlab::Config::Entry::Undefined7507 #leaf?7508 is leaf node7509 #valid?7510 is always valid7511 #errors7512 is does not contain errors7513 #value7514 returns nil7515 #relevant?7516 is not relevant7517 #specified?7518 is not defined7519 #type7520 returns nil7521gitlab:external_diffs rake tasks7522 force_object_storage task7523 forces externally stored merge request diffs to object storage7524 limits batches according to BATCH_SIZE, START_ID, and END_ID7525Gitlab::Analytics::CycleAnalytics::StageEvents::IssueStageEnd7526 behaves like value stream analytics event7527 is expected to be a kind of String7528 is expected to be a kind of Symbol7529 is expected to include ApplicationRecord(abstract)7530 is expected to respond to #timestamp_projection7531 is expected to respond to #html_description7532 is expected to be a kind of Array7533 #apply_query_customization7534 expects an ActiveRecord::Relation object as argument and returns a modified version of it7535 #hash_code7536 returns a hash that uniquely identifies an event7537 does not differ when the same object is built with the same params7538 behaves like LEFT JOIN-able value stream analytics event7539 can use the event as LEFT JOIN7540 when looking at the record with data7541 contains the timestamp expression7542 when looking at the record without data7543 returns nil for the timestamp expression7544PrometheusMetricsFinder7545 #execute7546 with params7547 with appropriate indexes7548 with project7549 is expected to eq [#<PrometheusMetric id: 1, project_id: 1207, title: [FILTERED], query: "avg(metric)", y_label: "y_lab...65 +0000", common: false, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml">]7550 with group7551 is expected to contain exactly #<PrometheusMetric id: 2, project_id: nil, title: [FILTERED], query: "avg(metric)", y_label: "y_label...2534 +0000", common: true, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml"> and #<PrometheusMetric id: 1, project_id: 1207, title: [FILTERED], query: "avg(metric)", y_label: "y_labe...865 +0000", common: false, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml">7552 with title7553 is expected to contain exactly #<PrometheusMetric id: 1, project_id: 1207, title: [FILTERED], query: "avg(metric)", y_label: "y_labe...865 +0000", common: false, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml"> and #<PrometheusMetric id: 2, project_id: nil, title: [FILTERED], query: "avg(metric)", y_label: "y_label...2534 +0000", common: true, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml">7554 with y_label7555 is expected to contain exactly #<PrometheusMetric id: 1, project_id: 1207, title: [FILTERED], query: "avg(metric)", y_label: "y_labe...865 +0000", common: false, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml"> and #<PrometheusMetric id: 2, project_id: nil, title: [FILTERED], query: "avg(metric)", y_label: "y_label...2534 +0000", common: true, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml">7556 with common7557 is expected to contain exactly #<PrometheusMetric id: 2, project_id: nil, title: [FILTERED], query: "avg(metric)", y_label: "y_label...2534 +0000", common: true, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml"> and #<PrometheusMetric id: 3, project_id: nil, title: [FILTERED], query: "avg(metric)", y_label: "Unique ...0", common: true, identifier: "identifier", dashboard_path: ".gitlab/dashboards/dashboard_path.yml">7558 with ordered7559 is expected to eq [#<PrometheusMetric id: 3, project_id: nil, title: [FILTERED], query: "avg(metric)", y_label: "Unique...534 +0000", common: true, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml">]7560 with indentifier7561 raises an error7562 with common7563 is expected to contain exactly #<PrometheusMetric id: 3, project_id: nil, title: [FILTERED], query: "avg(metric)", y_label: "Unique ...0", common: true, identifier: "identifier", dashboard_path: ".gitlab/dashboards/dashboard_path.yml">7564 with id7565 raises an error7566 with id7567 is expected to contain exactly #<PrometheusMetric id: 2, project_id: nil, title: [FILTERED], query: "avg(metric)", y_label: "y_label...2534 +0000", common: true, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml">7568 with multiple params7569 is expected to contain exactly #<PrometheusMetric id: 2, project_id: nil, title: [FILTERED], query: "avg(metric)", y_label: "y_label...2534 +0000", common: true, identifier: nil, dashboard_path: ".gitlab/dashboards/dashboard_path.yml">7570 without an appropriate index7571 raises an error7572 without params7573 raises an error7574Gitlab::StaticSiteEditor::Config::GeneratedConfig7575 #data7576 returns data for the frontend component7577 when namespace is a subgroup7578 returns data for the frontend component7579 when file has .md.erb extension7580 is expected to include {:branch => "main", :is_supported_content => true}7581 when file path is nested7582 is expected to include {:base_url => "/namespace/project/-/sse/master%2Flib%2FREADME.md"}7583 when branch is not master or main7584 is expected to include {:is_supported_content => false}7585 when file does not have a markdown extension7586 is expected to include {:is_supported_content => false}7587 when file does not have an extension7588 is expected to include {:is_supported_content => false}7589 when file does not exist7590 is expected to include {:is_supported_content => false}7591 when repository is empty7592 is expected to include {:is_supported_content => false}7593 when return_url is not a valid URL7594 is expected to include {:return_url => nil}7595 when return_url has a javascript scheme7596 is expected to include {:return_url => nil}7597 when return_url is missing7598 is expected to include {:return_url => nil}7599 when a commit for the ref cannot be found7600 is expected to include {:commit_id => nil}7601PersonalAccessTokens::ExpiringWorker7602 #perform7603 when a token needs to be notified7604 uses notification service to send the email7605 marks the notification as delivered7606 when no tokens need to be notified7607 doesn't use notification service to send the email7608 doesn't change the notification delivered of the token7609 when a token is an impersonation token7610 doesn't use notification service to send the email7611 doesn't change the notification delivered of the token7612Gitlab::Bullet::Exclusions7613 #execute7614 with preferred method of path and method name7615 behaves like loads exclusion results7616 is expected to match [["_path_", "_method_"]]7617 with file pattern7618 behaves like loads exclusion results7619 is expected to match [["_file_pattern_"]]7620 with file name and line range7621 behaves like loads exclusion results7622 is expected to match [["file_name.rb", 5..10]]7623 without exclusions7624 behaves like loads exclusion results7625 is expected to match [[]]7626 without exclusions key in config7627 behaves like loads exclusion results7628 is expected to match []7629 when config file does not exist7630 provides an empty array for exclusions7631 #validate_paths!7632 when validating scenarios7633 when using paths with method name7634 when source file for exclusion exists7635 is expected not to raise Exception7636 when source file for exclusion does not exist7637 is expected to raise RuntimeError7638 when using path only7639 when source file for exclusion exists7640 is expected not to raise Exception7641 when source file for exclusion does not exist7642 is expected to raise RuntimeError7643 when path_with_method is false for a file pattern7644 is expected not to raise Exception7645Gitlab::JwtAuthenticatable7646 .secret7647 returns 32 bytes7648 accepts a trailing newline7649 raises an exception if the secret file cannot be read7650 raises an exception if the secret file contains the wrong number of bytes7651 .write_secret7652 uses mode 06007653 writes base64 data7654 .decode_jwt_for_issuer7655 accepts a correct header7656 raises an error when the JWT is not signed7657 raises an error when the header is signed with the wrong secret7658 raises an error when the issuer is incorrect7659Mutations::Todos::MarkAllDone7660 is expected to require graphql authorizations :update_user7661 #resolve7662 marks all pending todos as done7663 behaves as expected if there are no todos for the requesting user7664 when user is not logged in7665 fails with the expected error7666Ci::JobTokenScope::RemoveProjectService7667 #execute7668 behaves like editable job token scope7669 when job token scope is disabled for the given project7670 behaves like returns error7671 returns an error response7672 when user does not have permissions to edit the job token scope7673 behaves like returns error7674 returns an error response7675 when user has permissions to edit the job token scope7676 when target project is not provided7677 behaves like returns error7678 returns an error response7679 when target project is provided7680 when user does not have permissions to read the target project7681 behaves like returns error7682 returns an error response7683 when user has permissions on source and target project7684 removes the project from the scope7685 when target project is same as the source project7686 behaves like returns error7687 returns an error response7688JsonSchemaValidator7689 #validates_each7690 when filename is set7691 when data is valid7692 returns no errors7693 when data is invalid7694 returns json schema is invalid7695 when filename is not set7696 raises an ArgumentError7697 when filename is invalid7698 raises a FilenameError7699 hash_conversion option7700 when hash_conversion is enabled7701 returns no errors7702projects/diffs/_viewer.html.haml7703 when there is a render error7704 renders the error7705 when the viewer is collapsed7706 renders the collapsed view7707 when there is no render error7708 prepares the viewer7709 renders the viewer7710ErrorTracking::BaseService7711 #compose_response7712 returns bad_request error when response has an error key7713 returns server error when response has missing key error_type7714 returns no content when response is nil7715 when result has no errors key7716 raises NotImplementedError7717 when parse_response is implemented7718 returns successful response7719 returns successful response with changes from passed block7720Gitlab::Git::KeepAround7721 does not fail if we attempt to reference bad commit7722 stores a reference to the specified commit sha so it isn't garbage collected7723 attempting to call keep around on truncated ref does not fail7724 for multiple SHAs7725 skips non-existent SHAs7726 skips already-kept-around SHAs7727Ci::GroupVariablePresenter7728 inherits from Gitlab::View::Presenter::Delegated7729 #initialize7730 takes a variable and optional params7731 exposes variable7732 forwards missing methods to variable7733 #placeholder7734 is expected to eq "GROUP_VARIABLE"7735 #form_path7736 is expected to eq "/groups/group708/-/settings/ci_cd"7737 #edit_path7738 is expected to eq "/groups/group709/-/variables"7739 #delete_path7740 is expected to eq "/groups/group710/-/variables"7741API::Helpers::RelatedResourcesHelpers7742 #expose_path7743 empty relative URL root7744 returns the existing path7745 slash relative URL root7746 returns the existing path7747 with relative URL root7748 returns the existing path7749 #expose_url7750 respects the protocol if it is HTTP7751 respects the protocol if it is HTTPS7752 accepts the host if it contains an underscore7753 accepts port to be nil7754 includes port if provided7755 includes the relative_url before the path if it is set7756 includes the path after the host7757BulkImports::Groups::Loaders::GroupLoader7758 #load7759 when path is missing7760 raises an error7761 when destination namespace is not a group7762 raises an error7763 when group exists7764 raises an error7765 when there are other group errors7766 raises an error with those errors7767 when user can create group7768 when there is no parent group7769 calls Group Create Service to create a new group7770 when there is parent group7771 calls Group Create Service to create a new group7772 when user cannot create group7773 when there is no parent group7774 does not create new group7775 when there is parent group7776 does not create new group7777Ci::PipelineArtifacts::CoverageReportService7778 #execute7779 when pipeline has coverage reports7780 when pipeline is finished7781 creates a pipeline artifact7782 persists the default file name7783 sets expire_at to 1 week7784 when pipeline artifact has already been created7785WARNING: 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/services/ci/pipeline_artifacts/coverage_report_service_spec.rb:41:in `block (5 levels) in <top (required)>'.7786 do not raise an error and do not persist the same artifact twice7787 when pipeline is running and coverage report does not exist7788 does not persist data7789Mutations::Terraform::State::Lock7790 is expected to eq "TerraformStateLock"7791 is expected to require graphql authorizations :admin_terraform_state7792 #resolve7793 user does not have permission7794 raises an error7795 user has permission7796 locks the state7797 state is already locked7798 does not modify the existing lock7799 with invalid params7800 raises an error7801Snippets::CountService7802 #new7803 raises an error if no author or project7804 uses the SnippetsFinder to scope snippets by user7805 allows scoping to project7806 #execute7807DEPRECATION WARNING: `.reorder(nil)` with `.first` / `.first!` no longer takes non-deterministic result in Rails 6.2. To continue taking non-deterministic result, use `.take` / `.take!` instead. (called from snippet_counts at /builds/gitlab-org/gitlab/app/services/snippets/count_service.rb:73)7808 returns a hash of counts7809DEPRECATION WARNING: `.reorder(nil)` with `.first` / `.first!` no longer takes non-deterministic result in Rails 6.2. To continue taking non-deterministic result, use `.take` / `.take!` instead. (called from snippet_counts at /builds/gitlab-org/gitlab/app/services/snippets/count_service.rb:73)7810 only counts snippets the user has access to7811 returns an empty hash if select returns nil7812Banzai::Filter::InlineClusterMetricsFilter7813 behaves like a metrics embed filter7814 when the document has an external link7815 leaves regular non-metrics links unchanged7816 when the document contains an embeddable link7817 leaves the original link unchanged7818 appends a metrics charts placeholder7819 in a paragraph7820 appends a metrics charts placeholder after the enclosing paragraph7821Ci::CompareTestReportsService7822 #execute7823 when head pipeline has test reports7824 returns status and data7825 when base and head pipelines have test reports7826 returns status and data7827 when head pipeline has corrupted test reports7828 returns a parsed TestReports success status and failure on the individual suite7829 test failure history7830 loads recent failures on limited test cases to avoid building up a huge DB query7831Gitlab::DependencyLinker::PackageJsonLinker7832 .support?7833 supports package.json7834 does not support other files7835 #link7836 does not link the module name7837 links the homepage7838 links the repository URL7839 links the license7840 links dependencies7841 links dependencies to URL detected on value7842 does not link to NPM when invalid git URL7843 links GitHub repos7844 links Git repos7845 does not link scripts with the same key as a package7846InstanceConfigurationHelper7847 #instance_configuration_cell_html7848 boolean are valid values to display7849 if not block is passed7850 returns the parameter if present7851 returns "-" if the parameter is blank7852 if a block is passed7853 returns the result of the block7854 returns "-" if the parameter is blank7855 #instance_configuration_human_size_cell7856 returns "-" if the parameter is blank7857 accepts the value in bytes7858 returns the value in human size readable format7859Mutations::Security::CiConfiguration::ConfigureSecretDetection7860 is expected to require graphql authorizations :push_code7861 #resolve7862 raises an error if the resource is not accessible to the user7863 when user does not have enough permissions7864 raises an error7865 when user is a maintainer of a different project7866 raises an error7867 when the user does not have permission to create a new branch7868 returns an array of errors7869 when the user can create a merge request7870 when service successfully generates a path to create a new merge request7871 returns a success path7872 when service can not generate any path to create a new merge request7873 returns an array of errors7874SystemNotes::BaseService7875 #noteable7876 is expected to eq #<Double (anonymous)>7877 returns nil if no arguments are given7878 #project7879 is expected to eq #<Double (anonymous)>7880 returns nil if no arguments are given7881 #author7882 is expected to eq #<Double (anonymous)>7883 returns nil if no arguments are given78845-Minute-Production-App.gitlab-ci.yml7885 the created pipeline7886 creates only build job7887 when AWS variables are set7888 creates all jobs7889 pipeline branch is protected7890 does not create a destroy job7891Gitlab::Kas::Client7892 #initialize7893 kas is not enabled7894 raises a configuration error7895 internal url is not set7896 raises a configuration error7897 gRPC calls7898 #get_connected_agents7899 is expected to eq [#<Double (anonymous)>]7900 #list_agent_config_files7901 is expected to eq [#<Double (anonymous)>]7902 with grpcs7903 uses a ChannelCredentials object7904MemberSerializer7905 group member7906 handles last group owner assignment7907 behaves like members.json7908 is expected to match schema "members"7909 project member7910 does not invoke group owner assignment7911 behaves like members.json7912 is expected to match schema "members"7913Banzai::Filter::InlineDiffFilter7914 adds inline diff span tags for deletions when using square brackets7915 adds inline diff span tags for deletions when using curley braces7916 does not add inline diff span tags when a closing tag is not provided7917 adds inline span tags for additions when using square brackets7918 adds inline span tags for additions when using curley braces7919 does not add inline diff span tags when a closing addition tag is not provided7920 does not add inline diff span tags when the tags do not match7921 prevents user-land html being injected7922 preserves content inside pre tags7923 preserves content inside code tags7924 preserves content inside tt tags7925Types::NamespaceType7926 is expected to eq "Namespace"7927 has the expected fields7928 is expected to require graphql authorizations :read_namespace7929Gitlab::ExclusiveLeaseHelpers7930 #in_lock7931 when unique key is not set7932 raises an error7933 when the lease is not obtained yet7934 calls the given block7935 calls the given block continuously7936 cancels the exclusive lease after the block7937 when the lease is obtained already7938 retries to obtain a lease and raises an error7939 when ttl is specified7940 receives the specified argument7941 when retry count is specified7942 retries for the specified times7943 when lease is granted after retry7944 yields block with true7945 when we specify no retries7946 never sleeps7947 when sleep second is specified7948 receives the specified argument7949 when sleep second is specified as a lambda7950 receives the specified argument7951AuditEventService7952 #security_event7953 creates an event and logs to a file7954 formats from and to fields7955 authentication event7956 creates an authentication event7957 tracks exceptions when the event cannot be created7958 with IP address7959 from_context: "192.168.0.2", from_author_sign_in: "192.168.0.3", output: "192.168.0.2"7960 is expected to receive new(hash_including(:ip_address=>"192.168.0.2")) 1 time7961 from_context: nil, from_author_sign_in: "192.168.0.3", output: "192.168.0.3"7962 is expected to receive new(hash_including(:ip_address=>"192.168.0.3")) 1 time7963 #log_security_event_to_file7964 logs security event to file7965GpgKeySubkey7966 associations7967 is expected to belong to gpg_key required: false7968 validations7969 is expected to validate that :gpg_key_id cannot be empty/falsy7970 is expected to validate that :fingerprint cannot be empty/falsy7971 is expected to validate that :keyid cannot be empty/falsy7972Gitlab::Graphql::BatchKey7973 is equal to keys of the same object, regardless of lookahead or object name7974 delegates attribute lookup methods to the inner object7975 allows the object to be named more meaningfully7976 works as a hash key7977 #requires?7978 returns false if the lookahead was not provided7979 lookahead was provided7980 returns false if the path is empty7981 it selects the field7982 returns true7983 it does not select the field7984 returns false7985Resolvers::DesignManagement::DesignAtVersionResolver7986 #resolve7987 returns the specified design7988 when the user cannot see designs7989 raises ResourceNotAvailable7990 the ID belongs to a design on another issue7991 raises ResourceNotAvailable7992 the current object does not constrain the issue7993 returns the object7994Gitlab::LoopHelpers7995 #loop_until7996 when limit is not given7997 raises an error7998 when timeout is specified7999 returns false after it's expired8000 executes the block at least once8001 when iteration limit is specified8002 returns false after it's expired8003 executes the block once8004RuboCop::Cop::RSpec::EnvAssignment8005 with a key using single quotes8006 behaves like an offensive and correction ENV#[]= call8007 registers an offense for `ENV['FOO'] = 'bar'` and corrects8008 with a key using double quotes8009 behaves like an offensive and correction ENV#[]= call8010 registers an offense for `ENV["FOO"] = 'bar'` and corrects8011Gitlab::SearchContext::ControllerConcern8012 exposing @project8013 behaves like has the proper context8014 aggregate_failures8015 when the project is owned by a group8016 behaves like has the proper context8017 aggregate_failures8018 exposing @group8019 behaves like has the proper context8020 aggregate_failures8021 exposing @snippet, @snippets8022 behaves like has the proper context8023 aggregate_failures8024 exposing @ref8025 behaves like has the proper context8026 aggregate_failures8027RepositoryRemoveRemoteWorker8028 #perform8029 returns nil when project does not exist8030 when project exists8031 does nothing when cannot obtain lease8032 does nothing when obtain a lease8033Ci::CreatePipelineService8034 creation errors and warnings8035 when created successfully8036 when warnings are raised8037 contains only warnings8038 when no warnings are raised8039 contains no warnings8040 when failed to create the pipeline8041 when warnings are raised8042 contains both errors and warnings8043 when no warnings are raised8044 contains only errors8045Gitlab::HookData::GroupBuilder8046 #build8047 data8048 on create8049 is expected to eq "group_create"8050 behaves like includes the required attributes8051 includes the required attributes8052 behaves like does not include old path attributes8053 does not include old path attributes8054 on destroy8055 is expected to eq "group_destroy"8056 behaves like includes the required attributes8057 includes the required attributes8058 behaves like does not include old path attributes8059 does not include old path attributes8060 on rename8061 is expected to eq "group_rename"8062 includes old path details8063 behaves like includes the required attributes8064 includes the required attributes8065Terraform::StatesFinder8066 #execute8067 is expected to contain exactly #<Terraform::State id: 15, project_id: 1267, created_at: "2021-12-14 01:55:07.582166820 +0000", updat...y_user_id: nil, uuid: "7a57343474b0a10fe0a304b32cdba7ee", name: "state-4", versioning_enabled: true> and #<Terraform::State id: 16, project_id: 1267, created_at: "2021-12-14 01:55:07.588924879 +0000", updat...y_user_id: nil, uuid: "abf3eb1bb37bcc50da0d102ca78e84c7", name: "state-5", versioning_enabled: true>8068 user does not have permission8069 is expected to be empty8070 filtering by name8071 name does not match8072 is expected to be empty8073 name does match8074 is expected to contain exactly #<Terraform::State id: 15, project_id: 1267, created_at: "2021-12-14 01:55:07.582166820 +0000", updat...y_user_id: nil, uuid: "7a57343474b0a10fe0a304b32cdba7ee", name: "state-4", versioning_enabled: true>8075BulkImports::Common::Pipelines::EntityFinisher8076 updates the entity status to finished8077 when entity is in a final finished or failed state8078 does nothing8079 does nothing8080 when all entity trackers failed8081 marks entity as failed8082MigrateExternalDiffsWorker8083 #perform8084 migrates the listed diff8085 does nothing if the diff is missing8086Types::BaseEdge8087 supports field authorization on edge fields8088UpdateHighestRoleWorker8089 #perform8090 when user is not found8091 does not update or deletes any highest role8092 when user is found8093 when user is active and not internal8094 when user highest role exists8095 updates the highest role for the user8096 when user highest role does not exist8097 creates the highest role for the user8098 when user is either inactive or internal8099 additional_attributes: {:state=>"blocked"}8100 deletes highest role8101 additional_attributes: {:user_type=>:alert_bot}8102 deletes highest role8103 when user highest role does not exist8104 does not delete a highest role8105AuthorizedProjectUpdate::UserRefreshWithLowUrgencyWorker8106 is labeled as low urgency8107 behaves like refreshes user's project authorizations8108 #perform8109 refreshes user's authorized projects8110 when the user is not found8111 does nothing8112 behaves like an idempotent worker8113 is labeled as idempotent8114 performs multiple times sequentially without raising an exception8115 does not change authorizations when run twice8116Gitlab::Git::Changes8117 #includes_branches?8118 has changes for branches8119 is expected to be truthy8120 has no changes for branches8121 is expected to be falsey8122 #includes_tags?8123 has changes for tags8124 is expected to be truthy8125 has no changes for tags8126 is expected to be falsey8127 #add_branch_change8128 adds the branch change to the collection8129 does not add the change as a tag change8130 #add_tag_change8131 adds the tag change to the collection8132 does not add the change as a branch change8133Mutations::Terraform::State::Unlock8134 is expected to eq "TerraformStateUnlock"8135 is expected to require graphql authorizations :admin_terraform_state8136 #resolve8137 user does not have permission8138 raises an error8139 user has permission8140 unlocks the state8141 state is already unlocked8142 does not modify the state8143 with invalid params8144 raises an error8145Gitlab::DataBuilder::WikiPage8146 .build8147 is expected to be a kind of Hash8148 is expected to eq "wiki_page"8149 is expected to eq {:avatar_url=>"https://www.gravatar.com/avatar/bed6ab8e57ec6cdc5020639053c52d30?s=80&d=identicon", :email=>"[REDACTED]", :id=>2102, :name=>"Sidney Jones2315", :username=>"user1074"}8150 is expected to eq {:avatar_url=>nil, :ci_config_path=>nil, :default_branch=>"master", :description=>nil, :git_http_url=...1104/project1350.git", :visibility_level=>0, :web_url=>"http://localhost/namespace1104/project1350"}8151 is expected to eq {:default_branch=>"main", :git_http_url=>"http://localhost/namespace1104/project1350.wiki.git", :git_...amespace1104/project1350.wiki", :web_url=>"http://localhost/namespace1104/project1350/-/wikis/home"}8152 is expected to include {:slug => "Page-1", :title => "Page 1", :content => "Content for wiki page", :format => :markdown, :message => nil, "content" => "Content for wiki page"}8153 is expected to include {:url => "http://localhost/namespace1104/project1350/-/wikis/Page-1"}8154 is expected to include {:action => "create"}8155 is expected to include {:diff_url => "http://localhost/namespace1104/project1350/-/wikis/Page-1/diff?version_id=2a71f0217264767374e550f9bc006911ad405d7a"}8156BulkImports::Groups::Pipelines::SubgroupEntitiesPipeline8157 #run8158 creates entities for the subgroups8159 #load8160 creates entities for the given data8161 pipeline parts8162 is expected to includes the BulkImports::Pipeline module8163 is expected to includes the BulkImports::Pipeline::Runner module8164 has extractors8165 has transformers8166projects/environments/terminal8167 when environment has external URL8168 shows external URL button8169 when environment does not have external URL8170 shows external URL button8171Gitlab::CryptoHelper8172 .sha2568173 generates SHA256 digest Base46 encoded8174 .aes256_gcm_encrypt8175 is Base64 encoded string without new line character8176 encrypts using static iv8177 with provided iv8178 encrypts using provided iv8179 .aes256_gcm_decrypt8180 when token was encrypted using static nonce8181 correctly decrypts encrypted string8182 decrypts a value when it ends with a new line character8183 when token was encrypted using random nonce8184 correctly decrypts encrypted string8185Gitlab::Ci::Config::Entry::Release::Assets::Link8186 validation8187 when entry config value is correct8188 #value8189 returns link configuration8190 #valid?8191 is valid8192 when entry value is not correct8193 #errors8194 when name is not a string8195 reports error8196 when name is not present8197 reports error8198 when url is not addressable8199 reports error8200 when url is not present8201 reports error8202 when there is an unknown key present8203 reports error8204Gitlab::Database::PostgresqlAdapter::EmptyQueryPing8205 #active?8206 uses an empty query to check liveness8207 returns true if no error was signaled8208 returns false when an error occurs8209ServiceHookPresenter8210 #logs_details_path8211 is expected to eq "/namespace1107/project1353/-/services/drone_ci/hook_logs/1"8212 #logs_retry_path8213 is expected to eq "/namespace1108/project1354/-/services/drone_ci/hook_logs/2/retry"8214Types::Ci::PipelineType8215 is expected to eq "Pipeline"8216 is expected to expose permissions using Types::PermissionTypes::Ci::Pipeline8217 contains attributes related to a pipeline8218Issues::AfterCreateService8219 #execute8220 creates a pending todo for new assignee8221 deletes milestone issues count cache8222 with a regular issue8223 behaves like does not track incident management event8224 does not track the event8225 with an incident issue8226 behaves like an incident management tracked event8227 .track_event8228 tracks the event using redis8229Gitlab::FormBuilders::GitlabUiFormBuilder8230 #gitlab_ui_checkbox_component8231 without optional arguments8232 renders correct html8233 with optional arguments8234 renders help text8235 passes arguments to `check_box` method8236 passes arguments to `label` method8237 #gitlab_ui_radio_component8238 without optional arguments8239 renders correct html8240 with optional arguments8241 renders help text8242 passes arguments to `radio_button` method8243 passes arguments to `label` method8244Gitlab::GitlabImport::Client8245 all OAuth2 client options are symbols8246 uses membership and simple flags8247 #projects8248 behaves like pagination params8249 allows page_limit param8250 allows per_page param8251 allows starting_page param8252 #issues8253 behaves like pagination params8254 allows page_limit param8255 allows per_page param8256 allows starting_page param8257 #issue_comments8258 behaves like pagination params8259 allows page_limit param8260 allows per_page param8261 allows starting_page param8262WikiDirectory8263 validations8264 is expected to validate that :slug cannot be empty/falsy8265 .group_pages8266 returns a nested array of entries8267 #initialize8268 when there are entries8269 sets the slug attribute8270 sets the entries attribute8271 when there are no entries8272 sets the slug attribute8273 sets the entries attribute to an empty array8274 #title8275 returns the basename of the directory, with hyphens replaced by spaces8276 #to_partial_path8277 returns the relative path to the partial to be used8278GroupDestroyWorker8279 #perform8280 deletes the project8281Ci::PipelineBridgeStatusService8282 #execute8283 when pipeline has upstream bridge8284 calls inherit_status_from_downstream on upstream bridge8285 when bridge job status raises state machine errors8286 tracks the exception8287UserSerializer8288 serializer with merge request context8289 returns a user with can_merge option8290PipelineHooksWorker8291 #perform8292 when pipeline exists8293 executes hooks for the pipeline8294 when pipeline does not exist8295 does not raise exception8296 behaves like worker with data consistency8297 .get_data_consistency_feature_flag_enabled?8298 returns true8299 .get_data_consistency8300 returns correct data consistency8301Packages::Nuget::PackageMetadataPresenter8302 #json_url8303 is expected to end with "/api/v4/projects/1289/packages/nuget/metadata/NugetPackage10/1.0.10.json"8304 #archive_url8305 is expected to end with "/api/v4/projects/1289/packages/nuget/download/NugetPackage10/1.0.10/NugetPackage10.1.0.10.nupkg"8306 #catalog_entry8307 returns an entry structure8308UserStatusCleanup::BatchWorker8309 is labeled as idempotent8310 performs multiple times sequentially without raising an exception8311 #perform8312 cleans up the records8313 when no records are scheduled for cleanup8314 does nothing8315Gitlab::RepositorySizeErrorMessage8316 error messages8317 #commit_error8318 returns the correct message8319 #merge_error8320 returns the correct message8321 #push_error8322 with exceeded_limit value8323 returns the correct message8324 without exceeded_limit value8325 returns the correct message8326 #new_changes_error8327 when additional repo storage is available8328 returns the correct message8329 when no additional repo storage is available8330 returns the correct message8331ResourceEvents::MergeIntoNotesService8332 #execute8333 merges label events into notes in order of created_at8334 squashes events with same time and author into single note8335 fetches only notes created after last_fetched_at8336 preloads the note author's status8337clusters/clusters/gcp/_form8338 with all feature flags enabled8339 has a cloud run checkbox8340RuboCop::Cop::PreferClassMethodsOverModule8341 flags violation when using module ClassMethods and corrects8342 doesn't flag violation when using class_methods8343 doesn't flag violation when module is not extending ActiveSupport::Concern8344 doesn't flag violation when ClassMethods is used inside a class8345 doesn't flag violation when not using either class_methods or ClassMethods8346Resolvers::ProjectPipelineStatisticsResolver8347 is expected to have nullable GraphQL type PipelineAnalytics8348 #resolve8349 returns the pipelines statistics for a given project8350 when the user does not have access to the CI/CD analytics data8351 returns nil8352JiraConnect::AppDataSerializer8353 #as_json8354 uses the subscription entity8355 includes a group path with already subscribed namespaces as skip_groups8356 is expected to include {:subscriptions_path => "/-/jira_connect/subscriptions"}8357 is expected to include {:login_path => "/-/jira_connect/users"}8358 when signed in8359 is expected to include {:login_path => nil}8360Gitlab::Middleware::BasicHealthCheck8361 #call8362 outside IP8363 returns a 4048364 forwards the call for other paths8365 with X-Forwarded-For headers8366 returns 200 response when endpoint is allowed8367 returns 404 when whitelist is not configured8368 whitelisted IP8369 returns 200 response when endpoint is hit8370 forwards the call for other paths8371PagesDomainPresenter8372 needs_validation?8373 pages_verification_enabled: false, traits: :unverified, expected: false8374 is expected to eq false8375 pages_verification_enabled: false, traits: [], expected: false8376 is expected to eq false8377 pages_verification_enabled: true, traits: :unverified, expected: true8378 is expected to eq true8379 pages_verification_enabled: true, traits: [], expected: false8380 is expected to eq false8381 show_auto_ssl_failed_warning?8382 is expected to eq false8383 when we failed to obtain Let's Encrypt's certificate8384 is expected to eq true8385 when Let's Encrypt integration is disabled8386 is expected to eq false8387 when domain is unverified8388 is expected to eq false8389JiraConnect::SyncDeploymentsWorker8390 behaves like worker with data consistency8391 .get_data_consistency_feature_flag_enabled?8392 returns true8393 .get_data_consistency8394 returns correct data consistency8395 #perform8396 when the object exists8397 calls the Jira sync service8398 when the object does not exist8399 does not call the sync service8400Tooling::Crystalball::CoverageLinesExecutionDetector8401 #detect8402 is expected to eq ["file.rb"]8403 with no changes8404 is expected to eq []8405 with previously uncovered file8406 is expected to eq ["file.rb"]8407 with path outside of root8408 is expected to eq []8409 with path in excluded prefix8410 is expected to eq []8411RuboCop::Cop::Gitlab::DelegatePredicateMethods8412 registers offense for single predicate method with allow_nil:true8413 registers offense for multiple predicate methods with allow_nil:true8414 registers no offense for non-predicate method with allow_nil:true8415 registers no offense with predicate method with allow_nil:false8416 registers no offense with predicate method without allow_nil8417Approval8418 presence validation8419 is expected to validate that :merge_request_id cannot be empty/falsy8420 is expected to validate that :user_id cannot be empty/falsy8421 uniqueness validation8422 is expected to validate that :user_id is case-sensitively unique within the scope of :merge_request_id8423Users::DismissCalloutService8424 #execute8425 behaves like dismissing user callout8426 creates a new user callout8427 returns a user callout8428 sets the dismissed_at attribute to current time8429 updates an existing callout dismissed_at time8430 does not update an invalid record with dismissed_at time8431Import::ManifestProviderRepoEntity8432 behaves like exposes required fields for import entity8433 exposes required fields8434 correctly exposes id8435 correctly exposes full name8436 correctly exposes sanitized name8437 correctly exposes provider link8438Gitlab::CodeNavigationPath8439 when there is an artifact with code navigation data8440 when a pipeline exist for a sha8441 returns path to a file in the artifact8442 when passed commit sha is nil8443 returns path to a file in the artifact8444 when a pipeline exist for the latest commits8445 returns path to a file in the artifact8446Gitlab::ImportExport::DesignRepoRestorer8447 bundle a design Git repo8448 restores the repo successfully8449RuboCop::Cop::Gitlab::PolicyRuleBoolean8450 registers offense for &&8451 registers offense for ||8452 registers offense for if8453 registers offense for ternary operator8454 registers no offense for &8455 registers no offense for |8456DiffViewer::Image8457 .can_render?8458 returns false if both old and new blob are absent8459 returns true if the old blob is present8460 returns true if the new blob is present8461 returns true if both old and new blobs are present8462DiffViewerEntity8463 serializes diff file viewer8464Gitlab::Graphql::Pagination::Connections8465-- create_table(:_test_testing_pagination_nodes, {:force=>true})8466 -> 0.0036s8467 OffsetPaginatedRelation8468 maps to Gitlab::Graphql::Pagination::OffsetActiveRecordRelationConnection8469 ActiveRecord::Relation8470 maps to Gitlab::Graphql::Pagination::Keyset::Connection8471 ExternallyPaginatedArray8472 maps to Gitlab::Graphql::Pagination::ExternallyPaginatedArrayConnection8473 Array8474 maps to Gitlab::Graphql::Pagination::ArrayConnection8475-- drop_table(:_test_testing_pagination_nodes, {:force=>true})8476 -> 0.0016s8477Gitlab::SidekiqMiddleware::DuplicateJobs::Client8478 with until_executing strategy8479 behaves like client duplicate job8480 #call8481 adds a correct duplicate tag to the jobs8482 without scheduled deduplication8483 does not mark a job that's scheduled in the future as a duplicate8484 with scheduled deduplication8485 adds a correct duplicate tag to the jobs8486 with until_executed strategy8487 behaves like client duplicate job8488 #call8489 adds a correct duplicate tag to the jobs8490 without scheduled deduplication8491 does not mark a job that's scheduled in the future as a duplicate8492 with scheduled deduplication8493 adds a correct duplicate tag to the jobs8494admin mode on tasks8495 with a regular user8496 matches the expected admin mode8497 with an admin8498 matches the expected admin mode8499AlertManagement::AlertPresenter8500 #issue_description8501 with an empty payload8502 is expected to eq "**Start time:** 14 December 2021, 1:56AM (UTC) \n**Severity:** critical \n**GitLab alert:** http://localhost/namespace1144/project1390/-/alert_management/2/details\n"8503 with optional alert attributes8504 is expected to eq "**Start time:** 14 December 2021, 1:56AM (UTC) \n**Severity:** critical \n**full_query:** `metric ...tem. \n**GitLab alert:** http://localhost/namespace1144/project1390/-/alert_management/3/details\n"8505 with incident markdown8506 is expected to eq "**Start time:** 14 December 2021, 1:56AM (UTC) \n**Severity:** critical \n**GitLab alert:** http:/...localhost/namespace1144/project1390/-/alert_management/2/details\n\n\n---\n\n**`markdown example`**"8507 with metrics_dashboard_url8508 is expected to eq "**Start time:** 14 December 2021, 1:56AM (UTC) \n**Severity:** critical \n**GitLab alert:** http:/.../localhost/namespace1144/project1390/-/alert_management/2/details\n\n[](https://gitlab.com/metrics)"8509 #start_time8510 formats the start time of the alert8511 #details_url8512 returns the details URL8513 #details8514 renders the payload as inline hash8515Experiments::RecordConversionEventWorker#perform8516 when the experiment is active8517 is labeled as idempotent8518 performs multiple times sequentially without raising an exception8519 records the event8520 when the experiment is not active8521 records the event8522Gitlab::ImportExport::LegacyRelationTreeSaver8523 #serialize8524 when export_reduce_relation_batch_size feature flag is enabled8525 uses FastHashSerializer8526 when export_reduce_relation_batch_size feature flag is disabled8527 uses FastHashSerializer8528Gitlab::Utils::DelegatorOverride::Validator8529 #add_allowlist8530 adds a method name to the allowlist8531 #add_target8532 adds the target class8533 #expand_on_ancestors8534 adds the allowlist in the ancestors8535 #validate_overrides!8536 does not raise an error when the overrides are allowed8537 raises an error when there is an override8538Gitlab::Graphql::NegatableArguments8539 #negated8540 defines :not argument8541 defines any arguments passed as block8542 defines all arguments passed as block even if called multiple times8543 allows to specify custom argument name8544Gitlab::ImportExport::AfterExportStrategyBuilder8545 .build!8546 initializes strategy with attributes param8547 when klass param is8548 null it returns the default strategy8549 not a valid class it raises StrategyNotFoundError exception8550 not a descendant of AfterExportStrategy8551Gitlab::GithubImport::BulkImporting8552 #build_database_rows8553 returns an Array containing the rows to insert8554 does not import objects that have already been imported8555 #bulk_insert8556 bulk inserts rows into the database8557Types::MergeRequestStateEnum8558 is expected to eq "MergeRequestState"8559 exposes all the existing merge request states8560 behaves like issuable state8561 exposes all the existing issuable states8562Gitlab::PhabricatorImport::Conduit::UsersResponse8563 #users8564 builds the correct users representation8565BaseContainerService8566 #initialize8567 accepts container and current_user8568 treats current_user as optional8569Gitlab::SidekiqMiddleware::ExtraDoneLogMetadata8570 #call8571 merges Application#logging_extras in to job8572 does not raise when the worker does not respond to #done_log_extra_metadata8573admin/application_settings/_repository_storage.html.haml8574 additional storage config8575 lists them all8576 fewer storage configs8577 lists only configured storages8578ProtectedBranch::MergeAccessLevel8579 is expected to validate that :access_level is either ‹40›, ‹30›, or ‹0›8580AccessibilityReportsComparerEntity8581 #as_json8582 when base report has error and head has a different error8583 contains correct compared accessibility report details8584 when base report has error and head has the same error8585 contains correct compared accessibility report details8586 when base report has no error and head has errors8587 contains correct compared accessibility report details8588Types::DesignManagement::DesignVersionEventEnum8589 is expected to eq "DesignVersionEvent"8590 exposes the correct event states8591Peek::Views::Memory8592 with process_action.action_controller notification8593 returns empty results when it has not yet fired8594 returns memory instrumentation data when it has fired8595OneTrustHelper8596 #one_trust_enabled?8597 with ecomm_instrumentation feature flag disabled8598 is expected to be falsey8599 with ecomm_instrumentation feature flag enabled8600 when no id is set8601 is expected to be falsey8602Gitlab::HashedPath8603 #to_s8604 when path contains a single value8605 returns the disk path8606 when path contains multiple values8607 returns the disk path8608API::Entities::DeployKeysProject8609 #as_json8610 includes basic fields8611API::Validations::Validators::ProjectPortable8612 valid portable8613 does not raise a validation error8614 empty params8615 raises a validation error8616 not portable8617 raises a validation error8618Sidebars::Projects::Menus::RepositoryMenu8619 #render?8620 when project repository is empty8621 returns false8622 when project repository is not empty8623 when user can download code8624 returns true8625 when user cannot download code8626 returns false8627RuboCop::Cop::RSpec::TimecopFreeze8628 when calling Timecop.freeze8629 registers an offense and corrects8630 when calling a different method on Timecop8631 does not register an offense8632RuboCop::Cop::QA::SelectorUsage8633 in a QA file8634 has no error8635 outside of QA8636 data-qa-selector8637 behaves like non-qa file usage8638 reports an offense8639 qa class8640 behaves like non-qa file usage8641 reports an offense8642Gitlab::Ci::Build::Port8643 when port is defined as an integer8644 populates the object8645 when port is defined as hash8646 populates the object8647RuboCop::QAHelpers8648 #in_qa_file?8649 returns true for a node in the qa/ directory8650 returns false for a node outside the qa/ directory8651groups/runners/sort_dropdown.html.haml8652 render8653 when a sort option is not selected8654 renders a default sort option8655 when a sort option is selected8656 renders the selected sort option8657Mailer retries8658 sets retries for mailers to 38659Gitlab::Chat8660 .available?8661 returns true when the chatops feature is available8662 returns false when the chatops feature is not available8663Gitlab::Database::BackgroundMigration::BatchMetrics8664 #time_operation8665 tracks the duration of the operation using monotonic time8666Constraints::FeatureConstrainer8667 #matches8668 calls Feature.enabled? with the correct arguments8669Gitlab::SidekiqMiddleware::SizeLimiter::Server8670 yields block8671 calls the Compressor8672Types::Ci::Config::JobType8673 is expected to eq "CiConfigJob"8674 exposes the expected fields8675Packages::Rubygems::Metadatum8676 relationships8677 is expected to belong to package required: false8678 validations8679 is expected to validate that :package cannot be empty/falsy8680 #rubygems_package_type8681 will not allow a package with a different package_type8682Gitlab::ActionCable::RequestStoreCallbacks8683 .wrapper8684 enables RequestStore in the inner block8685Gitlab::Git::Patches::Patch8686 #size8687 is correct8688Evidences::ReleaseSerializer8689 represents an Evidence::ReleaseEntity entity8690Types::Packages::PackageTypeEnum8691 exposes all package types8692FromUnion8693 behaves like from set operator8694 #from_union8695 selects from the results of the UNION8696 supports the use of a custom alias for the sub query8697 supports keeping duplicate rows8698Gitlab::SidekiqMiddleware::WorkerContext::Server8699 #call8700 applies a class context8701 doesn't fail for unknown workers8702 feature category8703 takes the feature category from the worker8704 when the worker is not owned8705 takes the feature category from the surrounding context8706errors/access_denied8707 does not fail to render when there is no message provided8708Gitlab::Database::AsyncIndexes8709 .create_pending_indexes!8710 takes 2 pending indexes and creates those8711UploaderHelper8712 #extension_match?8713 returns false if file does not exist8714Ci::CodequalityMrDiffEntity8715 #as_json8716 when quality report has degradations8717 contains correct codequality mr diff report8718Knapsack report was generated. Preview:8719{8720 "spec/models/merge_request_spec.rb": 227.87205425799948,8721 "spec/policies/project_policy_spec.rb": 108.22286489399994,8722 "spec/services/git/branch_push_service_spec.rb": 129.82362319499953,8723 "spec/finders/group_members_finder_spec.rb": 104.82423891899998,8724 "spec/uploaders/design_management/design_v432x230_uploader_spec.rb": 68.48216199200033,8725 "spec/lib/gitlab/usage_data_metrics_spec.rb": 71.78426303300148,8726 "spec/models/ci/runner_spec.rb": 31.60623311100062,8727 "spec/policies/project_statistics_policy_spec.rb": 43.96543845999986,8728 "spec/services/merge_requests/merge_service_spec.rb": 40.933501942001385,8729 "spec/services/boards/lists/move_service_spec.rb": 36.18515005699919,8730 "spec/policies/blob_policy_spec.rb": 25.47289008900043,8731 "spec/models/integrations/bamboo_spec.rb": 17.090555155999027,8732 "spec/lib/gitlab/ci/config/entry/job_spec.rb": 11.913097849001133,8733 "spec/lib/banzai/color_parser_spec.rb": 9.144105172999843,8734 "spec/lib/gitlab/gitaly_client/commit_service_spec.rb": 16.912589997000396,8735 "spec/lib/gitlab/project_authorizations_spec.rb": 22.967806795000797,8736 "spec/models/pages_domain_spec.rb": 13.48794416400051,8737 "spec/helpers/namespaces_helper_spec.rb": 20.87066208500073,8738 "spec/serializers/environment_serializer_spec.rb": 19.87195944099949,8739 "spec/models/notification_recipient_spec.rb": 18.181568221998532,8740 "spec/uploaders/workers/object_storage/migrate_uploads_worker_spec.rb": 17.434572112999376,8741 "spec/services/members/update_service_spec.rb": 18.876238836000994,8742 "spec/models/merge_request_diff_file_spec.rb": 12.380091287999676,8743 "spec/workers/packages/debian/process_changes_worker_spec.rb": 18.75968407399887,8744 "spec/lib/error_tracking/sentry_client/issue_spec.rb": 11.1113796919999,8745 "spec/lib/gitlab/usage/metric_definition_spec.rb": 10.523299641001358,8746 "spec/models/concerns/chronic_duration_attribute_spec.rb": 12.942810880002071,8747 "spec/lib/gitlab/hashed_storage/migrator_spec.rb": 15.621425033001287,8748 "spec/workers/process_commit_worker_spec.rb": 14.432824391000395,8749 "spec/serializers/issue_entity_spec.rb": 11.530809424000836,8750 "spec/lib/gitlab/json_spec.rb": 2.3346384940014104,8751 "spec/models/concerns/routable_spec.rb": 5.673020393000115,8752 "spec/lib/gitlab/experimentation/controller_concern_spec.rb": 4.094696117001149,8753 "spec/services/jira/requests/projects/list_service_spec.rb": 10.669822690999354,8754 "spec/models/ci/daily_build_group_report_result_spec.rb": 10.962043741999878,8755 "spec/services/projects/protect_default_branch_service_spec.rb": 8.32332150700131,8756 "spec/lib/gitlab/import_export/group/relation_tree_restorer_spec.rb": 9.351339468999868,8757 "spec/services/snippets/destroy_service_spec.rb": 7.2866619559990795,8758 "spec/lib/gitlab/kubernetes/helm/v2/init_command_spec.rb": 9.898116033000406,8759 "spec/lib/gitlab/database/migration_helpers/v2_spec.rb": 2.847867671000131,8760 "spec/lib/gitlab/ci/trace/checksum_spec.rb": 8.305170547999296,8761 "spec/policies/ci/pipeline_policy_spec.rb": 8.010174588000154,8762 "spec/lib/container_registry/blob_spec.rb": 7.484925802998987,8763 "spec/services/clusters/applications/check_ingress_ip_address_service_spec.rb": 9.788322369000525,8764 "spec/finders/fork_projects_finder_spec.rb": 10.33676362299957,8765 "spec/lib/gitlab/pagination/keyset/paginator_spec.rb": 3.668697255998268,8766 "spec/services/issues/set_crm_contacts_service_spec.rb": 6.185727500000212,8767 "spec/services/ci/archive_trace_service_spec.rb": 7.800591842000358,8768 "spec/services/snippets/update_statistics_service_spec.rb": 6.366079088000333,8769 "spec/finders/projects/groups_finder_spec.rb": 4.791423091999604,8770 "spec/services/ci/job_artifacts/create_service_spec.rb": 7.530689159000758,8771 "spec/lib/gitlab/error_tracking_spec.rb": 4.322462522999558,8772 "spec/presenters/projects/settings/deploy_keys_presenter_spec.rb": 8.454742598998564,8773 "spec/lib/gitlab/slash_commands/presenters/issue_move_spec.rb": 4.897813035000581,8774 "spec/views/notify/pipeline_failed_email.html.haml_spec.rb": 7.158079634000387,8775 "spec/services/labels/create_service_spec.rb": 5.054704135000065,8776 "spec/lib/gitlab/metrics/methods_spec.rb": 2.1702353059990855,8777 "spec/models/hooks/project_hook_spec.rb": 5.001453337999919,8778 "spec/views/projects/merge_requests/show.html.haml_spec.rb": 7.0404367730006925,8779 "spec/models/concerns/schedulable_spec.rb": 4.727092835999429,8780 "spec/serializers/discussion_diff_file_entity_spec.rb": 5.53463658200053,8781 "spec/finders/contributed_projects_finder_spec.rb": 6.39854585500143,8782 "spec/lib/gitlab/database/count_spec.rb": 6.8721254439988115,8783 "spec/models/concerns/project_features_compatibility_spec.rb": 5.660291374000735,8784 "spec/services/concerns/rate_limited_service_spec.rb": 4.977810389000297,8785 "spec/lib/gitlab/rack_attack_spec.rb": 1.9091895929996099,8786 "spec/lib/gitlab/ci/reports/test_reports_spec.rb": 3.030892288999894,8787 "spec/tasks/gettext_rake_spec.rb": 8.668160556999283,8788 "spec/services/ci/run_scheduled_build_service_spec.rb": 5.191980015999434,8789 "spec/lib/gitlab/visibility_level_checker_spec.rb": 4.312588946999313,8790 "spec/lib/gitlab/slash_commands/presenters/issue_show_spec.rb": 4.21370422200016,8791 "spec/workers/ci/delete_unit_tests_worker_spec.rb": 6.273120136000216,8792 "spec/models/packages/dependency_link_spec.rb": 4.472939667000901,8793 "spec/lib/gitlab/kubernetes/helm/v2/install_command_spec.rb": 2.247431912999673,8794 "spec/config/inject_enterprise_edition_module_spec.rb": 2.508422569000686,8795 "spec/models/lfs_download_object_spec.rb": 2.5285225880015787,8796 "spec/lib/gitlab/ci/config/entry/service_spec.rb": 4.7319638219996705,8797 "spec/finders/concerns/finder_with_group_hierarchy_spec.rb": 4.182337533999089,8798 "spec/lib/gitlab/ci/reports/security/report_spec.rb": 4.078698469000301,8799 "spec/lib/gitlab/shell_spec.rb": 4.0311762020010065,8800 "spec/services/terraform/remote_state_handler_spec.rb": 3.4961825919999683,8801 "spec/helpers/routing/pseudonymization_helper_spec.rb": 3.1875033899996197,8802 "spec/lib/gitlab/database/partitioning/time_partition_spec.rb": 3.4803333330000896,8803 "spec/views/projects/commit/show.html.haml_spec.rb": 2.6107108520009206,8804 "spec/lib/banzai/reference_parser/label_parser_spec.rb": 4.01766715300073,8805 "spec/lib/banzai/filter/wiki_link_filter_spec.rb": 1.8759491729997535,8806 "spec/views/shared/_global_alert.html.haml_spec.rb": 3.2759073649995116,8807 "spec/services/alert_management/alerts/todo/create_service_spec.rb": 3.1361764329994912,8808 "spec/graphql/resolvers/design_management/version/design_at_version_resolver_spec.rb": 4.691875104999781,8809 "spec/lib/gitlab/kubernetes/helm/v3/patch_command_spec.rb": 2.8313882799993735,8810 "spec/services/chat_names/find_user_service_spec.rb": 2.3471614080008294,8811 "spec/graphql/mutations/terraform/state/delete_spec.rb": 1.1932686020008987,8812 "spec/services/metrics/dashboard/transient_embed_service_spec.rb": 2.2221030139990035,8813 "spec/lib/gitlab/null_request_store_spec.rb": 0.8730104799997207,8814 "spec/models/experiment_subject_spec.rb": 1.3392139740008133,8815 "spec/models/integrations/bugzilla_spec.rb": 1.4867510659987602,8816 "spec/lib/gitlab/wiki_pages/front_matter_parser_spec.rb": 1.4109740309995686,8817 "spec/lib/gitlab/checks/diff_check_spec.rb": 4.1442864860000554,8818 "spec/workers/concerns/limited_capacity/worker_spec.rb": 0.9094467689992598,8819 "spec/finders/protected_branches_finder_spec.rb": 2.928766794000694,8820 "spec/models/packages/debian/group_distribution_key_spec.rb": 1.414824920000683,8821 "spec/lib/gitlab/ci/config/external/file/project_spec.rb": 3.058037847000378,8822 "spec/lib/gitlab/database/partitioning_migration_helpers/index_helpers_spec.rb": 1.137835546000133,8823 "spec/models/ci/freeze_period_spec.rb": 1.2557690989997354,8824 "spec/lib/gitlab/suggestions/suggestion_set_spec.rb": 2.8525096390003455,8825 "spec/lib/banzai/reference_parser/mentioned_user_parser_spec.rb": 2.899931687001299,8826 "spec/lib/gitlab/config/entry/undefined_spec.rb": 0.6678706929997134,8827 "spec/tasks/gitlab/external_diffs_rake_spec.rb": 3.1604713409997203,8828 "spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_stage_end_spec.rb": 1.4219492499996704,8829 "spec/finders/prometheus_metrics_finder_spec.rb": 1.4090507599994453,8830 "spec/lib/gitlab/static_site_editor/config/generated_config_spec.rb": 2.352265036999597,8831 "spec/workers/personal_access_tokens/expiring_worker_spec.rb": 1.0807866390005074,8832 "spec/lib/gitlab/bullet/exclusions_spec.rb": 1.034588750999319,8833 "spec/lib/gitlab/jwt_authenticatable_spec.rb": 0.7505678380002792,8834 "spec/graphql/mutations/todos/mark_all_done_spec.rb": 2.917965175000063,8835 "spec/services/ci/job_token_scope/remove_project_service_spec.rb": 1.7758752890003962,8836 "spec/validators/json_schema_validator_spec.rb": 1.9445467810000991,8837 "spec/views/projects/diffs/_viewer.html.haml_spec.rb": 2.836305889999494,8838 "spec/services/error_tracking/base_service_spec.rb": 0.7090588699993532,8839 "spec/lib/gitlab/git/keep_around_spec.rb": 2.760833274000106,8840 "spec/presenters/ci/group_variable_presenter_spec.rb": 1.4901629659998434,8841 "spec/lib/api/helpers/related_resources_helpers_spec.rb": 0.8150888229993143,8842 "spec/lib/bulk_imports/groups/loaders/group_loader_spec.rb": 1.4472617989995342,8843 "spec/services/ci/pipeline_artifacts/coverage_report_service_spec.rb": 3.2843733040008374,8844 "spec/graphql/mutations/terraform/state/lock_spec.rb": 2.2072674249993725,8845 "spec/services/snippets/count_service_spec.rb": 2.3021686900010536,8846 "spec/lib/banzai/filter/inline_cluster_metrics_filter_spec.rb": 2.356070837000516,8847 "spec/services/ci/compare_test_reports_service_spec.rb": 2.710894775998895,8848 "spec/lib/gitlab/dependency_linker/package_json_linker_spec.rb": 1.5515635529991414,8849 "spec/helpers/instance_configuration_helper_spec.rb": 1.010372663000453,8850 "spec/graphql/mutations/security/ci_configuration/configure_secret_detection_spec.rb": 2.6311920520001877,8851 "spec/services/system_notes/base_service_spec.rb": 0.7912182949985436,8852 "spec/lib/gitlab/ci/templates/5_minute_production_app_ci_yaml_spec.rb": 2.9711427020010888,8853 "spec/lib/gitlab/kas/client_spec.rb": 1.4608861569995497,8854 "spec/serializers/member_serializer_spec.rb": 2.457567460998689,8855 "spec/lib/banzai/filter/inline_diff_filter_spec.rb": 1.398697811000602,8856 "spec/graphql/types/namespace_type_spec.rb": 0.6283070350000344,8857 "spec/lib/gitlab/exclusive_lease_helpers_spec.rb": 1.1340247059997637,8858 "spec/services/audit_event_service_spec.rb": 1.853140125000209,8859 "spec/models/gpg_key_subkey_spec.rb": 0.7087418900009652,8860 "spec/lib/gitlab/graphql/batch_key_spec.rb": 0.7872518050007784,8861 "spec/graphql/resolvers/design_management/design_at_version_resolver_spec.rb": 1.8022126979994937,8862 "spec/lib/gitlab/loop_helpers_spec.rb": 1.7004750240012072,8863 "spec/rubocop/cop/rspec/env_assignment_spec.rb": 0.6064064059992234,8864 "spec/lib/gitlab/search_context/controller_concern_spec.rb": 2.3028572100010933,8865 "spec/workers/repository_remove_remote_worker_spec.rb": 1.675120476000302,8866 "spec/services/ci/create_pipeline_service/creation_errors_and_warnings_spec.rb": 1.9373068300010345,8867 "spec/lib/gitlab/hook_data/group_builder_spec.rb": 0.7638491569996404,8868 "spec/finders/terraform/states_finder_spec.rb": 1.3819303820000641,8869 "spec/lib/bulk_imports/common/pipelines/entity_finisher_spec.rb": 1.4761897659991519,8870 "spec/workers/migrate_external_diffs_worker_spec.rb": 1.6678230060006172,8871 "spec/graphql/types/base_edge_spec.rb": 2.5937809830011247,8872 "spec/workers/update_highest_role_worker_spec.rb": 1.4830805159999727,8873 "spec/workers/authorized_project_update/user_refresh_with_low_urgency_worker_spec.rb": 1.585319731000709,8874 "spec/lib/gitlab/git/changes_spec.rb": 0.7785108459993353,8875 "spec/graphql/mutations/terraform/state/unlock_spec.rb": 1.797583327999746,8876 "spec/lib/gitlab/data_builder/wiki_page_spec.rb": 1.5156480850000662,8877 "spec/lib/bulk_imports/groups/pipelines/subgroup_entities_pipeline_spec.rb": 1.2366314299997612,8878 "spec/views/projects/environments/terminal.html.haml_spec.rb": 1.8978819219992147,8879 "spec/lib/gitlab/crypto_helper_spec.rb": 0.8184297539992258,8880 "spec/lib/gitlab/ci/config/entry/release/assets/link_spec.rb": 1.0036942930000805,8881 "spec/lib/gitlab/database/postgresql_adapter/empty_query_ping_spec.rb": 0.6935788210012106,8882 "spec/presenters/service_hook_presenter_spec.rb": 2.7365514950015495,8883 "spec/graphql/types/ci/pipeline_type_spec.rb": 0.6290151349985535,8884 "spec/services/issues/after_create_service_spec.rb": 1.5673734320007497,8885 "spec/lib/gitlab/form_builders/gitlab_ui_form_builder_spec.rb": 0.8286856830000033,8886 "spec/lib/gitlab/gitlab_import/client_spec.rb": 1.243369289999464,8887 "spec/models/wiki_directory_spec.rb": 0.8373544219994074,8888 "spec/workers/group_destroy_worker_spec.rb": 1.7349498820003646,8889 "spec/services/ci/pipeline_bridge_status_service_spec.rb": 1.6440717170007701,8890 "spec/serializers/user_serializer_spec.rb": 1.4297610390003683,8891 "spec/workers/pipeline_hooks_worker_spec.rb": 1.0053949329994794,8892 "spec/presenters/packages/nuget/package_metadata_presenter_spec.rb": 1.379417531999934,8893 "spec/workers/user_status_cleanup/batch_worker_spec.rb": 1.042403651999848,8894 "spec/lib/gitlab/repository_size_error_message_spec.rb": 0.8206876139993255,8895 "spec/services/resource_events/merge_into_notes_service_spec.rb": 1.8768394040016574,8896 "spec/views/projects/clusters/clusters/gcp/_form.html.haml_spec.rb": 1.8978248719995463,8897 "spec/rubocop/cop/prefer_class_methods_over_module_spec.rb": 0.70414903100027,8898 "spec/graphql/resolvers/project_pipeline_statistics_resolver_spec.rb": 1.0901515379991906,8899 "spec/serializers/jira_connect/app_data_serializer_spec.rb": 0.9590960859986808,8900 "spec/lib/gitlab/middleware/basic_health_check_spec.rb": 0.7535026770001423,8901 "spec/presenters/pages_domain_presenter_spec.rb": 1.0067275330002303,8902 "spec/workers/jira_connect/sync_deployments_worker_spec.rb": 1.154454404999342,8903 "spec/tooling/lib/tooling/crystalball/coverage_lines_execution_detector_spec.rb": 0.6785518520009646,8904 "spec/rubocop/cop/gitlab/delegate_predicate_methods_spec.rb": 0.6680235929998162,8905 "spec/models/approval_spec.rb": 1.472612425999614,8906 "spec/services/users/dismiss_callout_service_spec.rb": 0.8842307899994921,8907 "spec/serializers/import/manifest_provider_repo_entity_spec.rb": 1.0766461900002469,8908 "spec/lib/gitlab/code_navigation_path_spec.rb": 1.0742919399999664,8909 "spec/lib/gitlab/import_export/design_repo_restorer_spec.rb": 1.3141649560002406,8910 "spec/rubocop/cop/gitlab/policy_rule_boolean_spec.rb": 0.7252572189991042,8911 "spec/models/diff_viewer/image_spec.rb": 0.7082216310009244,8912 "spec/serializers/diff_viewer_entity_spec.rb": 1.007921432999865,8913 "spec/lib/gitlab/graphql/pagination/connections_spec.rb": 0.8172029739998834,8914 "spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/client_spec.rb": 0.7096700699985377,8915 "spec/tasks/admin_mode_spec.rb": 0.919878577999043,8916 "spec/presenters/alert_management/alert_presenter_spec.rb": 1.1410522549995221,8917 "spec/workers/experiments/record_conversion_event_worker_spec.rb": 0.7360689479992288,8918 "spec/lib/gitlab/import_export/legacy_relation_tree_saver_spec.rb": 0.8403496720002295,8919 "spec/lib/gitlab/utils/delegator_override/validator_spec.rb": 0.6248812249996263,8920 "spec/lib/gitlab/graphql/negatable_arguments_spec.rb": 0.7337402590001147,8921 "spec/lib/gitlab/import_export/after_export_strategy_builder_spec.rb": 0.807289343998491,8922 "spec/lib/gitlab/github_import/bulk_importing_spec.rb": 0.7030756200001633,8923 "spec/graphql/types/merge_request_state_enum_spec.rb": 0.6598369629991794,8924 "spec/lib/gitlab/phabricator_import/conduit/users_response_spec.rb": 0.5503682489998027,8925 "spec/services/base_container_service_spec.rb": 0.6134709859998111,8926 "spec/lib/gitlab/sidekiq_middleware/extra_done_log_metadata_spec.rb": 0.6400048239993339,8927 "spec/views/admin/application_settings/_repository_storage.html.haml_spec.rb": 0.6519449930001429,8928 "spec/models/protected_branch/merge_access_level_spec.rb": 0.5681165969999711,8929 "spec/serializers/accessibility_reports_comparer_entity_spec.rb": 0.674719341999662,8930 "spec/graphql/types/design_management/design_version_event_enum_spec.rb": 0.749858196999412,8931 "spec/lib/peek/views/memory_spec.rb": 0.618498144998739,8932 "spec/helpers/one_trust_helper_spec.rb": 0.6893027410005743,8933 "spec/lib/gitlab/hashed_path_spec.rb": 0.6339868439990823,8934 "spec/lib/api/entities/deploy_keys_project_spec.rb": 1.1973354120000295,8935 "spec/lib/api/validations/validators/project_portable_spec.rb": 0.8554722720000427,8936 "spec/lib/sidebars/projects/menus/repository_menu_spec.rb": 0.8631828210000094,8937 "spec/rubocop/cop/rspec/timecop_freeze_spec.rb": 0.6045606560001033,8938 "spec/rubocop/cop/qa/selector_usage_spec.rb": 0.6177391949986486,8939 "spec/lib/gitlab/ci/build/port_spec.rb": 0.7814046560015413,8940 "spec/rubocop/qa_helpers_spec.rb": 0.6559519129987166,8941 "spec/views/groups/runners/_sort_dropdown.html.haml_spec.rb": 0.6829232910004066,8942 "spec/initializers/mailer_retries_spec.rb": 0.747646148000058,8943 "spec/lib/gitlab/chat_spec.rb": 0.6481355029991391,8944 "spec/lib/gitlab/database/background_migration/batch_metrics_spec.rb": 0.6173450549995323,8945 "spec/lib/constraints/feature_constrainer_spec.rb": 0.6174595150005189,8946 "spec/lib/gitlab/sidekiq_middleware/size_limiter/server_spec.rb": 0.6419213540011697,8947 "spec/graphql/types/ci/config/job_type_spec.rb": 0.6282117039991135,8948 "spec/models/packages/rubygems/metadatum_spec.rb": 0.9242552979994798,8949 "spec/lib/gitlab/action_cable/request_store_callbacks_spec.rb": 0.593027646000337,8950 "spec/lib/gitlab/git/patches/patch_spec.rb": 0.5331269299986161,8951 "spec/serializers/evidences/release_serializer_spec.rb": 0.5757746479994239,8952 "spec/graphql/types/packages/package_type_enum_spec.rb": 0.7193933489998017,8953 "spec/models/concerns/from_union_spec.rb": 0.7107127199997194,8954 "spec/lib/gitlab/sidekiq_middleware/worker_context/server_spec.rb": 0.7786283860004914,8955 "spec/views/errors/access_denied.html.haml_spec.rb": 0.7386176279997017,8956 "spec/lib/gitlab/database/async_indexes_spec.rb": 0.6210365850001835,8957 "spec/uploaders/uploader_helper_spec.rb": 0.5892808560001868,8958 "spec/serializers/ci/codequality_mr_diff_entity_spec.rb": 0.54093090000060338959}8960Knapsack global time execution for tests: 28m 19s8961Pending: (Failures listed here are expected and do not affect your suite's status)8962 1) MergeRequest modules behaves like AtomicInternalId .has_internal_id Validation when presence validation is not required when creating an object does not raise an error if the internal id is blank8963 # No reason given8964 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:498965 2) MergeRequest modules behaves like AtomicInternalId .has_internal_id Validation when presence validation is not required when updating an object does not raise an error if the internal id is blank8966 # No reason given8967 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:578968 3) DesignManagement::DesignV432x230Uploader behaves like builds correct paths #cache_dir behaves like matches the method pattern 8969 # No pattern provided, skipping.8970 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88971 4) DesignManagement::DesignV432x230Uploader behaves like builds correct paths #work_dir behaves like matches the method pattern 8972 # No pattern provided, skipping.8973 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88974 5) DesignManagement::DesignV432x230Uploader behaves like builds correct paths #relative_path is relative8975 # Path not set, skipping.8976 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:408977 6) DesignManagement::DesignV432x230Uploader behaves like builds correct paths .base_dir behaves like matches the method pattern 8978 # No pattern provided, skipping.8979 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88980 7) DesignManagement::DesignV432x230Uploader object_store is REMOTE behaves like builds correct paths #cache_dir behaves like matches the method pattern 8981 # No pattern provided, skipping.8982 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88983 8) DesignManagement::DesignV432x230Uploader object_store is REMOTE behaves like builds correct paths #work_dir behaves like matches the method pattern 8984 # No pattern provided, skipping.8985 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88986 9) DesignManagement::DesignV432x230Uploader object_store is REMOTE behaves like builds correct paths #relative_path is relative8987 # Path not set, skipping.8988 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:408989 10) DesignManagement::DesignV432x230Uploader object_store is REMOTE behaves like builds correct paths .absolute_path behaves like matches the method pattern 8990 # No pattern provided, skipping.8991 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88992 11) DesignManagement::DesignV432x230Uploader object_store is REMOTE behaves like builds correct paths .base_dir behaves like matches the method pattern 8993 # No pattern provided, skipping.8994 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88995Finished in 28 minutes 22 seconds (files took 47.13 seconds to load)89964080 examples, 0 failures, 11 pending8997Tue Dec 14 01:56:50 UTC 20218999Not uploading cache ruby-gems-v1-9 due to policy9000Not uploading cache gitaly-ruby-gems-v1-9 due to policy9002Uploading artifacts...9003coverage/: found 5 matching files and directories 9004crystalball/: found 2 matching files and directories 9005deprecations/: found 4 matching files and directories 9006knapsack/: found 3 matching files and directories 9007rspec_flaky/: found 5 matching files and directories 9008rspec_profiling/: found 1 matching files and directories 9009WARNING: tmp/capybara/: no matching files 9010tmp/memory_test/: found 2 matching files and directories 9011log/*.log: found 19 matching files and directories 9012Uploading artifacts as "archive" to coordinator... ok id=1880797998 responseStatus=201 Created token=QEZ25EQM9013Uploading artifacts...9014junit_rspec.xml: found 1 matching files and directories 9015Uploading artifacts as "junit" to coordinator... ok id=1880797998 responseStatus=201 Created token=QEZ25EQM9017Job succeeded