rspec integration pg12 7/10
Passed Started
by
@fguibert
Florie Guibert
1Running with gitlab-runner 15.2.0~beta.17.g34ae4a68 (34ae4a68)2 on green-1.private.runners-manager.gitlab.com/gitlab.com/gitlab-org 4bq1s9yM3 feature flags: FF_USE_FASTZIP:true6Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.17-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-101-yarn-1.22-graphicsmagick-1.3.36 ...7Starting service postgres:12 ...8Pulling docker image postgres:12 ...9Using docker image sha256:ac3b8cd6a8b42e839456256bc514d6230b5a2538c738b3d522e1384a2a172b96 for postgres:12 with digest postgres@sha256:e6ffad42c91a4d5a29257a27ac4e160c3ae7196696b37bf2e80410024ed95951 ...10Starting service redis:6.0-alpine ...11Pulling docker image redis:6.0-alpine ...12Using docker image sha256:09401fed2a421bf0019f96dcec70c85f82ec7b76beb1ae589547b0dc302d6b76 for redis:6.0-alpine with digest redis@sha256:217a9db40a914cc3f6206a143a4d750da0607500cc013a147a4979e08e40beff ...13Waiting for services to be up and running (timeout 30 seconds)...14Authenticating with credentials from job payload (GitLab Registry)15Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.17-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-101-yarn-1.22-graphicsmagick-1.3.36 ...16Using docker image sha256:fd40b0aa863019e7fe9616bf6665ba24d356a369a8b92582a8df89544e3b7544 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.17-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-101-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.17-node-16.14-postgresql-12@sha256:fc314d19087f24a5d21b479ce7a6dc7778b8c941d21ecbe4d62760c7dc533470 ...18Running on runner-4bq1s9ym-project-278964-concurrent-0 via runner-4bq1s9ym-private-1657155742-b9375677...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: 107798, done. 25remote: Counting objects: 100% (107798/107798), done. 26remote: Compressing objects: 100% (76542/76542), done. 27remote: Total 107798 (delta 42645), reused 69839 (delta 27219), pack-reused 0 28Receiving objects: 100% (107798/107798), 104.24 MiB | 31.61 MiB/s, done.29Resolving deltas: 100% (42645/42645), done.31 * [new ref] refs/pipelines/581948065 -> refs/pipelines/58194806532Checking out 5ef8e465 as refs/merge-requests/91652/merge...33Skipping Git submodules setup34$ git remote set-url origin "${CI_REPOSITORY_URL}"36Checking cache for ruby-gems-debian-bullseye-ruby-2.7-14...37Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/ruby-gems-debian-bullseye-ruby-2.7-14 38Successfully extracted cache39Checking cache for gitaly-ruby-gems-debian-bullseye-ruby-2.7-14...40Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/gitaly-ruby-gems-debian-bullseye-ruby-2.7-14 41Successfully extracted cache43Downloading artifacts for compile-test-assets (2688594864)...44Downloading artifacts from coordinator... ok id=2688594864 responseStatus=200 OK token=PXqyu-si45Downloading artifacts for detect-tests (2688594870)...46Downloading artifacts from coordinator... ok id=2688594870 responseStatus=200 OK token=PXqyu-si47Downloading artifacts for retrieve-tests-metadata (2688594877)...48Downloading artifacts from coordinator... ok id=2688594877 responseStatus=200 OK token=PXqyu-si49Downloading artifacts for setup-test-env (2688594868)...50Downloading artifacts from coordinator... ok id=2688594868 responseStatus=200 OK token=PXqyu-si52Using docker image sha256:fd40b0aa863019e7fe9616bf6665ba24d356a369a8b92582a8df89544e3b7544 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.17-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-101-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.17-node-16.14-postgresql-12@sha256:fc314d19087f24a5d21b479ce7a6dc7778b8c941d21ecbe4d62760c7dc533470 ...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.sh593.2.3360Bundler version 2.2.3361Successfully installed bundler-2.3.15621 gem installed63production:development64Settings are listed in order of priority. The top value will be used.65clean66Set for your local app (/builds/gitlab-org/gitlab/.bundle/config): true67frozen68Set via BUNDLE_FROZEN: true69install_flags70Set via BUNDLE_INSTALL_FLAGS: "--jobs=$(nproc) --retry=3 --quiet"71path72Set for your local app (/builds/gitlab-org/gitlab/.bundle/config): "/builds/gitlab-org/gitlab/vendor"73without74Set via BUNDLE_WITHOUT: [:production, :development]75$ bundle install --jobs=$(nproc) --retry=3 --quiet && bundle check76Don't run Bundler as root. Bundler can ask for sudo if it is needed, and77installing your bundle as root will break this application for all non-root78users on this machine.79The Gemfile's dependencies are satisfied80==> 'bundle install --jobs=$(nproc) --retry=3 --quiet && bundle check' succeeded in 2 seconds.81$ bundle pristine pg82Installing pg 1.3.5 with native extensions83==> 'bundle pristine pg' succeeded in 10 seconds.84Using decomposed database config (config/database.yml.decomposed-postgresql)85$ setup_db_user_only86CREATE ROLE87GRANT88==> 'setup_db_user_only' succeeded in 0 seconds.89$ bundle exec rake db:drop db:create db:schema:load db:migrate90Dropped database 'gitlabhq_test'91Dropped database 'gitlabhq_test_ci'92Dropped database 'gitlabhq_geo_test'93Created database 'gitlabhq_test'94Created database 'gitlabhq_test_ci'95Created database 'gitlabhq_geo_test'96==> 'bundle exec rake db:drop db:create db:schema:load db:migrate' succeeded in 39 seconds.97$ setup_db_praefect98SELECT pg_catalog.set_config('search_path', '', false);99CREATE DATABASE praefect_test ENCODING 'UTF8';100==> 'setup_db_praefect' succeeded in 0 seconds.101$ run_timed_command "gem install knapsack --no-document"102$ gem install knapsack --no-document103Successfully installed knapsack-4.0.01041 gem installed105==> 'gem install knapsack --no-document' succeeded in 1 seconds.106$ run_timed_command "scripts/gitaly-test-spawn"107$ scripts/gitaly-test-spawn108find: ‘/builds/gitlab-org/gitlab/tmp/tests/gitaly/cmd’: No such file or directory109Don't run Bundler as root. Bundler can ask for sudo if it is needed, and110installing your bundle as root will break this application for all non-root111users on this machine.112Using abstract_type 0.0.7113Using concurrent-ruby 1.1.10114Using i18n 1.10.0115Using minitest 5.15.0116Using tzinfo 2.0.4117Using zeitwerk 2.5.4118Using activesupport 6.1.4.7119Using builder 3.2.4120Using erubi 1.10.0121Using mini_portile2 2.8.0122Using racc 1.6.0123Using nokogiri 1.13.6 (x86_64-linux)124Using rails-dom-testing 2.0.3125Using crass 1.0.6126Using loofah 2.16.0127Using rails-html-sanitizer 1.4.2128Using actionview 6.1.4.7129Using rack 2.2.3130Using rack-test 1.1.0131Using actionpack 6.1.4.7132Using ice_nine 0.11.2133Using thread_safe 0.3.6134Using memoizable 0.4.2135Using adamantium 0.2.0136Using public_suffix 4.0.6137Using addressable 2.7.0138Using ast 2.4.2139Using binding_ninja 0.2.3140Using bundler 2.3.15141Using charlock_holmes 0.7.7142Using coderay 1.1.2143Using equalizer 0.0.11144Using concord 0.1.5145Using diff-lcs 1.3146Using dotenv 2.7.6147Using escape_utils 1.2.1148Using factory_bot 5.0.2149Using multipart-post 2.1.1150Using faraday 1.0.1151Using ffi 1.15.3152Using json 2.5.1153Using gemojione 3.3.0154Using mini_mime 1.0.2155Using rugged 1.2.0156Using github-linguist 7.12.1157Using github-markup 1.7.0158Using mime-types-data 3.2020.1104159Using mime-types 3.3.1160Using gitlab-gollum-rugged_adapter 0.4.4.4.gitlab.1161Using rouge 3.27.0162Using sanitize 6.0.0163Using stringex 2.8.5164Using gitlab-gollum-lib 4.2.7.10.gitlab.2165Using google-protobuf 3.19.1 (x86_64-linux)166Using googleapis-common-protos-types 1.3.0167Using grpc 1.42.0 (x86_64-linux)168Using opentracing 0.5.0169Using thrift 0.15.0170Using jaeger-client 1.1.0171Using pg_query 2.1.1172Using redis 4.4.0173Using gitlab-labkit 0.23.0174Using rubyzip 2.3.2175Using thor 1.1.0176Using tomlrb 2.0.1177Using with_env 1.1.0178Using rexml 3.2.5179Using xml-simple 1.1.9180Using gitlab-license_finder 6.14.2.1181Using gitlab-markup 1.7.1182Using grpc-tools 1.42.0183Using sawyer 0.8.2184Using octokit 4.20.0185Using reverse_markdown 1.4.0186Using licensee 9.14.1187Using method_source 0.9.2188Using msgpack 1.3.3189Using optimist 3.0.1190Using parallel 1.19.2191Using parser 3.0.3.2192Using procto 0.0.3193Using unparser 0.4.7194Using proc_to_ast 0.1.0195Using pry 0.12.2196Using rainbow 3.0.0197Using rbtrace 0.4.14198Using rdoc 6.3.2199Using regexp_parser 1.8.1200Using rspec-support 3.8.0201Using rspec-core 3.8.0202Using rspec-expectations 3.8.3203Using rspec-mocks 3.8.0204Using rspec 3.8.0205Using rspec-parameterized 0.4.2206Using rubocop-ast 0.2.0207Using ruby-progressbar 1.10.1208Using unicode-display_width 1.7.0209Using rubocop 0.86.0210Using sentry-raven 3.0.4211Using timecop 0.9.1212Bundle complete! 22 Gemfile dependencies, 100 gems now installed.213Gems in the groups 'production' and 'development' were not installed.214Bundled gems are installed into `/builds/gitlab-org/gitlab/vendor/gitaly-ruby`215Checking gitaly-ruby Gemfile...216Checking gitaly-ruby bundle...217The Gemfile's dependencies are satisfied218Trying to connect to gitaly: .......................................... OK219Trying to connect to gitaly2: .......................................................... OK220Starting Praefect with in-memory election strategyTrying to connect to praefect: ......... OK221==> 'scripts/gitaly-test-spawn' succeeded in 12 seconds.222$ source ./scripts/rspec_helpers.sh223$ rspec_paralellized_job "--tag ~quarantine --tag ~level:migration"224SKIP_FLAKY_TESTS_AUTOMATICALLY: true225RETRY_FAILED_TESTS_IN_NEW_PROCESS: true226KNAPSACK_GENERATE_REPORT: true227FLAKY_RSPEC_GENERATE_REPORT: true228KNAPSACK_TEST_FILE_PATTERN: spec/{commands,controllers,mailers,requests}{,/**/}*_spec.rb229KNAPSACK_LOG_LEVEL: debug230KNAPSACK_REPORT_PATH: knapsack/rspec_integration_pg12_7_10_report.json231FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json232FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_integration_pg12_7_10_report.json233NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_integration_pg12_7_10_report.json234SKIPPED_FLAKY_TESTS_REPORT_PATH: rspec/flaky/skipped_flaky_tests_rspec_integration_pg12_7_10_report.txt235RETRIED_TESTS_REPORT_PATH: rspec/flaky/retried_tests_rspec_integration_pg12_7_10_report.txt236CRYSTALBALL: 237Knapsack node specs:238spec/requests/api/merge_requests_spec.rb239spec/requests/api/conan_instance_packages_spec.rb240spec/requests/rack_attack_global_spec.rb241spec/requests/api/badges_spec.rb242spec/requests/api/issues/get_group_issues_spec.rb243spec/requests/user_activity_spec.rb244spec/controllers/groups/milestones_controller_spec.rb245spec/requests/api/ci/jobs_spec.rb246spec/requests/api/helpers_spec.rb247spec/requests/api/graphql/project/release_spec.rb248spec/requests/api/ci/runner/jobs_artifacts_spec.rb249spec/requests/api/protected_branches_spec.rb250spec/requests/api/settings_spec.rb251spec/requests/api/deploy_tokens_spec.rb252spec/controllers/projects/snippets/blobs_controller_spec.rb253spec/controllers/projects/commits_controller_spec.rb254spec/controllers/groups/uploads_controller_spec.rb255spec/requests/api/graphql/mutations/notes/create/image_diff_note_spec.rb256spec/requests/projects/commits_controller_spec.rb257spec/requests/api/commit_statuses_spec.rb258spec/controllers/projects/design_management/designs/raw_images_controller_spec.rb259spec/requests/api/graphql/mutations/award_emojis/toggle_spec.rb260spec/mailers/emails/service_desk_spec.rb261spec/requests/api/feature_flags_spec.rb262spec/requests/api/project_hooks_spec.rb263spec/requests/api/graphql/mutations/notes/update/image_diff_note_spec.rb264spec/requests/api/unleash_spec.rb265spec/controllers/groups/runners_controller_spec.rb266spec/requests/api/snippet_repository_storage_moves_spec.rb267spec/controllers/groups/boards_controller_spec.rb268spec/controllers/projects/merge_requests/content_controller_spec.rb269spec/requests/api/graphql/mutations/packages/destroy_files_spec.rb270spec/requests/api/graphql/project/repository_spec.rb271spec/requests/api/resource_state_events_spec.rb272spec/requests/api/graphql/group/dependency_proxy_blobs_spec.rb273spec/controllers/snippets/blobs_controller_spec.rb274spec/controllers/import/bulk_imports_controller_spec.rb275spec/requests/api/graphql/project/milestones_spec.rb276spec/controllers/admin/ci/variables_controller_spec.rb277spec/controllers/projects/error_tracking_controller_spec.rb278spec/requests/admin/background_migrations_controller_spec.rb279spec/requests/api/applications_spec.rb280spec/controllers/explore/snippets_controller_spec.rb281spec/requests/api/graphql/user_spec.rb282spec/requests/api/broadcast_messages_spec.rb283spec/requests/api/graphql/mutations/jira_import/start_spec.rb284spec/requests/api/graphql/project/incident_management/timeline_events_spec.rb285spec/requests/api/graphql/query_spec.rb286spec/requests/dashboard/projects_controller_spec.rb287spec/controllers/dashboard/groups_controller_spec.rb288spec/requests/api/graphql/mutations/work_items/create_spec.rb289spec/requests/api/ci/resource_groups_spec.rb290spec/controllers/projects/grafana_api_controller_spec.rb291spec/controllers/concerns/project_unauthorized_spec.rb292spec/controllers/projects/ci/pipeline_editor_controller_spec.rb293spec/controllers/admin/runner_projects_controller_spec.rb294spec/requests/api/graphql/mutations/todos/mark_done_spec.rb295spec/controllers/projects/alert_management_controller_spec.rb296spec/controllers/projects/issue_links_controller_spec.rb297spec/requests/product_analytics/collector_app_attack_spec.rb298spec/requests/api/graphql/project/jira_projects_spec.rb299spec/requests/api/graphql/project/base_service_spec.rb300spec/requests/api/graphql/mutations/alert_management/alerts/create_alert_issue_spec.rb301spec/requests/groups/harbor/repositories_controller_spec.rb302spec/requests/api/api_guard/response_coercer_middleware_spec.rb303spec/requests/api/graphql/mutations/alert_management/http_integration/create_spec.rb304spec/controllers/explore/groups_controller_spec.rb305spec/requests/api/graphql/mutations/groups/update_spec.rb306spec/controllers/projects/protected_tags_controller_spec.rb307spec/controllers/profiles/personal_access_tokens_controller_spec.rb308spec/requests/api/graphql/mutations/release_asset_links/update_spec.rb309spec/requests/api/graphql/project/alert_management/alert/issue_spec.rb310spec/requests/admin/integrations_controller_spec.rb311spec/requests/api/graphql/ci/group_variables_spec.rb312spec/requests/api/graphql/mutations/todos/create_spec.rb313spec/controllers/projects/analytics/cycle_analytics/value_streams_controller_spec.rb314spec/requests/api/graphql/namespace/package_settings_spec.rb315spec/requests/api/graphql/ci/instance_variables_spec.rb316spec/requests/api/graphql/mutations/alert_management/alerts/update_alert_status_spec.rb317spec/controllers/admin/identities_controller_spec.rb318spec/controllers/profiles/webauthn_registrations_controller_spec.rb319spec/controllers/admin/health_check_controller_spec.rb320Filter specs:321Running specs:322Running all node tests without filter323spec/requests/api/merge_requests_spec.rb324spec/requests/api/conan_instance_packages_spec.rb325spec/requests/rack_attack_global_spec.rb326spec/requests/api/badges_spec.rb327spec/requests/api/issues/get_group_issues_spec.rb328spec/requests/user_activity_spec.rb329spec/controllers/groups/milestones_controller_spec.rb330spec/requests/api/ci/jobs_spec.rb331spec/requests/api/helpers_spec.rb332spec/requests/api/graphql/project/release_spec.rb333spec/requests/api/ci/runner/jobs_artifacts_spec.rb334spec/requests/api/protected_branches_spec.rb335spec/requests/api/settings_spec.rb336spec/requests/api/deploy_tokens_spec.rb337spec/controllers/projects/snippets/blobs_controller_spec.rb338spec/controllers/projects/commits_controller_spec.rb339spec/controllers/groups/uploads_controller_spec.rb340spec/requests/api/graphql/mutations/notes/create/image_diff_note_spec.rb341spec/requests/projects/commits_controller_spec.rb342spec/requests/api/commit_statuses_spec.rb343spec/controllers/projects/design_management/designs/raw_images_controller_spec.rb344spec/requests/api/graphql/mutations/award_emojis/toggle_spec.rb345spec/mailers/emails/service_desk_spec.rb346spec/requests/api/feature_flags_spec.rb347spec/requests/api/project_hooks_spec.rb348spec/requests/api/graphql/mutations/notes/update/image_diff_note_spec.rb349spec/requests/api/unleash_spec.rb350spec/controllers/groups/runners_controller_spec.rb351spec/requests/api/snippet_repository_storage_moves_spec.rb352spec/controllers/groups/boards_controller_spec.rb353spec/controllers/projects/merge_requests/content_controller_spec.rb354spec/requests/api/graphql/mutations/packages/destroy_files_spec.rb355spec/requests/api/graphql/project/repository_spec.rb356spec/requests/api/resource_state_events_spec.rb357spec/requests/api/graphql/group/dependency_proxy_blobs_spec.rb358spec/controllers/snippets/blobs_controller_spec.rb359spec/controllers/import/bulk_imports_controller_spec.rb360spec/requests/api/graphql/project/milestones_spec.rb361spec/controllers/admin/ci/variables_controller_spec.rb362spec/controllers/projects/error_tracking_controller_spec.rb363spec/requests/admin/background_migrations_controller_spec.rb364spec/requests/api/applications_spec.rb365spec/controllers/explore/snippets_controller_spec.rb366spec/requests/api/graphql/user_spec.rb367spec/requests/api/broadcast_messages_spec.rb368spec/requests/api/graphql/mutations/jira_import/start_spec.rb369spec/requests/api/graphql/project/incident_management/timeline_events_spec.rb370spec/requests/api/graphql/query_spec.rb371spec/requests/dashboard/projects_controller_spec.rb372spec/controllers/dashboard/groups_controller_spec.rb373spec/requests/api/graphql/mutations/work_items/create_spec.rb374spec/requests/api/ci/resource_groups_spec.rb375spec/controllers/projects/grafana_api_controller_spec.rb376spec/controllers/concerns/project_unauthorized_spec.rb377spec/controllers/projects/ci/pipeline_editor_controller_spec.rb378spec/controllers/admin/runner_projects_controller_spec.rb379spec/requests/api/graphql/mutations/todos/mark_done_spec.rb380spec/controllers/projects/alert_management_controller_spec.rb381spec/controllers/projects/issue_links_controller_spec.rb382spec/requests/product_analytics/collector_app_attack_spec.rb383spec/requests/api/graphql/project/jira_projects_spec.rb384spec/requests/api/graphql/project/base_service_spec.rb385spec/requests/api/graphql/mutations/alert_management/alerts/create_alert_issue_spec.rb386spec/requests/groups/harbor/repositories_controller_spec.rb387spec/requests/api/api_guard/response_coercer_middleware_spec.rb388spec/requests/api/graphql/mutations/alert_management/http_integration/create_spec.rb389spec/controllers/explore/groups_controller_spec.rbKnapsack report generator started!390DEPRECATION WARNING: /builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/activerecord-6.1.4.7/lib/active_record/connection_adapters/postgresql_adapter.rb:78: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call391/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/pg-1.3.5/lib/pg.rb:68: warning: The called method `connect' is defined here392 (called from new_client at /builds/gitlab-org/gitlab/config/initializers/00_connection_logger.rb:21)393Run options: exclude {:quarantine=>true, :level=>"migration"}394Test environment set up in 0.507484592 seconds395API::MergeRequests396 route shadowing397 does not occur398 GET /merge_requests399 when unauthenticated400 returns an array of all merge requests401 returns authentication error without any scope402 returns authentication error when scope is assigned-to-me403 returns authentication error when scope is assigned_to_me404 returns authentication error when scope is created-by-me405 behaves like issuable anonymous search406 with anonymous user407 with disable_anonymous_search disabled408 returns issuables matching given search string for title409 returns issuables matching given search string for description410 with disable_anonymous_search enabled411 returns 422 error412 when authenticated413 returns an array of all merge requests except unauthorized ones414 returns an array of no merge_requests when wip=yes415 returns an array of no merge_requests when wip=no416 does not return unauthorized merge requests417 returns an array of merge requests created by current user if no scope is given418 returns an array of merge requests assigned to the given user419 returns an array of merge requests with no assignee420 returns an array of merge requests with any assignee421 returns an array of merge requests assigned to me422 returns an array of merge requests assigned to me (kebab-case)423 returns an array of merge requests created by me424 returns an array of merge requests created by me (kebab-case)425 returns merge requests reacted by the authenticated user by the given emoji426 returns merge requests created before a specific date427 returns merge requests created after a specific date428 returns merge requests updated before a specific date429 returns merge requests updated after a specific date430 filter by author431 when only `author_id` is passed432 returns an array of merge requests authored by the given user433 when only `author_username` is passed434 returns an array of merge requests authored by the given user(by `author_username`)435 when both `author_id` and `author_username` are passed436 returns a 400437 filter by reviewer438 with reviewer_id439 with an id440 returns review requested merge requests for the given user441 with Any442 returns review requested merge requests for any user443 with None444 returns merge requests that has no assigned reviewers445 with reviewer_username446 returns review requested merge requests for the given user447 with both reviewer_id and reviewer_username448 returns a 400449 source_branch param450 returns merge requests with the given source branch451 target_branch param452 returns merge requests with the given target branch453 search params454 returns merge requests matching given search string for title455 returns merge requests matching given search string for title and scoped in title456 returns an empty array if no merge request matches given search string for description and scoped in title457 returns merge requests for project matching given search string for description458 state param459 returns merge requests with the given state460 GET /projects/:id/merge_requests461 returns 404 for non public projects462 returns an array of no merge_requests when wip=yes463 returns merge_request by "iids" array464 behaves like merge requests list465 when unauthenticated466 returns merge requests for public projects467 behaves like issuable anonymous search468 with anonymous user469 with disable_anonymous_search disabled470 returns issuables matching given search string for title471 returns issuables matching given search string for description472 with disable_anonymous_search enabled473 returns 422 error474 when authenticated475 returns an array of all merge_requests using simple mode476 returns an array of all merge_requests477 returns an array of open merge_requests478 returns an array of closed merge_requests479 returns an array of merged merge_requests480 matches V4 response schema481 returns an empty array if no issue matches milestone482 returns an empty array if milestone does not exist483 returns an array of merge requests in given milestone484 returns an array of merge requests matching state in milestone485 returns an array of labeled merge requests that are merged for a milestone486 when merge request is unchecked487 with merge status recheck projection488 checks mergeability asynchronously489 without merge status recheck projection490 does not enqueue a merge status recheck491 with labels492 returns an array of all merge_requests493 with labels_details494 returns labels with details495 with labels496 returns an array of labeled merge requests497 returns an array of labeled merge requests where all labels match498 returns an empty array if no merge request matches labels499 returns an array of labeled merge requests where all labels match500 returns an array of merge requests with any label when filtering by any label501 returns an array of merge requests with any label when filtering by any label502 returns an array of merge requests with any label when filtering by any label503 returns an array of merge requests without a label when filtering by no label504 with ordering505 returns an array of merge_requests in ascending order506 returns an array of merge_requests in descending order507 returns an array of merge_requests ordered by updated_at508 returns an array of merge_requests ordered by created_at509 2 merge requests with equal created_at510 page breaks first page correctly511 page breaks second page correctly512 returns an array of merge_requests ordered by title513 asc when requested514 desc when requested515 NOT params516 returns merge requests without any of the labels given517 returns merge requests without any of the milestones given518 returns merge requests without the author given519 returns merge requests without the assignee given520 filter by reviewer521 with reviewer_id522 with an id523 returns merge requests that do not have the given reviewer524 with Any525 returns a 400526 with None527 returns a 400528 with reviewer_username529 returns merge requests that do not have the given reviewer530 when both reviewer_id and reviewer_username531 returns a 400532 source_branch param533 returns merge requests with the given source branch534 target_branch param535 returns merge requests with the given target branch536 when filtering by deployments537 supports getting merge requests deployed to an environment538 does not return merge requests for an environment without deployments539 supports getting merge requests deployed after a date540 does not return merge requests not deployed after a given date541 supports getting merge requests deployed before a date542 does not return merge requests not deployed before a given date543 GET /groups/:id/merge_requests544 behaves like merge requests list545 when unauthenticated546 returns merge requests for public projects547 behaves like issuable anonymous search548 with anonymous user549 with disable_anonymous_search disabled550 returns issuables matching given search string for title551 returns issuables matching given search string for description552 with disable_anonymous_search enabled553 returns 422 error554 when authenticated555 returns an array of all merge_requests using simple mode556 returns an array of all merge_requests557 returns an array of open merge_requests558 returns an array of closed merge_requests559 returns an array of merged merge_requests560 matches V4 response schema561 returns an empty array if no issue matches milestone562 returns an empty array if milestone does not exist563 returns an array of merge requests in given milestone564 returns an array of merge requests matching state in milestone565 returns an array of labeled merge requests that are merged for a milestone566 when merge request is unchecked567 with merge status recheck projection568 checks mergeability asynchronously569 without merge status recheck projection570 does not enqueue a merge status recheck571 with labels572 returns an array of all merge_requests573 with labels_details574 returns labels with details575 with labels576 returns an array of labeled merge requests577 returns an array of labeled merge requests where all labels match578 returns an empty array if no merge request matches labels579 returns an array of labeled merge requests where all labels match580 returns an array of merge requests with any label when filtering by any label581 returns an array of merge requests with any label when filtering by any label582 returns an array of merge requests with any label when filtering by any label583 returns an array of merge requests without a label when filtering by no label584 with ordering585 returns an array of merge_requests in ascending order586 returns an array of merge_requests in descending order587 returns an array of merge_requests ordered by updated_at588 returns an array of merge_requests ordered by created_at589 2 merge requests with equal created_at590 page breaks first page correctly591 page breaks second page correctly592 returns an array of merge_requests ordered by title593 asc when requested594 desc when requested595 NOT params596 returns merge requests without any of the labels given597 returns merge requests without any of the milestones given598 returns merge requests without the author given599 returns merge requests without the assignee given600 filter by reviewer601 with reviewer_id602 with an id603 returns merge requests that do not have the given reviewer604 with Any605 returns a 400606 with None607 returns a 400608 with reviewer_username609 returns merge requests that do not have the given reviewer610 when both reviewer_id and reviewer_username611 returns a 400612 source_branch param613 returns merge requests with the given source branch614 target_branch param615 returns merge requests with the given target branch616 when have subgroups617 behaves like merge requests list618 when unauthenticated619 returns merge requests for public projects620 behaves like issuable anonymous search621 with anonymous user622 with disable_anonymous_search disabled623 returns issuables matching given search string for title624 returns issuables matching given search string for description625 with disable_anonymous_search enabled626 returns 422 error627 when authenticated628 returns an array of all merge_requests using simple mode629 returns an array of all merge_requests630 returns an array of open merge_requests631 returns an array of closed merge_requests632 returns an array of merged merge_requests633 matches V4 response schema634 returns an empty array if no issue matches milestone635 returns an empty array if milestone does not exist636 returns an array of merge requests in given milestone637 returns an array of merge requests matching state in milestone638 returns an array of labeled merge requests that are merged for a milestone639 when merge request is unchecked640 with merge status recheck projection641 checks mergeability asynchronously642 without merge status recheck projection643 does not enqueue a merge status recheck644 with labels645 returns an array of all merge_requests646 with labels_details647 returns labels with details648 with labels649 returns an array of labeled merge requests650 returns an array of labeled merge requests where all labels match651 returns an empty array if no merge request matches labels652 returns an array of labeled merge requests where all labels match653 returns an array of merge requests with any label when filtering by any label654 returns an array of merge requests with any label when filtering by any label655 returns an array of merge requests with any label when filtering by any label656 returns an array of merge requests without a label when filtering by no label657 with ordering658 returns an array of merge_requests in ascending order659 returns an array of merge_requests in descending order660 returns an array of merge_requests ordered by updated_at661 returns an array of merge_requests ordered by created_at662 2 merge requests with equal created_at663 page breaks first page correctly664 page breaks second page correctly665 returns an array of merge_requests ordered by title666 asc when requested667 desc when requested668 NOT params669 returns merge requests without any of the labels given670 returns merge requests without any of the milestones given671 returns merge requests without the author given672 returns merge requests without the assignee given673 filter by reviewer674 with reviewer_id675 with an id676 returns merge requests that do not have the given reviewer677 with Any678 returns a 400679 with None680 returns a 400681 with reviewer_username682 returns merge requests that do not have the given reviewer683 when both reviewer_id and reviewer_username684 returns a 400685 source_branch param686 returns merge requests with the given source branch687 target_branch param688 returns merge requests with the given target branch689 #to_reference690 exposes reference path in context of group691 referencing from parent group692 exposes reference path in context of parent group693 with archived projects694 returns an array excluding merge_requests from archived projects695 with non_archived param set as false696 returns an array including merge_requests from archived projects697 GET /projects/:id/merge_requests/:merge_request_iid698 matches json schema699 exposes known attributes700 exposes description and title html when render_html is true701 exposes rebase_in_progress when include_rebase_in_progress is true702 returns the commits behind the target branch when include_diverged_commits_count is present703 returns a 404 error if merge_request_iid not found704 returns a 404 error if merge_request `id` is used instead of iid705 indicates if a user cannot merge the MR706 returns `checking` as its merge_status instead of `cannot_be_merged_rechecking`707 when author is not a member without any merged merge requests708 exposes first_contribution as true709 when merge request author has only guest access710 behaves like rejects user from accessing merge request info711 returns a 403 error712 merge_request_metrics713 has fields from merge request metrics714 returns correct values715 merge_user716 when MR is set to MWPS717 returns user who set MWPS718 when MR is already merged719 returns user who actually merged720 head_pipeline721 when user can read the pipeline722 exposes pipeline information723 when user can not read the pipeline724 does not expose pipeline information725 Draft726 returns merge request727 when a merge request has more than the changes limit728 returns a string indicating that more changes were made729 for forked projects730 includes the `allow_collaboration` field731 when merge request is unchecked732 checks mergeability asynchronously733 GET /projects/:id/merge_requests/:merge_request_iid/participants734 behaves like issuable participants endpoint735 returns participants736 returns a 404 when iid does not exist737 returns a 404 when id is used instead of iid738 when merge request author has only guest access739 behaves like rejects user from accessing merge request info740 returns a 403 error741 GET /projects/:id/merge_requests/:merge_request_iid/commits742 returns a 200 when merge request is valid743 returns a 404 when merge_request_iid not found744 returns a 404 when merge_request id is used instead of iid745 when merge request author has only guest access746 behaves like rejects user from accessing merge request info747 returns a 403 error748 GET /projects/:id/merge_requests/:merge_request_iid/:context_commits749 returns a 200 when merge request is valid750 returns a 404 when merge_request_iid not found751 GET /projects/:id/merge_requests/:merge_request_iid/changes752 returns a 404 when merge_request_iid not found753 returns a 404 when merge_request id is used instead of iid754 returns the overflow status as false755 when merge request author has only guest access756 behaves like rejects user from accessing merge request info757 returns a 403 error758 behaves like find an existing merge request759 returns the change information of the merge_request760 behaves like accesses diffs via raw_diffs761 as expected762 when using DB-backed diffs763 accesses diffs via DB-backed diffs.diffs764 behaves like find an existing merge request765 returns the change information of the merge_request766 when the diff_collection has overflowed its size limits767 returns the overflow status as true768 when access_raw_diffs is true769 behaves like accesses diffs via raw_diffs770 as expected771 GET /projects/:id/merge_requests/:merge_request_iid/pipelines772 when authorized773 returns a paginated array of corresponding pipelines774 exposes basic attributes775 returns 404 if MR does not exist776 when unauthorized777 returns 403778 when merge request author has only guest access779 behaves like rejects user from accessing merge request info780 returns a 403 error781 POST /projects/:id/merge_requests/:merge_request_iid/pipelines782 when authorized783 creates and returns the new Pipeline784 when unauthorized785 responds with a blank 404786 when the merge request does not exist787 responds with a blank 404788 when the .gitlab-ci.yml file is invalid789 creates a failed pipeline790 POST /projects/:id/merge_requests791 support for deprecated assignee_id792 creates a new merge request793 creates a new merge request when assignee_id is empty794 filters assignee_id of unauthorized user795 single assignee restrictions796 creates a new project merge request with no more than one assignee797 accepts reviewer_ids798 creates a new merge request with a reviewer799 creates a new merge request with no reviewer800 between branches projects801 returns 422 when source_branch equals target_branch802 returns 400 when source_branch is missing803 returns 400 when target_branch is missing804 returns 400 when title is missing805 different labels806 creates merge request with special label names807 creates merge request with special label names as array808 empty label param does not add any labels809 empty label param as array does not add any labels, but only explicitly as json810 empty label param as array, does not add any labels811 array with one empty string element does not add labels812 array with multiple empty string elements, does not add labels813 behaves like creates merge request with labels814 returns merge_request815 behaves like creates merge request with labels816 returns merge_request817 behaves like creates merge request with labels818 returns merge_request819 with existing MR820 returns 409 when MR already exists for source/target821 accepts remove_source_branch parameter822 sets force_remove_source_branch to false823 sets force_remove_source_branch to true824 forked projects825 returns merge_request826 does not return 422 when source_branch equals target_branch827 returns 403 when target project has disabled merge requests828 returns 400 when source_branch is missing829 returns 400 when target_branch is missing830 returns 400 when title is missing831 allows setting `allow_collaboration`832 returns 201 when target_branch is specified and for the same project833 when target_branch and target_project_id is specified834 returns 422 if targeting a different fork835 returns 403 if targeting a different fork which user can not access836 PUT /projects/:id/merge_requests/:merge_request_iid837 behaves like issuable update endpoint838 PUT /projects/:id/issues/:issue_iid839 clears labels when labels param is nil840 updates the issuable with labels param as array841 when only assignee_ids are provided842 sets the assignees843 creates appropriate system notes844 when assignee_id=user2.id845 sets the assignees846 when assignee_id=0847 clears the assignees848 creates appropriate system notes849 when only assignee_ids are provided, and the list is empty850 clears the assignees851 when only assignee_ids are provided, and the list contains the sentinel value852 clears the assignees853 when only assignee_id=0854 clears the assignees855 accepts reviewer_ids856 adds a reviewer to the existing merge request857 removes a reviewer from the existing merge request858 POST /projects/:id/merge_requests/:merge_request_iid/context_commits859 when authenticated860 creates and returns the new context commit861 returns 400 when one or more shas are invalid862 returns 400 when the commits are empty863 returns 400 when params is empty864 returns 403 when creating new context commit for guest role865 returns 403 when creating new context commit for reporter role866 doesnt create when its already created867 returns 400 when the context commit is already created868 when unauthenticated869 returns 401 if user tries to create context commits870 DELETE /projects/:id/merge_requests/:merge_request_iid871 when the user is developer872 denies the deletion of the merge request873 when the user is project owner874 destroys the merge request owners can destroy875 returns 404 for an invalid merge request IID876 returns 404 if the merge request id is used instead of iid877 behaves like 412 response878 for a modified ressource879 returns 412 with a JSON error880 for an unmodified ressource881 returns 204 with an empty body882 DELETE /projects/:id/merge_requests/:merge_request_iid/context_commits883 when authenticated884 deletes context commit885 returns 400 when invalid commit sha is passed886 returns 400 when commits is empty887 returns 400 when no params is passed888 returns 403 when deleting existing context commit for guest role889 returns 403 when deleting existing context commit for reporter role890 when unauthenticated891 returns 401, unauthorised error892 PUT /projects/:id/merge_requests/:merge_request_iid/merge893 returns merge_request in case of success894 returns 405 if merge_request is not open895 returns 405 if merge_request is a draft896 returns 405 if the build failed for a merge request that requires success897 returns 401 if user has no permissions to merge898 returns 409 if the SHA parameter doesn't match899 succeeds if the SHA parameter matches900 updates the MR's squash attribute901 does not merge if merge_when_pipeline_succeeds is passed and the pipeline has failed902 merges if the head pipeline already succeeded and `merge_when_pipeline_succeeds` is passed903 enables merge when pipeline succeeds if the pipeline is active904 enables merge when pipeline succeeds if the pipeline is active and only_allow_merge_if_pipeline_succeeds is true905 returns 404 for an invalid merge request IID906 returns 404 if the merge request id is used instead of iid907 when change_response_code_merge_status is enabled908 returns 422 if branch can't be merged909 when change_response_code_merge_status is disabled910 returns 406 if branch can't be merged911 the squash_commit_message param912 results in a specific squash commit message when set913 results in a default squash commit message when not set914 the should_remove_source_branch param915 removes the source branch when set916 with a merge request that has force_remove_source_branch enabled917 removes the source branch918 does not remove the source branch919 performing a ff-merge with squash920 records the squash commit SHA and returns it in the response921 GET /projects/:id/merge_requests/:merge_request_iid/merge_ref922 returns the generated ID from the merge service in case of success923 when merge-ref is not synced with merge status924 returns 200 if MR can be merged925 returns 400 if MR cannot be merged926 when user has no access to the MR927 returns 404928 when invalid merge request IID929 returns 404930 when merge request ID is used instead IID931 returns 404932 PUT /projects/:id/merge_requests/:merge_request_iid933 updates title and returns merge_request934 updates description and returns merge_request935 updates milestone_id and returns merge_request936 updates squash and returns merge_request937 updates target_branch and returns merge_request938 returns merge_request that removes the source branch939 filters assignee_id of unauthorized user940 does not update state when title is empty941 does not update state when target_branch is empty942 returns 404 for an invalid merge request IID943 returns 404 if the merge request id is used instead of iid944 updates force_remove_source_branch properly945 sets to false946 sets to true947 with a merge request across forks948 is true for an authorized user949 is false for an unauthorized user950 to close a MR951 returns merge_request952 forked projects953 when source project is public (i.e. MergeRequest#collaborative_push_possible? == true)954 behaves like update of allow_collaboration and allow_maintainer_to_push955 attempts to update allow_collaboration to true and returns true for `allow_collaboration`956 attempts to update allow_maintainer_to_push to true and returns true for `allow_collaboration`957 when source project is private (i.e. MergeRequest#collaborative_push_possible? == false)958 behaves like update of allow_collaboration and allow_maintainer_to_push959 attempts to update allow_collaboration to true and returns false for `allow_collaboration`960 attempts to update allow_maintainer_to_push to true and returns false for `allow_collaboration`961 when updating labels962 allows special label names963 also accepts labels as an array964 empty label param removes labels965 label param as empty array, but only explicitly as json, removes labels966 empty label as array, removes labels967 array with one empty string element removes labels968 array with multiple empty string elements, removes labels969 with labels970 when adding labels, keeps existing labels and adds new971 when removing labels, only removes those specified972 when removing all labels, keeps no labels973 GET :id/merge_requests/:merge_request_iid/closes_issues974 returns the issue that will be closed on merge975 returns an empty array when there are no issues to be closed976 handles external issues977 returns 403 if the user has no access to the merge request978 returns 404 for an invalid merge request IID979 returns 404 if the merge request id is used instead of iid980 POST :id/merge_requests/:merge_request_iid/subscribe981 subscribes to a merge request982 returns 304 if already subscribed983 returns 404 if the merge request is not found984 returns 404 if the merge request id is used instead of iid985 returns 403 if user has no access to read code986 POST :id/merge_requests/:merge_request_iid/unsubscribe987 unsubscribes from a merge request988 returns 304 if not subscribed989 returns 404 if the merge request is not found990 returns 404 if the merge request id is used instead of iid991 returns 403 if user has no access to read code992 POST :id/merge_requests/:merge_request_iid/cancel_merge_when_pipeline_succeeds993 removes the merge_when_pipeline_succeeds status994 returns 404 if the merge request is not found995 returns 404 if the merge request id is used instead of iid996 PUT :id/merge_requests/:merge_request_iid/rebase997 returns 403 if the user cannot push to the branch998 returns 409 if a rebase is already in progress999 returns 409 if rebase can't lock the row1000 when rebase can be performed1001 enqueues a rebase of the merge request against the target branch1002 when skip_ci parameter is set1003 enqueues a rebase of the merge request with skip_ci flag set1004 when merge request branch does not allow force push1005 returns 4031006 Time tracking1007 POST /projects/:id/merge_requests/:merge_request_id/time_estimate1008 sets the time estimate for merge_request1009 with an unauthorized user1010 behaves like an unauthorized API user1011 is expected to eq 4031012 behaves like API user with insufficient permissions1013 with non member that is the author1014 behaves like an unauthorized API user1015 is expected to eq 4031016 updating the current estimate1017 when duration has a bad format1018 does not modify the original estimate1019 with a valid duration1020 updates the estimate1021 POST /projects/:id/merge_requests/:merge_request_id/reset_time_estimate1022 resets the time estimate for merge_request1023 with an unauthorized user1024 behaves like an unauthorized API user1025 is expected to eq 4031026 behaves like API user with insufficient permissions1027 with non member that is the author1028 behaves like an unauthorized API user1029 is expected to eq 4031030 POST /projects/:id/merge_requests/:merge_request_id/add_spent_time1031 add spent time for merge_request1032 calls update service with :use_specialized_service param1033 with an unauthorized user1034 behaves like an unauthorized API user1035 is expected to eq 4031036 behaves like API user with insufficient permissions1037 with non member that is the author1038 behaves like an unauthorized API user1039 is expected to eq 4031040 when subtracting time1041 subtracts time of the total spent time1042 when time to subtract is greater than the total spent time1043 does not modify the total time spent1044 POST /projects/:id/merge_requests/:merge_request_id/reset_spent_time1045 resets spent time for merge_request1046 with an unauthorized user1047 behaves like an unauthorized API user1048 is expected to eq 4031049 behaves like API user with insufficient permissions1050 with non member that is the author1051 behaves like an unauthorized API user1052 is expected to eq 4031053 GET /projects/:id/merge_requests/:merge_request_id/time_stats1054 returns the time stats for merge_request1055API::ConanInstancePackages1056 GET /api/v4/packages/conan/v1/ping1057 behaves like conan ping endpoint1058 responds with 200 OK when no token provided1059 behaves like conan FIPS mode1060 when FIPS mode is enabled1061 behaves like returning response status1062 returns not_found1063 packages feature disabled1064 responds with 404 Not Found1065 GET /api/v4/packages/conan/v1/conans/search1066 behaves like conan search endpoint1067 with a public project1068 returns packages with a matching name1069 is expected to contain exactly "package-7/1.0.0@namespace45+project105/stable"1070 returns packages using a * wildcard1071 is expected to contain exactly "package-9/1.0.0@namespace47+project107/stable"1072 does not return non-matching packages1073 is expected to be blank1074 with a private project1075 role: :maintainer, packages_visible: true1076 is expected to contain exactly "package-13/1.0.0@namespace51+project111/stable"1077 role: :developer, packages_visible: true1078 is expected to contain exactly "package-15/1.0.0@namespace53+project113/stable"1079 role: :reporter, packages_visible: true1080 is expected to contain exactly "package-17/1.0.0@namespace55+project115/stable"1081 role: :guest, packages_visible: false1082 is expected to be blank1083 role: :anonymous, packages_visible: false1084 is expected to be blank1085 behaves like conan FIPS mode1086 when FIPS mode is enabled1087 behaves like returning response status1088 returns not_found1089 GET /api/v4/packages/conan/v1/users/authenticate1090 behaves like conan authenticate endpoint1091 responds with 401 Unauthorized when an invalid access token is provided1092 responds with 401 Unauthorized when the provided JWT is signed with different secret1093 responds with 401 UnauthorizedOK when invalid JWT is provided1094 behaves like conan FIPS mode1095 when FIPS mode is enabled1096 behaves like returning response status1097 returns not_found1098 when using invalid token1099 responds with 4011100 when valid JWT access token is provided1101 responds with 2001102 token has valid validity time1103 with valid job token1104 responds with 2001105 with valid deploy token1106 responds with 2001107 GET /api/v4/packages/conan/v1/users/check_credentials1108 behaves like conan check_credentials endpoint1109 responds with a 200 OK with PAT1110 responds with a 401 Unauthorized when an invalid token is used1111 behaves like conan FIPS mode1112 when FIPS mode is enabled1113 behaves like returning response status1114 returns not_found1115 with job token1116 responds with a 200 OK with job token1117 with deploy token1118 responds with a 200 OK with job token1119 recipe endpoints1120 GET /api/v4/packages/conan/v1/conans/:package_name/package_version/:package_username/:package_channel1121 behaves like recipe snapshot endpoint1122 behaves like conan FIPS mode1123 when FIPS mode is enabled1124 behaves like returning response status1125 returns not_found1126 behaves like rejects invalid recipe1127 with invalid recipe path1128 returns 4001129 behaves like rejects recipe for invalid project1130 with invalid project1131 behaves like not found request1132 returns not found1133 behaves like empty recipe for not found package1134 with invalid recipe url1135 returns not found1136 behaves like handling empty values for username and channel1137 username: "username", channel: "channel", status: :ok1138 returns the correct status code1139 username: "username", channel: "_", status: :bad_request1140 returns the correct status code1141 username: "_", channel: "channel", status: :bad_request_or_not_found1142 returns the correct status code1143 username: "_", channel: "_", status: :ok_or_not_found1144 returns the correct status code1145 with existing package1146 returns a hash of files with their md5 hashes1147 GET /api/v4/packages/conan/v1/conans/:package_name/package_version/:package_username/:package_channel/packages/:conan_package_reference1148 behaves like package snapshot endpoint1149 behaves like conan FIPS mode1150 when FIPS mode is enabled1151 behaves like returning response status1152 returns not_found1153 behaves like rejects invalid recipe1154 with invalid recipe path1155 returns 4001156 behaves like rejects recipe for invalid project1157 with invalid project1158 behaves like not found request1159 returns not found1160 behaves like empty recipe for not found package1161 with invalid recipe url1162 returns not found1163 behaves like handling empty values for username and channel1164 username: "username", channel: "channel", status: :ok1165 returns the correct status code1166 username: "username", channel: "_", status: :bad_request1167 returns the correct status code1168 username: "_", channel: "channel", status: :bad_request_or_not_found1169 returns the correct status code1170 username: "_", channel: "_", status: :ok_or_not_found1171 returns the correct status code1172 with existing package1173 returns a hash of md5 values for the files1174 GET /api/v4/packages/conan/v1/conans/:package_name/package_version/:package_username/:package_channel/digest1175 behaves like recipe download_urls endpoint1176 behaves like conan FIPS mode1177 when FIPS mode is enabled1178 behaves like returning response status1179 returns not_found1180 behaves like rejects invalid recipe1181 with invalid recipe path1182 returns 4001183 behaves like rejects recipe for invalid project1184 with invalid project1185 behaves like not found request1186 returns not found1187 behaves like recipe download_urls1188 returns the download_urls for the recipe files1189 behaves like not selecting a package with the wrong type1190 with a nuget package with same name and version1191 calls the presenter with a nil package1192 behaves like handling empty values for username and channel1193 username: "username", channel: "channel", status: :ok1194 returns the correct status code1195 username: "username", channel: "_", status: :bad_request1196 returns the correct status code1197 username: "_", channel: "channel", status: :bad_request_or_not_found1198 returns the correct status code1199 username: "_", channel: "_", status: :ok_or_not_found1200 returns the correct status code1201 GET /api/v4/packages/conan/v1/conans/:package_name/package_version/:package_username/:package_channel/packages/:conan_package_reference/download_urls1202 behaves like package download_urls endpoint1203 behaves like conan FIPS mode1204 when FIPS mode is enabled1205 behaves like returning response status1206 returns not_found1207 behaves like rejects invalid recipe1208 with invalid recipe path1209 returns 4001210 behaves like rejects recipe for invalid project1211 with invalid project1212 behaves like not found request1213 returns not found1214 behaves like package download_urls1215 returns the download_urls for the package files1216 behaves like not selecting a package with the wrong type1217 with a nuget package with same name and version1218 calls the presenter with a nil package1219 behaves like handling empty values for username and channel1220 username: "username", channel: "channel", status: :ok1221 returns the correct status code1222 username: "username", channel: "_", status: :bad_request1223 returns the correct status code1224 username: "_", channel: "channel", status: :bad_request_or_not_found1225 returns the correct status code1226 username: "_", channel: "_", status: :ok_or_not_found1227 returns the correct status code1228 GET /api/v4/packages/conan/v1/conans/:package_name/package_version/:package_username/:package_channel/download_urls1229 behaves like recipe download_urls endpoint1230 behaves like conan FIPS mode1231 when FIPS mode is enabled1232 behaves like returning response status1233 returns not_found1234 behaves like rejects invalid recipe1235 with invalid recipe path1236 returns 4001237 behaves like rejects recipe for invalid project1238 with invalid project1239 behaves like not found request1240 returns not found1241 behaves like recipe download_urls1242 returns the download_urls for the recipe files1243 behaves like not selecting a package with the wrong type1244 with a nuget package with same name and version1245 calls the presenter with a nil package1246 behaves like handling empty values for username and channel1247 username: "username", channel: "channel", status: :ok1248 returns the correct status code1249 username: "username", channel: "_", status: :bad_request1250 returns the correct status code1251 username: "_", channel: "channel", status: :bad_request_or_not_found1252 returns the correct status code1253 username: "_", channel: "_", status: :ok_or_not_found1254 returns the correct status code1255 GET /api/v4/packages/conan/v1/conans/:package_name/package_version/:package_username/:package_channel/packages/:conan_package_reference/digest1256 behaves like package download_urls endpoint1257 behaves like conan FIPS mode1258 when FIPS mode is enabled1259 behaves like returning response status1260 returns not_found1261 behaves like rejects invalid recipe1262 with invalid recipe path1263 returns 4001264 behaves like rejects recipe for invalid project1265 with invalid project1266 behaves like not found request1267 returns not found1268 behaves like package download_urls1269 returns the download_urls for the package files1270 behaves like not selecting a package with the wrong type1271 with a nuget package with same name and version1272 calls the presenter with a nil package1273 behaves like handling empty values for username and channel1274 username: "username", channel: "channel", status: :ok1275 returns the correct status code1276 username: "username", channel: "_", status: :bad_request1277 returns the correct status code1278 username: "_", channel: "channel", status: :bad_request_or_not_found1279 returns the correct status code1280 username: "_", channel: "_", status: :ok_or_not_found1281 returns the correct status code1282 POST /api/v4/packages/conan/v1/conans/:package_name/package_version/:package_username/:package_channel/upload_urls1283 behaves like recipe upload_urls endpoint1284 returns a set of upload urls for the files requested1285 behaves like conan FIPS mode1286 when FIPS mode is enabled1287 behaves like returning response status1288 returns not_found1289 behaves like rejects invalid recipe1290 with invalid recipe path1291 returns 4001292 behaves like rejects invalid upload_url params1293 with unaccepted json format1294 returns 4001295 behaves like handling empty values for username and channel1296 username: "username", channel: "channel", status: :ok1297 returns the correct status code1298 username: "username", channel: "_", status: :bad_request1299 returns the correct status code1300 username: "_", channel: "channel", status: :bad_request_or_not_found1301 returns the correct status code1302 username: "_", channel: "_", status: :ok_or_not_found1303 returns the correct status code1304 with conan_sources and conan_export files1305 returns upload urls for the additional files1306 with an invalid file1307 does not return the invalid file as an upload_url1308 POST /api/v4/packages/conan/v1/conans/:package_name/package_version/:package_username/:package_channel/packages/:conan_package_reference/upload_urls1309 behaves like package upload_urls endpoint1310 returns a set of upload urls for the files requested1311 behaves like conan FIPS mode1312 when FIPS mode is enabled1313 behaves like returning response status1314 returns not_found1315 behaves like rejects invalid recipe1316 with invalid recipe path1317 returns 4001318 behaves like rejects invalid upload_url params1319 with unaccepted json format1320 returns 4001321 behaves like handling empty values for username and channel1322 username: "username", channel: "channel", status: :ok1323 returns the correct status code1324 username: "username", channel: "_", status: :bad_request1325 returns the correct status code1326 username: "_", channel: "channel", status: :bad_request_or_not_found1327 returns the correct status code1328 username: "_", channel: "_", status: :ok_or_not_found1329 returns the correct status code1330 with invalid files1331 returns upload urls only for the valid requested files1332 DELETE /api/v4/packages/conan/v1/conans/:package_name/package_version/:package_username/:package_channel1333 behaves like delete package endpoint1334 returns unauthorized for users without valid permission1335 behaves like conan FIPS mode1336 when FIPS mode is enabled1337 behaves like returning response status1338 returns not_found1339 behaves like rejects invalid recipe1340 with invalid recipe path1341 returns 4001342 behaves like handling empty values for username and channel1343 username: "username", channel: "channel", status: :ok1344 returns the correct status code1345 username: "username", channel: "_", status: :bad_request1346 returns the correct status code1347 username: "_", channel: "channel", status: :bad_request_or_not_found1348 returns the correct status code1349 username: "_", channel: "_", status: :ok_or_not_found1350 returns the correct status code1351 with delete permissions1352 deletes a package1353 behaves like a gitlab tracking event1354 creates a gitlab tracking event delete_package1355 file download endpoints1356 GET /api/v4/packages/conan/v1/files/:package_name/package_version/:package_username/:package_channel/1357:recipe_revision/export/:file_name1358 behaves like recipe file download endpoint1359 behaves like conan FIPS mode1360 when FIPS mode is enabled1361 behaves like returning response status1362 returns not_found1363 behaves like a public project with packages1364 returns the file1365 behaves like allows download with no token1366 with no private token1367 returns 2001368 behaves like an internal project with packages1369 returns the file1370 behaves like denies download with no token1371 with no private token1372 returns 4041373 behaves like a private project with packages1374 returns the file1375 denies download when not enough permissions1376 behaves like denies download with no token1377 with no private token1378 returns 4041379 behaves like handling empty values for username and channel1380 username: "username", channel: "channel", status: :ok1381 returns the correct status code1382 username: "username", channel: "_", status: :bad_request1383 returns the correct status code1384 username: "_", channel: "channel", status: :bad_request_or_not_found1385 returns the correct status code1386 username: "_", channel: "_", status: :ok_or_not_found1387 returns the correct status code1388 behaves like project not found by recipe1389 behaves like not found request1390 returns not found1391 GET /api/v4/packages/conan/v1/files/:package_name/package_version/:package_username/:package_channel/1392:recipe_revision/package/:conan_package_reference/:package_revision/:file_name1393 behaves like package file download endpoint1394 behaves like conan FIPS mode1395 when FIPS mode is enabled1396 behaves like returning response status1397 returns not_found1398 behaves like a public project with packages1399 returns the file1400 behaves like allows download with no token1401 with no private token1402 returns 2001403 behaves like an internal project with packages1404 returns the file1405 behaves like denies download with no token1406 with no private token1407 returns 4041408 behaves like a private project with packages1409 returns the file1410 denies download when not enough permissions1411 behaves like denies download with no token1412 with no private token1413 returns 4041414 behaves like handling empty values for username and channel1415 username: "username", channel: "channel", status: :ok1416 returns the correct status code1417 username: "username", channel: "_", status: :bad_request1418 returns the correct status code1419 username: "_", channel: "channel", status: :bad_request_or_not_found1420 returns the correct status code1421 username: "_", channel: "_", status: :ok_or_not_found1422 returns the correct status code1423 tracking the conan_package.tgz download1424 behaves like a gitlab tracking event1425 creates a gitlab tracking event pull_package1426 behaves like project not found by recipe1427 behaves like not found request1428 returns not found1429 file upload endpoints1430 PUT /api/v4/packages/conan/v1/files/:package_name/package_version/:package_username/:package_channel/:recipe_revision/export/:file_name/authorize1431 behaves like workhorse authorize endpoint1432 behaves like conan FIPS mode1433 when FIPS mode is enabled1434 behaves like returning response status1435 returns not_found1436 behaves like rejects invalid recipe1437 with invalid recipe path1438 returns 4001439 behaves like rejects invalid file_name1440 with invalid file_name1441 returns 4001442 behaves like workhorse authorization1443 authorizes posting package with a valid token1444 rejects request without a valid token1445 rejects request without a valid permission1446 rejects requests that bypassed gitlab-workhorse1447 when using remote storage1448 when direct upload is enabled1449 responds with status 200, location of package remote store and object details1450 when direct upload is disabled1451 handles as a local file1452 behaves like handling empty values for username and channel1453 username: "username", channel: "channel", status: :ok1454 returns the correct status code1455 username: "username", channel: "_", status: :bad_request1456 returns the correct status code1457 username: "_", channel: "channel", status: :bad_request_or_not_found1458 returns the correct status code1459 username: "_", channel: "_", status: :ok_or_not_found1460 returns the correct status code1461 PUT /api/v4/packages/conan/v1/files/:package_name/package_version/:package_username/:package_channel/:recipe_revision/export/:conan_package_reference/:package_revision/:file_name/authorize1462 behaves like workhorse authorize endpoint1463 behaves like conan FIPS mode1464 when FIPS mode is enabled1465 behaves like returning response status1466 returns not_found1467 behaves like rejects invalid recipe1468 with invalid recipe path1469 returns 4001470 behaves like rejects invalid file_name1471 with invalid file_name1472 returns 4001473 behaves like workhorse authorization1474 authorizes posting package with a valid token1475 rejects request without a valid token1476 rejects request without a valid permission1477 rejects requests that bypassed gitlab-workhorse1478 when using remote storage1479 when direct upload is enabled1480 responds with status 200, location of package remote store and object details1481 when direct upload is disabled1482 handles as a local file1483 behaves like handling empty values for username and channel1484 username: "username", channel: "channel", status: :ok1485 returns the correct status code1486 username: "username", channel: "_", status: :bad_request1487 returns the correct status code1488 username: "_", channel: "channel", status: :bad_request_or_not_found1489 returns the correct status code1490 username: "_", channel: "_", status: :ok_or_not_found1491 returns the correct status code1492 PUT /api/v4/packages/conan/v1/files/:package_name/package_version/:package_username/:package_channel/:recipe_revision/export/:file_name1493 behaves like workhorse recipe file upload endpoint1494 behaves like conan FIPS mode1495 when FIPS mode is enabled1496 behaves like returning response status1497 returns not_found1498 behaves like rejects invalid recipe1499 with invalid recipe path1500 returns 4001501 behaves like rejects invalid file_name1502 with invalid file_name1503 returns 4001504 behaves like uploads a package file1505 file size above maximum limit1506 handles as a local file1507 with object storage disabled1508 without a file from workhorse1509 rejects the request1510 with a file1511 behaves like package workhorse uploads1512 without a workhorse header1513 logs an error1514 behaves like returning response status1515 returns forbidden1516 without a token1517 rejects request without a token1518 when params from workhorse are correct1519 creates package and stores package file1520 doesn't attempt to migrate file to object storage1521 with existing package1522 does not create a new package1523 marked as pending_destruction1524 does not create a new package1525 with object storage enabled1526 and direct upload enabled1527 with invalid remote_id: 1231231528 responds with status 4031529 with invalid remote_id: ../../1231231530 responds with status 4031531 with valid remote_id1532 creates package and stores package file1533 behaves like background upload schedules a file migration1534 background upload enabled1535 schedules migration of file to object storage1536 behaves like handling empty values for username and channel1537 username: "username", channel: "channel", status: :ok1538 returns the correct status code1539 username: "username", channel: "_", status: :bad_request1540 returns the correct status code1541 username: "_", channel: "channel", status: :bad_request_or_not_found1542 returns the correct status code1543 username: "_", channel: "_", status: :ok_or_not_found1544 returns the correct status code1545 behaves like handling validation error for package1546 with validation error1547 returns 4001548 PUT /api/v4/packages/conan/v1/files/:package_name/package_version/:package_username/:package_channel/:recipe_revision/export/:conan_package_reference/:package_revision/:file_name1549 behaves like workhorse package file upload endpoint1550 behaves like rejects invalid recipe1551 with invalid recipe path1552 returns 4001553 behaves like rejects invalid file_name1554 with invalid file_name1555 returns 4001556 behaves like uploads a package file1557 file size above maximum limit1558 handles as a local file1559 with object storage disabled1560 without a file from workhorse1561 rejects the request1562 with a file1563 behaves like package workhorse uploads1564 without a workhorse header1565 logs an error1566 behaves like returning response status1567 returns forbidden1568 without a token1569 rejects request without a token1570 when params from workhorse are correct1571 creates package and stores package file1572 doesn't attempt to migrate file to object storage1573 with existing package1574 does not create a new package1575 marked as pending_destruction1576 does not create a new package1577 with object storage enabled1578 and direct upload enabled1579 with invalid remote_id: 1231231580 responds with status 4031581 with invalid remote_id: ../../1231231582 responds with status 4031583 with valid remote_id1584 creates package and stores package file1585 behaves like background upload schedules a file migration1586 background upload enabled1587 schedules migration of file to object storage1588 behaves like handling empty values for username and channel1589 username: "username", channel: "channel", status: :ok1590 returns the correct status code1591 username: "username", channel: "_", status: :bad_request1592 returns the correct status code1593 username: "_", channel: "channel", status: :bad_request_or_not_found1594 returns the correct status code1595 username: "_", channel: "_", status: :ok_or_not_found1596 returns the correct status code1597 behaves like handling validation error for package1598 with validation error1599 returns 4001600 tracking the conan_package.tgz upload1601 behaves like a gitlab tracking event1602 creates a gitlab tracking event push_package1603Rack Attack global throttles1604 unauthenticated API requests1605 behaves like rate-limited unauthenticated requests1606 when the throttle is enabled1607 rejects requests over the rate limit1608 allows requests after throttling and then waiting for the next period1609 counts requests from different IPs separately1610 logs RackAttack info into structured logs1611 with custom response text1612 rejects requests over the rate limit1613 when the request is not matched by the throttle1614 does not throttle the requests1615 when the request is to the api internal endpoints1616 allows requests over the rate limit1617 when the request is authenticated by a runner token1618 does not count as unauthenticated1619 when the request is to a health endpoint1620 does not throttle the requests1621 when the request is to a container registry notification endpoint1622 does not throttle the requests1623 behaves like tracking when dry-run mode is set1624 does not throttle the requests when `*` is configured1625 logs RackAttack info into structured logs1626 when configured with the the throttled name in a list1627 does not throttle1628 when the throttle is disabled1629 allows requests over the rate limit1630 unauthenticated web requests1631 behaves like rate-limited unauthenticated requests1632 when the throttle is enabled1633 rejects requests over the rate limit1634 allows requests after throttling and then waiting for the next period1635 counts requests from different IPs separately1636 logs RackAttack info into structured logs1637 with custom response text1638 rejects requests over the rate limit1639 when the request is not matched by the throttle1640 does not throttle the requests1641 when the request is to the api internal endpoints1642 allows requests over the rate limit1643 when the request is authenticated by a runner token1644 does not count as unauthenticated1645 when the request is to a health endpoint1646 does not throttle the requests1647 when the request is to a container registry notification endpoint1648 does not throttle the requests1649 behaves like tracking when dry-run mode is set1650 does not throttle the requests when `*` is configured1651 logs RackAttack info into structured logs1652 when configured with the the throttled name in a list1653 does not throttle1654 when the throttle is disabled1655 allows requests over the rate limit1656 API requests from the frontend1657 when unauthenticated1658 behaves like rate-limited frontend API requests1659 with a CSRF token1660 uses the rate limit for web requests1661 without a CSRF session1662 always uses the rate limit for API requests1663 without a CSRF token1664 uses the rate limit for API requests1665 when authenticated1666 behaves like rate-limited frontend API requests1667 with a CSRF token1668 uses the rate limit for web requests1669 without a CSRF session1670 always uses the rate limit for API requests1671 without a CSRF token1672 uses the rate limit for API requests1673 API requests authenticated with personal access token1674 with the token in the query string1675 behaves like rate-limited user based token-authenticated requests1676 when the throttle is enabled1677 does not reject requests if the user is in the allowlist1678 when the throttle is enabled1679 rejects requests over the rate limit1680 allows requests after throttling and then waiting for the next period1681 counts requests from different requesters separately, even from the same IP1682 counts all requests from the same requesters, even via different IPs1683 logs RackAttack info into structured logs1684 behaves like tracking when dry-run mode is set1685 does not throttle the requests when `*` is configured1686 logs RackAttack info into structured logs1687 when configured with the the throttled name in a list1688 does not throttle1689 when the throttle is disabled1690 allows requests over the rate limit1691 with the token in the headers1692 behaves like rate-limited user based token-authenticated requests1693 when the throttle is enabled1694 does not reject requests if the user is in the allowlist1695 when the throttle is enabled1696 rejects requests over the rate limit1697 allows requests after throttling and then waiting for the next period1698 counts requests from different requesters separately, even from the same IP1699 counts all requests from the same requesters, even via different IPs1700 logs RackAttack info into structured logs1701 behaves like tracking when dry-run mode is set1702 does not throttle the requests when `*` is configured1703 logs RackAttack info into structured logs1704 when configured with the the throttled name in a list1705 does not throttle1706 when the throttle is disabled1707 allows requests over the rate limit1708 with the token in the OAuth headers1709 behaves like rate-limited user based token-authenticated requests1710 when the throttle is enabled1711 does not reject requests if the user is in the allowlist1712 when the throttle is enabled1713 rejects requests over the rate limit1714 allows requests after throttling and then waiting for the next period1715 counts requests from different requesters separately, even from the same IP1716 counts all requests from the same requesters, even via different IPs1717 logs RackAttack info into structured logs1718 behaves like tracking when dry-run mode is set1719 does not throttle the requests when `*` is configured1720 logs RackAttack info into structured logs1721 when configured with the the throttled name in a list1722 does not throttle1723 when the throttle is disabled1724 allows requests over the rate limit1725 with the token in basic auth1726 behaves like rate-limited user based token-authenticated requests1727 when the throttle is enabled1728 does not reject requests if the user is in the allowlist1729 when the throttle is enabled1730 rejects requests over the rate limit1731 allows requests after throttling and then waiting for the next period1732 counts requests from different requesters separately, even from the same IP1733 counts all requests from the same requesters, even via different IPs1734 logs RackAttack info into structured logs1735 behaves like tracking when dry-run mode is set1736 does not throttle the requests when `*` is configured1737 logs RackAttack info into structured logs1738 when configured with the the throttled name in a list1739 does not throttle1740 when the throttle is disabled1741 allows requests over the rate limit1742 with a read_api scope1743 with the token in the headers1744 behaves like rate-limited user based token-authenticated requests1745 when the throttle is enabled1746 does not reject requests if the user is in the allowlist1747 when the throttle is enabled1748 rejects requests over the rate limit1749 allows requests after throttling and then waiting for the next period1750 counts requests from different requesters separately, even from the same IP1751 counts all requests from the same requesters, even via different IPs1752 logs RackAttack info into structured logs1753 behaves like tracking when dry-run mode is set1754 does not throttle the requests when `*` is configured1755 logs RackAttack info into structured logs1756 when configured with the the throttled name in a list1757 does not throttle1758 when the throttle is disabled1759 allows requests over the rate limit1760 with the token in the OAuth headers1761 behaves like rate-limited user based token-authenticated requests1762 when the throttle is enabled1763 does not reject requests if the user is in the allowlist1764 when the throttle is enabled1765 rejects requests over the rate limit1766 allows requests after throttling and then waiting for the next period1767 counts requests from different requesters separately, even from the same IP1768 counts all requests from the same requesters, even via different IPs1769 logs RackAttack info into structured logs1770 behaves like tracking when dry-run mode is set1771 does not throttle the requests when `*` is configured1772 logs RackAttack info into structured logs1773 when configured with the the throttled name in a list1774 does not throttle1775 when the throttle is disabled1776 allows requests over the rate limit1777 API requests authenticated with OAuth token1778 with the token in the query string1779 behaves like rate-limited user based token-authenticated requests1780 when the throttle is enabled1781 does not reject requests if the user is in the allowlist1782 when the throttle is enabled1783 rejects requests over the rate limit1784 allows requests after throttling and then waiting for the next period1785 counts requests from different requesters separately, even from the same IP1786 counts all requests from the same requesters, even via different IPs1787 logs RackAttack info into structured logs1788 behaves like tracking when dry-run mode is set1789 does not throttle the requests when `*` is configured1790 logs RackAttack info into structured logs1791 when configured with the the throttled name in a list1792 does not throttle1793 when the throttle is disabled1794 allows requests over the rate limit1795 with the token in the headers1796 behaves like rate-limited user based token-authenticated requests1797 when the throttle is enabled1798 does not reject requests if the user is in the allowlist1799 when the throttle is enabled1800 rejects requests over the rate limit1801 allows requests after throttling and then waiting for the next period1802 counts requests from different requesters separately, even from the same IP1803 counts all requests from the same requesters, even via different IPs1804 logs RackAttack info into structured logs1805 behaves like tracking when dry-run mode is set1806 does not throttle the requests when `*` is configured1807 logs RackAttack info into structured logs1808 when configured with the the throttled name in a list1809 does not throttle1810 when the throttle is disabled1811 allows requests over the rate limit1812 with a read_api scope1813 behaves like rate-limited user based token-authenticated requests1814 when the throttle is enabled1815 does not reject requests if the user is in the allowlist1816 when the throttle is enabled1817 rejects requests over the rate limit1818 allows requests after throttling and then waiting for the next period1819 counts requests from different requesters separately, even from the same IP1820 counts all requests from the same requesters, even via different IPs1821 logs RackAttack info into structured logs1822 behaves like tracking when dry-run mode is set1823 does not throttle the requests when `*` is configured1824 logs RackAttack info into structured logs1825 when configured with the the throttled name in a list1826 does not throttle1827 when the throttle is disabled1828 allows requests over the rate limit1829 "web" (non-API) requests authenticated with RSS token1830 with the token in the query string1831 behaves like rate-limited user based token-authenticated requests1832 when the throttle is enabled1833 does not reject requests if the user is in the allowlist1834 when the throttle is enabled1835 rejects requests over the rate limit1836 allows requests after throttling and then waiting for the next period1837 counts requests from different requesters separately, even from the same IP1838 counts all requests from the same requesters, even via different IPs1839 logs RackAttack info into structured logs1840 behaves like tracking when dry-run mode is set1841 does not throttle the requests when `*` is configured1842 logs RackAttack info into structured logs1843 when configured with the the throttled name in a list1844 does not throttle1845 when the throttle is disabled1846 allows requests over the rate limit1847 web requests authenticated with regular login1848 behaves like rate-limited web authenticated requests1849 when the throttle is enabled1850DEPRECATION 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)1851 rejects requests over the rate limit1852DEPRECATION 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)1853DEPRECATION 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)1854 does not reject requests if the user is in the allowlist1855DEPRECATION 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)1856DEPRECATION 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)1857 allows requests after throttling and then waiting for the next period1858DEPRECATION 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)1859DEPRECATION 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)1860 counts requests from different users separately, even from the same IP1861DEPRECATION 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)1862 counts all requests from the same user, even via different IPs1863DEPRECATION 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)1864 logs RackAttack info into structured logs1865 behaves like tracking when dry-run mode is set1866DEPRECATION 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)1867DEPRECATION 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)1868 does not throttle the requests when `*` is configured1869DEPRECATION 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)1870DEPRECATION 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)1871 logs RackAttack info into structured logs1872 when configured with the the throttled name in a list1873DEPRECATION 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)1874DEPRECATION 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)1875 does not throttle1876 when the throttle is disabled1877DEPRECATION 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)1878DEPRECATION 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)1879 allows requests over the rate limit1880 protected paths1881 unauthenticated requests1882 when protected paths throttle is disabled1883 allows requests over the rate limit1884 when protected paths throttle is enabled1885 rejects requests over the rate limit1886 allows non-POST requests to protected paths over the rate limit1887 allows POST requests to unprotected paths over the rate limit1888 behaves like tracking when dry-run mode is set1889 does not throttle the requests when `*` is configured1890 logs RackAttack info into structured logs1891 when configured with the the throttled name in a list1892 does not throttle1893 API requests authenticated with personal access token1894 with the token in the query string1895 behaves like rate-limited user based token-authenticated requests1896 when the throttle is enabled1897 does not reject requests if the user is in the allowlist1898 when the throttle is enabled1899 rejects requests over the rate limit1900 allows requests after throttling and then waiting for the next period1901 counts requests from different requesters separately, even from the same IP1902 counts all requests from the same requesters, even via different IPs1903 logs RackAttack info into structured logs1904 behaves like tracking when dry-run mode is set1905 does not throttle the requests when `*` is configured1906 logs RackAttack info into structured logs1907 when configured with the the throttled name in a list1908 does not throttle1909 when the throttle is disabled1910 allows requests over the rate limit1911 with the token in the headers1912 behaves like rate-limited user based token-authenticated requests1913 when the throttle is enabled1914 does not reject requests if the user is in the allowlist1915 when the throttle is enabled1916 rejects requests over the rate limit1917 allows requests after throttling and then waiting for the next period1918 counts requests from different requesters separately, even from the same IP1919 counts all requests from the same requesters, even via different IPs1920 logs RackAttack info into structured logs1921 behaves like tracking when dry-run mode is set1922 does not throttle the requests when `*` is configured1923 logs RackAttack info into structured logs1924 when configured with the the throttled name in a list1925 does not throttle1926 when the throttle is disabled1927 allows requests over the rate limit1928 web requests authenticated with regular login1929 behaves like rate-limited web authenticated requests1930 when the throttle is enabled1931 rejects requests over the rate limit1932 does not reject requests if the user is in the allowlist1933 allows requests after throttling and then waiting for the next period1934 counts requests from different users separately, even from the same IP1935 counts all requests from the same user, even via different IPs1936 logs RackAttack info into structured logs1937 behaves like tracking when dry-run mode is set1938 does not throttle the requests when `*` is configured1939 logs RackAttack info into structured logs1940 when configured with the the throttled name in a list1941 does not throttle1942 when the throttle is disabled1943 allows requests over the rate limit1944 Packages API1945 unauthenticated1946 when unauthenticated packages api throttle is disabled1947 allows requests over the rate limit1948 when unauthenticated api throttle is enabled1949 rejects requests over the unauthenticated api rate limit1950 when unauthenticated web throttle is enabled1951 ignores unauthenticated web throttle1952 when unauthenticated packages api throttle is enabled1953 rejects requests over the rate limit1954 when unauthenticated api throttle is lower1955 ignores unauthenticated api throttle1956 behaves like tracking when dry-run mode is set1957 does not throttle the requests when `*` is configured1958 logs RackAttack info into structured logs1959 when configured with the the throttled name in a list1960 does not throttle1961 authenticated1962 with the token in the query string1963 behaves like rate-limited user based token-authenticated requests1964 when the throttle is enabled1965 does not reject requests if the user is in the allowlist1966 when the throttle is enabled1967 rejects requests over the rate limit1968 allows requests after throttling and then waiting for the next period1969 counts requests from different requesters separately, even from the same IP1970 counts all requests from the same requesters, even via different IPs1971 logs RackAttack info into structured logs1972 behaves like tracking when dry-run mode is set1973 does not throttle the requests when `*` is configured1974 logs RackAttack info into structured logs1975 when configured with the the throttled name in a list1976 does not throttle1977 when the throttle is disabled1978 allows requests over the rate limit1979 with the token in the headers1980 behaves like rate-limited user based token-authenticated requests1981 when the throttle is enabled1982 does not reject requests if the user is in the allowlist1983 when the throttle is enabled1984 rejects requests over the rate limit1985 allows requests after throttling and then waiting for the next period1986 counts requests from different requesters separately, even from the same IP1987 counts all requests from the same requesters, even via different IPs1988 logs RackAttack info into structured logs1989 behaves like tracking when dry-run mode is set1990 does not throttle the requests when `*` is configured1991 logs RackAttack info into structured logs1992 when configured with the the throttled name in a list1993 does not throttle1994 when the throttle is disabled1995 allows requests over the rate limit1996 precedence over authenticated api throttle1997 when authenticated packages api throttle is enabled1998 when authenticated api throttle is lower1999 ignores authenticated api throttle2000 when authenticated packages api throttle is disabled2001 when authenticated api throttle is enabled2002 rejects requests over the authenticated api rate limit2003 authenticated via deploy token headers2004 behaves like rate-limited deploy-token-authenticated requests2005 when the throttle is enabled2006 rejects requests over the rate limit2007 allows requests after throttling and then waiting for the next period2008 counts requests from different requesters separately, even from the same IP2009 counts all requests from the same requesters, even via different IPs2010 logs RackAttack info into structured logs2011 behaves like tracking when dry-run mode is set2012 does not throttle the requests when `*` is configured2013 logs RackAttack info into structured logs2014 when configured with the the throttled name in a list2015 does not throttle2016 when the throttle is disabled2017 allows requests over the rate limit2018 dependency proxy2019 getting a manifest2020 behaves like rate-limited user based token-authenticated requests2021 when the throttle is enabled2022 does not reject requests if the user is in the allowlist2023 when the throttle is enabled2024 rejects requests over the rate limit2025 allows requests after throttling and then waiting for the next period2026 counts requests from different requesters separately, even from the same IP2027 counts all requests from the same requesters, even via different IPs2028 logs RackAttack info into structured logs2029 behaves like tracking when dry-run mode is set2030 does not throttle the requests when `*` is configured2031 logs RackAttack info into structured logs2032 when configured with the the throttled name in a list2033 does not throttle2034 when the throttle is disabled2035 allows requests over the rate limit2036 getting a blob2037 behaves like rate-limited user based token-authenticated requests2038 when the throttle is enabled2039 does not reject requests if the user is in the allowlist2040 when the throttle is enabled2041 rejects requests over the rate limit2042 allows requests after throttling and then waiting for the next period2043 counts requests from different requesters separately, even from the same IP2044 counts all requests from the same requesters, even via different IPs2045 logs RackAttack info into structured logs2046 behaves like tracking when dry-run mode is set2047 does not throttle the requests when `*` is configured2048 logs RackAttack info into structured logs2049 when configured with the the throttled name in a list2050 does not throttle2051 when the throttle is disabled2052 allows requests over the rate limit2053 authenticated git lfs requests2054 with regular login2055 behaves like rate-limited web authenticated requests2056 when the throttle is enabled2057 rejects requests over the rate limit2058 does not reject requests if the user is in the allowlist2059 allows requests after throttling and then waiting for the next period2060 counts requests from different users separately, even from the same IP2061 counts all requests from the same user, even via different IPs2062 logs RackAttack info into structured logs2063 behaves like tracking when dry-run mode is set2064 does not throttle the requests when `*` is configured2065 logs RackAttack info into structured logs2066 when configured with the the throttled name in a list2067 does not throttle2068 when the throttle is disabled2069 allows requests over the rate limit2070 with the token in the headers2071 behaves like rate-limited user based token-authenticated requests2072 when the throttle is enabled2073 does not reject requests if the user is in the allowlist2074 when the throttle is enabled2075 rejects requests over the rate limit2076 allows requests after throttling and then waiting for the next period2077 counts requests from different requesters separately, even from the same IP2078 counts all requests from the same requesters, even via different IPs2079 logs RackAttack info into structured logs2080 behaves like tracking when dry-run mode is set2081 does not throttle the requests when `*` is configured2082 logs RackAttack info into structured logs2083 when configured with the the throttled name in a list2084 does not throttle2085 when the throttle is disabled2086 allows requests over the rate limit2087 precedence over authenticated web throttle2088 when authenticated git lfs throttle is enabled2089 when authenticated web throttle is lower2090 ignores authenticated web throttle2091 when authenticated git lfs throttle is disabled2092 when authenticated web throttle is enabled2093 rejects requests over the authenticated web rate limit2094 Files API2095 unauthenticated2096 when unauthenticated files api throttle is disabled2097 allows requests over the rate limit2098 when unauthenticated api throttle is enabled2099 rejects requests over the unauthenticated api rate limit2100 when unauthenticated web throttle is enabled2101 ignores unauthenticated web throttle2102 when unauthenticated files api throttle is enabled2103 rejects requests over the rate limit2104 when unauthenticated api throttle is lower2105 ignores unauthenticated api throttle2106 behaves like tracking when dry-run mode is set2107 does not throttle the requests when `*` is configured2108 logs RackAttack info into structured logs2109 when configured with the the throttled name in a list2110 does not throttle2111 authenticated2112 with the token in the query string2113 behaves like rate-limited user based token-authenticated requests2114 when the throttle is enabled2115 does not reject requests if the user is in the allowlist2116 when the throttle is enabled2117 rejects requests over the rate limit2118 allows requests after throttling and then waiting for the next period2119 counts requests from different requesters separately, even from the same IP2120 counts all requests from the same requesters, even via different IPs2121 logs RackAttack info into structured logs2122 behaves like tracking when dry-run mode is set2123 does not throttle the requests when `*` is configured2124 logs RackAttack info into structured logs2125 when configured with the the throttled name in a list2126 does not throttle2127 when the throttle is disabled2128 allows requests over the rate limit2129 with the token in the headers2130 behaves like rate-limited user based token-authenticated requests2131 when the throttle is enabled2132 does not reject requests if the user is in the allowlist2133 when the throttle is enabled2134 rejects requests over the rate limit2135 allows requests after throttling and then waiting for the next period2136 counts requests from different requesters separately, even from the same IP2137 counts all requests from the same requesters, even via different IPs2138 logs RackAttack info into structured logs2139 behaves like tracking when dry-run mode is set2140 does not throttle the requests when `*` is configured2141 logs RackAttack info into structured logs2142 when configured with the the throttled name in a list2143 does not throttle2144 when the throttle is disabled2145 allows requests over the rate limit2146 precedence over authenticated api throttle2147 when authenticated files api throttle is enabled2148 when authenticated api throttle is lower2149 ignores authenticated api throttle2150 when authenticated files api throttle is disabled2151 when authenticated api throttle is enabled2152 rejects requests over the authenticated api rate limit2153 Deprecated API2154 unauthenticated2155 when unauthenticated deprecated api throttle is disabled2156 allows requests over the rate limit2157 when unauthenticated api throttle is enabled2158 rejects requests over the unauthenticated api rate limit2159 when unauthenticated web throttle is enabled2160 ignores unauthenticated web throttle2161 when unauthenticated deprecated api throttle is enabled2162 rejects requests over the rate limit2163 when group endpoint is given with_project=false2164 permits requests over the rate limit2165 when unauthenticated api throttle is lower2166 ignores unauthenticated api throttle2167 behaves like tracking when dry-run mode is set2168 does not throttle the requests when `*` is configured2169 logs RackAttack info into structured logs2170 when configured with the the throttled name in a list2171 does not throttle2172 authenticated2173 with the token in the query string2174 behaves like rate-limited user based token-authenticated requests2175 when the throttle is enabled2176 does not reject requests if the user is in the allowlist2177 when the throttle is enabled2178 rejects requests over the rate limit2179 allows requests after throttling and then waiting for the next period2180 counts requests from different requesters separately, even from the same IP2181 counts all requests from the same requesters, even via different IPs2182 logs RackAttack info into structured logs2183 behaves like tracking when dry-run mode is set2184 does not throttle the requests when `*` is configured2185 logs RackAttack info into structured logs2186 when configured with the the throttled name in a list2187 does not throttle2188 when the throttle is disabled2189 allows requests over the rate limit2190 with the token in the headers2191 behaves like rate-limited user based token-authenticated requests2192 when the throttle is enabled2193 does not reject requests if the user is in the allowlist2194 when the throttle is enabled2195 rejects requests over the rate limit2196 allows requests after throttling and then waiting for the next period2197 counts requests from different requesters separately, even from the same IP2198 counts all requests from the same requesters, even via different IPs2199 logs RackAttack info into structured logs2200 behaves like tracking when dry-run mode is set2201 does not throttle the requests when `*` is configured2202 logs RackAttack info into structured logs2203 when configured with the the throttled name in a list2204 does not throttle2205 when the throttle is disabled2206 allows requests over the rate limit2207 precedence over authenticated api throttle2208 when authenticated deprecated api throttle is enabled2209 when authenticated api throttle is lower2210 ignores authenticated api throttle2211 when authenticated deprecated api throttle is disabled2212 when authenticated api throttle is enabled2213 rejects requests over the authenticated api rate limit2214 throttle bypass header2215 without the bypass header set2216 behaves like reject requests over the rate limit2217 rejects requests over the rate limit2218 with bypass header set to 12219 does not throttle2220 with bypass header set to some other value2221 behaves like reject requests over the rate limit2222 rejects requests over the rate limit2223 Gitlab::RackAttack::Request#unauthenticated?2224 without authentication2225 request is unauthenticated2226 authenticated by a runner token2227 request is authenticated2228 authenticated with personal access token2229 request is authenticated by token in query string2230 request is authenticated by token in the headers2231 request is authenticated by token in the OAuth headers2232 request is authenticated by token in basic auth2233 authenticated with OAuth token2234 request is authenticated by token in query string2235 request is authenticated by token in the headers2236 authenticated with lfs token2237 request is authenticated by token in basic auth2238 request is not authenticated with API URL2239 authenticated with regular login2240 request is authenticated after login2241 request is not authenticated by credentials in basic auth2242 with POST git-upload-pack2243 request is authenticated by credentials in basic auth2244 with GET info/refs2245 request is authenticated by credentials in basic auth2246API::Badges2247 when deleting a badge2248 and the source is a project2249 cannot delete badges owned by the project group2250 when updating a badge2251 and the source is a project2252 cannot update badges owned by the project group2253 Endpoints2254 behaves like GET /:sources/:id/badges2255 with :sources == projects2256 avoids N+1 queries2257 behaves like a 404 response when source is private2258 returns 4042259 when authenticated as a maintainer2260 returns 2002261 when authenticated as a developer2262 returns 2002263 when authenticated as a access_requester2264 returns 2002265 when authenticated as a stranger2266 returns 2002267 behaves like GET /:sources/:id/badges/:badge_id2268 with :sources == projects2269 behaves like a 404 response when source is private2270 returns 4042271 behaves like GET /:sources/:id/badges/render2272 with :sources == projects2273 returns 400 when link_url is not given2274 returns 400 when image_url is not given2275 returns 400 when link_url or image_url is not valid2276 behaves like a 404 response when source is private2277 returns 4042278 when authenticated as a non-member or member with insufficient rights2279 as a access_requester2280 returns 4032281 as a stranger2282 returns 4032283 as a developer2284 returns 4032285 when authenticated as a maintainer/owner2286 gets the rendered badge values2287 behaves like POST /:sources/:id/badges2288 with :sources == projects2289 returns 400 when link_url is not given2290 returns 400 when image_url is not given2291 returns 400 when link_url or image_url is not valid2292 behaves like a 404 response when source is private2293 returns 4042294 when authenticated as a non-member or member with insufficient rights2295 as a access_requester2296 returns 4032297 as a stranger2298 returns 4032299 as a developer2300 returns 4032301 when authenticated as a maintainer/owner2302 creates a new badge2303 behaves like PUT /:sources/:id/badges/:badge_id2304 with :sources == projects2305 returns 400 when link_url or image_url is not valid2306 behaves like a 404 response when source is private2307 returns 4042308 when authenticated as a non-member or member with insufficient rights2309 as a access_requester2310 returns 4032311 as a stranger2312 returns 4032313 as a developer2314 returns 4032315 behaves like DELETE /:sources/:id/badges/:badge_id2316 with :sources == projects2317 returns 404 if badge does not exist2318 behaves like a 404 response when source is private2319 returns 4042320 when authenticated as a non-member or member with insufficient rights2321 as a access_requester2322 returns 4032323 as a developer2324 returns 4032325 as a stranger2326 returns 4032327 behaves like GET /:sources/:id/badges2328 with :sources == groups2329 avoids N+1 queries2330 behaves like a 404 response when source is private2331 returns 4042332 when authenticated as a maintainer2333 returns 2002334 when authenticated as a developer2335 returns 2002336 when authenticated as a access_requester2337 returns 2002338 when authenticated as a stranger2339 returns 2002340 behaves like GET /:sources/:id/badges/:badge_id2341 with :sources == groups2342 behaves like a 404 response when source is private2343 returns 4042344 behaves like GET /:sources/:id/badges/render2345 with :sources == groups2346 returns 400 when link_url is not given2347 returns 400 when image_url is not given2348 returns 400 when link_url or image_url is not valid2349 behaves like a 404 response when source is private2350 returns 4042351 when authenticated as a non-member or member with insufficient rights2352 as a access_requester2353 returns 4032354 as a stranger2355 returns 4032356 as a developer2357 returns 4032358 when authenticated as a maintainer/owner2359 gets the rendered badge values2360 behaves like POST /:sources/:id/badges2361 with :sources == groups2362 returns 400 when link_url is not given2363 returns 400 when image_url is not given2364 returns 400 when link_url or image_url is not valid2365 behaves like a 404 response when source is private2366 returns 4042367 when authenticated as a non-member or member with insufficient rights2368 as a access_requester2369 returns 4032370 as a stranger2371 returns 4032372 as a developer2373 returns 4032374 when authenticated as a maintainer/owner2375 creates a new badge2376 behaves like PUT /:sources/:id/badges/:badge_id2377 with :sources == groups2378 returns 400 when link_url or image_url is not valid2379 behaves like a 404 response when source is private2380 returns 4042381 when authenticated as a non-member or member with insufficient rights2382 as a access_requester2383 returns 4032384 as a stranger2385 returns 4032386 as a developer2387 returns 4032388 behaves like DELETE /:sources/:id/badges/:badge_id2389 with :sources == groups2390 returns 404 if badge does not exist2391 behaves like a 404 response when source is private2392 returns 4042393 when authenticated as a non-member or member with insufficient rights2394 as a access_requester2395 returns 4032396 as a developer2397 returns 4032398 as a stranger2399 returns 4032400API::Issues2401 GET /groups/:id/issues2402 when group has subgroups2403 when user is unauthenticated2404 also returns subgroups public projects issues2405 also returns subgroups public projects issues filtered by milestone2406 issues_statistics2407 no state is treated as all state2408 behaves like group issues statistics2409 returns issues statistics2410 statistics when all state is passed2411 behaves like group issues statistics2412 returns issues statistics2413 closed state is treated as all state2414 behaves like group issues statistics2415 returns issues statistics2416 opened state is treated as all state2417 behaves like group issues statistics2418 returns issues statistics2419 when filtering by milestone and no state treated as all state2420 behaves like group issues statistics2421 returns issues statistics2422 when filtering by milestone and all state2423 behaves like group issues statistics2424 returns issues statistics2425 when filtering by milestone and closed state treated as all state2426 behaves like group issues statistics2427 returns issues statistics2428 when filtering by milestone and opened state treated as all state2429 behaves like group issues statistics2430 returns issues statistics2431 when user is a group member2432 also returns subgroups projects issues2433 also returns subgroups public projects issues filtered by milestone2434 issues_statistics2435 no state is treated as all state2436 behaves like group issues statistics2437 returns issues statistics2438 statistics when all state is passed2439 behaves like group issues statistics2440 returns issues statistics2441 closed state is treated as all state2442 behaves like group issues statistics2443 returns issues statistics2444 opened state is treated as all state2445 behaves like group issues statistics2446 returns issues statistics2447 when filtering by milestone and no state treated as all state2448 behaves like group issues statistics2449 returns issues statistics2450 when filtering by milestone and all state2451 behaves like group issues statistics2452 returns issues statistics2453 when filtering by milestone and closed state treated as all state2454 behaves like group issues statistics2455 returns issues statistics2456 when filtering by milestone and opened state treated as all state2457 behaves like group issues statistics2458 returns issues statistics2459 when returns issue merge_requests_count for different access levels2460 behaves like accessible merge requests count2461 returns anonymous accessible merge requests count2462 returns guest accessible merge requests count2463 returns reporter accessible merge requests count2464 returns admin accessible merge requests count2465 when user is unauthenticated2466 lists all issues in public projects2467 also returns subgroups public projects issues filtered by milestone2468 issues_statistics2469 no state is treated as all state2470 behaves like group issues statistics2471 returns issues statistics2472 statistics when all state is passed2473 behaves like group issues statistics2474 returns issues statistics2475 closed state is treated as all state2476 behaves like group issues statistics2477 returns issues statistics2478 opened state is treated as all state2479 behaves like group issues statistics2480 returns issues statistics2481 when filtering by milestone and no state treated as all state2482 behaves like group issues statistics2483 returns issues statistics2484 when filtering by milestone and all state2485 behaves like group issues statistics2486 returns issues statistics2487 when filtering by milestone and closed state treated as all state2488 behaves like group issues statistics2489 returns issues statistics2490 when filtering by milestone and opened state treated as all state2491 behaves like group issues statistics2492 returns issues statistics2493 when user is a group member2494 exposes known attributes2495 returns all group issues (including opened and closed)2496 returns group issues without confidential issues for non project members2497 returns group confidential issues for author2498 returns group confidential issues for assignee2499 returns group issues with confidential issues for project members2500 returns group confidential issues for admin2501 returns only confidential issues2502 returns only public issues2503 returns issues matching given search string for title2504 returns issues matching given search string for description2505 returns an array of issues found by iids2506 returns an empty array if iid does not exist2507 returns an empty array if no group issue matches labels2508 returns an array of group issues with any label2509 returns an array of group issues with any label with labels param as array2510 returns an array of group issues with no label2511 returns an array of group issues with no label with labels param as array2512 returns an empty array if no issue matches milestone2513 returns an empty array if milestone does not exist2514 returns an array of issues in given milestone2515 returns an array of issues matching state in milestone2516 returns an array of issues with no milestone2517 sorts ascending when requested2518 sorts by updated_at descending when requested2519 sorts by updated_at ascending when requested2520 labels parameter2521 returns an array of labeled group issues2522 returns an array of labeled group issues with labels param as array2523 returns an array of labeled group issues where all labels match2524 returns an array of labeled group issues where all labels match with labels param as array2525 with labeled issues2526 behaves like labeled issues with labels and label_name params2527 array of labeled issues when all labels match2528 behaves like returns label names2529 returns label names2530 array of labeled issues when all labels match with labels param as array2531 behaves like returns label names2532 returns label names2533 negation2534 array of labeled issues when all labels match with negation2535 behaves like returns negated label names2536 returns label names2537 array of labeled issues when all labels match with negation with label params as array2538 behaves like returns negated label names2539 returns label names2540 when with_labels_details provided2541 array of labeled issues when all labels match2542 behaves like returns basic label entity2543 returns basic label entity2544 array of labeled issues when all labels match with labels param as array2545 behaves like returns basic label entity2546 returns basic label entity2547 with archived projects2548 returns only non archived projects issues2549 returns issues from archived projects if non_archived it set to false2550 without sort params2551 sorts by created_at descending by default2552 with 2 issues with same created_at2553 page breaks first page correctly2554 page breaks second page correctly2555 issues_statistics2556 no state is treated as all state2557 behaves like group issues statistics2558 returns issues statistics2559 statistics when all state is passed2560 behaves like group issues statistics2561 returns issues statistics2562 closed state is treated as all state2563 behaves like group issues statistics2564 returns issues statistics2565 opened state is treated as all state2566 behaves like group issues statistics2567 returns issues statistics2568 when filtering by milestone and no state treated as all state2569 behaves like group issues statistics2570 returns issues statistics2571 when filtering by milestone and all state2572 behaves like group issues statistics2573 returns issues statistics2574 when filtering by milestone and closed state treated as all state2575 behaves like group issues statistics2576 returns issues statistics2577 when filtering by milestone and opened state treated as all state2578 behaves like group issues statistics2579 returns issues statistics2580 sort does not affect statistics2581 behaves like group issues statistics2582 returns issues statistics2583 filtering by assignee_username2584 returns issues with by assignee_username2585 returns issues by assignee_username as string2586 returns error when multiple assignees are passed2587 returns error when assignee_username and assignee_id are passed together2588 #to_reference2589 exposes reference path in context of group2590 referencing from parent group2591 exposes reference path in context of parent group2592Update of user activity2593 behaves like updating of user activity2594 without an authenticated user2595 does not set the last activity cookie2596 with an authenticated user2597 with a POST request2598 does not set the last activity cookie2599 on GET to /group2600 updates the last activity date2601 when calling it twice2602 updates last_activity_on just once2603 when last_activity_on is nil2604 updates the last activity date2605 when last_activity_on is stale2606 updates the last activity date2607 when last_activity_on is up to date2608 does not try to update it2609 on GET to /group/project2610 updates the last activity date2611 when calling it twice2612 updates last_activity_on just once2613 when last_activity_on is nil2614 updates the last activity date2615 when last_activity_on is stale2616 updates the last activity date2617 when last_activity_on is up to date2618 does not try to update it2619 on GET to /groups/group/-/issues2620 updates the last activity date2621 when calling it twice2622 updates last_activity_on just once2623 when last_activity_on is nil2624 updates the last activity date2625 when last_activity_on is stale2626 updates the last activity date2627 when last_activity_on is up to date2628 does not try to update it2629 on GET to /groups/group/-/boards2630 updates the last activity date2631 when calling it twice2632 updates last_activity_on just once2633 when last_activity_on is nil2634 updates the last activity date2635 when last_activity_on is stale2636 updates the last activity date2637 when last_activity_on is up to date2638 does not try to update it2639 on GET to /dashboard/projects2640 updates the last activity date2641 when calling it twice2642 updates last_activity_on just once2643 when last_activity_on is nil2644 updates the last activity date2645 when last_activity_on is stale2646 updates the last activity date2647 when last_activity_on is up to date2648 does not try to update it2649 on GET to /dashboard/snippets2650DEPRECATION 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)2651 updates the last activity date2652 when calling it twice2653DEPRECATION 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)2654DEPRECATION 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)2655 updates last_activity_on just once2656 when last_activity_on is nil2657DEPRECATION 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)2658 updates the last activity date2659 when last_activity_on is stale2660DEPRECATION 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)2661 updates the last activity date2662 when last_activity_on is up to date2663DEPRECATION 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)2664 does not try to update it2665 on GET to /dashboard/groups2666 updates the last activity date2667 when calling it twice2668 updates last_activity_on just once2669 when last_activity_on is nil2670 updates the last activity date2671 when last_activity_on is stale2672 updates the last activity date2673 when last_activity_on is up to date2674 does not try to update it2675 on GET to /dashboard/todos2676 updates the last activity date2677 when calling it twice2678 updates last_activity_on just once2679 when last_activity_on is nil2680 updates the last activity date2681 when last_activity_on is stale2682 updates the last activity date2683 when last_activity_on is up to date2684 does not try to update it2685 on GET to /group/project/-/issues2686 updates the last activity date2687 when calling it twice2688 updates last_activity_on just once2689 when last_activity_on is nil2690 updates the last activity date2691 when last_activity_on is stale2692 updates the last activity date2693 when last_activity_on is up to date2694 does not try to update it2695 on GET to /group/project/-/issues/102696 updates the last activity date2697 when calling it twice2698 updates last_activity_on just once2699 when last_activity_on is nil2700 updates the last activity date2701 when last_activity_on is stale2702 updates the last activity date2703 when last_activity_on is up to date2704 does not try to update it2705 on GET to /group/project/-/merge_requests2706 updates the last activity date2707 when calling it twice2708 updates last_activity_on just once2709 when last_activity_on is nil2710 updates the last activity date2711 when last_activity_on is stale2712 updates the last activity date2713 when last_activity_on is up to date2714 does not try to update it2715 on GET to /group/project/-/merge_requests/152716 updates the last activity date2717 when calling it twice2718 updates last_activity_on just once2719 when last_activity_on is nil2720 updates the last activity date2721 when last_activity_on is stale2722 updates the last activity date2723 when last_activity_on is up to date2724 does not try to update it2725Groups::MilestonesController2726 behaves like milestone tabs2727 #issues2728 as html2729 redirects to milestone#show2730 as json2731 renders the issues tab template to a string2732 #merge_requests2733 as html2734 redirects to milestone#show2735 as json2736 renders the merge requests tab template to a string2737 #participants2738 as html2739 redirects to milestone#show2740 as json2741 renders the participants tab template to a string2742 #labels2743 as html2744 redirects to milestone#show2745 as json2746 renders the labels tab template to a string2747 #index2748 as HTML2749 shows group milestones page2750 searches legacy milestones by title when search_title is given2751 searches group milestones by title when search_title is given2752 when anonymous user2753 shows group milestones page2754 when issues and merge requests are disabled in public project2755 when anonymous user2756 behaves like milestone not accessible2757 does not return milestone2758 when non project or group member user2759 behaves like milestone not accessible2760 does not return milestone2761 when group member user2762 returns the milestone2763 when subgroup milestones are present2764 shows subgroup milestones that user has access to2765 when user has no access to subgroups2766 does not show subgroup milestones2767 as JSON2768 lists project and group milestones2769 with subgroup milestones2770 lists descendants group milestones2771 for a subgroup2772 includes ancestor group milestones2773 external authorization2774 behaves like disabled when using an external authorization service2775 works when the feature is not enabled2776 renders a 404 with a message when the feature is enabled2777 #show2778 renders for a group milestone2779 #create2780 creates group milestone with Chinese title2781 #update2782 updates group milestone2783 #destroy2784 removes milestone2785 #ensure_canonical_path2786 for a GET request2787 when requesting the canonical path2788 non-show path2789 with exactly matching casing2790 does not redirect2791 with different casing2792 redirects to the correct casing2793 show path2794 with exactly matching casing2795 does not redirect2796 with different casing2797 redirects to the correct casing2798 when requesting a redirected path2799 redirects to the canonical path2800 with an AJAX request2801 redirects to the canonical path but does not set flash message2802 with JSON format2803 redirects to the canonical path but does not set flash message2804 when the old group path is a substring of the scheme or host2805 does not modify the requested host2806 when the old group path is substring of groups2807 does not modify the /groups part of the path2808 when the old group path is substring of groups plus the new path2809 does not modify the /groups part of the path2810 for a non-GET request2811 when requesting the canonical path with different casing2812 does not 4042813 does not redirect to the correct casing2814 when requesting a redirected path2815 returns not found2816API::Ci::Jobs2817 GET /job2818 when token is valid but not CI_JOB_TOKEN2819 returns not found2820 with job token authentication header2821 returns specific job data2822 behaves like returns common job data2823 returns common job data2824 behaves like returns common pipeline data2825 returns common pipeline data2826 with job token authentication params2827 returns specific job data2828 behaves like returns common job data2829 returns common job data2830 behaves like returns common pipeline data2831 returns common pipeline data2832 with non running job2833 behaves like returns unauthorized2834 returns unauthorized2835 with basic auth header2836 does not return a job2837 without authentication2838 behaves like returns unauthorized2839 returns unauthorized2840 GET /job/allowed_agents2841 when token is valid and user is authorized2842 behaves like valid allowed_agents request2843 returns agent info2844 when deployment2845 includes environment slug2846 when non-deployment environment action2847 includes environment slug2848 when passing the token as params2849 behaves like valid allowed_agents request2850 returns agent info2851 when user is anonymous2852 returns unauthorized2853 when token is invalid because job has finished2854 returns unauthorized2855 when token is invalid2856 returns unauthorized2857 when token is valid but not CI_JOB_TOKEN2858 returns not found2859 GET /projects/:id/jobs2860 authorized user2861 returns project jobs2862 returns correct values2863 returns pipeline data2864 avoids N+1 queries2865 without artifacts and trace2866 returns no artifacts nor trace data2867 behaves like a job with artifacts and trace2868 with artifacts and trace2869 returns artifacts and trace data2870 filter project with one scope element2871 is expected to be a kind of Array2872 filter project with array of scope elements2873 is expected to be a kind of Array2874 respond 400 when scope contains invalid state2875 is expected to respond with numeric status code bad_request2876 unauthorized user2877 when user is not logged in2878 does not return project jobs2879 when user is guest2880 does not return project jobs2881 GET /projects/:id/jobs/:job_id2882 authorized user2883 returns specific job data2884 behaves like returns common job data2885 returns common job data2886 behaves like a job with artifacts and trace2887 with artifacts and trace2888 returns artifacts and trace data2889 behaves like returns common pipeline data2890 returns common pipeline data2891 unauthorized user2892 does not return specific job data2893 when job succeeded2894 does not return failure_reason2895 when job failed2896 returns failure_reason2897 when trace artifact record exists with no stored file2898 returns no artifacts nor trace data2899 GET /projects/:id/jobs/:job_id/trace2900 authorized user2901 when log is in ObjectStorage2902 returns specific job logs2903 when log is artifact2904 returns specific job log2905 when incremental logging and uploadless log artifact2906 returns specific job log2907 when log is incremental2908 returns specific job log2909 when no log2910 returns empty log2911 when log artifact record exists with no stored file2912 returns empty trace2913 unauthorized user2914 does not return specific job log2915 when ci_debug_trace is set to true2916 public_builds: true, user_project_role: "developer", expected_status: :ok2917 renders trace to authorized users2918 public_builds: true, user_project_role: "guest", expected_status: :forbidden2919 renders trace to authorized users2920 public_builds: false, user_project_role: "developer", expected_status: :ok2921 renders trace to authorized users2922 public_builds: false, user_project_role: "guest", expected_status: :forbidden2923 renders trace to authorized users2924 POST /projects/:id/jobs/:job_id/cancel2925 authorized user2926 user with :update_build persmission2927 cancels running or pending job2928 user without :update_build permission2929 does not cancel job2930 unauthorized user2931 does not cancel job2932 POST /projects/:id/jobs/:job_id/retry2933 authorized user2934 user with :update_build permission2935 retries non-running job2936 when a build is not retryable2937 responds with unprocessable entity2938 user without :update_build permission2939 does not retry job2940 unauthorized user2941 does not retry job2942 POST /projects/:id/jobs/:job_id/erase2943 when project is not undergoing stats refresh2944 job is erasable2945 updates job2946 behaves like erases job2947 erases job content2948 when job has an unarchived trace artifact2949 behaves like erases job2950 erases job content2951 job is not erasable2952 responds with forbidden2953 when a developer erases a build2954 when the build was created by the developer2955 is expected to respond with numeric status code created2956 when the build was created by another user2957 is expected to respond with numeric status code forbidden2958 when project is undergoing stats refresh2959 behaves like preventing request because of ongoing project stats refresh2960 logs about the rejected request2961 returns 409 error2962 does not delete artifacts2963 POST /projects/:id/jobs/:job_id/play2964 on a playable job2965 when user is authorized to trigger a manual action2966 that is a bridge2967 plays the job2968 that is a build2969 plays the job2970 when the user provides valid custom variables2971 applies the variables to the job2972 when the user provides a variable without a key2973 reports that the key is missing2974 when the user provides a variable without a value2975 reports that the value is missing2976 when the user provides both valid and invalid variables2977 reports the invalid variables and does not run the job2978 when user is not authorized to trigger a manual action2979 when user does not have access to the project2980 does not trigger a manual action2981 when user is not allowed to trigger the manual action2982 does not trigger a manual action2983 on a non-playable job2984 returns a status code 400, Bad Request2985API::Helpers2986 .current_user2987 Warden authentication2988 with invalid credentials2989 GET request2990 is expected to be nil2991 with valid credentials2992 GET request2993 is expected to eq #<User id:1320 @user708>2994 sets the environment with data of the current user2995 HEAD request2996 is expected to eq #<User id:1320 @user708>2997 when user should have 2fa enabled2998 when 2fa is not enabled2999 is expected to be nil3000 when 2fa is enabled3001 is expected to eq #<User id:1320 @user708>3002 PUT request3003 without CSRF token3004 is expected to be nil3005 with CSRF token3006 is expected to eq #<User id:1320 @user708>3007 POST request3008 without CSRF token3009 is expected to be nil3010 with CSRF token3011 is expected to eq #<User id:1320 @user708>3012 DELETE request3013 without CSRF token3014 is expected to be nil3015 with CSRF token3016 is expected to eq #<User id:1320 @user708>3017 when authenticating using a user's personal access tokens3018 returns a 401 response for an invalid token3019 returns a 403 response for a user without access3020 returns a 403 response for a user who is blocked3021 sets current_user3022 does not allow tokens without the appropriate scope3023 does not allow revoked tokens3024 does not allow expired tokens3025 when terms are enforced3026 returns a 403 when a user has not accepted the terms3027 sets the current user when the user accepted the terms3028 when impersonation is disabled3029 does not allow impersonation tokens3030 when authenticating using a job token3031 when route is allowed to be authenticated3032 returns a 401 response for an invalid token3033 returns a 401 response for a job that's not running3034 returns a 403 response for a user without access3035 returns a 403 response for a user who is blocked3036 sets current_user3037 when route is not allowed to be authenticated3038 sets current_user to nil3039 .handle_api_exception3040 does not report a MethodNotAllowed exception to Sentry3041 does report RuntimeError to Sentry3042 with a personal access token given3043 does not raise an additional exception because of missing `request`3044 .authenticate_non_get!3045 method is HEAD3046 does not raise an error3047 method is GET3048 does not raise an error3049 method is POST3050 calls authenticate!3051 method is PUT3052 calls authenticate!3053 method is PATCH3054 calls authenticate!3055 method is DELETE3056 calls authenticate!3057 .authenticate!3058 current_user is nil3059 returns a 401 response3060 current_user is present3061 does not raise an error3062 sudo3063 using an OAuth token3064 behaves like sudo3065 when admin3066 when token has sudo scope3067 when user exists3068 when using header3069 when providing username3070 behaves like successful sudo3071 sets current_user3072 sets sudo?3073 when providing username (case insensitive)3074 behaves like successful sudo3075 sets current_user3076 sets sudo?3077 when providing user ID3078 behaves like successful sudo3079 sets current_user3080 sets sudo?3081 when using param3082 when providing username3083 behaves like successful sudo3084 sets current_user3085 sets sudo?3086 when providing username (case insensitive)3087 behaves like successful sudo3088 sets current_user3089 sets sudo?3090 when providing user ID3091 behaves like successful sudo3092 sets current_user3093 sets sudo?3094 when user does not exist3095 raises an error3096 when token does not have sudo scope3097 raises an error3098 when not admin3099 raises an error3100 using a personal access token3101 passed as param3102 behaves like sudo3103 when admin3104 when token has sudo scope3105 when user exists3106 when using header3107 when providing username3108 behaves like successful sudo3109 sets current_user3110 sets sudo?3111 when providing username (case insensitive)3112 behaves like successful sudo3113 sets current_user3114 sets sudo?3115 when providing user ID3116 behaves like successful sudo3117 sets current_user3118 sets sudo?3119 when using param3120 when providing username3121 behaves like successful sudo3122 sets current_user3123 sets sudo?3124 when providing username (case insensitive)3125 behaves like successful sudo3126 sets current_user3127 sets sudo?3128 when providing user ID3129 behaves like successful sudo3130 sets current_user3131 sets sudo?3132 when user does not exist3133 raises an error3134 when token does not have sudo scope3135 raises an error3136 when not admin3137 raises an error3138 passed as header3139 behaves like sudo3140 when admin3141 when token has sudo scope3142 when user exists3143 when using header3144 when providing username3145 behaves like successful sudo3146 sets current_user3147 sets sudo?3148 when providing username (case insensitive)3149 behaves like successful sudo3150 sets current_user3151 sets sudo?3152 when providing user ID3153 behaves like successful sudo3154 sets current_user3155 sets sudo?3156 when using param3157 when providing username3158 behaves like successful sudo3159 sets current_user3160 sets sudo?3161 when providing username (case insensitive)3162 behaves like successful sudo3163 sets current_user3164 sets sudo?3165 when providing user ID3166 behaves like successful sudo3167 sets current_user3168 sets sudo?3169 when user does not exist3170 raises an error3171 when token does not have sudo scope3172 raises an error3173 when not admin3174 raises an error3175 using warden authentication3176 raises an error3177Query.project(fullPath).release(tagName)3178 ensures that the correct data is returned based on the project's visibility and the user's access level3179 when the project is private3180 when the user is not logged in3181 behaves like no access to the release field3182 repository-related fields3183 returns nil3184 when the user has Guest permissions3185 behaves like restricted access to release fields3186 scalar fields3187 finds all release data3188 milestones3189 finds milestones associated to a release3190 author3191 finds the author of the release3192 commit3193 restricts commit associated with the release3194 assets3195 count3196 returns non source release links count3197 links3198 finds all non source external release links3199 sources3200 restricts release sources3201 links3202 finds only selfUrl3203 evidences3204 restricts all evidence fields3205 behaves like no access to editUrl3206 does not return editUrl3207 when the user has Reporter permissions3208 behaves like full access to the release field3209 scalar fields3210 finds all release data3211 milestones3212 finds all milestones associated to a release3213 author3214 finds the author of the release3215 commit3216 finds the commit associated with the release3217 assets3218 count3219 returns the number of assets associated to the release3220 links3221 finds all release links3222 sources3223 finds all release sources3224 links3225 finds all release links3226 evidences3227 finds all evidence fields3228 behaves like no access to editUrl3229 does not return editUrl3230 when the user has Developer permissions3231 behaves like full access to the release field3232 scalar fields3233 finds all release data3234 milestones3235 finds all milestones associated to a release3236 author3237 finds the author of the release3238 commit3239 finds the commit associated with the release3240 assets3241 count3242 returns the number of assets associated to the release3243 links3244 finds all release links3245 sources3246 finds all release sources3247 links3248 finds all release links3249 evidences3250 finds all evidence fields3251 behaves like access to editUrl3252 returns editUrl3253 when the project is public3254 when the user is not logged in3255 behaves like full access to the release field3256 scalar fields3257 finds all release data3258 milestones3259 finds all milestones associated to a release3260 author3261 finds the author of the release3262 commit3263 finds the commit associated with the release3264 assets3265 count3266 returns the number of assets associated to the release3267 links3268 finds all release links3269 sources3270 finds all release sources3271 links3272 finds all release links3273 evidences3274 finds all evidence fields3275 behaves like no access to editUrl3276 does not return editUrl3277 when the user has Guest permissions3278 behaves like full access to the release field3279 scalar fields3280 finds all release data3281 milestones3282 finds all milestones associated to a release3283 author3284 finds the author of the release3285 commit3286 finds the commit associated with the release3287 assets3288 count3289 returns the number of assets associated to the release3290 links3291 finds all release links3292 sources3293 finds all release sources3294 links3295 finds all release links3296 evidences3297 finds all evidence fields3298 behaves like no access to editUrl3299 does not return editUrl3300 when the user has Reporter permissions3301 behaves like full access to the release field3302 scalar fields3303 finds all release data3304 milestones3305 finds all milestones associated to a release3306 author3307 finds the author of the release3308 commit3309 finds the commit associated with the release3310 assets3311 count3312 returns the number of assets associated to the release3313 links3314 finds all release links3315 sources3316 finds all release sources3317 links3318 finds all release links3319 evidences3320 finds all evidence fields3321 behaves like no access to editUrl3322 does not return editUrl3323 when the user has Reporter permissions3324 behaves like full access to the release field3325 scalar fields3326 finds all release data3327 milestones3328 finds all milestones associated to a release3329 author3330 finds the author of the release3331 commit3332 finds the commit associated with the release3333 assets3334 count3335 returns the number of assets associated to the release3336 links3337 finds all release links3338 sources3339 finds all release sources3340 links3341 finds all release links3342 evidences3343 finds all evidence fields3344 when the user has Developer permissions3345 behaves like full access to the release field3346 scalar fields3347 finds all release data3348 milestones3349 finds all milestones associated to a release3350 author3351 finds the author of the release3352 commit3353 finds the commit associated with the release3354 assets3355 count3356 returns the number of assets associated to the release3357 links3358 finds all release links3359 sources3360 finds all release sources3361 links3362 finds all release links3363 evidences3364 finds all evidence fields3365 behaves like access to editUrl3366 returns editUrl3367 upcoming release3368 future release3369 finds all release data3370 past release3371 finds all release data3372 milestone order3373 behaves like correct release milestone order3374 due_date3375 when both milestones have a due_date3376 behaves like correct sort order3377 sorts milestonee_1 before milestone_23378 when one milestone does not have a due_date3379 behaves like correct sort order3380 sorts milestonee_1 before milestone_23381 start_date3382 when both milestones have a start_date3383 behaves like correct sort order3384 sorts milestonee_1 before milestone_23385 when one milestone does not have a start_date3386 behaves like correct sort order3387 sorts milestonee_1 before milestone_23388 title3389 behaves like correct sort order3390 sorts milestonee_1 before milestone_23391API::Ci::Runner3392 /api/v4/jobs3393 artifacts3394 POST /api/v4/jobs/:id/artifacts/authorize3395 reject requests that did not go through gitlab-workhorse3396 when using token as parameter3397 and the artifact is too large3398 behaves like rejecting artifacts that are too large3399 based on plan limit setting3400 behaves like failed request3401 responds with payload too large error3402 based on application setting3403 behaves like failed request3404 responds with payload too large error3405 based on root namespace setting3406 behaves like failed request3407 responds with payload too large error3408 based on child namespace setting3409 behaves like failed request3410 responds with payload too large error3411 based on project setting3412 behaves like failed request3413 responds with payload too large error3414 posting artifacts to running job3415 doesn't update runner info3416 behaves like API::CI::Runner application context metadata3417 contains correct context metadata3418 when using local storage3419 behaves like authorizes local file3420 succeeds3421 when using remote storage3422 when direct upload is enabled3423 succeeds3424 when direct upload is disabled3425 behaves like authorizes local file3426 succeeds3427 when job does not exist anymore3428 returns 403 Forbidden3429 when using token as header3430 authorizes posting artifacts to running job3431 fails to post too large artifact3432 when using runners token3433 fails to authorize artifacts posting3434 authorization token is invalid3435 responds with forbidden3436 authorize uploading of an lsif artifact3437 adds ProcessLsif header3438 tracks code_intelligence usage ping3439 POST /api/v4/jobs/:id/artifacts3440 doesn't update runner info3441 behaves like API::CI::Runner application context metadata3442 contains correct context metadata3443 when the artifact is too large3444 behaves like rejecting artifacts that are too large3445 based on plan limit setting3446 behaves like failed request3447 responds with payload too large error3448 based on application setting3449 behaves like failed request3450 responds with payload too large error3451 based on root namespace setting3452 behaves like failed request3453 responds with payload too large error3454 based on child namespace setting3455 behaves like failed request3456 responds with payload too large error3457 based on project setting3458 behaves like failed request3459 responds with payload too large error3460 when artifacts are being stored inside of tmp path3461 when job has been erased3462 responds with forbidden3463 when job does not exist anymore3464 returns 403 Forbidden3465 when job is running3466 when uses accelerated file post3467 for file stored locally3468 behaves like successful artifacts upload3469 updates successfully3470 for file stored remotely3471 when valid remote_id is used3472 behaves like successful artifacts upload3473 updates successfully3474 when invalid remote_id is used3475 responds with bad request3476 when using runners token3477 responds with forbidden3478 when artifacts post request does not contain file3479 fails to post artifacts without file3480 GitLab Workhorse is not configured3481 fails to post artifacts without GitLab-Workhorse3482 Is missing GitLab Workhorse token headers3483 fails to post artifacts without GitLab-Workhorse3484 when setting an expire date3485 when an expire_in is given3486 updates when specified3487 when no expire_in is given3488 ignores if not specified3489 with application default3490 when default is 5 days3491 sets to application default3492 when default is 03493 does not set expire_in3494 when value is never3495 does not set expire_in3496 posts artifacts file and metadata file3497 when posts data accelerated by workhorse is correct3498 stores artifacts and artifacts metadata3499 with a malicious file.path param3500 rejects the request3501 when workhorse header is missing3502 rejects the request3503 when there is no artifacts file in post data3504 is expected to respond with bad request3505 does not store metadata3506 when artifact_type is archive3507 when artifact_format is zip3508 stores junit test report3509 behaves like storing arguments in the application context3510 places the expected params in the application context3511 behaves like not executing any extra queries for the application context3512 does not execute more queries than without adding anything to the application context3513 when artifact_format is gzip3514 returns an error3515 when artifact_type is junit3516 when artifact_format is gzip3517 stores junit test report3518 when artifact_format is raw3519 returns an error3520 when artifact_type is metrics_referee3521 when artifact_format is gzip3522 stores metrics_referee data3523 when artifact_format is raw3524 returns an error3525 when artifact_type is network_referee3526 when artifact_format is gzip3527 stores network_referee data3528 when artifact_format is raw3529 returns an error3530 when artifact_type is dotenv3531 when artifact_format is gzip3532 stores dotenv file3533 parses dotenv file3534 when parse error happens3535 returns an error3536 when artifact_format is raw3537 returns an error3538 when artifacts already exist for the job3539 when sha256 is the same of the existing artifact3540 ignores the new artifact3541 when sha256 is different than the existing artifact3542 logs and returns an error3543 when object storage throws errors3544 does not store artifacts3545 when artifacts are being stored outside of tmp path3546 fails to post artifacts for outside of tmp path3547 GET /api/v4/jobs/:id/artifacts3548 doesn't update runner info3549 behaves like API::CI::Runner application context metadata3550 contains correct context metadata3551 when job has artifacts3552 when using job token3553 behaves like successful artifact download3554 when artifacts are stored locally3555 downloads artifacts3556 when artifacts are stored remotely3557 when proxy download is being used3558 uses workhorse send-url3559 when direct download is being used3560 receives redirect for downloading artifacts3561 when the job is no longer running3562 behaves like successful artifact download3563 when artifacts are stored locally3564 downloads artifacts3565 when artifacts are stored remotely3566 when proxy download is being used3567 uses workhorse send-url3568 when direct download is being used3569 receives redirect for downloading artifacts3570 when using token belonging to the dependent job3571 behaves like successful artifact download3572 when artifacts are stored locally3573 downloads artifacts3574 when artifacts are stored remotely3575 when proxy download is being used3576 uses workhorse send-url3577 when direct download is being used3578 receives redirect for downloading artifacts3579 when the dependent job is no longer running3580 behaves like forbidden request3581 responds with forbidden3582 when using token belonging to another job created by another project member3583 behaves like successful artifact download3584 when artifacts are stored locally3585 downloads artifacts3586 when artifacts are stored remotely3587 when proxy download is being used3588 uses workhorse send-url3589 when direct download is being used3590 receives redirect for downloading artifacts3591 when using token belonging to a pending dependent job3592 behaves like forbidden request3593 responds with forbidden3594 when using a token from a cross pipeline build3595 behaves like successful artifact download3596 when artifacts are stored locally3597 downloads artifacts3598 when artifacts are stored remotely3599 when proxy download is being used3600 uses workhorse send-url3601 when direct download is being used3602 receives redirect for downloading artifacts3603 when using a token from an unrelated project3604 behaves like forbidden request3605 responds with forbidden3606 when using runnners token3607 behaves like forbidden request3608 responds with forbidden3609 when using an invalid token3610 behaves like forbidden request3611 responds with forbidden3612 when job does not have artifacts3613 responds with not found3614 when job does not exist anymore3615 responds with 403 Forbidden3616API::ProtectedBranches3617 GET /projects/:id/protected_branches3618 when authenticated as a maintainer3619 when search param is not present3620 behaves like protected branches3621 returns the protected branches3622 when search param is present3623 behaves like protected branches3624 returns the protected branches3625 when authenticated as a guest3626 behaves like 403 response3627 returns 4033628 GET /projects/:id/protected_branches/:branch3629 when authenticated as a maintainer3630 behaves like protected branch3631 returns the protected branch3632 when protected branch does not exist3633 behaves like 404 response3634 returns 4043635 when protected branch contains a wildcard3636 behaves like protected branch3637 returns the protected branch3638 when protected branch does not exist3639 behaves like 404 response3640 returns 4043641 when protected branch contains a period3642 behaves like protected branch3643 returns the protected branch3644 when protected branch does not exist3645 behaves like 404 response3646 returns 4043647 when authenticated as a guest3648 behaves like 403 response3649 returns 4033650 POST /projects/:id/protected_branches3651 when authenticated as a maintainer3652 protects a single branch3653 protects a single branch and developers can push3654 protects a single branch and developers can merge3655 protects a single branch and developers can push and merge3656 protects a single branch and no one can push3657 protects a single branch and no one can merge3658 protects a single branch and no one can push or merge3659 protects a single branch and allows force pushes3660 returns a 409 error if the same branch is protected twice3661 when branch has a wildcard in its name3662 protects multiple branches with a wildcard in the name3663 when a policy restricts rule deletion3664 prevents deletion of the protected branch rule3665 when authenticated as a guest3666 returns a 403 error if guest3667 DELETE /projects/:id/protected_branches/unprotect/:branch3668 unprotects a single branch3669 returns 404 if branch does not exist3670 behaves like 412 response3671 for a modified ressource3672 returns 412 with a JSON error3673 for an unmodified ressource3674 returns 204 with an empty body3675 when a policy restricts rule deletion3676 prevents deletion of the protected branch rule3677 when branch has a wildcard in its name3678 unprotects a wildcard branch3679API::Settings Settings3680 GET /application/settings3681 returns application settings3682 PUT /application/settings3683 supports legacy performance_bar_allowed_group_id3684 supports legacy performance_bar_enabled3685 supports legacy allow_local_requests_from_hooks_and_services3686 supports legacy asset_proxy_whitelist3687 supports the deprecated `throttle_unauthenticated_*` attributes3688 prefers the new `throttle_unauthenticated_web_*` attributes3689 disables ability to switch to legacy storage3690 supports legacy admin_notification_email3691 supports setting require_admin_approval_after_user_signup3692 custom repository storage type set in the config3693 coerces repository_storages_weighted to an int3694 updates application settings3695 repository_storages_weighted value is outside a 0-100 range3696 returns a :bad_request for -13697 returns a :bad_request for 1013698 SSH key restriction settings3699 allows updating the settings3700 does not allow DSA keys3701 does not allow short RSA key values3702 does not allow unrestricted key lengths3703 external policy classification settings3704 includes the attributes in the API3705 allows updating the settings3706 snowplow tracking settings3707 includes the attributes in the API3708 allows updating the settings3709 missing snowplow_collector_hostname value when snowplow_enabled is true3710 returns a blank parameter error message3711 handles validation errors3712 EKS integration settings3713 includes attributes in the API3714 does not include sensitive attributes in the API3715 allows updating the settings3716 EKS integration is enabled but params are blank3717 does not update the settings3718 missing plantuml_url value when plantuml_enabled is true3719 returns a blank parameter error message3720 asset_proxy settings3721 updates application settings3722 allows a string for asset_proxy_allowlist3723 domain_denylist settings3724 rejects domain_denylist_enabled when domain_denylist is empty3725 allows array for domain_denylist3726 allows a string for domain_denylist3727 missing sourcegraph_url value when sourcegraph_enabled is true3728 returns a blank parameter error message3729 missing spam_check_endpoint_url value when spam_check_endpoint_enabled is true3730 returns a blank parameter error message3731 overly long spam_check_api_key3732 fails to update the settings with too long spam_check_api_key3733 missing mailgun_signing_key value when mailgun_events_enabled is true3734 returns a blank parameter error message3735 personal access token prefix settings3736 handles validation errors3737 fails to update the settings with too long prefix3738 fails to update the settings with invalid characters in the prefix3739 whats_new_variant setting3740 updates setting3741 fails to update setting with invalid value3742 sidekiq job limit settings3743 updates the settings3744 Sentry settings3745 includes the attributes in the API3746 allows updating the settings3747 missing sentry_dsn value when sentry_enabled is true3748 returns a blank parameter error message3749 runner token expiration_intervals3750 updates the settings3751 updates the settings with empty values3752 with pipeline_limit_per_project_user_sha3753 updates the settings3754 updates the settings with zero value3755 does not allow null values3756API::DeployTokens3757 GET /deploy_tokens3758 when unauthenticated3759 is expected to respond with numeric status code unauthorized3760 when authenticated as non-admin user3761 is expected to respond with numeric status code forbidden3762 when authenticated as admin3763 is expected to respond with numeric status code ok3764 returns all deploy tokens3765 and active=true3766 only returns active deploy tokens3767 GET /projects/:id/deploy_tokens3768 when unauthenticated3769 is expected to respond with numeric status code not_found3770 when authenticated as non-admin user3771 is expected to respond with numeric status code forbidden3772 when authenticated as maintainer3773 is expected to respond with numeric status code ok3774 returns all deploy tokens for the project3775 does not return deploy tokens for other projects3776 and active=true3777 only returns active deploy tokens for the project3778 GET /projects/:id/deploy_tokens/:token_id3779 when unauthenticated3780 is expected to respond with numeric status code not_found3781 when authenticated as non-admin user3782 is expected to respond with numeric status code forbidden3783 when authenticated as maintainer3784 is expected to respond with numeric status code ok3785 returns specific deploy token for the project3786 invalid request3787 returns not found with invalid project id3788 returns not found with invalid token id3789 GET /groups/:id/deploy_tokens3790 when unauthenticated3791 is expected to respond with numeric status code forbidden3792 when authenticated as non-admin user3793 is expected to respond with numeric status code forbidden3794 when authenticated as maintainer3795 is expected to respond with numeric status code ok3796 returns all deploy tokens for the group3797 does not return deploy tokens for other groups3798 and active=true3799 only returns active deploy tokens for the group3800 GET /groups/:id/deploy_tokens/:token_id3801 when unauthenticated3802 is expected to respond with numeric status code forbidden3803 when authenticated as non-admin user3804 is expected to respond with numeric status code forbidden3805 when authenticated as maintainer3806 is expected to respond with numeric status code ok3807 returns specific deploy token for the group3808 invalid request3809 returns not found with invalid group id3810 returns not found with invalid token id3811 DELETE /projects/:id/deploy_tokens/:token_id3812 when unauthenticated3813 is expected to respond with numeric status code not_found3814 when authenticated as non-admin user3815 is expected to respond with numeric status code forbidden3816 when authenticated as maintainer3817 is expected to respond with numeric status code no_content3818 calls the deploy token destroy service3819 invalid request3820 returns not found with invalid group id3821 returns bad_request with invalid token id3822 deploy token creation3823 POST /projects/:id/deploy_tokens3824 behaves like creating a deploy token3825 when unauthenticated3826 is expected to respond with numeric status code not_found3827 when authenticated as non-admin user3828 is expected to respond with numeric status code forbidden3829 when authenticated as maintainer3830 creates the deploy token3831 with no optional params given3832 creates the deploy token with default values3833 with an invalid scope3834 is expected to respond with numeric status code bad_request3835 POST /groups/:id/deploy_tokens3836 behaves like creating a deploy token3837 when unauthenticated3838 is expected to respond with numeric status code forbidden3839 when authenticated as non-admin user3840 is expected to respond with numeric status code forbidden3841 when authenticated as owner3842 creates the deploy token3843 with no optional params given3844 creates the deploy token with default values3845 with an invalid scope3846 is expected to respond with numeric status code bad_request3847 when authenticated as maintainer3848 is expected to respond with numeric status code forbidden3849 DELETE /groups/:id/deploy_tokens/:token_id3850 when unauthenticated3851 is expected to respond with numeric status code forbidden3852 when authenticated as non-admin user3853 is expected to respond with numeric status code forbidden3854 when authenticated as maintainer3855 is expected to respond with numeric status code forbidden3856 when authenticated as owner3857 calls the deploy token destroy service3858 invalid request3859 returns bad request with invalid group id3860 returns not found with invalid deploy token id3861Projects::Snippets::BlobsController3862 GET #raw3863 with a snippet without a repository3864 behaves like raw snippet without repository3865 when authorized3866 returns a 4223867 when unauthorized3868 behaves like returning response status3869 returns not_found3870 project_visibility_level: :public, snippet_visibility_level: :public, user: :author, status: :ok3871 responds with correct status3872 project_visibility_level: :public, snippet_visibility_level: :public, user: :developer, status: :ok3873 responds with correct status3874 project_visibility_level: :public, snippet_visibility_level: :public, user: :other_user, status: :ok3875 responds with correct status3876 project_visibility_level: :public, snippet_visibility_level: :public, user: nil, status: :ok3877 responds with correct status3878 project_visibility_level: :public, snippet_visibility_level: :private, user: :author, status: :ok3879 responds with correct status3880 project_visibility_level: :public, snippet_visibility_level: :private, user: :developer, status: :ok3881 responds with correct status3882 project_visibility_level: :public, snippet_visibility_level: :private, user: :other_user, status: :not_found3883 responds with correct status3884 project_visibility_level: :public, snippet_visibility_level: :private, user: nil, status: :not_found3885 responds with correct status3886 project_visibility_level: :private, snippet_visibility_level: :public, user: :author, status: :ok3887 responds with correct status3888 project_visibility_level: :private, snippet_visibility_level: :public, user: :developer, status: :ok3889 responds with correct status3890 project_visibility_level: :private, snippet_visibility_level: :public, user: :other_user, status: :not_found3891 responds with correct status3892 project_visibility_level: :private, snippet_visibility_level: :public, user: nil, status: :redirect3893 responds with correct status3894 project_visibility_level: :private, snippet_visibility_level: :private, user: :author, status: :ok3895 responds with correct status3896 project_visibility_level: :private, snippet_visibility_level: :private, user: :developer, status: :ok3897 responds with correct status3898 project_visibility_level: :private, snippet_visibility_level: :private, user: :other_user, status: :not_found3899 responds with correct status3900 project_visibility_level: :private, snippet_visibility_level: :private, user: nil, status: :redirect3901 responds with correct status3902 behaves like raw snippet blob3903 with valid params3904 delivers file with correct Workhorse headers3905 responds with status 2003906 Content Disposition3907 when the disposition is inline3908 returns inline in the content disposition header3909 when the disposition is attachment3910 returns attachment plus the filename in the content disposition header3911 with invalid file path3912 behaves like returning response status3913 returns not_found3914 with invalid ref3915 behaves like returning response status3916 returns not_found3917 behaves like content disposition headers3918 sets content disposition to inline3919 when inline param is false3920 sets content disposition to attachment3921Projects::CommitsController3922 signed in3923 GET commits_root3924 no ref is provided3925 redirects to the default branch of the project3926 GET show3927 with file path3928 valid branch, valid file3929 is expected to respond with 2003930 valid branch, invalid file3931 is expected to respond with 4043932 invalid branch, valid file3933 is expected to respond with 4043934 branch with invalid format, valid file3935 is expected to respond with 4043936 with an invalid limit3937 uses the default limit3938 when limit is a hash3939 uses the default limit3940 when the ref name ends in .atom3941 when the ref does not exist with the suffix3942 renders as atom3943 renders summary with type=html3944 when the ref exists with the suffix3945 renders as HTML3946 when the ref does not exist3947 returns 404 page3948 with markdown cache3949 preloads markdown cache for commits3950 GET /commits/:id/signatures3951 valid branch3952 is expected to respond with 2003953 invalid branch format3954 is expected to respond with 4043955Groups::UploadsController3956 behaves like handle uploads3957 behaves like handle uploads authorize3958 POST #authorize3959 when a user is not authorized to upload a file3960 returns 404 status3961 when id is not passed as a param3962 returns 404 status3963 when a user can upload a file3964 and the request bypassed workhorse3965 raises an exception3966 and request is sent by gitlab-workhorse to authorize the request3967 when using local storage3968 behaves like a local file3969 behaves like a valid response3970 responds with status 2003971 uses the gitlab-workhorse content type3972 responds with status 200, location of uploads store and object details3973 when using remote storage3974 when direct upload is enabled3975 behaves like a valid response3976 responds with status 2003977 uses the gitlab-workhorse content type3978 responds with status 200, location of uploads remote store and object details3979 when direct upload is disabled3980 behaves like a local file3981 behaves like a valid response3982 responds with status 2003983 uses the gitlab-workhorse content type3984 responds with status 200, location of uploads store and object details3985 POST #create3986 when a user is not authorized to upload a file3987 returns 404 status3988 when a user can upload a file3989 without params['file']3990 returns an error3991 with valid image3992 returns a content with original filename, new link, and correct type.3993 creates a corresponding Upload record3994 with valid non-image file3995 returns a content with original filename, new link, and correct type.3996 GET #show3997 when the secret is invalid3998 responds with status 4043999 is a working exploit without the validation4000 when accessing a specific upload via different model4001 responds with status 4044002 when the upload does not have a MIME type that Rails knows4003 falls back to the null type4004 when the model is public4005 when not signed in4006 when the file exists4007 responds with status 2004008 when neither the uploader nor the model exists4009 responds with status 4044010 when the file doesn't exist4011 responds with status 4044012 when signed in4013 when the file exists4014 responds with status 2004015 when the file doesn't exist4016 responds with status 4044017 when the model is private4018 when not signed in4019 when the file exists4020 when the file is an image4021 enforce_auth_checks_on_uploads feature flag4022 with flag enabled4023 responds with appropriate status4024 with flag disabled4025 responds with status 2004026 when the file is not an image4027 redirects to the sign in page4028 when the file doesn't exist4029 redirects to the sign in page4030 when signed in4031 when the user has access to the project4032 when the file exists4033 responds with status 2004034 when the file doesn't exist4035 responds with status 4044036 when the user doesn't have access to the model4037 when the file exists4038 when the file is an image4039 enforce_auth_checks_on_uploads feature flag4040 with flag enabled4041 responds with status 4044042 with flag disabled4043 responds with status 2004044 when the file is not an image4045 responds with status 4044046 when the file doesn't exist4047 responds with status 4044048 with a moved group4049 redirects to a file with the proper extension4050 GET #show4051 when the group is public4052 when not signed in4053 enforce_auth_checks_on_uploads feature flag4054 with flag enabled4055 responds with appropriate status4056 with flag disabled4057 responds with status 2004058 when signed in4059 when the user doesn't have access to the model4060 enforce_auth_checks_on_uploads feature flag4061 with flag enabled4062 responds with status 2004063 with flag disabled4064 responds with status 2004065 when the group is private4066 when not signed in4067 enforce_auth_checks_on_uploads feature flag4068 with flag enabled4069 responds with appropriate status4070 with flag disabled4071 responds with status 2004072 when signed in4073 when the user doesn't have access to the model4074 enforce_auth_checks_on_uploads feature flag4075 with flag enabled4076 responds with status 2004077 with flag disabled4078 responds with status 2004079Adding an image DiffNote4080 behaves like a Note mutation when the user does not have permission4081 behaves like a Note mutation that does not create a Note4082 is expected not to change `Note.count`4083 behaves like a mutation that returns top-level errors4084 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"4085 when the user has permission4086DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4087DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4088 returns the note with the correct position4089 behaves like a Note mutation that creates a Note4090DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4091DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4092 is expected to change `Note.count` by 14093 behaves like a Note mutation when there are active record validation errors4094 returns an empty Note4095 behaves like a Note mutation that does not create a Note4096 is expected not to change `Note.count`4097 behaves like a mutation that returns errors in the response4098 is expected to contain exactly "Error 1" and "Error 2"4099 behaves like a Note mutation when there are rate limit validation errors4100 with rate limiter4101 behaves like a Note mutation that does not create a Note4102DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4103DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4104DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4105DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4106DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4107DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4108 is expected not to change `Note.count`4109 behaves like a mutation that returns top-level errors4110DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4111DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4112DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4113DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4114DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4115DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4116 is expected to contain exactly "This endpoint has been requested too many times. Try again later."4117 when the user is in the allowlist4118 behaves like a Note mutation that creates a Note4119DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4120DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4121DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4122DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4123DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4124DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4125DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4126DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4127 is expected to change `Note.count` by 14129 behaves like a Note mutation when the given resource id is not for a Noteable4130 behaves like a Note mutation that does not create a Note4131 is expected not to change `Note.count`4132 behaves like a mutation that returns top-level errors4133 is expected to include / does not represent an instance of Noteable/4134Projects::CommitsController4135 token authentication4136 when public project4137 behaves like authenticates sessionless user for the request spec4138 show atom4139 when the 'private_token' param is populated with the personal access token4140 when valid token4141 when resource is public4142 authenticates user and returns response with ok status4143 when user with expired password4144 does not authenticate user and returns response with ok status4145 when the personal access token has no api scope4146 when resource is public4147 does not authenticate user and returns response with ok status4148 when invalid token4149 when resource is public4150 does not authenticate user and returns response with ok status4151 when the 'PRIVATE-TOKEN' header is populated with the personal access token4152 when valid token4153 when resource is public4154 authenticates user and returns response with ok status4155 when user with expired password4156 does not authenticate user and returns response with ok status4157 when the personal access token has no api scope4158 when resource is public4159 does not authenticate user and returns response with ok status4160 when invalid token4161 when resource is public4162 does not authenticate user and returns response with ok status4163 when the 'feed_token' param is populated with the feed token4164 when valid token4165 when resource is public4166 authenticates user and returns response with ok status4167 when user with expired password4168 does not authenticate user and returns response with ok status4169 when invalid token4170 when resource is public4171 does not authenticate user and returns response with ok status4172 when private project4173 behaves like authenticates sessionless user for the request spec4174 show atom4175 when the 'private_token' param is populated with the personal access token4176 when valid token4177 when resource is private4178 authenticates user and returns response with ok status4179 when user with expired password4180 does not return response with ok status4181 when password expiration is not applicable4182 when ldap user4183 authenticates user and returns response with ok status4184 when the personal access token has no api scope4185 when resource is private4186 does not return response with ok status4187 when invalid token4188 when resource is private4189 does not return response with ok status4190 when the 'PRIVATE-TOKEN' header is populated with the personal access token4191 when valid token4192 when resource is private4193 authenticates user and returns response with ok status4194 when user with expired password4195 does not return response with ok status4196 when password expiration is not applicable4197 when ldap user4198 authenticates user and returns response with ok status4199 when the personal access token has no api scope4200 when resource is private4201 does not return response with ok status4202 when invalid token4203 when resource is private4204 does not return response with ok status4205 when the 'feed_token' param is populated with the feed token4206 when valid token4207 when resource is private4208 authenticates user and returns response with ok status4209 when user with expired password4210 does not return response with ok status4211 when password expiration is not applicable4212 when ldap user4213 authenticates user and returns response with ok status4214 when invalid token4215 when resource is private4216 does not return response with ok status4217API::CommitStatuses4218 GET /projects/:id/repository/commits/:sha/statuses4219 ci commit exists4220 reporter user4221 latest commit statuses4222 returns latest commit statuses4223 all commit statuses4224 returns all commit statuses4225 latest commit statuses for specific ref4226 returns latest commit statuses for specific ref4227 latest commit statues for specific name4228 return latest commit statuses for specific name4229 ci commit does not exist4230 returns empty array4231 guest user4232 does not return project commits4233 unauthorized user4234 does not return project commits4235 POST /projects/:id/statuses/:sha4236 developer user4237 uses only required parameters4238 for pending4239 when pipeline for sha does not exists4240 creates commit status and sets pipeline iid4241 for running4242 when pipeline for sha does not exists4243 creates commit status and sets pipeline iid4244 for success4245 when pipeline for sha does not exists4246 creates commit status and sets pipeline iid4247 for failed4248 when pipeline for sha does not exists4249 creates commit status and sets pipeline iid4250 for canceled4251 when pipeline for sha does not exists4252 creates commit status and sets pipeline iid4253 when pipeline already exists for the specified sha4254 behaves like creates a commit status for the existing pipeline4255 is expected to eq 10000004256 with pipeline for merge request4257 behaves like creates a commit status for the existing pipeline4258 is expected to eq 10000004259 transitions status from pending4260 to running4261 to success4262 to failed4263 to canceled4264 with all optional parameters4265 when creating a commit status4266 creates commit status4267 when merge request exists for given branch4268 sets head pipeline4269 when updating a commit status4270 updates a commit status4271 does not create a new commit status4272 when the `state` parameter is sent the same4273 does not update the commit status4274 when a pipeline id is specified4275 update the correct pipeline4276 when retrying a commit status4277 correctly posts a new commit status4278 retries the commit status4279 when status is invalid4280 does not create commit status4281 when request without a state made4282 does not create commit status4283 when updating a protected ref4284 with user as developer4285 does not create commit status4286 with user as maintainer4287 creates commit status4288 when commit SHA is invalid4289 returns not found error4290 when target URL is an invalid address4291 responds with bad request status and validation errors4292 when target URL is an unsupported scheme4293 responds with bad request status and validation errors4294 when trying to update a status of a different type4295 responds with bad request status and validation errors4296 reporter user4297 does not create commit status4298 guest user4299 does not create commit status4300 unauthorized user4301 does not create commit status4302Projects::DesignManagement::Designs::RawImagesController4303 GET #show4304 when the design is not an LFS file4305 serves files with `Content-Disposition` header set to attachment plus the filename4306 serves files with Workhorse4307 behaves like project cache control headers4308 when project is public4309 returns cache_control public header to true4310 when project is private4311 returns cache_control public header to true4312 when project is internal4313 returns cache_control public header to true4314 when the user does not have permission4315 is expected to respond with numeric status code not_found4316 when design does not exist4317 is expected to respond with numeric status code not_found4318 sha param4319 is expected not to eq "f5560e194e914bf692afd1f5b923ffeb6a61e6ef"4320 when sha is the newest version sha4321 behaves like a successful request for sha4322 is expected to respond with numeric status code ok4323 when sha is the oldest version sha4324 behaves like a successful request for sha4325 is expected to respond with numeric status code ok4326 when sha is nil4327 behaves like a successful request for sha4328 is expected to respond with numeric status code ok4329 when the design is an LFS file4330 serves files with `Content-Disposition: attachment`4331 sets appropriate caching headers4332 behaves like a controller that can serve LFS files4333 when lfs is enabled4334 when the project is linked to the LfsObject4335 serves the file4336 and lfs uses object storage4337 responds with redirect to file4338 sets content disposition4339 when project is not linked to the LfsObject4340 does not serve the file4341 when the project is part of a fork network4342 when the project is the root of the fork network4343 behaves like a controller that correctly serves lfs files within a fork network4344 is expected not to eq #<Project id:852 namespace643/project791>>4345 does not serve the file if no members are linked to the LfsObject4346 serves the file when the fork network root is linked to the LfsObject4347 serves the file when the fork network member is linked to the LfsObject4348 when the project is a downstream member of the fork network4349 behaves like a controller that correctly serves lfs files within a fork network4350 is expected not to eq #<Project id:857 namespace648/project796>>4351 does not serve the file if no members are linked to the LfsObject4352 serves the file when the fork network root is linked to the LfsObject4353 serves the file when the fork network member is linked to the LfsObject4354 when lfs is not enabled4355 delivers ASCII file (PENDING: Calling spec asked to skip testing LFS disabled scenario)4356Toggling an AwardEmoji4357 when the user has permission4358 when the given awardable is not an Awardable4359 behaves like a mutation that does not create or destroy an AwardEmoji4360 is expected not to change `AwardEmoji.count`4361 behaves like a mutation that returns top-level errors4362 is expected to include /was provided invalid value for awardableId/4363 when the given awardable is an Awardable but still cannot be awarded an emoji4364 behaves like a mutation that does not create or destroy an AwardEmoji4365 is expected not to change `AwardEmoji.count`4366 behaves like a mutation that returns top-level errors4367 is expected to contain exactly "You cannot award emoji to this resource."4368 when the given awardable is an Awardable4369 when no emoji has been awarded by the current_user yet4370 creates an emoji4371 returns the emoji4372 returns toggledOn as true4373 marking Todos as done4374 type: :issue, expectation: true4375 is expected to eq true4376 type: :merge_request, expectation: true4377 is expected to eq true4378 type: :project_snippet, expectation: false4379 is expected to eq false4380 for notes4381 regular Notes4382 marks the Todo as done4383 PersonalSnippet Notes4384 does not mark the Todo as done4385 when there were active record validation errors4386 returns an empty awardEmoji4387 behaves like a mutation that does not create or destroy an AwardEmoji4388 is expected not to change `AwardEmoji.count`4389 behaves like a mutation that returns errors in the response4390 is expected to contain exactly "Error 1" and "Error 2"4391 when an emoji has been awarded by the current_user4392 removes the emoji4393 returns no errors4394 returns an empty awardEmoji4395 returns toggledOn as false4396 when the user does not have permission4397 behaves like a mutation that does not create or destroy an AwardEmoji4398 is expected not to change `AwardEmoji.count`4399 behaves like a mutation that returns a top-level access error4400 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"4401Emails::ServiceDesk4402 .service_desk_thank_you_email4403 behaves like read template from repository4404 when a template is in the repository4405 uses the text template from the template4406 when the service_desk_templates directory does not contain correct template4407 uses the default template4408 when the service_desk_templates directory does not exist4409 uses the default template4410 when the project does not have a repo4411 uses the default template4412 handling template markdown4413 with a simple text4414 behaves like handle template content4415 builds the email correctly4416 with an issue id and issue path placeholders4417 behaves like handle template content4418 builds the email correctly4419 with an issue id placeholder with whitespace4420 behaves like handle template content4421 builds the email correctly4422 with unexpected placeholder4423 behaves like handle template content4424 builds the email correctly4425 .service_desk_new_note_email4426 behaves like read template from repository4427 when a template is in the repository4428 uses the text template from the template4429 when the service_desk_templates directory does not contain correct template4430 uses the default template4431 when the service_desk_templates directory does not exist4432 uses the default template4433 when the project does not have a repo4434 uses the default template4435 handling template markdown4436 with a simple text4437 behaves like handle template content4438 builds the email correctly4439 with an issue id, issue path and note placeholders4440 behaves like handle template content4441 builds the email correctly4442 with an issue id placeholder with whitespace4443 behaves like handle template content4444 builds the email correctly4445 with unexpected placeholder4446 behaves like handle template content4447 builds the email correctly4448 with upload link in the note4449 behaves like handle template content4450 builds the email correctly4451 with all-user reference in a an external author comment4452 behaves like handle template content4453 builds the email correctly4454API::FeatureFlags4455 GET /projects/:id/feature_flags4456 when there are two feature flags4457 returns feature flags ordered by name4458 returns the legacy flag version4459 does not have N+1 problem4460 behaves like check user permission4461 when user is reporter4462 forbids the request4463 with version 2 feature flags4464 returns the feature flags4465 GET /projects/:id/feature_flags/:name4466 when there is a feature flag4467 returns a feature flag entry4468 behaves like check user permission4469 when user is reporter4470 forbids the request4471 with a version 2 feature_flag4472 returns the feature flag4473 POST /projects/:id/feature_flags4474 creates a new feature flag4475 defaults to a version 2 (new) feature flag4476 returns version4477 behaves like check user permission4478 when user is reporter4479 forbids the request4480 when there is a feature flag with the same name already4481 fails to create a new feature flag4482 when creating a version 2 feature flag4483 creates a new feature flag4484 creates a new feature flag that is inactive4485 creates a new feature flag with strategies4486 creates a new feature flag with gradual rollout strategy with scopes4487 creates a new feature flag with flexible rollout strategy with scopes4488 when given invalid parameters4489 responds with a 400 when given an invalid version4490 PUT /projects/:id/feature_flags/:name4491 with a version 2 feature flag4492 returns a 404 if the feature flag does not exist4493 forbids a request for a reporter4494 returns an error for an invalid update of gradual rollout4495 returns an error for an invalid update of flexible rollout4496 updates the feature flag4497 updates the flag active value4498 updates the feature flag name4499 ignores a provided version parameter4500 returns the feature flag json4501 updates an existing feature flag strategy to be gradual rollout strategy4502 updates an existing feature flag strategy to be flexible rollout strategy4503 adds a new gradual rollout strategy to a feature flag4504 adds a new gradual flexible strategy to a feature flag4505 deletes a feature flag strategy4506 updates an existing feature flag scope4507 deletes an existing feature flag scope4508 DELETE /projects/:id/feature_flags/:name4509 destroys the feature flag4510 returns version4511 with a version 2 feature flag4512 destroys the flag4513API::ProjectHooks ProjectHooks4514 behaves like web-hook API endpoints4515 GET /projects/:id/hooks4516 authorized user4517 returns all hooks4518 when user is forbidden4519 prevents access to hooks4520 when user is unauthorized4521 prevents access to hooks4522 the hook has URL variables4523 returns the names of the url variables4524 GET /projects/:id/hooks/:hook_id4525 authorized user4526 returns a project hook4527 returns a 404 error if hook id is not available4528 the hook is disabled4529 has the correct alert status4530 the hook is backed-off4531 has the correct alert status4532 when user is forbidden4533 does not access an existing hook4534 when user is unauthorized4535 does not access an existing hook4536 POST /projects/:id/hooks4537WARNING: ignoring the provided expectation message argument (:push_events) since it is not a string or a proc.4538WARNING: ignoring the provided expectation message argument (:tag_push_events) since it is not a string or a proc.4539WARNING: ignoring the provided expectation message argument (:merge_requests_events) since it is not a string or a proc.4540WARNING: ignoring the provided expectation message argument (:issues_events) since it is not a string or a proc.4541WARNING: ignoring the provided expectation message argument (:confidential_issues_events) since it is not a string or a proc.4542WARNING: ignoring the provided expectation message argument (:note_events) since it is not a string or a proc.4543WARNING: ignoring the provided expectation message argument (:confidential_note_events) since it is not a string or a proc.4544WARNING: ignoring the provided expectation message argument (:pipeline_events) since it is not a string or a proc.4545WARNING: ignoring the provided expectation message argument (:wiki_page_events) since it is not a string or a proc.4546WARNING: ignoring the provided expectation message argument (:job_events) since it is not a string or a proc.4547WARNING: ignoring the provided expectation message argument (:deployment_events) since it is not a string or a proc.4548WARNING: ignoring the provided expectation message argument (:releases_events) since it is not a string or a proc.4549 adds hook4550 adds the token without including it in the response4551 returns a 400 error if url not given4552 returns a 400 error if no parameters are provided4553WARNING: ignoring the provided expectation message argument (:push_events) since it is not a string or a proc.4554WARNING: ignoring the provided expectation message argument (:tag_push_events) since it is not a string or a proc.4555WARNING: ignoring the provided expectation message argument (:merge_requests_events) since it is not a string or a proc.4556WARNING: ignoring the provided expectation message argument (:issues_events) since it is not a string or a proc.4557WARNING: ignoring the provided expectation message argument (:confidential_issues_events) since it is not a string or a proc.4558WARNING: ignoring the provided expectation message argument (:note_events) since it is not a string or a proc.4559WARNING: ignoring the provided expectation message argument (:confidential_note_events) since it is not a string or a proc.4560WARNING: ignoring the provided expectation message argument (:pipeline_events) since it is not a string or a proc.4561WARNING: ignoring the provided expectation message argument (:wiki_page_events) since it is not a string or a proc.4562WARNING: ignoring the provided expectation message argument (:job_events) since it is not a string or a proc.4563WARNING: ignoring the provided expectation message argument (:deployment_events) since it is not a string or a proc.4564WARNING: ignoring the provided expectation message argument (:releases_events) since it is not a string or a proc.4565 sets default values for events4566 returns a 422 error if token not valid4567 returns a 422 error if url not valid4568 PUT /projects/:id/hooks/:hook_id4569 updates an existing hook4570 updates the URL variables4571 adds the token without including it in the response4572 returns 404 error if hook id not found4573 returns 400 error if no parameters are provided4574 returns a 422 error if url is not valid4575 returns a 422 error if token is not valid4576 DELETE /projects/:id/hooks/:hook_id4577 deletes hook from project4578 returns a 404 error when deleting non existent hook4579 returns a 404 error if hook id not given4580 returns forbidden if a user attempts to delete hooks they do not own4581 behaves like 412 response4582 for a modified ressource4583 returns 412 with a JSON error4584 for an unmodified ressource4585 returns 204 with an empty body4586 PUT /projects/:id/hooks/:hook_id/url_variables/:key4587 sets the variable4588 overwrites existing values4589 returns a 404 error when editing non existent hook4590 returns a 422 error when the key is illegal4591 returns a 422 error when the value is illegal4592 DELETE /projects/:id/hooks/:hook_id/url_variables/:key4593 unsets the variable4594 returns 404 for keys that do not exist4595 returns a 404 error when deleting a variable from a non existent hook4596 behaves like web-hook API endpoints with branch-filter4597 POST /projects/:id/hooks4598 returns a 422 error if branch filter is not valid4599Updating an image DiffNote4600 when the user does not have permission4601 does not update the DiffNote4602 behaves like a mutation that returns a top-level access error4603 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"4604 when the user has permission4605DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4606DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4607 updates the DiffNote4608DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4609DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4610 returns the updated DiffNote4611 updating single properties at a time4612 property: :body, new_value: "foo"4613DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4614DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4615 updates the DiffNote correctly4616 property: :width, new_value: 194617DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4618DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4619 updates the DiffNote correctly4620 property: :height, new_value: 184621DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4622DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4623 updates the DiffNote correctly4624 property: :x, new_value: 174625DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4626DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4627 updates the DiffNote correctly4628 property: :y, new_value: 164629DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4630DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4631 updates the DiffNote correctly4632 when position is nil4633DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4634DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4635 updates the DiffNote correctly4636 when both body and position args are blank4637 behaves like a mutation that returns top-level errors4638 is expected to contain exactly "body or position arguments are required"4639 when the resource is not a Note4640 behaves like a Note mutation when the given resource id is not for a Note4641 behaves like a mutation that returns top-level errors4642 is expected to include /does not represent an instance of Note/4643 when resource is not a DiffNote on an image4644 behaves like a mutation that returns top-level errors4645 is expected to contain exactly "Resource is not an ImageDiffNote"4646 when there are ActiveRecord validation errors4647DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4648DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4649 does not update the DiffNote4650DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4651DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4652 returns the DiffNote with its original body4653 behaves like a mutation that returns errors in the response4654DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4655DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.4656 is expected to contain exactly "Error 1" and "Error 2"4657 when body only contains quick actions4658 returns a nil note and empty errors4659API::Unleash4660 GET /feature_flags/unleash/:project_id/features4661 behaves like authenticated request4662 when using instance id4663 responds with OK4664 when repository is disabled4665 responds with forbidden4666 when repository is private4667 responds with OK4668 when using header4669 responds with OK4670 when using bogus instance id4671 responds with unauthorized4672 when using not existing project4673 responds with unauthorized4674 with version 2 feature flags4675 does not return a flag without any strategies4676 returns a flag with a default strategy4677 returns a flag with a userWithId strategy4678 returns a flag with multiple strategies4679 returns only flags matching the environment scope4680 returns only strategies matching the environment scope4681 returns only flags for the given project4682 returns all strategies with a matching scope4683 returns a strategy with more than one matching scope4684 returns a disabled flag with a matching scope4685 returns a userWithId strategy for a gitlabUserList strategy4686 GET /feature_flags/unleash/:project_id/client/features4687 behaves like authenticated request4688 when using instance id4689 responds with OK4690 when repository is disabled4691 responds with forbidden4692 when repository is private4693 responds with OK4694 when using header4695 responds with OK4696 when using bogus instance id4697 responds with unauthorized4698 when using not existing project4699 responds with unauthorized4700 with version 2 feature flags4701 does not return a flag without any strategies4702 returns a flag with a default strategy4703 returns a flag with a userWithId strategy4704 returns a flag with multiple strategies4705 returns only flags matching the environment scope4706 returns only strategies matching the environment scope4707 returns only flags for the given project4708 returns all strategies with a matching scope4709 returns a strategy with more than one matching scope4710 returns a disabled flag with a matching scope4711 returns a userWithId strategy for a gitlabUserList strategy4712 POST /feature_flags/unleash/:project_id/client/register4713 behaves like authenticated request4714 when using instance id4715 responds with OK4716 when repository is disabled4717 responds with forbidden4718 when repository is private4719 responds with OK4720 when using header4721 responds with OK4722 when using bogus instance id4723 responds with unauthorized4724 when using not existing project4725 responds with unauthorized4726 POST /feature_flags/unleash/:project_id/client/metrics4727 behaves like authenticated request4728 when using instance id4729 responds with OK4730 when repository is disabled4731 responds with forbidden4732 when repository is private4733 responds with OK4734 when using header4735 responds with OK4736 when using bogus instance id4737 responds with unauthorized4738 when using not existing project4739 responds with unauthorized4740Groups::RunnersController4741 #index4742 when user is owner4743 renders show with 200 status code4744 tracks the event4745 when user is not owner4746 renders a 4044747 does not track the event4748 #show4749 when user is owner4750 renders show with 200 status code4751 renders show with 200 status code project runner4752 when user is not owner4753 renders a 4044754 renders a 404 project runner4755 #edit4756 when user is owner4757 renders show with 200 status code4758 renders show with 200 status code project runner4759 when user is not owner4760 renders a 4044761 renders a 404 project runner4762 #update4763 when user is an owner4764 updates the runner, ticks the queue, and redirects4765 updates the project runner, ticks the queue, and redirects project runner4766 when user is not an owner4767 rejects the update and responds 4044768 rejects the update and responds 404 project runner4769API::SnippetRepositoryStorageMoves4770 behaves like repository_storage_moves API4771 GET /snippets/:id/repository_storage_moves4772 behaves like get container repository storage move list4773 returns container repository storage moves4774 avoids N+1 queries4775 returns the most recently created first4776 permissions4777 is expected to be allowed for :admin4778 is expected to be denied for :user4779 non-existent container4780 returns not found4781 GET /snippets/:id/repository_storage_moves/:repository_storage_move_id4782 behaves like get single container repository storage move4783 returns a container repository storage move4784 non-existent container repository storage move4785 returns not found4786 permissions4787 is expected to be allowed for :admin4788 is expected to be denied for :user4789 non-existent container4790 returns not found4791 GET /snippet_repository_storage_moves4792 behaves like get container repository storage move list4793 returns container repository storage moves4794 avoids N+1 queries4795 returns the most recently created first4796 permissions4797 is expected to be allowed for :admin4798 is expected to be denied for :user4799 GET /snippet_repository_storage_moves/:repository_storage_move_id4800 behaves like get single container repository storage move4801 returns a container repository storage move4802 non-existent container repository storage move4803 returns not found4804 permissions4805 is expected to be allowed for :admin4806 is expected to be denied for :user4807 POST /snippets/:id/repository_storage_moves4808 schedules a container repository storage move4809 permissions4810 is expected to be allowed for :admin4811 is expected to be denied for :user4812 destination_storage_name is missing4813 schedules a container repository storage move4814 when container does not exist4815 returns not found4816 POST /snippet_repository_storage_moves4817 schedules the worker4818 source_storage_name is invalid4819 gives an error4820 destination_storage_name is missing4821 schedules the worker4822 destination_storage_name is invalid4823 gives an error4824 normal user4825 is expected to be denied for :user4826Groups::BoardsController4827 GET index4828 creates a new board when group does not have one4829 when format is HTML4830 renders template4831 with unauthorized user4832 returns a not found 404 response4833 when user is signed out4834 renders template4835 when format is JSON4836 return an array with one group board4837 with unauthorized user4838 returns a not found 404 response4839 behaves like disabled when using an external authorization service4840 works when the feature is not enabled4841 renders a 404 with a message when the feature is enabled4842 GET show4843 when format is HTML4844 renders template4845 with unauthorized user4846 returns a not found 404 response4847 when user is signed out4848 does not save visit4849 when format is JSON4850 returns project board4851 with unauthorized user4852 returns a not found 404 response4853 when board does not belong to group4854 returns a not found 404 response4855 behaves like disabled when using an external authorization service4856 works when the feature is not enabled4857 renders a 404 with a message when the feature is enabled4858Projects::MergeRequests::ContentController4859 user has access to the project4860 GET cached_widget4861 renders widget MR entity as json4862 closes an MR with moved source project4863 GET widget4864 checks whether the MR can be merged4865 merged merge request4866 renders widget MR entity as json4867 with coverage data4868 renders widget MR entity as json4869 user does not have access to the project4870 GET cached_widget4871 returns 4044872 GET widget4873 returns 4044874Destroying multiple package files4875 post graphql mutation4876 with valid params4877 user_role: :maintainer, shared_examples_name: "destroying the package files"4878 behaves like destroying the package files4879 marks the package file as pending destruction4880 behaves like returning response status4881 returns success4882 user_role: :developer, shared_examples_name: "denying the mutation request"4883 behaves like denying the mutation request4884 does not mark the package file as pending destruction4885 behaves like returning response status4886 returns success4887 user_role: :reporter, shared_examples_name: "denying the mutation request"4888 behaves like denying the mutation request4889 does not mark the package file as pending destruction4890 behaves like returning response status4891 returns success4892 user_role: :guest, shared_examples_name: "denying the mutation request"4893 behaves like denying the mutation request4894 does not mark the package file as pending destruction4895 behaves like returning response status4896 returns success4897 user_role: :anonymous, shared_examples_name: "denying the mutation request"4898 behaves like denying the mutation request4899 does not mark the package file as pending destruction4900 behaves like returning response status4901 returns success4902 with more than 100 files4903 behaves like denying the mutation request4904 does not mark the package file as pending destruction4905 behaves like returning response status4906 returns success4907 with files outside of the project4908 behaves like denying the mutation request4909 does not mark the package file as pending destruction4910 behaves like returning response status4911 returns success4912 with invalid params4913 behaves like denying the mutation request4914 does not mark the package file as pending destruction4915 behaves like returning response status4916 returns success4917getting a repository in a project4918 returns repository4919 as a non-authorized user4920 returns nil4921 as a non-admin4922 does not return diskPath4923 as an admin4924 returns diskPath4925 when the repository is only accessible to members4926 returns a repository for the owner4927 returns nil for the repository for other users4928 returns nil for the repository for other users4929 when paginated tree requested4930 returns paginated tree4931API::ResourceStateEvents4932 when eventable is an Issue4933 behaves like resource_state_events API4934 GET /projects/:id/issues/:noteable_id/resource_state_events4935 returns an array of resource state events4936 returns a 404 error when eventable id not found4937 returns 404 when not authorized4938 GET /projects/:id/issues/:noteable_id/resource_state_events/:event_id4939 returns a resource state event by id4940 returns 404 when not authorized4941 returns a 404 error if resource state event not found4942 pagination4943 returns the second page4944 when eventable is a Merge Request4945 behaves like resource_state_events API4946 GET /projects/:id/merge_requests/:noteable_id/resource_state_events4947 returns an array of resource state events4948 returns a 404 error when eventable id not found4949 returns 404 when not authorized4950 GET /projects/:id/merge_requests/:noteable_id/resource_state_events/:event_id4951 returns a resource state event by id4952 returns 404 when not authorized4953 returns a 404 error if resource state event not found4954 pagination4955 returns the second page4956getting dependency proxy blobs in a group4957 returns the total count of blobs4958 returns the total size4959 behaves like a working graphql query4960 returns a successful response4961 with different permissions4962 group_visibility: :private, role: :maintainer, access_granted: true4963 return the proper response4964 group_visibility: :private, role: :developer, access_granted: true4965 return the proper response4966 group_visibility: :private, role: :reporter, access_granted: true4967 return the proper response4968 group_visibility: :private, role: :guest, access_granted: true4969 return the proper response4970 group_visibility: :private, role: :anonymous, access_granted: false4971 return the proper response4972 group_visibility: :public, role: :maintainer, access_granted: true4973 return the proper response4974 group_visibility: :public, role: :developer, access_granted: true4975 return the proper response4976 group_visibility: :public, role: :reporter, access_granted: true4977 return the proper response4978 group_visibility: :public, role: :guest, access_granted: true4979 return the proper response4980 group_visibility: :public, role: :anonymous, access_granted: false4981 return the proper response4982 limiting the number of blobs4983 only returns N blobs4984Snippets::BlobsController4985 GET #raw4986 snippet_visibility_level: :public, user: :author, status: :ok4987 responds with correct status4988 snippet_visibility_level: :public, user: :other_user, status: :ok4989 responds with correct status4990 snippet_visibility_level: :public, user: nil, status: :ok4991 responds with correct status4992 snippet_visibility_level: :private, user: :author, status: :ok4993 responds with correct status4994 snippet_visibility_level: :private, user: :other_user, status: :not_found4995 responds with correct status4996 snippet_visibility_level: :private, user: nil, status: :redirect4997 responds with correct status4998 behaves like raw snippet blob4999 with valid params5000 delivers file with correct Workhorse headers5001 responds with status 2005002 Content Disposition5003 when the disposition is inline5004 returns inline in the content disposition header5005 when the disposition is attachment5006 returns attachment plus the filename in the content disposition header5007 with invalid file path5008 behaves like returning response status5009 returns not_found5010 with invalid ref5011 behaves like returning response status5012 returns not_found5013 behaves like content disposition headers5014 sets content disposition to inline5015 when inline param is false5016 sets content disposition to attachment5017 with a snippet without a repository5018 behaves like raw snippet without repository5019 when authorized5020 returns a 4225021 when unauthorized5022 behaves like returning response status5023 returns redirect5024Import::BulkImportsController5025 when user is signed in5026 when bulk_import feature flag is enabled5027 POST configure5028 sets the session variables5029 strips access token with spaces5030 when no params are passed in5031 clears out existing session5032 GET status5033 serialized group data5034 returns serialized group data5035 forwards pagination headers5036 when filtering5037 returns filtered result5038 when host url is local or not http5039 denies network request5040 denies network request5041 denies network request5042 when local requests are allowed5043 allows network request5044 allows network request5045 when connection error occurs5046 returns 4225047 clears session5048 GET realtime_changes5049 returns bulk imports created by current user5050 sets a Poll-Interval header5051 POST create5052 executes BulkImpors::CreateService5053 when bulk_import feature flag is disabled5054 POST configure5055 returns 4045056 GET status5057 returns 4045058 when user is signed out5059 POST configure5060 redirects to sign in page5061 GET status5062 redirects to sign in page5063getting milestone listings nested in a project5064 behaves like a working graphql query5065 returns a successful response5066 the user does not have access5067 is nil5068 the user has access5069 behaves like searching with parameters5070 finds the right milestones5071 there are no search params5072 behaves like searching with parameters5073 finds the right milestones5074 the search params do not match anything5075 behaves like searching with parameters5076 finds the right milestones5077 searching by state:closed5078 behaves like searching with parameters5079 finds the right milestones5080 searching by state:active5081 behaves like searching with parameters5082 finds the right milestones5083 searching by title5084 behaves like searching with parameters5085 finds the right milestones5086 searching by search_title5087 behaves like searching with parameters5088 finds the right milestones5089 searching by containing_date5090 behaves like searching with parameters5091 finds the right milestones5092 searching by containing_date = today5093 behaves like searching with parameters5094 finds the right milestones5095 searching by custom range5096 behaves like searching with parameters5097 finds the right milestones5098 using timeframe argument5099 behaves like searching with parameters5100 finds the right milestones5101 timeframe validations5102 is invalid to provide timeframe and start_date/end_date5103 is invalid to invert the timeframe arguments5104 behaves like a working graphql query5105 returns a successful response5106Admin::Ci::VariablesController5107 GET #show5108 when signed in as admin5109 renders the variables as json5110 has only one variable5111 when signed in as regular user5112 returns 4045113 PATCH #update5114 when signed in as admin5115 with invalid new variable parameters5116 does not update the existing variable5117 does not create the new variable5118 returns a bad request response5119 with duplicate new variable parameters5120 does not update the existing variable5121 does not create the new variable5122 returns a bad request response5123 with valid new variable parameters5124 updates the existing variable5125 creates the new variable5126 returns a successful response5127 has all variables in response5128 with a deleted variable5129 destroys the variable5130 returns a successful response5131 has all variables in response5132 with missing variable5133 returns not found response5134 for variables of type file5135 creates new variable of type file5136 when signed in as regular user5137 returns 4045138Projects::ErrorTrackingController5139 GET #index5140 html5141 renders index with 200 status code5142 with insufficient permissions5143 returns 4045144 with an anonymous user5145 redirects to sign-in page5146 format json5147 with no data5148 returns no data5149 with extra params5150 when service result is successful5151 returns a list of errors5152 behaves like sets the polling header5153 is expected to eq "1000"5154 without extra params5155 when service result is successful5156 returns a list of errors5157 when service result is erroneous5158 without http_status5159 returns 400 with message5160 with explicit http_status5161 returns http_status with message5162 GET #issue_details5163 format json5164 with no data5165 returns no data5166 behaves like sets the polling header5167 is expected to eq "1000"5168 when service result is successful5169 returns an error5170 behaves like sets the polling header5171 is expected to eq "1000"5172 when service result is erroneous5173 without http_status5174 returns 400 with message5175 with explicit http_status5176 returns http_status with message5177 PUT #update5178 format json5179 when user is a reporter5180 returns 404 error5181 when update result is successful5182 returns a success5183 when update result is erroneous5184 returns 400 with message5185Admin::BackgroundMigrationsController5186 GET #show5187 when the migration is valid5188 fetches the migration5189 returns failed jobs5190 when the migration does not exist5191 returns not found5192 GET #index5193 when no database is provided5194 uses the default connection5195 returns default database records5196 when multiple database is enabled5197 when CI database is provided5198 uses CI database connection5199 returns CI database records5200 POST #retry5201 redirects the user to the admin migrations page5202 retries the migration5203 when the migration is not failed5204 keeps the same migration status5205API::Applications5206 POST /applications5207 authenticated and authorized user5208 creates and returns an OAuth application5209 does not allow creating an application with the wrong redirect_uri format5210 does not allow creating an application with a forbidden URI format5211 does not allow creating an application without a name5212 does not allow creating an application without a redirect_uri5213 does not allow creating an application without specifying `scopes`5214 does not allow creating an application with blank `scopes`5215 does not allow creating an application with invalid `scopes`5216 defaults to creating an application with confidential5217 multiple scopes5218 creates an application with multiple `scopes` when each scope specified is seperated by a space5219 does not allow creating an application with multiple `scopes` when one of the scopes is invalid5220 authorized user without authorization5221 does not create application5222 non-authenticated user5223 does not create application5224 GET /applications5225 authenticated and authorized user5226 can list application5227 authorized user without authorization5228 cannot list application5229 non-authenticated user5230 cannot list application5231 DELETE /applications/:id5232 authenticated and authorized user5233 can delete an application5234 cannot delete non-existing application5235 authorized user without authorization5236 cannot delete an application5237 non-authenticated user5238 cannot delete an application5239Explore::SnippetsController5240 GET #index5241 renders5242 renders pagination5243 behaves like snippets views5244 when rendered5245 avoids N+1 database queries5246User5247 when id parameter is used5248 behaves like a working user query5249 includes the user5250 returns no user when global restricted_visibility_levels includes PUBLIC5251 behaves like a working graphql query5252 returns a successful response5253 when username parameter is used5254 behaves like a working user query5255 includes the user5256 returns no user when global restricted_visibility_levels includes PUBLIC5257 behaves like a working graphql query5258 returns a successful response5259 when username and id parameter are used5260 displays an error5261API::BroadcastMessages5262 GET /broadcast_messages5263 returns an Array of BroadcastMessages5264 GET /broadcast_messages/:id5265 returns the specified message5266 POST /broadcast_messages5267 returns a 401 for anonymous users5268 returns a 403 for users5269 as an admin5270 requires the `message` parameter5271 defines sane default start and end times5272 accepts a custom background and foreground color5273 accepts target access levels5274 accepts a target path5275 accepts a broadcast type5276 uses default broadcast type5277 errors for invalid broadcast type5278 accepts an active dismissable value5279 PUT /broadcast_messages/:id5280 returns a 401 for anonymous users5281 returns a 403 for users5282 as an admin5283 accepts new background and foreground colors5284 accepts new start and end times5285 accepts a new message5286 accepts a new target_access_levels5287 accepts a new target_path5288 accepts a new broadcast_type5289 errors for invalid broadcast type5290 accepts a new dismissable value5291 DELETE /broadcast_messages/:id5292 returns a 401 for anonymous users5293 returns a 403 for users5294 deletes the broadcast message for admins5295 behaves like 412 response5296 for a modified ressource5297 returns 412 with a JSON error5298 for an unmodified ressource5299 returns 204 with an empty body5300Starting a Jira Import5301 when the user does not have permission5302 with anonymous user5303 behaves like Jira import does not start5304 does not start the Jira import5305 behaves like a mutation that returns top-level errors5306 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"5307 with user without permissions5308 behaves like Jira import does not start5309 does not start the Jira import5310 behaves like a mutation that returns top-level errors5311 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"5312 when the user has permission5313 with project5314 when the project path is invalid5315 returns an an error5316 when project has no Jira integration5317 behaves like a mutation that returns errors in the response5318 is expected to contain exactly "Jira integration not configured."5319 when when project has Jira integration5320 when issues feature are disabled5321 behaves like a mutation that returns errors in the response5322 is expected to contain exactly "Cannot import because issues are not available in this project."5323 when jira_project_key not provided5324 behaves like a mutation that returns errors in the response5325 is expected to contain exactly "Unable to find Jira project to import data from."5326 when Jira import successfully scheduled5327 schedules a Jira import5328getting incident timeline events5329 returns the correct number of timeline events5330 returns the correct properties of the incident timeline events5331 behaves like a working graphql query5332 returns a successful response5333 when filtering by id5334 returns a single timeline event5335 behaves like a working graphql query5336 returns a successful response5337Query5338 gitpodEnabled field5339 When Gitpod is enabled for the application5340 is expected to include {"gitpodEnabled" => true}5341 When Gitpod is disabled for the application5342 is expected to include {"gitpodEnabled" => false}5343 .designManagement5344 .version5345 fetches the expected data5346 behaves like a working graphql query5347 returns a successful response5348 behaves like a query that needs authorization5349 the current user is not able to read designs5350 does not retrieve the record5351 raises an error5352 .designAtVersion5353 behaves like a working graphql query5354DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5355 returns a successful response5356 behaves like a query that needs authorization5357 the current user is not able to read designs5358 does not retrieve the record5359 raises an error5360 the current user is able to read designs5361DEPRECATION WARNING: using BatchLoader.for in GraphQL is deprecated. Use BatchLoader::GraphQL.for instead or return BatchLoader::GraphQL.wrap from your resolver.5362 fetches the expected data, including the correct associations5363Dashboard::ProjectsController5364 token authentication5365 behaves like authenticates sessionless user for the request spec5366 index atom5367 when the 'private_token' param is populated with the personal access token5368 when valid token5369 when resource is private5370 authenticates user and returns response with ok status5371 when user with expired password5372 does not return response with ok status5373 when password expiration is not applicable5374 when ldap user5375 authenticates user and returns response with ok status5376 when the personal access token has no api scope5377 when resource is private5378 does not return response with ok status5379 when invalid token5380 when resource is private5381 does not return response with ok status5382 when the 'PRIVATE-TOKEN' header is populated with the personal access token5383 when valid token5384 when resource is private5385 authenticates user and returns response with ok status5386 when user with expired password5387 does not return response with ok status5388 when password expiration is not applicable5389 when ldap user5390 authenticates user and returns response with ok status5391 when the personal access token has no api scope5392 when resource is private5393 does not return response with ok status5394 when invalid token5395 when resource is private5396 does not return response with ok status5397 when the 'feed_token' param is populated with the feed token5398 when valid token5399 when resource is private5400 authenticates user and returns response with ok status5401 when user with expired password5402 does not return response with ok status5403 when password expiration is not applicable5404 when ldap user5405 authenticates user and returns response with ok status5406 when invalid token5407 when resource is private5408 does not return response with ok status5409Dashboard::GroupsController5410 renders group trees5411 #index5412 only includes projects the user is a member of5413 works when the external authorization service is enabled5414 when rendering an expanded hierarchy with public groups you are not a member of5415 renders only groups the user is a member of when searching hierarchy correctly5416Create a work item5417 the user is not allowed to create a work item5418 behaves like a mutation that returns a top-level access error5419 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"5420 when user has permissions to create a work item5421 creates the work item5422 when input is invalid5423 does not create and returns validation errors5424 behaves like has spam protection5425 #check_spam_action_response!5426 when the object is spam (DISALLOW)5427 and no CAPTCHA is available5428 behaves like disallow response5429 informs the client that the request was denied as spam5430 and a CAPTCHA is required5431 behaves like disallow response5432 informs the client that the request was denied as spam5433 when the object is not spam (CONDITIONAL ALLOW)5434 and no CAPTCHA is required5435 does not return a top-level error5436 and a CAPTCHA is required5437 informs the client that the request may be retried after solving the CAPTCHA5438 when the work_items feature flag is disabled5439 does not create the work item and returns an error5440API::Ci::ResourceGroups5441 GET /projects/:id/resource_groups5442 returns all resource groups for this project5443 when user is reporter5444 returns forbidden5445 GET /projects/:id/resource_groups/:key5446 returns a resource group5447 when user is reporter5448 returns forbidden5449 when there is no corresponding resource group5450 returns not found5451 PUT /projects/:id/resource_groups/:key5452 changes the process mode of a resource group5453 with invalid parameter5454 returns bad request5455 when user is reporter5456 returns forbidden5457 when there is no corresponding resource group5458 returns not found5459Projects::GrafanaApiController5460 GET #proxy5461 with a successful result5462 returns a grafana datasource response5463 when the request is still unavailable5464 returns 204 no content5465 when an error has occurred5466 with an error accessing grafana5467 behaves like error response5468 returns service_unavailable5469 with a processing error5470 behaves like error response5471 returns bad_request5472 GET #metrics_dashboard5473 when the result is still processing5474 returns 204 no content5475 when the result was successful5476 returns the dashboard response5477 when an error has occurred5478 with an error accessing grafana5479 behaves like error response5480 returns service_unavailable5481 with a processing error5482 behaves like error response5483 returns bad_request5484ProjectUnauthorized5485 .on_routable_not_found5486 renders a 200 when the service allows access to the project5487 renders a 403 when the service denies access to the project5488 renders a 404 when the user cannot see the project at all5489Projects::Ci::PipelineEditorController5490 GET #show5491 with enough privileges5492 is expected to respond with numeric status code ok5493 renders show page5494 without enough privileges5495 responds with 4045496Admin::RunnerProjectsController5497 #create5498 assigning runner to same project5499 redirects to the admin runner edit page5500 assigning runner to another project5501 redirects to the admin runner edit page5502 for unknown project5503 shows 404 for unknown project5504 #destroy5505 unassigning runner from project5506 redirects to the admin runner edit page5507 for unknown project runner relationship5508 shows 404 for unknown project runner relationship5509Marking todos done5510 marks a single todo as done5511 when todo is already marked done5512 has the expected response5513 when todo does not belong to requesting user5514 results in the correct todo states5515 behaves like a mutation that returns a top-level access error5516 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"5517 when using an invalid gid5518 contains the expected error5519Projects::AlertManagementController5520 GET #index5521 shows the page5522 when user is unauthorized5523 shows 4045524 GET #details5525 shows the page5526 when user is unauthorized5527 shows 4045528 set_alert_id5529 sets alert id from the route5530Projects::IssueLinksController5531 GET #index5532 returns success response5533 POST #create5534 returns success response5535ProductAnalytics::CollectorApp throttle5536 per application id5537 throttles the endpoint5538query Jira projects5539 when user does not have access5540 behaves like unauthorized users cannot read services5541 when anonymous user5542 is expected to equal nil5543 when user developer5544 is expected to equal nil5545 when user can access project services5546 retuns list of jira projects5547 behaves like a working graphql query5548 returns a successful response5549 with pagination5550 when fetching limited number of projects5551 without cursor5552 behaves like fetches first project5553 retuns first project from list of fetched projects5554query Jira service5555 behaves like unauthorized users cannot read services5556 when anonymous user5557 is expected to equal nil5558 when user developer5559 is expected to equal nil5560 when user can access project services5561 retuns list of jira imports5562 behaves like a working graphql query5563 returns a successful response5564Create an alert issue from an alert5565 when there is no issue associated with the alert5566 creates an alert issue5567 when there is an issue already associated with the alert5568 responds with an error5569Groups::Harbor::RepositoriesController5570 GET #index5571 with harbor registry feature flag enabled5572 behaves like responds with 200 status5573 renders the index template5574 with harbor registry feature flag disabled5575 behaves like responds with 404 status5576 returns 4045577 GET #show5578 with harbor registry feature flag enabled5579 behaves like responds with 200 status5580 renders the index template5581 with harbor registry feature flag disabled5582 behaves like responds with 404 status5583 returns 4045584API::APIGuard::ResponseCoercerMiddleware5585 is loaded5586 #call5587 returns a String body5588 returns a String body5589 returns a String body5590 returns a String body5591 allows nil body5592 allows nil body5593 allows nil body5594Creating a new HTTP Integration5595 behaves like creating a new HTTP integration5596 creates a new integration5597 without required argument project_path5598 behaves like an invalid argument to the mutation5599 behaves like a mutation that returns top-level errors5600 is expected to contain exactly (include "invalid value for projectPath")5601 without required argument active5602 behaves like an invalid argument to the mutation5603 behaves like a mutation that returns top-level errors5604 is expected to contain exactly (include "invalid value for active")5605 without required argument name5606 behaves like an invalid argument to the mutation5607 behaves like a mutation that returns top-level errors5608 is expected to contain exactly (include "invalid value for name")5609Explore::GroupsController5610 renders group trees5611 includes public projects5612 restricted visibility level is public5613 redirects to login page5614GroupUpdate5615 when unauthorized5616 when not a group member5617 behaves like unauthorized5618 returns an error5619 when a non-admin group member5620 behaves like unauthorized5621 returns an error5622 when authorized5623 updates shared runners settings5624 when bad arguments are provided5625 returns the errors5626Projects::ProtectedTagsController5627 GET #index5628 redirects empty repo to projects page5629 DELETE #destroy5630 deletes the protected tag5631Profiles::PersonalAccessTokensController5632 #create5633 allows creation of a token with scopes5634 allows creation of a token with an expiry date5635 #index5636 only includes details of the active personal access token5637 sets PAT name and scopes5638 access_token_pagination feature flag is enabled5639 returns paginated response5640 adds appropriate headers5641 access_token_pagination feature flag is disabled5642 returns all tokens in system5643Updating an existing release asset link5644 updates and existing release asset link and returns the updated link5645getting Alert Management Alert Issue5646 with gitlab alert5647 includes the correct alert issue payload data5648 performance5649 with gitlab alert5650 avoids N+1 queries5651Admin::IntegrationsController5652 GET #overrides5653 format html5654 renders5655 format json5656 returns the project overrides data5657Query.group(fullPath).ciVariables5658 when the user can administer the group5659 returns the group's CI variables5660 when the user cannot administer the group5661 returns nothing5662Create a todo5663 the user is not allowed to create todo5664 behaves like a mutation that returns a top-level access error5665 is expected to contain exactly "The resource that you are attempting to access does not exist or you don't have permission to perform this action"5666 when user has permissions to create todo5667 creates todo5668Projects::Analytics::CycleAnalytics::ValueStreamsController5669 GET index5670 when user is member of the project5671 succeeds5672 exposes the default value stream5673 when user is not member of the project5674 renders 4045675getting namespace package settings in a namespace5676 behaves like a working graphql query5677 returns a successful response5678 matches the JSON schema5679Query.ciVariables5680 when the user is an admin5681 returns the instance's CI variables5682 when the user is not an admin5683 returns nothing5684Setting the status of an alert5685 updates the status of the alert5686Admin::IdentitiesController5687 UPDATE identity5688 repairs ldap blocks5689 DELETE identity5690 repairs ldap blocks5691Profiles::WebauthnRegistrationsController5692 #destroy5693 deletes the given webauthn registration5694Admin::HealthCheckController5695 GET show5696 loads the health information5697Knapsack report was generated. Preview:5698{5699 "spec/requests/api/merge_requests_spec.rb": 412.41930467299994,5700 "spec/requests/api/conan_instance_packages_spec.rb": 281.64189254199994,5701 "spec/requests/rack_attack_global_spec.rb": 136.92731048899986,5702 "spec/requests/api/badges_spec.rb": 158.08658086700007,5703 "spec/requests/api/issues/get_group_issues_spec.rb": 102.77100072000007,5704 "spec/requests/user_activity_spec.rb": 111.34347152200007,5705 "spec/controllers/groups/milestones_controller_spec.rb": 76.163806776,5706 "spec/requests/api/ci/jobs_spec.rb": 51.444075483000006,5707 "spec/requests/api/helpers_spec.rb": 75.86117838200016,5708 "spec/requests/api/graphql/project/release_spec.rb": 38.14607778200002,5709 "spec/requests/api/ci/runner/jobs_artifacts_spec.rb": 52.94826046800017,5710 "spec/requests/api/protected_branches_spec.rb": 31.248467569999775,5711 "spec/requests/api/settings_spec.rb": 25.194350121000298,5712 "spec/requests/api/deploy_tokens_spec.rb": 25.67468684100004,5713 "spec/controllers/projects/snippets/blobs_controller_spec.rb": 27.113835018999907,5714 "spec/controllers/projects/commits_controller_spec.rb": 29.64053146399965,5715 "spec/controllers/groups/uploads_controller_spec.rb": 16.71049115599999,5716 "spec/requests/api/graphql/mutations/notes/create/image_diff_note_spec.rb": 21.501324421999925,5717 "spec/requests/projects/commits_controller_spec.rb": 13.621409141000186,5718 "spec/requests/api/commit_statuses_spec.rb": 16.92597723300014,5719 "spec/controllers/projects/design_management/designs/raw_images_controller_spec.rb": 8.97712097900012,5720 "spec/requests/api/graphql/mutations/award_emojis/toggle_spec.rb": 14.988278389000243,5721 "spec/mailers/emails/service_desk_spec.rb": 10.82862906199989,5722 "spec/requests/api/feature_flags_spec.rb": 8.925546235000184,5723 "spec/requests/api/project_hooks_spec.rb": 9.041936332000205,5724 "spec/requests/api/graphql/mutations/notes/update/image_diff_note_spec.rb": 11.21755899899972,5725 "spec/requests/api/unleash_spec.rb": 8.41674685099997,5726 "spec/controllers/groups/runners_controller_spec.rb": 7.951993282999865,5727 "spec/requests/api/snippet_repository_storage_moves_spec.rb": 5.603635805000067,5728 "spec/controllers/groups/boards_controller_spec.rb": 8.260830288999841,5729 "spec/controllers/projects/merge_requests/content_controller_spec.rb": 10.966746266999962,5730 "spec/requests/api/graphql/mutations/packages/destroy_files_spec.rb": 10.236514058000012,5731 "spec/requests/api/graphql/project/repository_spec.rb": 8.2646015790001,5732 "spec/requests/api/resource_state_events_spec.rb": 5.840973648000272,5733 "spec/requests/api/graphql/group/dependency_proxy_blobs_spec.rb": 6.87602032399991,5734 "spec/controllers/snippets/blobs_controller_spec.rb": 7.584043983999891,5735 "spec/controllers/import/bulk_imports_controller_spec.rb": 3.733057852999991,5736 "spec/requests/api/graphql/project/milestones_spec.rb": 4.562084741000035,5737 "spec/controllers/admin/ci/variables_controller_spec.rb": 3.2622015400002056,5738 "spec/controllers/projects/error_tracking_controller_spec.rb": 3.3547634920000746,5739 "spec/requests/admin/background_migrations_controller_spec.rb": 4.070707684999888,5740 "spec/requests/api/applications_spec.rb": 3.7752787879999232,5741 "spec/controllers/explore/snippets_controller_spec.rb": 7.254645870999866,5742 "spec/requests/api/graphql/user_spec.rb": 4.598225392999666,5743 "spec/requests/api/broadcast_messages_spec.rb": 3.846276083000248,5744 "spec/requests/api/graphql/mutations/jira_import/start_spec.rb": 4.07157157399979,5745 "spec/requests/api/graphql/project/incident_management/timeline_events_spec.rb": 3.986398101999839,5746 "spec/requests/api/graphql/query_spec.rb": 4.239862482000262,5747 "spec/requests/dashboard/projects_controller_spec.rb": 3.3583356220001406,5748 "spec/controllers/dashboard/groups_controller_spec.rb": 2.119029730999955,5749 "spec/requests/api/graphql/mutations/work_items/create_spec.rb": 4.322506425000029,5750 "spec/requests/api/ci/resource_groups_spec.rb": 2.5516813360000015,5751 "spec/controllers/projects/grafana_api_controller_spec.rb": 2.5999731730003077,5752 "spec/controllers/concerns/project_unauthorized_spec.rb": 3.3583494210001845,5753 "spec/controllers/projects/ci/pipeline_editor_controller_spec.rb": 1.894132118000016,5754 "spec/controllers/admin/runner_projects_controller_spec.rb": 2.6725990559998536,5755 "spec/requests/api/graphql/mutations/todos/mark_done_spec.rb": 2.786837956999989,5756 "spec/controllers/projects/alert_management_controller_spec.rb": 2.254664170000069,5757 "spec/controllers/projects/issue_links_controller_spec.rb": 2.3669774510003663,5758 "spec/requests/product_analytics/collector_app_attack_spec.rb": 3.3552630720000707,5759 "spec/requests/api/graphql/project/jira_projects_spec.rb": 3.2447455500000615,5760 "spec/requests/api/graphql/project/base_service_spec.rb": 2.5319483279999986,5761 "spec/requests/api/graphql/mutations/alert_management/alerts/create_alert_issue_spec.rb": 2.7461023710002337,5762 "spec/requests/groups/harbor/repositories_controller_spec.rb": 2.818327325000155,5763 "spec/requests/api/api_guard/response_coercer_middleware_spec.rb": 0.9191583760002686,5764 "spec/requests/api/graphql/mutations/alert_management/http_integration/create_spec.rb": 2.642930379000063,5765 "spec/controllers/explore/groups_controller_spec.rb": 1.2793129779997798,5766 "spec/requests/api/graphql/mutations/groups/update_spec.rb": 2.4188675870000225,5767 "spec/controllers/projects/protected_tags_controller_spec.rb": 2.179714734999834,5768 "spec/controllers/profiles/personal_access_tokens_controller_spec.rb": 2.327930384999945,5769 "spec/requests/api/graphql/mutations/release_asset_links/update_spec.rb": 1.177626014999987,5770 "spec/requests/api/graphql/project/alert_management/alert/issue_spec.rb": 1.26426931900005,5771 "spec/requests/admin/integrations_controller_spec.rb": 1.3657538610000302,5772 "spec/requests/api/graphql/ci/group_variables_spec.rb": 0.9048570980003205,5773 "spec/requests/api/graphql/mutations/todos/create_spec.rb": 1.2012095239997507,5774 "spec/controllers/projects/analytics/cycle_analytics/value_streams_controller_spec.rb": 1.354517721999855,5775 "spec/requests/api/graphql/namespace/package_settings_spec.rb": 0.6637946159999046,5776 "spec/requests/api/graphql/ci/instance_variables_spec.rb": 0.5870886539996718,5777 "spec/requests/api/graphql/mutations/alert_management/alerts/update_alert_status_spec.rb": 1.07996038400006,5778 "spec/controllers/admin/identities_controller_spec.rb": 0.871923741000046,5779 "spec/controllers/profiles/webauthn_registrations_controller_spec.rb": 0.42359255600013057,5780 "spec/controllers/admin/health_check_controller_spec.rb": 0.46041360300023375781}5782Knapsack global time execution for tests: 32m 48s5783Pending: (Failures listed here are expected and do not affect your suite's status)5784 1) Projects::DesignManagement::Designs::RawImagesController GET #show behaves like a controller that can serve LFS files when lfs is not enabled delivers ASCII file5785 # Calling spec asked to skip testing LFS disabled scenario5786 # ./spec/support/shared_examples/controllers/repository_lfs_file_load_shared_examples.rb:1525787Finished in 32 minutes 52 seconds (files took 1 minute 11.62 seconds to load)57882470 examples, 0 failures, 1 pending5789RSpec exited with 0.5790No examples to retry, congrats!5792Not uploading cache ruby-gems-debian-bullseye-ruby-2.7-14 due to policy5793Not uploading cache gitaly-ruby-gems-debian-bullseye-ruby-2.7-14 due to policy5795Uploading artifacts...5796coverage/: found 5 matching files and directories 5797crystalball/: found 2 matching files and directories 5798deprecations/: found 6 matching files and directories 5799knapsack/: found 3 matching files and directories 5800rspec/: found 8 matching files and directories 5801WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory 5802log/*.log: found 17 matching files and directories 5803WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/2688595084/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com5804WARNING: Retrying... context=artifacts-uploader error=request redirected5805Uploading artifacts as "archive" to coordinator... 201 Created id=2688595084 responseStatus=201 Created token=PXqyu-si5806Uploading artifacts...5807rspec/junit_rspec.xml: found 1 matching files and directories 5808WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/2688595084/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com5809WARNING: Retrying... context=artifacts-uploader error=request redirected5810Uploading artifacts as "junit" to coordinator... 201 Created id=2688595084 responseStatus=201 Created token=PXqyu-si5812Job succeeded